XMPPとは何? わかりやすく解説 Weblio辞書 (original) (raw)

公式ロゴ

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

特徴

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

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

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

歴史

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

1999年から2000年に開発された初期の Jabber プロトコルは XMPP の基礎となり、XMPP は RFC 3920RFC 3921 として公表されている。(IETF の XMPP Working Group による規格化の際に主に変わった部分は、伝送路の暗号化用に TLS の追加と認証用に SASL が追加されたところである。)XMPPはよく SIMPLE (インスタントメッセージングプロトコル)(英語版) の競合相手とみなされる。SIMPLE は Session Initiation Protocol (SIP) プロトコルを基礎とする、インスタントメッセージングとプレゼンス通知の標準プロトコルである[3][4]

XMPP をベースにした最初の IM サービスは Jabber.org であり、1999年以降連続稼動していて XMPP のアカウントをフリーで提供している[5]。1999年から2006年2月まではサービスに jabberd を使用していたが、それ以降は ejabberd(英語版) に移行した。(どちらも自由ソフトウェアのサーバアプリケーションである。)2010年1月には Isode Ltd. によるプロプライエタリの M-Link へ移行する予定である[6]

2005年8月に GoogleGoogle Talk を発表した。これは VoIP と IM システムをあわせ持ち、インスタントメッセージングの機能に XMPP を使用していて、音声とファイル転送のシグナリングプロトコルのベースに XMPP を使用している。(最初のリリースにはサーバ間通信は含まれていなかったが、2006年1月17日にこの機能は有効になった。)[7]

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

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

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

長所

この節には独自研究が含まれているおそれがあります。 問題箇所を検証し出典を追加して、記事の改善にご協力ください。議論はノートを参照してください。(2023年11月)

短所

この節には独自研究が含まれているおそれがあります。 問題箇所を検証し出典を追加して、記事の改善にご協力ください。議論はノートを参照してください。(2023年11月)

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

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

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

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

メッセージ転送の仕組み

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

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

他のプロトコルへの接続

Alice は XMPP ネットワークを通して ICQ トランスポートにメッセージを送る。次にメッセージは ICQ ネットワークを通じて Bob へ送られる。

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

関連項目

脚注

  1. ^ Jabber Inc. - About Us
  2. ^ Open Real Time Messaging System
  3. ^ "XMPP rises to face SIMPLE standard", Infoworld magazine, April 17, 2003 XMPP rises to face SIMPLE standard
  4. ^ "XMPP vs SIMPLE: The race for messaging standards", Infoworld magazine, May 23, 2003 Infoworld.com
  5. ^ Chatting Up the Chef Linux Journal March 1, 2003 by Marcel Gagné
  6. ^Jabber.org - XMPP Server Migration” (2009年8月12日). 2009年12月14日閲覧。
  7. ^ Burd, Gary (2006年1月17日). “XMPP Federation”. 2007年11月30日閲覧。
  8. ^Cisco Announces Definitive Agreement to Acquire Jabber”. 2010年1月2日閲覧。
  9. ^Facebook Chat Now Available Everywhere”. 2010年2月11日閲覧。
  10. ^Integrating with Facebook Chat”. 2010年2月21日閲覧。
  11. ^ Question FAQ #270
  12. ^ Ovi Contacts
  13. ^ "Lotus Sametime 7.5 Interoperates with AIM, Google Talk", eWeek, December 6, 2006 Eweek.com
  14. ^ "Lotus ships gateway to integrate IM with AOL, Yahoo, Google", Network World, December 6, 2006 Networkworld.com
  15. ^ "Unified Communications: Uniting Communication Across Different Networks", Microsoft Press Release, October 1, 2009 Microsoft.com
  16. ^ [Standards-JIG] Distribution of stanza types
  17. ^ [Standards-JIG] proto-JEP: Smart Presence Distribution

外部リンク

インスタントメッセージ
プロトコル 公開 DDP IMPP IRC Matrix MTProto Signalプロトコル SIP MSRP SIMPLE Tox RetroShare XMPP Jingle WFP Zephyr 非公開 MSNP OSCARTOC Skype
サービス Band BBM Chatwork DingTalk Discord Google ハングアウト Google Meet GroupMe Hike Messenger HipChat ICQ iGap iMessage IRC Networks Jongla KakaoTalk Kik Libon LINE Marco Polo Mattermost Messenger Messages Palringo QQ Signal Skype Slack Snapchat SNOW Tango Telegram Textfree The Palace Threema Tox Trillian Viber Virtual Places Chat WeChat WhatsApp Wickr Windows Messenger service Zoom Zulip
クライアント 単一プロトコル Baidu Hi BBM Element FaceTime Gadu-Gadu GroupMe HCL Sametime ICQ Jami Messenger Signal Skype Telegram Tencent QQ Tox WeChat WhatsApp Allo CSipSimple Fetion IMVU Jongla Linphone Palringo RetroShare Ricochet Wickr Wire マルチプロトコル Adium Ayttm BitlBee Centericq eBuddy Empathy Fire Instantbird Jitsi Telepathy Kopete メッセージ Miranda IM Pidgin Finch Skype for Business Trillian QIP 2010 Upptalk XMPP Bombus ChatSecure Conversations Gajim Nimbuzz Psi Tkabber Spark Messengerサービス aMSN Microsoft Teams Skype
消滅 消滅したインスタントメッセンジャーの一覧(英語版
関連種目 チャットボット(人工無脳) ファイル共有ソフト Voice over IP Webカメラ ビデオ会議 テレビ電話 顔文字 モバイルインスタントメッセージング(英語版) ステータスメッセージ(英語版) バディプロフィール(英語版コンタクトリスト インスタントメッセージサービスセンター(英語版) インスタントメッセージングマネージャー(英語版プレゼンス情報 IMボット(英語版) バックチャンネル(英語版) SMS言語(英語版