Hatena::ブログ(Diary)

uentseitの日記

2010-10-23 勉強会in神戸 良きかな

Androidの会神戸支部様主催の勉強会に行ってきました!

Androidの会会長、丸山先生の貴重なお話を聞いてきたので、その内容を備忘録がてら、覚えてる範囲で、、、書いておきまふ。

お題:「Crome To Device Message」(以後C2DM)

・Froyoの新機能あれこれ

1.VMjitコンパイラを使用して処理高速化

2.アプリのデータをバックアップするAPI提供

3.C2DMのAPI

4.JavaScriptの高速化。世界最速のブラウザ動作環境。

5.HTML5のサポート

6.Adobe Flashとエアーのサポート

7.Androidマーケットの機能強化。アプリは自動でSD に登録されるように作るのがよい。

・C2DMって何??

簡単に言うと、Android2.2Froyoに搭載された機能で、PC上で開いているGoogle ChromeのWebページを、ワンクリックでAndroid端末に飛ばし、同じページを端末上に表示する、つまり共有できるという面白い機能です。

↓ここからダウンロードできまーす。

http://code.google.com/p/chrometophone

Froyoをお持ちの方はぜひ試してみて下さい!

・どういう仕組み??

C2DMは、ChromeからWebページをメッセージとしてAndroid端末に送信します。その際、Chrome〜端末の間に、「アプリケーションサーバー」と「C2DMサーバー」という2つのサーバーを経由することになり、その2つのサーバーが「クラウド」の役割を果たします。

送信手順としては以下の通りです。

1.Google Chromeの右上あたりにある(らしい・・)送信ボタン(?)を押下する

2.Google Extensionによりアプリケーションサーバーがキックされ(この辺記憶怪しい)、アプリケーションサーバーがまず起動(アプリケーションサーバーでは、サーブレットによって動作が決められていて、それを処理するだけ。個人所有可能)。

3.アプリケーションサーバーは、dataと登録IDをIntent(POST)に付加(だったような・・)し、メッセージとしてC2DMサーバーに送信する。(C2DMサーバーGoogleが管理) dataはKey/Valueの構造になっている。

4.C2DMサーバーでは、送信されてきたメッセージを、Android端末に送信する。この際、登録IDによって送信先のAndroid端末を選別する。このとき、送付先のAndroid端末が起動できない状態(電池切れなど)にある場合、メッセージを一旦キューに蓄積し、しかるべきタイミングで送付する。つまりサーバーからアプリへプッシュ。

5.Android端末側では、受け取ったIntent(レシーブインテント)をブロードキャストし、端末上のC2DMアプリケーションが反応して起動し、なんらかの処理によりWebページを表示する。

といった手順です。C2DMサーバーはつまり端末にデータを配送する役目を持っているのです。アプリケーションサーバーのソースコードは公開されており、作ろうと思えば自作することが可能です。しかし、C2DMサーバーGoogleの支配下にあり、サービスを構築する際は、アプリケーションサーバーから必ず経由する必要があり、基本的に自作はできません(だいぶ苦労すれば似たようなシステムを作れるかも、と先生はおっしゃっておりました)。

・登録ID(RegisterID)とは??

登録IDとは、C2DMサーバーが送信先のAndroid端末を一意に識別するためのIDです。

1.端末側からC2DMに対して登録IDの発行を要求

2.C2DMから端末側に登録ID送付

3.送付された登録IDを端末側からアプリケーションサーバーに送付して登録。

4.3者間通信の準備完了

という感じで割り振られます。登録の削除も可能です。

ChromeAndroid端末との結びつけは??

chromeのボタンを押すだけで、(送信先を指定するフォームもなく)なぜ送信したいAndroid端末にデータが届くのかという疑問が生まれます。これはGoogleアカウントによって指定されていると思われます。ので、Googleアカウントは必須とのことです。

Android端末からChromeに対しては送信できない??

Chrome To Deviceができるのなら、その逆もしかり?という質問が。答えはノー。Android端末側は、サーバーから送られてきたIntentの中身を解析し、処理をしています。つまり、Intentを処理できないChromeでは、受信はできないとの見解です。しかし逆に言えば、Intentが処理できれば受信端末になれるということなので、Android To Androidは可能なのでは??ということです。

私が覚えているのはここまでです。おそらくところどころ間違っている部分があるかと思われますが、そのときは紛れもなくわたくしの聴きまつがいでございますのでご了承くださいませ。

以上、何かのお役に立てればと思います。

PS.

LT

初心者勉強会の活動報告 By @yakmama

Android世界征服の夢を見るか By @itro

お金にならないandroid By メモ忘れ・・・

発表者の方々、丸山先生、およびその他関係者の皆様、ありがとうございました。

Connection: close