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に、次のようなものがある。

  • 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であるため使いにくい。

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club