この記事は、Xamarin Advent Calendar 2018 17日目の記事です。
PINE64 ってのは 3,000 円級で買えるラズパイ互換の組み込みボードです。ラズパイ互換というといささか語弊があるのですが、メモリが1GB タイプならば秋月で買えるし Raspberry Pi 3 Model B よりも高機能なところがあります。
Android 7.1 を入れる
最初に PINE64 を買ってみたのは Windows IoT Core を動作させたいためだったのですが、最初の頃は LAN などが上手く動かなくて諦め状態だったのです。今のバージョンは試していないので、それはまた今度。
でも、Android がほどよく動きます。Raspberry Pi 3B に Android を入れるとちょっと重たくて使い物にならないのですが、PINE64 に入れるとまずまずのスピードで動くようになります。さすがにアクションゲームは難しいのですが、カードゲームっぽい RPG ものならば大丈夫だし、この記事のように Xamarin.Forms のようなテキストであれば十分なスピードがでます。このあたり GPU が乗っているのが大きいとは思うのですが、詳しいことは不明。
それでも、普通の Android スマホとはちょっと変わった形で Android が使えるのがミソです。
デメリットの解説を
先に PINE64 + Android の組み合わせのデメリットの話をしておきましょう。
- ラズパイより情報が少ないので構築に苦労する
→ ふつうに Ubuntu で使うにしても苦労するし、まあ差額考えてもラズパイのほうが楽 - タッチパネルが使えない
→ そもそもモニタがないので、別途液晶モニタがないと何もできないです。
→ USB にマウスを付けないと使えないです - バッテリーがないので、電源を引っこ抜くと消える
→ 電源を USB 経由で供給しないと駄目なので、引っこ抜くと Android ともども落ちます。モバイルバッテリーだといけるかもしれません。
→ Android を動かすのに、5V2A が必要です。これはパソコンからの USB 給電では動きません。
あと、Android から GPIO を操作するのは root が必要で微妙に面倒です。面倒というかまだ試していないので、試さないと。すでに買ってから1年以上経っていますが。
ちょっとだけメリットを
実運用するにはデメリットが多いのですが、ちょっとだけメリットがあります。
- 液晶モニタを HDMI 接続できる
- 超安価な Android 機として扱える。
→ 中古でも1万円するので、2GB タイプでも 5,000円弱です。
→ Android 7.1 が用意されています。SDK からビルドすれば 8.1 も動きそうな気がするのですが試していません。 - Android を microSD として入れられる。
→ 初期データを入れたり、データをコピーしたりできます。
→ 最初から root です。 - Google Play が使えます。
→ PINE64 + Android では Google Play が使えます。
そんなこんなで試しに動かしてみると面白いかもしれません。Android SDK から自前ビルドをして動作させることができるので、それなりにハックはできるんですが、SDK のビルド環境を整えるのが結構大変で。もともと構築済みの人だといいんだと思うのだけど、初手からやるのはなかなか辛いかもしれません。それだけのメリットが得られるのか?というとかなり疑問で、だったらふつうにラズパイ+Raspbian で動かしたほうが無難かも、とおもったりもしますが。
それでも、実験的に PINE64 + Android + Xamrin.Forms というのをたまに試してみたりします。
環境構築
環境構築をざっと書いておきます。
- PINE A64-LTS ボードを購入。左上の Store から直販で $32 で買えます
- microSD のイメージは SOPINE Software Release – PINE64 の Android 7.1 Community Build Image をダウンロードする。
- PINE64 + Android 7.1 を起動したら WiFi ADB を入れて起動。Android 側の adbd が起動して、PC から adb connect できるようになります。
adb から PINE64+Android で接続できるようになったら、準備完了です。
ちなみに、半年前に動かしたアズレンがこれです。今やキャッシュが壊れているのか画像がうまくでないんですが。再構築したら出るかも。
Xamarin.Forms を動かしてみよう
Android が動くのだから、Xamarin.Android も動くだろうし、Xamarin.Forms も動くだろうとう話です。Xamarin.Forms のメリットは、Android, iOS の両方のスマホを一気に作れるというものが大きいのと、もうひとつ C# でさっくりとした画面をさっくりと作れるというメリットがあります。私が Android IDE に慣れていないからというせいもあるかもしれませんが、スマホのような小さな画面ではなくて液晶モニタのように大きな画面でレイアウトを作る場合は、Xamarin.Forms で使われている Grid が効率的です。
なので、大き目のタブレット画面 + Android という組み合わせで業務アプリを作る場合に、Xamarin.Forms の Grid と MVVM がベストだろう、と考えているわけですが…世の中、大き目の Android タブレットという動きにはならなかったんですよね。今後はどうなんでしょう?
それはさておき、Xamarin.Forms のサンプルを動かしたのがこれです。
これ自体は、Visual Studio で Xamarin.Forms のテンプレートを使っているだけなので、説明は省略。
これだけだといまいちなので、github から xamarin.forms のサンプルを動かしてみましょう。
xamarin-forms-samples/CatClock
https://github.com/xamarin/xamarin-forms-samples/tree/master/CatClock
ほかのサンプルも
元が Android なので、UI はそのまま XAML を使えます。スマホの場合には画面が小さいので全画面で作ることになるのですが、23インチ液晶位になるともう少しレイアウトを考える必要がありますよね。そのあたりにうまくハマるのではにかな、と考えています。