Linuxを搭載した携帯電話向けのアプリケーションを開発するプロジェクトが終盤に差し掛かったころに、Androidが発表されました。当初、Javaでアプリケーションが開発できると聞き、「PDAにJ2MEを載せてアプリケーションを実行することと大差ないプラットホームではないか」とみくびっていました1。ところが、顧客の担当者から、Zaurusに載せて実際に動作するAndroidを見せてもらって、いい意味で裏切られました。Challengeに出場できないか、顧客の担当者に相談したこともありました。結局、出場しませんでしたが、いつかAndroidで動作するアプリケーションを作成するプロジェクトに加わりたいと思うようになりました2。昨年、ようやくAndroidでソフトウェアを製造するプロジェクトを担当することになり、実際にプログラミングする機会を得られました。JITコンパイラが追加されてパフォーマンスが向上した2.2がリリースされてからは、携帯電話やスマートフォンに興味のないわたしでも、所有してもいいかなと思うようになってきました。そこで、わたしがAndroidを気に入っている理由は次のとおりです。開発環境が無償で入手できるSymbian向けのアプリケーションをC++で作成したことがあります。OSのいずれかが必要でした。6.0を購入するのは無駄な投資のように見え、とても敷居が高いと感じました。Androidの場合はインターネットに接続できる環境があれば、無償で開発環境が入手できます。アプリケーションを作成するためのハードルがとても低いことは魅力的です。JNI従来の携帯電話向けJavaアプリケーションは、CLDCと採用するプロファイルで提供されるAPIを呼び出すことしかできませんでした。何か新しいことを始めるとき、独自にAPIを拡張できないことが足枷になってしまいます。VMで実行するとボトルネックになる部分をネイティブ化することもできませんでした。NDKが用意されていて、これらを解決できます。多少は制限があると思いますが、従来の携帯電話向けJavaアプリケーションの開発に比べると、自由度が高いことがうれしいです。アプリケーションサイズ携帯電話向けJavaアプリケーションを作成していた当時は、movaとFOMAが混在していて、アプリケーションはどちらの端末でも動作できなければなりませんでした。mova機はアプリケーションサイズが最大で30Kbyteでしたので、ソースコードレビューで無駄なコードを取り除いた上でさらに難読化ツールを利用し、アプリケーションサイズを削る作業が必要でした。今まで、何気なくAndroidアプリケーションを作ってきましたが、アプリケーションサイズに悩まされたことはありません。これはAndroidがリソースに余裕のあるスマートフォンをターゲットにしたOSだからかもしれません。ソースコードが公開されているSymbianのAPIに不具合(だと思う)3を発見したことがあったのですが、当時はソースコードが公開されておらず、原因の特定(呼び出し方の問題か、APIのバグなのか)ができず、対症療法的な対応で回避せざるを得ませんでした。顧客への報告もなんとも煮え切らない内容となりましたし、歯がゆい思いをしました。Androidはソースコードが公開されていて、環境さえ整えられればビルドすることもできます。実装方法を調査したり、もし、不備があれば修正できるのは魅力的です。()4を見つけられて、実装できないと思っていた機能を実現することができました。Licenseなので、改修してもソースコードの公開をする必要がありません。携帯端末メーカーはAndroidを採用しやすいと思います。OSがLinuxである学生時代からUNIX処理系に慣れていましたし、就職してからもLinuxをターゲットにしたアプリケーション開発していたので、それなりに知識があります。AndroidがカーネルにLinuxを採用しているおかげでノウハウが流用できることが、怠惰なわたしにはうれしいところです。Androidは携帯端末向けにカスタマイズしてあるにせよ、Linuxなので、オープンソースで公開されているソフトウェアを移植できるため、いろいろな可能性を感じます。Subsystemで解決できました。Javaでアプリケーションを開発できるかつて、わたしがLinuxを搭載した携帯電話向けにネイティブ・アプリケーションを作成していたとき、GUIを実装するために利用できるライブラリは、Xlib、ひと昔前のGTK+(1.2ぐらいだったかな)でした。実験にはあまり本質的ではないアプリケーションの作成でしたので、ササッと作ってしまいたかったのですが、かなり苦労しました。Frameworkを使って、比較的簡単にGUIを持つアプリケーションを作成することができていましたので、通常、フレームワークが隠してくれる煩わらわしさを自分で実装する必要があり、うんざりしてしまいました。Androidでは使い慣れたJavaでプログラムを書くことができるし、VMのおかげでメモリに対して神経質になりすぎずに済みます。AWTやSwingを使わずにGUIを作成できることも気に入っています。終わりに今のように簡単にLinuxがPCにインストールできなかったころは、Linuxがわたしのおもちゃでした......。動作実績リストを見ながらPCを自作したり、カーネルを最適化したり、ウインドウマネージャに凝ってみたり......簡単にインストールできるようになってしまって冷めてしまいましたが、Androidで再びおもちゃを手に入れた心境です。Oneはルート化してあって、権限を気にせずアプリケーションを実行できるのですが、電波法の問題で3Gが利用できません。