建て増しにつぐ建て増しで限界に来たケータイのソフト開発

 現在,ケータイのアプリケーション開発はきわめて複雑になっている。携帯電話のディスプレイ画面上には,多くの情報が同時に表示されている。各種モード表示や電波状態,バッテリーの消費状態などが画面上段に表示されていたり,ソフトキーの表示などが画面最下行に表示されていたり,また,最近では,サブ・ディスプレイを持つ携帯も多い。こうした表示は,どういう仕組みで実現されているのであろうか。また,携帯電話は画面が狭いので,複数のアプリケーションが巧みに切り替わり,処理が連続して続くようなフローになる。画面遷移が非常に多い。

 例えば,メールを送信する場合を見てみよう。送信先アドレスを入力するのにアドレス帳から選ぶことが多いだろう。さらに,画像を添付するのに,カメラアプリに切り替わり,写真を撮ってそれが添付され,いよいよ本文入力。本文入力でも,デコメールのテンプレートや絵文字入力など,裏側でアプリが切り替わっているかもしれない。このように,どこでアプリケーションが切り替わったということをユーザーに特に意識させることなく,自然に連続した操作で目的の処理をスムーズに行えるようにすることが重要だ。

 このメール送信の例からも分かるように,アプリケーションの呼び出しは何重にもなることもあり,画面の書き換えを呼び出した側,呼び出された側が,どちらがどこまでやるかなど,このアプリケーション連携部分は非常に複雑でバグを生みやすい。最もテストに時間がかかっている部分だ。また,途中で処理を中止した際に,どこまで戻るかも注意深く設計しないと不整合を起こすことになる。

 従来の実装では,このアプリ連携は,一つのアプリが別のアプリを直接呼び出すようなフローになっていて,実装する人によって呼び出し方もまちまちだ。つまり,標準化された「プログラミング作法」が確立していないと言える。機能が少ないうちはそれでもよかった。組み合わせの数が少ないからだ。しかし機能が増加するにつれ,それも難しくなってきている。例えば,5つの機能があるとすれば,5の階乗すなわち120通りのフローについて検証を行わなければならないことになる。複雑さは指数関数的に増加する。建て増しにつぐ建て増しでやってきたケータイの機能拡張は,内部構造的にそろそろ限界に近付いているといえる。

Linux をアプリケーション・プラットフォームにするには

 さらに,問題となるのが,後からアプリケーションを追加する場合だ。携帯電話やデジタル家電で,製品が出荷された後にも,機能追加やバージョンアップのために,アプリケーションを追加したいという要求は強い。このアプリ・インストール(逆に削除も)を本格的に可能にするには,端末上の既存のどのアプリケーションからも呼び出せるようにしなければならないし,逆に追加されたアプリケーションから既存のどのアプリケーションも呼び出せないといけない。またデータを共有する仕組みも必要だ。例えばIM(インスタント・メッセンジャー)を新たにダウンロードして使おうとしたとする。IMはアドレス帳を参照する必要があるし,それだけでなくアドレス帳からもIMを起動できるようにしたいはずだ。こうしたアプリ間の連携をどのように実現するのかインタフェースを決めておく必要がある。

 既にNTTドコモのiアプリなどのように,Javaアプリケーションをダウンロードして使える仕組みはある。しかし,これらはJava環境に閉じたアプリであり,携帯電話がネイティブで備える機能と自由に連携できるようにはなっていない。

 Linux はマルチプロセスで,カーネル空間とユーザー空間がきちんと区別されたモダンなOSだ。しかし,アプリケーション開発のフレームワークを整備しないと,見通しの悪いものになってしまい,膨大なケータイのソフト開発は楽にならない。

ACCESSがALPのアプリケーション・フレームワークをオープンソース化


ACCESS Linux Platformのアプリケーション・フレームワーク
[画像のクリックで拡大表示]

ACCESS Linux Platform
[画像のクリックで拡大表示]

 今後の携帯電話のソフト開発に向けて,最も効果的な解決策は,アプリケーション・フレームワークを整備することだと筆者は考えている。ACCESSでは,ALP (ACCESS Linux Platform) の一部として,ALP Application Framework を開発した。

 Linux 上のアプリケーションのファイル形式や,アプリ間の通信API,アプリ呼び出しの作法,非同期イベントの処理など,アプリ実装でいつも問題になる部分のプログラミング作法を定義する。携帯電話ならではの各種非同期イベントを扱う仕組みも取り入れている。このフレームワーク自体の実装(ソースコード)をオープンソースにして公開することを決めた(発表資料)。

 このアプリケーション・フレームワークを導入してアプリケーションを開発すると,アプリケーション相互の個別の依存性が低くなり,基本的に個別にアプリをテストすれば全体の品質が向上するというモデルに持ち込める。それだけでなく,サードパーティがアプリケーションを開発しやすくなり,後から携帯電話にアプリケーションを追加することも可能だ。1ヶ所に1000人集めないと携帯電話を開発できないというようなことは避けられる。

 オープンソースにした理由は,この技術を囲い込むより,この技術を広く使ってもらって,Linux Platform 自体の市場をさらに大きくし,アプリケーション市場を活発にしたいからである。Linux関連の標準化を推進する団体(OSDL,LiPS)もACCESSのアプリケーション・フレームワークのオープンソース化を支援してくれている。

 また,このアプリケーション・フレームワークは,デジタルテレビやIP-STBなど,幅広く応用できるので,今後,情報家電向けの Linux Platform の推進も積極的に進めて行きたいと考えている。