Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

XMPPの紹介

3.166 Aufrufe

Veröffentlicht am

2015年12月06日 西プロ(福岡市西区プログラミング勉強会資料)
オープンなメッセージングとプレゼンス情報の交換のためのプロトコル、XMPPについての紹介。

Veröffentlicht in: Internet
  • Als Erste(r) kommentieren

XMPPの紹介

  1. 1. XMPPの紹介 神戸隆行(椎路ちひろ)Twitter: @ChihiroShiiji / FB: takayuki.kando 2015/12/06(第12.5回福岡市西区プログラム勉強会資料)
  2. 2. 自己紹介  神戸 隆行(かんど たかゆき)、PN. 椎路ちひろ(しいじ ちひろ) Twitter: @ChihiroShiiji / FB: takayuki.kando  出身は名古屋、趣味イラストとコスプレ  本業は九大の社会人博士課程で博士を取ろうとしながら研究開発に従事する有 期雇用の勤め人@百道浜  専門は流転中:  数値解析(のプログラミング・インターフェースの改良、修論@名大) →数式処理(のプログラミング・インターフェースの改良@某F研) →プログラム最適化(博士課程一回目の失敗@東工大) (2005年に仕事を紹介され福岡へ来た) →コンパイラ開発(Redefis、動的再構成可能プロセッサ向けコンパイラ) →SW/HW開発環境(IDE上からクラウド上の開発ツールを利用できるミドルウェア PTaaSの開発) http://www.qualiarc.com/?post_type=seihin&p=202  使用プログラミング言語:  最初はFORTRAN、大学以降はC++とC、今は主にJava、他は必要に応じてボチボチ  本日は趣味と仕事で利用しているXMPPの紹介  幾つかのソースとサンプルをGitHub[ https://github.com/TakayukiKando/Lore ]に置いてます 2015/04/122 第11回福岡市西区プログラム勉強会
  3. 3. この発表の内容  XMPPの概要と特長  インスタントメッセージング&プレゼンスの説明  XMPPの基本的な概念の説明  他プロトコルとの比較  HTTP, IRC, SMTP&POP  XMPPの拡張可能性、プロトコルの定義と通信例  拡張規格の例 …十分長くなってしまったのでプログラミングは次回以降に
  4. 4. XMPPとは  XMPP: eXtensible Messaging and Presence Protocol(旧名: jabbar)  標準化団体: http://xmpp.org/  コア部分はRFCとしてIETFへ出されるが、そのRFCの内容の検討  XMPP内の拡張(XEP: XMPP Extension Protocols)の 策定  インスタント・メッセージングとプレゼンス(状態)情報のための オープンなプロトコル  例:GoogleTalk…残念ながらサービス終了  まだだ、まだ終わらんよ!  規格の制定プロセスは進行中  さまざまなクライアントやサーバの実装も存続中  現状、インスタント・メッセージング・サービスは特定の企業が提供し、 プロトコルが非公開であるものが多い  SNSの機能の一部として提供されていることも多い 4
  5. 5. XMPPの狙いと特長  狙い:  メール、IRC、Web上の各種メッセージングサービス、マイクロBlog、RSSと いったプッシュ通知を伴うテキスト送受信サービスの機能を包含し、置き換える ことも可能なプロトコル  既存のオープンでない企業独自のメッセージングサービスを置き換え可能であ るオープンなプロトコル  特長:  オープン  オープンな制定プロセス  ドキュメントもオープン・アクセス  拡張可能(詳細は後述)  プロトコル自身をセキュアに拡張可能  クライアントもサーバも段階的にプロトコルをサポートすることで機能を追加可能  セキュア(詳細は後述)  サーバ間のリレー接続を排し、セキュアなサーバのみでのネットワークの実現を可能 にする  連絡先リストによりSPAMユーザを拒否し易くする  拡張可能なプロトコルにより、実行可能なダウンロードコンテンツによる拡張を必要と しない
  6. 6. インスタント・メッセージング  テキスト・メッセージングはメール、チャットなどユーザ間でテ キストメッセージを送り合うサービスの総称  中でもインスタント・メッセージングは両者がオンラインであれば即 時にメッセージを送受信できるサービス  ただしXMPPではメールのようにオフライン状態のユーザあてのメッセー ジを蓄積して後で配送することもできる(オフライン・メッセージ)  基本は1対1  ただしXMPPは:  複数人での会議もサポート(チャット)  マイクロブログ、RSSに似たマルチキャスト配信もサポート(PubSub)  拡張機能:  音声通話、映像通話、ファイル転送、……etc.(Stream Initiation、 JIngle)  メッセージングのために必要な連絡先リスト(Roster)の管理 も含む  連絡を許すユーザの登録、拒否するユーザの登録など
  7. 7. プレゼンス  ユーザの状態をマルチキャストする機能  送られる状態の例:  オンライン、オフライン、ビジー、離席、…etc.  任意のショート・テキスト  メッセージ入力中を示す通知  連絡先リスト(Roster)に登録されている相手にだけ配信され る  拡張機能:  ユーザーアバター(所謂「アイコン」)画像  現在聞いている曲  …etc.
  8. 8. XMPPネットワークの構造と機能 XMPP サーバ XMPP クライアント XMPP サーバ・コン ポーネント XMPP クライアント XMPP クライアント XMPP クライアント 他所のXMPP サーバ UserA UserB ボット(ユーザがおらず自動応 答するクライアント) サーバに機 能を追加する メッセージ等をルーティ ングする ユーザを認証する ユーザーアカウント情 報を管理する ユーザの連絡先リスト を管理する オフライン・メッセージを 保管する 実装ポリシー: クライアントはUIに専念 サーバ側に様々な機能を実現 することが推奨されている
  9. 9. ユーザID: Jabber ID(JID)  ユーザ・アカウント、ユーザが利用する個々の接続、サーバ、サー バの拡張機能といったものを一意に識別する名前  メッセージなどを配信する際に宛先として使用する  連絡先リストの識別子(ID)でもある  このようにユーザはクライアントの接続毎に識別できるため複数個所 からの接続が可能  一般形は:  <ユーザ名>@<サービス名>/<リソース名>  例:  xmpp.xgmtk.orgというDNS名のXMPPサーバ: xmpp.xgmtk.org  上記サーバのユーザkando: kando@xmpp.xgmtk.org  上記ユーザkandoが使うクライアントclient : kando@xmpp.xgmtk.org/client  上記サーバの拡張コンポーネントchatroom: chatroom.xmpp.xgmtk.org  名称はXMPPがかつてJabberと呼ばれていたことによる
  10. 10. XMPPネットワークの特徴 Server Client Client Client Server Server Client Client Client Server Server Server Serve r Serve r Serve r メール(SMTP+POP) サーバ間通信あり 他サーバにはサーバ間 中継あり クライアントは一つのサー バに接続 プッシュ型プロトコル セッション管理なし Subscribe不要 XMPP サーバ間通信あり ただしサーバー間は直接 接続で中継はない クライアントは複数のサー バに直接接続可 プッシュ型プロトコル セッション管理あり Subscribe必要 Web(HTTP) サーバ間通信なし クライアントは複数のサー バに直接接続 プル型プロトコル セッション管理なし Subscribe不要 Client Client Client 10
  11. 11. IRCとXMPPの比較 IRC XMPP ユーザ・アドレス なし あり ユーザ間メッセージング なし(DCCでは可能) あり 拡張機能 なし(DCCではファイル転 送可能) 音声通話、映像通話、ファ イル転送、他 連絡先リスト なし あり プレゼンス なし あり 会議室(チャット) チャネル ユーザはチャネルを作成 できる チャネルを指定して参加 チャネルは参加者がい なくなると自動消失 チャットルーム サーバにチャットルーム を設置できる 管理者を指定できる 明示的に削除するまで 利用者がいなくても存続 サーバ間接続 ツリー・トポロジー、サーバ 間リレー サーバ間は直接接続のみ。 リレーはしない ※ DCC: IRCの拡張、ユーザ間の直接チャットとファイル転送を可能にする。規格化はされていない
  12. 12. XMPPとHTTPの比較 12 HTTP XMPP 開発された目 的 ドキュメント公開、ファイル転送 インスタント・メッセージング 通信のモデル 厳密なサーバ・クライアント型、 プル型、subscribe不要 サーバ・クライアント型、プッシュ型、 subscribeに基づくユーザー管理 セッション管理 なし、cookieなどを用いプログラ マが行う あり(ログインからログアウトまでが1 セッション、この間基本的に接続しっ ぱなし) 認証/暗号化 なし、行う場合は単位となるアク セス(GETやPOST)毎 セッション開始時に認証、暗号化方 式の協議も行う 拡張可能性 プロトコル自身にはなし、コンテ ンツにスクリプトやフォームを含 めることで対応 XMLによりプロトコルが定義され、 XMLの名前空間の仕組みを利用して プロトコル自身の拡張が可能
  13. 13. XMPPの拡張可能性  将来の必要に対応できる柔軟性  プロトコルがコア・プロトコル+拡張プロトコルの集合とな りサーバやクライアントの実装を段階的に機能強化可能  XMPPではプロトコルを安全に拡張できる  XMLによるプロトコルの定義  HTTPには拡張可能性がないので機能拡張は以下により行 われてきた:  コンテンツの動的生成(CGI、PHP、…etc.)  実行可能コンテンツの配布(JavaScript、Flash、…etc.)
  14. 14. XMLによるプロトコル定義  XMPPのプロトコルはXMLを通じて定義される  XMLの解析、検証、生成、拡張の仕組みを利用して XMPPの「パケット」の解析、検証、生成、拡張を行うこと ができる  実際、入力の処理にはXMLパーサが、出力の生成にはXML フォーマッタが利用される  規格においてプロトコルの形式的な定義はXML Schemaで 記述されている  XMLの名前空間の仕組みを利用してプロトコルの拡張が定 義されている  形式的な厳密さと拡張可能性の両立
  15. 15. XML文書としてのXMPPセッション  XMPPの通信の1セッションは2つ1組のXML文書の送 受信と看做すことができる  入出・出力のデータ列をそれぞれまとめてストリーム・オブジェ クトと看做すことができるのと同じアイディア  XMPPの通信セッションは全て1対のXML文書となる  クライアントとサーバ間  サーバとサーバの間  サーバとサーバ拡張コンポーネントの間  …etc.
  16. 16. XML文書としての構造  XML文書のトップレベル要素はStream要素  XMPPのセッションに対応  トップレベルの直下にはスタンザと総称される3種類の要 素がある  俗には「パケット」とも称される  各種拡張は多くの場合スタンザに子要素を追加して行われる  スタンザ  Presence要素: プレゼンス情報を表すスタンザ  Message要素: テキスト・メッセージを表すスタンザ  IQ要素: 各種問合せやデータの送受信に利用されるスタンザ
  17. 17. XMPPセッションの例:クライアント→サーバ <?xml version="1.0"?> <stream:stream to="xmpp.xgmtk.org" version="1.0" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams"> <!-- …… --> <presence> <show>away</show> <status>I am attending to Nishi-Pro.</status> </presence> <!-- …… --> <message type="chat" to="choonggeun@xmpp.xgmtk.org"> <body>Hello!!</body> </message> <!-- …… --> </stream:stream> toによるメッセージの宛先指定 fromアトリビュートはサーバが 付加して受信側に送るのでクラ イアントは偽装できない セッションの開始 セッションの終了 プレゼンス情報の送信、toがない場合はサーバに より必要な範囲へ配信される メッセージ本文
  18. 18. 拡張規格(XEP)の例(1)  Data Forms(XEP-0004)  クライアントからの各種問合せに必要な情報の入力を促すフォームの 定義法  Jabber RPC(XEP-0009)  XML RPCのXMPP版  Service Discovery(Disco) (XEP-0030)  ネットワークにどのような機能を備えたサーバや、サーバ拡張やクライ アントが繋がっているかを調べるサービス発見プロトコル  Multi-User Chat(XEP-0045)  チャット・ルームを実現する  Ad-Hoc commands(XEP-0050)  サーバーサイドの設定等をクライアントに設定Wizard風に尋ねる規格  Pub Sub(XEP-0060)  登録ユーザに向けてマイクロBlogやRSS風の情報のマルチキャストを 行う
  19. 19. 拡張規格(XEP)の例(2)  XHTML-IM (XEP-0071)  文を構造化し修飾する限定的なHTMLメッセージの規格  User Avatar (XEP-0084)  ユーザのアバター(アイコン)画像の扱い  Stream Initiation (XEP-0095, XEP-0096)  ファイル転送等に使えるデータストリームのネゴシエーションの規格 群  User Mood (XEP-0107)  「気分」を表す情報の扱い  User Tune (XEP-0118)  「現在聞いている曲」などの情報の扱い  Jingle (XEP-0166他)  新しいストリーム、ファイル転送、音声通話、映像通話のためのネゴ シエーションの規格群
  20. 20. まとめ  XMPPの概要と特長  インスタントメッセージング&プレゼンスの説明  XMPPの基本的な概念の説明  他プロトコルとの比較  HTTP, IRC, SMTP&POP  XMPPの拡張可能性、プロトコルの定義と通信例  拡張規格の例 …十分長くなってしまったのでプログラミングは次回以降に  参考書  「マスタリングXMPP」  Peter Saint-Andre、Kevin Smith、Remko Troncon 著、牧野 聡 訳  O'Reilly Japan, Inc. 刊、2010年4月  http://www.oreilly.co.jp/books/9784873114477/  各種拡張プロトコル規格書  http://xmpp.org/xmpp-protocols/xmpp-extensions/

×