2月17日に、Android Thingsの講座を受けてきました。
せっかくなので、Android Thingsって、どんな感じなの? みたいなのを書こうかと思います。なお、私のAndroidレベルはゼロです……。Javaがダメなので、つられてAndroidもダメという状態です(Kotolinも駄目)。
・Android Thingsとは
https://k-tai.watch.impress.co.jp/docs/column/keyword/1046717.html
今回の講座は、あらかじめ用意されたAndroid Thingsのボードを使いました。Android ThingsはNXPとラズベリーパイで動作します。手元にあるラズベリーパイには、前々からAndroid Thingsは入れてあるのですが、SDカードに書き込んだだけで何もしてませんでした。
講座で使うNXPはUSB Type Cコネクタでの接続でした。手持ちのUSB Type Cケーブルがなかったので買っていったのに、ボード内に用意されていたというオチでした。当面、USB Type Cケーブル使う機械と機会がなさそう(古いマシンしかないから)。
勉強用に使うボードは以下のページにあるものです。
・Android Things(NXP+RaindbowHAT)
https://codelabs.developers.google.com/codelabs/androidthings-playground-jp/#0
まず、講座を受ける前に開発環境を準備する必要があります。Android Thingsのプラグラムを作るには、AndroidStudioが必要です。AndroidStudioは以下のサイトからダウンロードできます。
https://developer.android.com/studio/index.html?hl=ja
インストールが完了するまでに時間がかかります。気長に待ちましょう。
Android Thingsの開発には、ネット環境が必須です。ネット環境もなるべく高速な方が開発がしやすいでしょう。というのも、開発途中でも結構時間のかかるダウンロードデータがあるためです。
開発環境をダウンロードした後に、場合によってはadbコマンドを実行するためのパスを設定しないといけないことがあります。パスの設定が面倒な場合は、adbコマンドがあるディレクトリに移動して実行します。今回の講座でも、このパターンの人が数人いました。
さて、開発環境の準備ができたら、Android Studioを起動します。まず、新規プロジェクトを作成します。
最初に作成するアプリケーションは、タッチしたら、開発環境であるAndroid Studioのコンソールに文字を出力するというものです。(ログを出力)
講座の内容としては、以下のサイトにあるプログラムを作っていきます。手順通りにやれば動きそうですが、現実はそうではありません。
開発環境が期待通りに動かない、必要なものがインストールされていない、Javaのバージョンが最新すぎて動かない等々、作る前段階で結構時間がかかる
という状態でした。
・Android Things Peripheral I/O
https://codelabs.developers.google.com/codelabs/androidthings-peripherals/#0
なんだかんだで開発環境が整い、最初のプログラムは全員動かすことができました。なんですが、ここまでの段階でもう疲れてしまいます。それでも、最初で挫折してしまうのも何なので、次のステップに進みます。
次に作成したのが、タッチしたらLEDを点灯させるというものでした。実際のところ、プログラムはGoogleのコードラボにあるコードを、必要な場所にコピー&ペースト(コピペ)していくだけです。
基本的にコピペなので、全然記憶に残りません……。また、Android Thingsは、その名のとおりAndroidベースなので、そこらへんのプログラム作法も知らないと、どこをどうしたらいいのか分かりません。とりあえず、講師の言うがままにコピペして作成していきます。
ちなみに、ここらへんは以下のページにまとめられていますので、よければ参考にしてみてください。
・AndroidThingsハンズオン勉強会2018
https://sites.google.com/site/gdgshinshu/home/archive/androidthings2018
Android Thingsの開発は、Windows、Mac、UNIXいずれでも可能です。多くの講習ではWindowsとMacだと思いますが、UNIX(Ubuntu)を持って来た人がいました。途中トラブルはあったものの、結果的には無事にプログラムも動きました。
次に、Hatを使ったプログラミングに入りました。Android Thingsにはサードパーティ製のHat/シールドがあります。今回使用したのは以下のRainbowHatというものです。
・RainbowHat
https://www.amazon.co.jp/dp/B01MU0L2QR
このRainbowHatには、いくつかのセンサーやたくさんのLEDがついています。今度は、このセンサーやLEDを制御してみることになりました。
このRainbowHat上にある、センサーを制御するためのライブラリをダウンロードします。ただ、ダウンロードして読み込むだけでは正常に動作しません。バージョンを合わせたりしないとだめだとのこと。
ここらへんは、裏技とか知らないと完全にお手上げです。こういう時には、失敗事例というのは大事だなあと思いました。
誰かがWebのどこかに、失敗事例を書いてくれるだけで凄く助かります。解決策まであると、さらに助かります。成功事例だけでなく、失敗事例もたくさん書いておいてもらえるといいんじゃないかなと思います。
LEDだけでなく、画面に文字を表示することもできるとのこと。この場合は、レイアウトビューを変更すればよいとのこと。デフォルトではHello Worldになっているのを、こんにちは、というような文字に変更しました。英語だけでなく、日本語もちゃんと表示されます。
RainbowHatには温度センサーがついているので、温度をLEDに表示することにしました。しかし、Javaが分からないので、Webで検索して解決策を探ります。
慣れている言語であれば、すぐに出てくるのですが、そうでない場合は何か作るのにも、かなり時間がかかります。どうにかこうにか、LEDで温度を表示することができました。
Android Thingsのプログラミングは、楽なのか難しいのか、よくわかりません。が、Android OSよりかは簡単っぽい感じです。複数のアプリが動くわけでもなく、データを取得してサーバーに送るかHatなどに出力するかくらいしかなさそうですし。
今のところ、Android Thingsよりもラズベリーパイの方が情報も多く、さまざまなデバイスが使えるので、IoTで何かやるならラズベリーパイの方がおすすめです。
【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/
ラズベリーパイでも同じコードで温度が表示できるはずですが、まだやっていません。Android Thingsは、手軽にサーバーにデータを送ることができたり便利そうです。
ところが、いつになったらver 1.0が出るのかわからず。予定ではすでに出ているはずですが……まあ、ここらへんは開発にありがちな遅れということで、完成版を待つ事にしたいと思います。
・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/
・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605
・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591
・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/
・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/
・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/
・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/
・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/