2008-08-12

Android 勉強会 第 8 回に参加した

第 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 つのセクションに分かれてた。

  1. Android + Android
  2. Android + Web
  3. 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 上のメッセージ・プロトコルね) 次第で、汎用性が決まってしまうので注意とのこと。

俺流プロトコル実装入門 ~Private Implementation Protocol~

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 に興味があれば、本もどうぞ。

+GAINER―PHYSICAL COMPUTING WITH GAINER はじめてのGainerプログラミングガイド (I/O BOOKS)

懇親会

Android 勉強会の懇親会に、初めて参加した。adamrocker さんの隣、Cave の安生さんの斜め前に座った。何とか何とか話についていくのが精一杯。次回は、もう少し腕を上げて来ます ;)

No comments:

Post a Comment