Activity
Activityとは、画面(UI)を持つアプリの基本構成要素で、Javaで言うアプレットのようなもの。携帯の壁紙を設定するなどのたくさんの機能があらかじめ用意されている。またActivityのライフサイクルはシステムが管理するようになっている。これは、電話の受信やアラームのオン、アラートなどを割り込ませる必要があるためだ。加えて、バッテリーを重要視した設計を行っているため、大切な情報はコールバックにて退避できるようにする必要もあるとした。
小山氏は、ここでHello World!を表示するサンプルコードを提示した。しかし、Hello World!の文字列はどこにも見当たらない。Androidアプリケーションのディレクトリ構造は固定となっており、src配下にあるR.javaは自動的に作成される、識別子の集合を持つクラスだ。プログラムのリソースは「res」ディレクトリ内にあり、ここにはさらにActivityの画面設計を担当する「layout」、イメージなどが置かれる「drawable」、可読リソースやメッセージなどを格納する「values」がある。
先に挙げたHello World!の文字列は「layout」にあるxmlファイルにて設定していたことになる。これらのリソースファイルやXMLファイルのタグは、自動生成クラスのR.javaから直接参照できるようになっている。なお、「AndroidManifest.xml」は、アプリケーション名やアイコンの登録、セキュリティ上の許可を記述するファイルだが、最初は自動的に生成される。
着信などの割り込み処理に対応するため、Activityのライフサイクルには注意が必要であると説明した。このうちアプリ(再)スタート地点である「onCreate」、アプリが画面から消える時に呼ばれ必要なデータを保存する「onPause」、Activityが殺される前に状態保存を行うために呼ばれる「onSaveInstanceState」が大切だとした。Activityについてはこのほか、Layout(コンテナ)とView(コンポーネント)の関係や、Animationなどについて解説を行った。
Intent
第二の構成要素であるIntentとは、Activity間の(非)同期通信パラメータのこと。Activityは通常1画面のため、次の画面に移るときは別のActivityを実行する必要がある。Intentには実行ActivityのClassインスタンス、またはアクションとURIの指定を行い、実行先Activityへのパラメータを保持できるとした。ここで小山氏は、Intentの使用例としてURLを指定したWebサイトの閲覧やGoogleマップの表示デモを行った。
Service
第三の構成要素Serviceは、画面がなく独立した常駐型プロセスのこと。Inter Poccess Communicationという分散オブジェクト指向により異なるプロセスのオブジェクト間でメソッド呼出が直接実行できるよう設計されているとした。
Content Provider
最後の構成要素Content Providerは、システムデータストレージへのアクセスを提供するもの。電話帳やSDカード内のMP3ファイルなどのデータはすべてデータベースで管理しており、これらのデータにURI形式でアクセスできるようになっている。
Androidのサンプルアプリケーション
と、ここまで解説を行った時点で発表の制限時間を超えてしまった小山氏。しかし、残り時間を少々延長し、発表の1時間前に完成したばかりというアプリケーションのデモを披露した。発表したアプリケーションは、これまで解説したServiceやContent Providerといった特徴をおさえたMP3プレイヤーで、SDカード内のMP3ファイルを再生するというもの。
Androidでは、SDカードが挿入されたことを確認すると、MediaScannerというプログラムが自動的に起動し、すべてDBに自動的に登録する。プログラマは、Content Providerを用意してアクセスするだけでよい。他のプラットフォームであればこうした処理はデータの種類ごとにアクセス方法が異なるが、URIの種類と使い方さえ覚えれば、どんなデータも同じように扱えることが素晴らしいと説明した。
デモでは無事にMP3ファイルの楽曲を再生できた。Serviceとして実行しているので、Activityを閉じてほかの画面になっても演奏を続けていた。ほかにもServiceサービス実行中であることを明示したり、Serviceの一覧を表示したりできるNotification機能も実装していた。
作り手も楽しめる携帯プラットフォーム「Android」
途中何度も伊尾木氏から発表時間超過のアラートに割り込まれながらも、その都度コールバックしてデモのプログラムまで発表した小山氏。Androidは非常に高レベルな携帯プラットフォームであるとし、「作っていて楽しいので、実機が出る前に試しておいても損はないです」と太鼓判をおしてプレゼンを終了した。
次回
各プレゼンターの熱い思いが伝わる「IBM Japan Geeks」。後半では、根本和郎氏による「Google基盤について」と津田嘉孝氏による「オブジェクト指向とカリー化」のプレゼンの模様を紹介します。