第 8 回 Android 勉強会に参加した。
今回のセッションは 2 つ。各々持ち時間は一時間。計 2 時間の勉強会。
- Android と MVC アプリケーション・アーキテクチャ
- マッシュアップ・アプリケーション
Android と MVC アプリケーションアーキテクチャ
第一セッションは、Android のアプリ開発も MVC で開発するといいよ、といふお話。MVC は、Model-View-Controller の頭文字を取ったもので、アプリケーションの開発手法の一つ。詳しい説明はこちらをどうぞ。
MVC アーキテクチャー
話の前半は、MVC アーキテクチャーの簡単な説明、デモ・アプリのソース・コード解説、オブザーバー・パターンの紹介と実装について触れた。知ってる人は復習として、知らない人はキーワードを頭に入れて後で調べてねっ、て感じでさらりと流してた。ぼくは、Smalltalk MVC と MVC2 の違いが分からなかった。後で復習しよ。
以下、MVC がらみでメモったこと。
- 入出力は、View と Controller が受け持つ
- View と Controller の境界は分かりにくいので、明確に分けない。VC とセットにしてもいいかも。
- Model が独立することが重要。結果、
- Model の再利用がしやすくなる
- UI の変更に強くなる
ローカル・マッシュアップと MVC
後半は、Android アプリ同士の連携のお話。そして、こっちが本命。
Android のアプリ同士を、連携させて使いたい (= マッシュアップ・アプリを作りたい)。この場合、ユーザーがアクセスする側のアプリを主と考える。もう一方のアプリは主アプリから呼ばれる従アプリで、従アプリはデータを持っていると考える。この考え方だと、主アプリは VC (View, Controller)、従アプリは M (Model) と見なせる。つまりアプリ同士の連携でも、MVC アーキテクチャーを適用できる。データが UI と分離して見通しのよい、マッシュアップ・アプリが作れる。といふのが話の骨子。
設計するにあたってのポイントは以下の通り。
- 従アプリ (Model) のインターフェースには Service を使う
- 通知には Intent を使う
- イベント・ハンドラーには Intent Receiver を使う
- Intent Receiver が Service を直接呼べれば良かったが、Activity しか Service にアクセスできない制約がある
- Android に於いてアプリは全く等価。いつ「従アプリ」として利用されるか分からない。疎結合なアプリを心がけるとよい。
あと、今回 (MVC) とは違うアプリ間通信の方法が質問として上がった。残念ながら、ぼくの理解を越えていたので、ここには書かない。
Mashup Application
第二セッションは、throw Life の中の人、adamrocker さんのお話。ぼくが Android 勉強会を知ったのは、throw Life を読んでいたからなので、ドキドキ。
話は 3 つのセクションに分かれてた。
- Android + Android
- Android + Web
- Android + Device
Android + Android
P2P と地図を使ったマッシュアップ・アプリのデモ。
前回の Android 勉強会で、Cybird さんが提案なさってた「俺ナビ」を、二週間足らずでデモに仕上げて来た。まず「I'm here」メッセージを相手に送る。相手の地図アプリにはメッセージの送り主の居場所が表示される。それを見た相手は「Come here」メッセージで、自分の処までの道順を送る。かうして「相手」までのルート案内を受け取る仕組み。名前は DrawNavi。
「I'm here」メッセージ及び「Come here」メッセージを XMPP で送ってるところがミソ。XMPP は、Google Talk の後ろ側で動いてるプロトコル。つまり、IM で「自分の居場所」や「道順」を送れば、簡単に「俺ナビ」が作れちゃったよ。というデモだった。
「I'm here」や「Come here」メッセージを送るプロトコル (XMPP 上のメッセージ・プロトコルね) 次第で、汎用性が決まってしまうので注意とのこと。
Android + Web
Cloud の話題。
2 つのデモが登場。一つ目は、移動時間を加味したスケジューラー。現在地とイベント情報 (時間と場所) を入力しておくと、「おすすめの出発時刻」を表示してくれるといふもの。前々からぼくはこういう機能がカレンダー・ソフトに欲しかった!
二つ目のデモは、地図と Twitter をマッシュアップしたサービス「geottr」。Android アプリは、geottr の入出力デバイスといふ位置付け。サーバー側で動かすサービスは、Google Apps Engine を使うと、高負荷を気にしなくてよいとのこと。
ちなみに、ユーザー認証にも Google Apps Engine の Google アカウント認証が便利。そして、スタンド・アロン型アプリには ClientLogin という認証 API がある。こいつは知らなかった!
Android + Device
Physical Computing。例えば Wii のような、キーボードともマウスとも違う新しい入力方式。
Android を使えば、新しい入力装置が作れるかも。
といふわけで、Gainer を使ったフライト・シュミレーター・アプリのデモを見せてもらった。
Gainer は、センサーとかボタンとか加速度感知とか、そういった入力を USB 経由でパソコンに取り込む I/O モジュール。キットは 3,500 円。完成品購入で 8,500 円。Gainer を Android で動かしたくて、ライブラリまで自作してしまったという。
Gainer に興味があれば、本もどうぞ。
懇親会
Android 勉強会の懇親会に、初めて参加した。adamrocker さんの隣、Cave の安生さんの斜め前に座った。何とか何とか話についていくのが精一杯。次回は、もう少し腕を上げて来ます ;)