XMPP
読み:エックスエムピーピー
外語:XMPP: Extensible Messaging and Presence Protocol
インスタントメッセンジャー
用
通信プロトコル
の一つ。
オープンソース
である。Jabberとして知られる。
目次
概要
特徴
沿革
Jabber
普及
技術
仕様
プロトコル
サーバー
ライブラリー
概要
従来のインスタントメッセンジャー(IM)は、ユーザーの囲い込みを狙い、プロトコルは非公開、のみならず他社のクライアントからの乗り入れも拒絶するような方針を貫いてきた。
XMPPはそれと全く正反対で、オープンソースであり、仕様は完全に公開されている。必要であれば、誰でも自分専用のXMPPサーバーを立ち上げることができる。
XMPPは
電子メール
のような機構の技術である。電子メールが、異なる様々な電子メールソフトで相互に交信できるように、他の数え切れないほど多数ある様々な
XMPPクライアント
と相互に交信できる。
特徴
沿革
1999(平成11)年、Jeremie Millerにより作られたJabberが公開された。
Jabberのプロトコルは、XMPPとしてRFCとなり、公開された。JabberがXMPPになる際に、
TLS
による暗号化と、
SASL
による認証が追加されている。
以降、Jabberのサービスはこれを著している時点でも続いている。
Jabber
JabberはXMPPを採用したオープンソースのインスタントメッセンジャーシステム(プロトコル、サーバー、クライアント一式)である。
2005(平成17)年、GoogleはJabberをベースとして開発したGoogle Talkを発表した。Google Talkは、
VoIP
による電話機能と、XMPPによるインスタントメッセンジャー機能を併せ持つソフトウェアである。
2008(平成20)年にJabber, Inc.は
Cisco Systems
に買収された。この時にXMPPのRFCを書いたJabber Software FoundationのPeter Saint-AndreもCisco Systemsに移籍し、以降XMPPの仕様はCisco Systemsが主体となって開発、改良が続けられており、また製品名もCisco Jabberとなっている。
普及
XMPPは公開された仕様であることから採用しやすく、対応ソフト(
XMPPクライアント
)は無数に存在する。
かつては、Google TalkやAppleの「メッセージ」がXMPPクライアントだったが、その後継となる
ハングアウト
やiMessageは独自プロトコルであり相互の交信はできず、つまり大手はいずれも囲い込みの方向へと舵を切った。
しかし今も、
様々なIMツールが利用されている
。
サーバーも種類は多くは無いが主要OSは網羅している
。
またFacebookのように、独自仕様で実装されたものに対して後からXMPPのインターフェイスが提供される例がある。
技術
仕様
XMPPの仕様はRFCとして公開されている。XMPPを規定するRFCに、次のようなものがある。
RFC 6120
(XMPP-CORE) Extensible Messaging and Presence Protocol (XMPP): Core
RFC 6121
(XMPP-IM) Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence
RFC 7622
(XMPP-ADDR) Extensible Messaging and Presence Protocol (XMPP): Address Format
RFC 3922
(XMPP-CPIM) Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM)
RFC 7712
(XMPP-DNA) Domain Name Associations (DNA) in the Extensible Messaging and Presence Protocol (XMPP)
RFC 3923
(XMPP-E2E) End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP)
RFC 7711
(XMPP-POSH) PKIX over Secure HTTP (POSH)
RFC 7395
(XMPP-WEBSOCKET) An Extensible Messaging and Presence Protocol (XMPP) Subprotocol for WebSocket
RFC 4854
(XMPP URN) A Uniform Resource Name (URN) Namespace for Extensions to the Extensible Messaging and Presence Protocol (XMPP)
プロトコル
大雑把には、XMPP/
SASL
/
TLS
/
TCP
というレイヤー構造になっている。
ポート番号は、5222/tcpが使われる。
メッセージは
XML
形式である。
サーバー
XMPPサーバーは、あたかも電子メールのサーバーのように、複数、任意に設置することができる。
このため大手企業がサービスするインスタントメッセンジャーシステムとは違い、権威ある中央サーバーをシステムとして持たず、XMPPのサーバー同士が相互にメッセージなどを交換することで協調して動作する。
この機構は電子メールと同様に、サーバー負荷が軽く済み、またネットワーク障害にも強い。どこかが故障しても、無関係のユーザーには支障が出ない利点がある。
サーバーソフトウェアも様々あるが、オープンソースでは例えばLinuxやWindows向けは「Openfire」(Apacheライセンス)、BSD向けは「Pros〓dy IM」(MITライセンス)などがある。
ライブラリー
XMPPの仕様は多数のRFCに別れているなど複雑であり、個人で実装するようなことは現実的ではない。そこで、実装をライブラリー化して公開または販売しているものもある。こういったものを用いると、比較的簡単に
XMPPクライアント
を実装することができる。
C用、C++用、.NET用、Java用、JavaScript用、Go用、Rust用、C#用など、様々なものがある
。AndroidのKotlin用ではTigase Halcyon、iOSのSwift用ではTigase Swift XMPP client libraryというオープンソースのライブラリーがあるが、いずれもライセンスがAGPLv3であるため使いにくい。
再検索