VIP招待券なんて素敵なモノも貰ってしまったので、今回も行ってきました次世代農業EXPO。
それにしても、幕張メッセはやはり遠い……
会場の様子
薪ストーブ
間伐材の有効活用という事で最近人気の薪ストーブ
個人用が売れ筋との事です
今回のは、もの凄く初歩的な話です。
C言語のような古き善きプロジェクトではよく見かけるMakefile。
基本的に人様の書いた秘伝のタレをみて何とな〜くわかった気になってしまうヤツですが
思う所あって、自前で勉強してみようと思いました。
まずは解決順の話。
こんなMakefileがあったとします。
first: 1.txt 2.txt cowsay -d Mooo.. 1.txt: hoge.txt echo '1' touch 2.txt 2.txt: 1.txt echo '2' .PHONY: clean clean: rm -r *.txt
何もターゲットを与えないと、以下のような実行結果になります。
$ make echo '1' 1 touch 2.txt echo '2' 2 cowsay -d Mooo.. ________ < Mooo.. > -------- \ ^__^ \ (xx)\_______ (__)\ )\/\ U ||----w | || ||
解決順としては以下のようになります。
1. 一番上にあるターゲット"first"が処理される
2. 第一条件である、1.txtが無いか見に行く
3. 1.txtの前提状況を見、クリア。2.txtが生成される
4. "first"の第二条件"2.txt"は生成されているので移動
5. "2.txt"の内容をクリア
6. 全てが終了したので、"first"の内容をクリア
makeコマンドを使って、不要なtxtファイルを一掃するコマンド"clean"を作りたいとします
clean: rm -r *.txt
ところが、このシステムにはとある事情でcleanという同名のファイルがありました
$ ls Makefile clean hoge.txt
これでは、コマンドを実行しても意図した挙動になりません
$ make clean make: `clean' is up to date.
この場合、".PHONY"(まがい物)という特殊変数を使ってあげます。
.PHONY: clean clean: rm -r *.txt
これを導入した後だと、意図通りちゃんと動きます
$ ls Makefile clean hoge.txt $ make clean rm -r *.txt $ ls Makefile clean
初回はちゃんとビルドできたのに、ちょっとファイルをイジったら
Error: spawn EACCES
とか出てきました。
色々見ると、どうもディレクトリへの実行権限(それも777)を与えるとかいうファンキーな解答が目立ちますが……
ionicはこういう場合用に以下のようなコマンドを用意しています。
$ ionic hooks add
これだけです。
試しにionic help hooksでみると
$ ionic help hooks _ _ (_) (_) _ ___ _ __ _ ___ | |/ _ \| '_ \| |/ __| | | (_) | | | | | (__ |_|\___/|_| |_|_|\___| CLI v1.7.16 ======================= hooks [add|remove|permissions|perm] ........... Manage your Ionic Cordova hooks [add|remove|permissions|perm] Add, remove, or modify permissions on the default Ionic Cordova hooks
とあるのでやってることは実質実行権限の付加ですね。
gulp利用アプリのレイアウトが崩れるようなら、プロジェクト中のnpmを再インストールしてみると良いです。
とある開発中アプリをgit経由で導入し、必要ライブラリのgulp導入も行いました。
$ git clone git@bitbucket.org:foobar/fizzbuzz.git $ npm install -g gulp
ところがギッチョン……何かレイアウトが崩れます。
こういう時は大抵環境が死んでます。
実際、ログをみると
Gulp startup tasks: 0=sass, 1=watch module.js:341 throw err; ^ Error: Cannot find module 'gulp-util'
とか言って上手くGulpが読み出されてませんね。
幸いにしてnpmにはRubyにおけるGemlistのような仕組みが備わっています。
プロジェクト中のライブラリディレクトリを抹殺して、新規に入れ直しましょう。
$ rm -rf node_modules/ $ npm install
確認したところ、無事動きました。
クロスプラットフォームなスマホアプリを開発するApache Corovaというライブラリがあります。
ionicは、このcordvaを拡張し更に格好良く、拡張性を向上させてくれるライブラリです。
本命は10USD~50USDで販売されている有料拡張らしいですが、基礎フレームは無償配布されています。
今回は、このionic + cordovaをVirtualBox上のUbuntu14に組んでみます。
$ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update $ sudo apt-get install oracle-java8-installer oracle-java8-set-default
cd ~/ mkdir Develop cd $_ wget https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
$ tar -xvf android-sdk_*-linux.tgz $ cd android-sdk-linux/tools $ ./android update sdk --no-ui
$ echo export PATH=$PATH:$HOME/Develop/android-sdk-linux/platform-tools:$HOME/Develop/android-sdk-linux/tools:$HOME/Develop/android-sdk-linux/build-tools/24.0.3/ >> ~/.bashrc $ source ~/.bashrc
$ sudo dpkg --add-architecture i386 $ sudo apt-get install libc6:i386 libstdc++6:i386 zlib1g:i386
ndenvをつかいましょう。
まずは導入する上で必須のgitとcurl
$ sudo apt-get install git-core curl
ndenvはgitで管理される奴を入れたほうが手っ取り早いので、そのように
$ git clone https://github.com/riywo/ndenv ~/.ndenv $ git clone https://github.com/riywo/node-build.git ~/.ndenv/plugins/node-build $ echo 'export PATH="$HOME/.ndenv/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(ndenv init -)"' >> ~/.bashrc $ source ~/.bashrc
node本体の導入です。今回はv5.12.0を入れました。
$ ndenv install v5.12.0 $ ndenv global v5.12.0 $ ndenv rehash
長らくおつきあい頂きありがとうございます。
ようやくionicフレームワークとcordovaの導入です。
とはいえ、これはコマンドで一発
$npm install -g cordova ionic
$ ionic start myapp tab $ cd myapp
デフォでiOSが入ってるみたいです。
私が用事があるのはAndroidの方なので、導入。
$ ionic platform add andoroid
確認サーバを起動します。
初回だとどのネットワークに接続されるか問い合わせが来ます。
今回はホストオンリーアダプターの接続先にしたeth1としておきました。
$ ionic serve Multiple addresses available. Please select which address to use by entering its number from the list below: 1) x.x.x.x (eth0) 2) y.y.y.y (eth1) 3) localhost Address Selection: eth1 Selected address: y.y.y.y
設定が終わればめでたく起動。
Running live reload server: http://y.y.y.y:35729 Watching: www/**/*, !www/lib/**/*, !www/**/*.map √ Running dev server: http://y.y.y.y:8100 Ionic server commands, enter: restart or r to restart the client app from the root goto or g and a url to have the app navigate to the given url consolelogs or c to enable/disable console log output serverlogs or s to enable/disable server log output quit or q to shutdown the server and exit
画面は、こんな感じになります。
$ ionic build andorid
ちゃんとビルドできると、${PROJECT_ROOT}/platforms/android/build/outputs/apkにapkが入ります。
出来たイメージは書き込みツールなり、デプロイゲートなりといったアプリを使って配信してください。
deploygate.com