Extensible Messaging and Presence Protocol

Extensible Messaging and Presence Protocol  は、オープンソースのインスタントメッセンジャーのプロトコルおよび、クライアント、サーバの総称である。

1. 特徴
-----

Jabber は Jabber 社が開発した XML ベースのプロトコルである XMPP を採用している。他のメジャーなインスタントメッセンジャーはその仕様もプロトコルも非公開となっているのが普通だが、Jabber はサーバもクライアントもオープンソースであり、その仕様は全て公開されている。そのため、たとえばメールサーバと同じように、ドメイン名とサーバさえあれば自分専用の XMPP サーバを立ち上げることができる。この点でほかのインスタントメッセージと異なる。

他のインスタントメッセージングサービスのゲートウェイとなる機能も持つ。この機能を利用し、Jabber クライアントから AOL Instant Messenger、MSN Messenger、Yahoo!メッセンジャー、IRC、ICQ などのネットワークにメッセージを送ることができる。ただしサービスを提供しているサーバによっては、日本語が通らないこともある。

Google Talk は、Jabber を核にしたものである。

2. 歴史
-----

ジェリミー・ミラーは1998年に Jabber テクノロジーに取り組み始め、1999年1月4日に jabberd14 の最初のバージョンをリリースした。初期の Jabber コミュニティはオープンソースソフトウェアに焦点を当てており、主に jabberd の開発をしていたが、一番の成果は XMPP プロトコルを作ったことである。

1999年から2000年に開発された初期の Jabber プロトコルは XMPP の基礎となり、XMPP は 3920}} と 3921}} として公表されている。XMPPはよく SIMPLE  の競合相手とみなされる。SIMPLE は Session Initiation Protocol  プロトコルを基礎とする、インスタントメッセージングとプレゼンス通知の標準プロトコルである。

XMPP をベースにした最初の IM サービスは Jabber.org であり、1999年以降連続稼動していて XMPP のアカウントをフリーで提供している。1999年から2006年2月まではサービスに jabberd を使用していたが、それ以降は ejabberd に移行した。2010年1月には Isode Ltd. によるプロプライエタリの M-Link へ移行する予定である。

2005年8月に Google は Google Talk を発表した。これは VoIP と IM システムをあわせ持ち、インスタントメッセージングの機能に XMPP を使用していて、音声とファイル転送のシグナリングプロトコルのベースに XMPP を使用している。

2008年9月にシスコシステムズは Jabber, Inc. と商用プロダクトである Jabber XCP の開発者を買収した。

2010年2月、ソーシャルネットワーキングサイトの Facebook は XMPP を通してチャット機能をサードパーティのアプリに開放した。Facebook の開発者のサイトでは、次のように注意を呼びかけている。Facebook のチャットは内部で実際に XMPP サーバを稼働させているわけではなく、単にクライアントに XMPP のインターフェースを提供しているだけである。したがって、ユーザリストの編集など、サーバサイドの機能は XMPP 経由ではできないことがある。

Google Talk だけでなく、多くの公共 IM サービスが XMPP を採用しており、Live Journal の LJ Talk や Nokia の Ovi などがそうである。さらに、企業の IM ソフトウェアプロダクトには、ネイティヴでは XMPP を使用できなくても XMPP へのゲートウェイを含むものがある。例えば、IBM Lotus SametimeやMicrosoft Office Communications Server などである。

3. 長所
-----

中央サーバを持たない : XMPP ネットワークの構造は電子メールに似ており、誰でも自分の XMPP サーバを立てることができるので、中央サーバが存在しない。
オープン標準 : XMPP はインスタントメッセージングサービスとプレゼンス技術として XMPP という名前で IETF により承認された。XMPP の仕様は 3920}} と 3921}} として公表されている。これらを実装するのにロイヤルティーは一切かからず、特定のベンダーに縛られることがない。
歴史 : XMPP は1998年から利用されている。XMPP 標準のクライアント、サーバ、コンポーネント、ライブラリの実装は数多くあり、サン・マイクロシステムズや Google などの大きな企業に支えられている。
セキュリティ : XMPP サーバは公共の XMPP ネットワークから切り離してもよく、強固なセキュリティが XMPP のコアに組み込まれている。伝送路の暗号化を促進するために、2009年10月30日までは[1]は[2]に中間認証局の設置も行っており、XMPP サーバの管理者にフリーのデジタル証明書を提供していた。また、PGPによるエンドツーエンドの暗号化にも対応している。
柔軟性 : XMPP に加えてカスタムの機能を実装できる。相互運用性を保つために、一般的な拡張は XMPP Software Foundation により管理されている。IM 以上の機能を持つ XMPP アプリケーションとして、ネットワークマネージメント、コンテンツ配信、グループウェア、ファイル共有、ゲーム、リモートシステムの監視などがある。

4. 短所
-----

プレゼンスデータのオーバーヘッド : 一般にサーバ間通信の70パーセントがプレゼンスデータで、そのうちの60パーセント近くが冗長であるので、現在 XMPP はプレゼンスデータを複数のレシピエントへ転送する際に大きなオーバーヘッドがある。この問題を緩和する新しいプロトコルが考えられているdate=2010年4月}}。
インバンドによるバイナリデータの転送は非効率 : XMPP は単一の長い XML ドキュメントとして符号化されるので、バイナリデータはインバンドで転送する前にまず Base64 でエンコードしなければならない。このため巨大なバイナリデータはアウトオブバンドで転送するのがもっとも良く、インバンドによる通信は制御用に用いる。最も良い例は XMPP の拡張プロトコルであるJingleである。

5. サーバの分散とアドレッシング
-----------------

XMPP ネットワークはクライアントサーバアーキテクチャを採用しているが、中央サーバを持たない。権威ある中央サーバが存在しないように設計されており、これはAOL Instant Messenger や Windows Live メッセンジャーとは対照的である。jabber.org で動作している公共の XMPP サーバが存在しており、ここに多くのユーザが登録されているので、この点などでよく混乱されるが、誰でも自分のドメインで自分の XMPP サーバを立てることができる。XMPP の標準のTCP ポートは5222である。

ネットワーク上のすべてのユーザはユニークな Jabber IDを持つ。ID のリストを持つ中央サーバを不要にするため、JID はメールアドレスのような構造を持っている。ユーザ名と、ユーザの存在するサーバのあるドメイン名があり、アットマークで仕切られる。例えば、username@example.com のようになる。

ひとりのユーザは複数の場所からログインするかも知れないので、クライアントでは更に追加でストリングを指定する。例えば、home、work、mobile など。このリソースで、ユーザのどのクライアントなのかを特定する。そしてこのリソースは、JID のあとにスラッシュに続けてリソース名を指定することで JID に含めることができる。リソースには優先度という数値を指定しても良い。例えば、あるユーザのモバイルアカウントの完全な JID は、username@example.com/mobile である。単に username@example.com に対して送られたメッセージはもっとも優先度の高いクライアントへ行くが、username@example.com/mobile に対して送られたものはモバイルクライアントのみへ行く。

6. メッセージ転送の仕組み
--------------

//juliet@capulet.com// が //romeo@montague.net// へチャットをしたいとする。Juliet と Romeo はそれぞれ capulet.com と montague.net にアカウントを持っている。Juliet がタイプしてメッセージを送ると、一連のイベントが以下のように続く。

Juliet のクライアントがメッセージを capulet.com のサーバへ送る。
capulet.com で montague.net がブロックされていると、メッセージは破棄される。
capulet.comの サーバは montague.net へ向けてコネクションを張る。
montague.net で capulet.com がブロックされていると、メッセージは破棄される。
このとき Romeo が接続していなかったら、メッセージは後で送るために保存される。
montague.net のサーバは Romeo にメッセージを送る。

7. 他のプロトコルへの接続
--------------

XMPP の他の便利な特徴はトランスポートである。ゲートウェイという名前でも知られていて、他のプロトコルを使うネットワークにアクセスすることが可能になる。インスタントメッセージングのプロトコルだけでなく、SMS や電子メールなどのプロトコルでも可能である。マルチプロトコル対応のクライアントと違って、リモートコンピュータで動作する特別なゲートウェイサービスを通して通信することで、サーバレベルでアクセス出来るようにしている。ユーザは、これらのゲートウェイのひとつにネットワークのログインに必要な情報を提供して「登録」する。すると、そのユーザは、XMPP のユーザと同じようにそのネットワークのユーザと通信できる。つまり、XMPP を完全にサポートしたクライアントであれば、ゲートウェイが存在するどんなネットワークのアクセスにも使えるということである。クライアントに一切コードを追加する必要がなく、クライアントが直接インターネットに接続できる必要もない。こういった機能は、使っているプロトコルの利用規約に違反する可能性があるが、国によって何カ国かでは、そのような利用規約は法的拘束力を持たない。

8. 関連項目
-------

Matrix_

9. 脚注
-----

10. 外部リンク
---------

3920}} - Extensible Messaging and Presence Protocol : Core
3921}} - Extensible Messaging and Presence Protocol : Instant Messaging and Presence
3922}} - Mapping the Extensible Messaging and Presence Protocol  to Common Presence and Instant Messaging 
3923}} - End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol 
[3]
[4] - End user introduction to XMPP 
[5]
[6]
[7]