Bitbucket などクラウド系のリポジトリサービスを使うと、
どこでもソースコードをチェックできるので非常に便利です。
電車の中や外出時だろうと、ちょっとした空き時間にブラウザだけで
コードを追うことができます。
そのうち欲が出てきて、どうせならこのままコードを手直ししたいとか
コンパイルもできたらいいのに、とか思うようになります。
最近のモバイルデバイスは非常に性能が高いので、
クロス開発でなく自分でコンパイルしてもそれなりに速いはずです。
Android 端末なら各種 Linux 環境を install できそうなので試してみました。
Nexus 7 で動く Ubuntu 13.04
●開発環境として
gcc, clang はもちろん、python, git, mercurial などそのまま使えるので
ライブラリのコンパイルや arm CPU のテストには十分です。
RAM は 1GB しかありませんが、CPU も 4core なのでコンパイルも予想より
高速でした。
パフォーマンスも NetWalker の時代とは比べ物にならず、
Atom NetBook でコンパイルするよりも快適です。
実際にコンパイル速度を比べてみました。
CPU OS HW thread Compiler 実行時間 --------------------------------------------------------------------- 1. Nexus 7 (Cortex-A9) Ubuntu arm 13.04 4 clang 3.2 12.5 sec 2. Nexus 7 (Cortex-A9) Ubuntu arm 13.04 4 gcc 4.7.2 18.2 sec 3. Optimus Pad (Cortex-A9) Ubuntu arm 12.04 2 clang 3.0 21.2 sec 4. Optimus Pad (Cortex-A9) Ubuntu arm 12.04 2 gcc 4.6.3 29.2 sec 5. VAIO type P (Atom Z540) Ubuntu x86 12.10 2 clang 3.0 26.1 sec 6. VAIO type P (Atom Z540) Ubuntu x86 12.10 2 gcc 4.7.2 33.5 sec 7. VAIO type P (Atom Z540) Windows 7 x86 2 vs2012 87.8 sec 8. NetWalker (Cortex-A8) Ubuntu arm 9.04 1 gcc 4.3.3 91.2 sec 9. Mac HDD(Core i7-3615QM) Windows 8 x64 8 vs2012 5.1 sec 10.Mac HDD(Core i7-3615QM) Win8 x64 + NDK 8 gcc 4.7 4.9 sec 11.Mac HDD(Core i7-3615QM) Win8 x64 + NaCl 8 gcc 4.4.3 4.1 sec 12.Mac HDD(Core i7-3615QM) Win8+VMP+u12.10 4 clang 3.0 1.6 sec 13.Mac HDD(Core i7-3615QM) Win8+VMP+u12.10 4 gcc 4.7.2 2.6 sec 14.Mac HDD(Core i7-3615QM) Win8+VMP+u +NaCl 4 gcc 4.4.3 3.0 sec 15.Mac SSD(Core i5-3210M) OSX10.8 x64 4 clang 4.2 2.3 sec 16.Mac SSD(Core i5-3210M) OSX10.8 x64 +NDK 4 gcc 4.7 6.4 sec 17.Mac SSD(Core i5-3210M) OSX+Para+u12.10 2 clang 3.0 3.0 sec 18.Mac SSD(Core i5-3210M) OSX+Para+u12.10 2 gcc 4.7.2 4.4 sec 19.Mac SSD(Core i5-3210M) OSX+Para+u +NaCl 2 gcc 4.4.3 4.1 sec 20.Mac (Core2 Duo P7350) Ubuntu x64 12.10 2 clang 3.2 4.3 sec 21.Mac (Core2 Duo P7350) Ubuntu x64 12.10 2 gcc 4.7.2 6.8 sec 22.Mac (Core2 Duo P7350) Ubuntu x64 + NDK 2 gcc 4.7 10.0 sec 実行時間が少ない方が高速 ・NDK= Android 向け build (NDK r8d) ・NaCl= Native Client 向け build (pepper_23) ・VMP=Windows の VMware Player 上で Ubuntu 12.10 x64 (4core) ・Para=MacOS X の Paralles8 上で Ubuntu 12.10 x64 (2core)
C++ の lib のコンパイルで Debug/Release 両方生成しています。
すべてコマンドラインからのビルドで HW thread の数だけ並列化しています。
CPU だけでなくストレージの速度なども大きく影響しているので一概には言えませんが、
このサイズで持ち歩けてこの速度でビルドできるなら満足です。
用途にもよりますが、すでに “動かしてみた” レベルではなくなっているといえます。
spec 詳細 Nexus 7 Tegra3 Cortex-A9 x4 1.2GHz RAM 1GB Optimus Pad L-06C Tegra2 Cortex-A9 x2 1.0GHz RAM 1GB VAIO type P Atom Z540 x1 HT2 1.83GHz RAM 2GB NetWalker PC-Z1 i.MX515 Cortex-A8 x1 0.8GHz RAM 0.5GB Mac HDD Core i7-3615QM x4 HT8 2.3GHz RAM 16GB Mac Book SSD Core i5-3210M x2 HT4 2.5GHz RAM 8GB Mac mini HDD Core2 Duo P7350 x2 2.0GHz RAM 8GB
● Nexus 7 で動く Linux 環境
・LINUX ON ANDROID
・AndroidLinux.com
・Ubuntu Nexus 7 Desktop Installer
大きく分けて二通りあり、Android として boot したままソフトウエア環境を
置き換えるタイプと、Native に最初から Linux として boot するタイプです。
前者は Android が動作したまま、chroot したプロセスのみが
あたかも Desktop Linux であるかのように振舞います。
Android 環境と併存するため比較的抵抗が少ないですが、
母体となる Android の root 権限が必要となるため、
何らかの方法で取得しておかなければなりません。
冒頭のコンパイル速度比較にある Optimus Pad (L-06C) はこちらです。
Android 上から起動して ssh 経由でコマンドラインのみ使用しています。
Window System が Native なものではないので GUI は期待出来ませんが
コマンドラインベースなら十分使える印象でした。
後者は bootloader を unlock して完全に新たな OS で置き換えます。
PC の HDD を消してクリーンインストールするようなものです。
実際は OS を置き換えなくても、Android の起動イメージを残したまま
boot 時のセレクタで切り替えることができるらしいので試してみました。
↓下記ページを参考にさせて頂きました。
・Nexus 7でUbuntuをUSBメモリにインストールしてデュアルブートで起動して使う方法。
USB メモリがなくても内蔵ストレージにも共存可能な形で install できました。
・xda-developers: [WiFi&3G] MultiROM v7 – updated recovery (Feb 02)
bootloader を unlock したあとに Multi boot 可能な bootloader を入れて、
install 機能を持った recovery tool を用いて OS image を書き込みます。
もちろんこれらの作業はすべて自己責任で行うことになります。
●使ってみて
Window の描画や文字が一部欠けたりとまだ不安定なところがあります。
その代わり HW アクセラレートがきいておりそれなりに高速です。
VAIO type P (Z500系 Atom) に入れた Ubuntu 12.10 よりも快適です。
タッチ操作できるようにカスタマイズされておりスクリーンキーボードも使えます。
きちんと日本語キーボードの配列に切り替わりますが、なぜか ‘_’ の入力ができません。
縦画面にも回転できます。
現時点 (2013/02/03) で Bluetooth がまだ使えないようです。
USB Host ケーブルを使えば USB 外付けの Mouse や Keyboard をつなげることができます。
Ubuntu の豊富なソフトウエアを利用できる点が魅力です。
試しに blender を install してみましたが、GLX が無く起動しませんでした。
gimp は動きました。
Chromium ブラウザをしばらく使っていると画面全体が壊れることがあります。
おそらくメモリ不足なので、swap を作った方が良いのかもしれません。
Tegra4 の Cortex-A15 や Qualcomm Krait 等、新しい世代の CPU では
I/O 含めてさらに高速に動作するはずです。
PC 無しに、Android アプリの自己開発ができるようになると面白いかもしれません。