• 検索結果がありません。

勉強会 資料 Google Developer Group 京都

N/A
N/A
Protected

Academic year: 2018

シェア "勉強会 資料 Google Developer Group 京都"

Copied!
29
0
0

読み込み中.... (全文を見る)

全文

(1)

京都 Google Wave

プロトコル勉強会

北村研二

(2)

今日の内容

Google Wave で使用するプロトコル

(3)

Google Wave の通信

クライアント

Wave サーバ Robot プロキシ

Linky (Link Agent)

Spelly

(Sppeling Agent)

ロボット(GAE)

ロボット(GAE)

ロボット (GAE)

Wave サーバ

Wave サーバ

Federation Protocol

C/S プロトコル

Robot Protocol

?

(4)

Google Wave Federation Proto

col

Wave サーバ同士を接続するプロトコル

XMPP をベースにしている。

Federation Protocol のプロトタイプ実装 である FedOne は XMPP サーバの OpenFire の拡張として実装してある。

具体的な内容は次の URL

http://www.waveprotocol.org/draft-protocol -specs/draft-protocol-spec

(5)

XMPP とは

Extensible Messaging and Presence Pro tocol

Jabber と言うオープンソースのインスタ ントメッセンジャーのプロトコル、クラ イアント、サーバの総称

Google Talk でも使われている。

http://ja.wikipedia.org/wiki/Jabber

http://ja.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol

(6)

C/S プロトコル

Wave サーバと Wave クライアントとの間 の通信プロトコル

まだドラフトも出ていない

(7)

Google Wave Robot Wire Protocol

(Robot Protocol)

ウェーブに対し、 HTTP 経由で操作するロ ボット用のプロトコル

ウェーブからロボットへは JSON

ロボットからウェーブへの操作は JSON-R PC

(8)

Google Wave Federation Arc

hitecture

(9)

Wave プロバイダ

Wave プロバイダとは、 Wave のサービス を提供するサーバである。

Wave プロバイダは、ドメイン名で識別される

Wave ユーザは、ユーザ名とそのドメイン名で 識別される。これを Wave アドレスという (ken

[email protected])

Wave アドレスはグループ、ロボット、ゲート ウェイやその他のサービスにも割り当てられ る。

(10)

ウェーブとウェーブレット

(11)

ウェーブ (wave)

各ウェーブは、グローバルなレベルでユ ニークとなる ID を持ち、これをウェーブ ID と言う。

wavesandbox.com!w+xxLE8vZZA

一つのウェーブに複数のウェーブレット が含まれる。

(12)

ウェーブレット (wavelet)

ウェーブレットは、ウェーブ内でユニー クな ID を持つ。

googlewave.com!conv+root 

googlewave.com!conv+UmuWGB8kC 

ウェーブには、複数のウェーブレットが 存在し、一つの中にドメインが違う

ウェーブレットが存在する場合もある。 その場合はウェーブレット ID を見ると、 どの Wave プロバイダでホスティングされ ているかわかる。

(13)

ウェーブレットのドメイン

ルートのウェーブレット

作成したユーザのドメイン

プライベート返信ウェーブレット

作成したユーザのドメイン

( ルートのウェーブレット以外のドメインの ユーザが作成した場合 )

ユーザデータウェーブレット

それぞれのユーザのドメイン

(14)

プライベート返信ウェーブレッ

(private reply wavelet) ト

ウェーブ内で、特定のユーザとだけ共有 されるウェーブレット

ユーザデータウェーブレットと同じく、 そのウェーブレットの参加者がいる Wave プロバイダとだけ共有する。

(15)

ユーザデータウェーブレット

(user-data wavelet)

既読、未読の情報のようにユーザごとに保存さ れるべきデータはユーザデータウェーブレット に保存される。

ユーザデータウェーブレットの参加者は当然そ のユーザだけなので、他の Wave プロバイダと は共有しない。

Wave プロバイダ Wave プロバイダ ウェーブ

ウェーブレ

ット ウェーブレット

ユーザデー タウェーブ レット

ウェーブレット は Wave プロバ

イダ毎にコピー がある

ユーザデータ はコピーされ

ない

(16)

複数の Wave プロバイダが存在

する場合のウェーブ

ウェーブレットには次の 2 種類がある

ローカルウェーブレット

ある Wave プロバイダで、その Wave プロバイダの ユーザが作成したウェーブレット

リモートウェーブレット

他の Wave プロバイダのウェーブレットのコピー

Wave プロバイダ (A) Wave プロバイダ (B) ローカルウェーブレ

ット リモートウェーブレット

ユーザ ユーザ

1, 作成 2, 閲覧

(17)

複数の Wave プロバイダにまた

がるウェーブに対する書き込み

A の Wave プロバイダのウェーブレットに 対し、 B の Wave プロバイダのユーザが操 作する。

Wave プロバイダ (A) Wave プロバイダ (B) ローカルウェーブレ

ット リモートウェーブレット

ユーザ

3,OT 1, オペレーション

2, オペレーションの転送

4,変換、適用されたオペレーシ ョン

5, コピーに適

(18)

フェデレーションゲートウェイ

フェデレーションプロキシ と

Wave プロバイダ間で送受信する際に使用 するコンポーネント

フェデレーションゲートウェイ

ローカルウェーブレットに関する操作を担当 する。

フェデレーションプロキシ

リモートウェーブレットに関する操作を担当 する。

(19)

フェデレーションゲートウェイ

(1)

ローカルウェーブレットに対して行った 操作を、リモート参加者 ( 他の Wave プロ バイダの参加者 ) が所属する Wave プロバ イダにプッシュ ( 通知 ) する。

Wave プロバイダ (A) Wave プロバイダ (B) ローカルウェーブレ

ット リモートウェーブレット

ユーザ

1, オペレーショ

2,変更の通知 ( オペレ ーションの伝達 )

この図にはデータ ( ウェーブレット ) とオペレーションの伝達につ いて注目しているため、ゲートウェイとプロキシは描いていません

(20)

フェデレーションゲートウェイ

(2)

ローカルウェーブレットに対して適用し たオペレーションの履歴のリクエストに 応える

Wave プロバイダ (A) Wave プロバイダ (B) ローカルウェーブレ

ット リモートウェーブレット

ユーザ

2,オペレーションの 履歴をリクエスト

1,A のローカルウェーブレ ットに新しく参加

3,オペレーションの 履歴

この図にはデータ ( ウェーブレット ) とオペレーションの伝達につ いて注目しているため、ゲートウェイとプロキシは描いていません

(21)

フェデレーションゲートウェイ

(3)

ローカルウェーブレットに対する変更操 作の受付

Wave プロバイダ (A) Wave プロバイダ (B) ローカルウェーブレ

ット リモートウェーブレット

ユーザ

2,オペレーション

1, 操作 ( テキスト編集な ど )

この図にはデータ ( ウェーブレット ) とオペレーションの伝達につ いて注目しているため、ゲートウェイとプロキシは描いていません

(22)

フェデレーションプロキシ (1)

リモートウェーブレットをホスティング している Wave プロバイダからプッシュさ れたオペレーションを受信

Wave プロバイダ (A) Wave プロバイダ (B) ローカルウェーブレ

ット リモートウェーブレット

ユーザ

1, オペレーショ

2,変更の通知 ( オペレ ーションの伝達 )

この図にはデータ ( ウェーブレット ) とオペレーションの伝達につ いて注目しているため、ゲートウェイとプロキシは描いていません

(23)

フェデレーションプロキシ (2)

リモートウェーブレットの古いオペレー ションを、ホスティングしている Wave サーバにリクエスト

Wave プロバイダ (A) Wave プロバイダ (B) ローカルウェーブレ

ット リモートウェーブレット

ユーザ

2,オペレーションの 履歴をリクエスト

1,A のローカルウェーブレ ットに新しく参加

この図にはデータ ( ウェーブレット ) とオペレーションの伝達につ いて注目しているため、ゲートウェイとプロキシは描いていません

(24)

フェデレーションプロキシ (3)

リモートウェーブレットに対する操作を ホスティングしている Wave プロバイダに 送信

Wave プロバイダ (A) Wave プロバイダ (B) ローカルウェーブレ

ット リモートウェーブレット

ユーザ

2,オペレーション 

1, 操作 ( テキスト編集な ど )

この図にはデータ ( ウェーブレット ) とオペレーションの伝達につ いて注目しているため、ゲートウェイとプロキシは描いていません

(25)

ゲートウェイ、プロキシの通信

Google Wave Federation Architecture 日本語訳 ( 参考資料参照 ) より引

(26)

Google Wave Federation Protocol

XMPP を用いている。

トランスポート層で暗号化している。

トランスポート層以外で、データ ( オペ レーション ) の検証ができるようになっ ている。

偽装や改変の防止

(27)

通信の例 (1)

ウェーブレットの変更

<message type="normal" from="wave.initech-corp.com" id="1-1" to="wave. acmewave.com">

<request xmlns="urn:xmpp:receipts"/>

<event xmlns="http://jabber.org/protocol/pubsub#event"> <items>

<item>

<wavelet-update xmlns="http://waveprotocol.org/protocol/0.2/wa veserver" wavelet-name="acmewave.com/initech-corp.com!a/b">

<applied-delta><![CDATA[CiI...MwE] ]></applied-delta> </wavelet-update>

</item> </items> </event>

</message>

(28)

通信の例 (2)

変更の応答

<message id="1-1" from="wave.acmewave.com" to

="wave.initech-corp.com">

<received xmlns="urn:xmpp:receipts"/>

</message>

(29)

参考資料

参照

関連したドキュメント

【資料出所及び離職率の集計の考え方】

タップします。 6通知設定が「ON」になっ ているのを確認して「た めしに実行する」ボタン をタップします。.

【オランダ税関】 EU による ACXIS プロジェクト( AI を活用して、 X 線検査において自動で貨物内を検知するためのプロジェク

地域の感染状況等に応じて、知事の判断により、 「入場をする者の 整理等」 「入場をする者に対するマスクの着用の周知」

参加者は自分が HLAB で感じたことをアラムナイに ぶつけたり、アラムナイは自分の体験を参加者に語っ たりと、両者にとって自分の

主催・依頼 びわ湖トライアスロンin近江八幡実行委員会 参加者/スタッフ 参加者 490名 スタッフ.

<RE100 ※1 に参加する建設・不動産業 ※2 の事業者>.

(Ⅰ) 主催者と参加者がいる場所が明確に分かれている場合(例