XMPP
読み:エックスエムピーピー
外語:XMPP: Extensible Messaging and Presence Protocol

 インスタントメッセンジャー通信プロトコルの一つ。オープンソースである。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に、次のようなものがある。

プロトコル
 大雑把には、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であるため使いにくい。

再検索