Submit Search
Upload
XMPPの紹介
•
Download as PPTX, PDF
•
3 likes
•
5,598 views
隆行 神戸
Follow
2015年12月06日 西プロ(福岡市西区プログラミング勉強会資料) オープンなメッセージングとプレゼンス情報の交換のためのプロトコル、XMPPについての紹介。
Read less
Read more
Internet
Report
Share
Report
Share
1 of 20
Download now
Recommended
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
Moving computation to the data (1)
Moving computation to the data (1)
Kazunori Sato
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
目grep入門 +解説
目grep入門 +解説
murachue
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
さくらのVPS で IPv4 over IPv6ルータの構築
さくらのVPS で IPv4 over IPv6ルータの構築
Tomocha Potter
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
Recommended
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
Moving computation to the data (1)
Moving computation to the data (1)
Kazunori Sato
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
目grep入門 +解説
目grep入門 +解説
murachue
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
さくらのVPS で IPv4 over IPv6ルータの構築
さくらのVPS で IPv4 over IPv6ルータの構築
Tomocha Potter
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
SQLアンチパターン~スパゲッティクエリ
SQLアンチパターン~スパゲッティクエリ
Itabashi Masayuki
Protocol Buffers 入門
Protocol Buffers 入門
Yuichi Ito
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Preferred Networks
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
Kiyotaka Doumae
ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版
Tokoroten Nakayama
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
マイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karate
Takanori Suzuki
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
あなたのチームの「いい人」は機能していますか?
あなたのチームの「いい人」は機能していますか?
Minoru Yokomichi
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
YoheiGibo
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ
CLARA ONLINE, Inc.
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
例外設計における大罪
例外設計における大罪
Takuto Wada
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
XMPP仕様簡単解説
XMPP仕様簡単解説
Keiichi Daiba
XMPPクライアント・プログラミング
XMPPクライアント・プログラミング
隆行 神戸
More Related Content
What's hot
SQLアンチパターン~スパゲッティクエリ
SQLアンチパターン~スパゲッティクエリ
Itabashi Masayuki
Protocol Buffers 入門
Protocol Buffers 入門
Yuichi Ito
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Preferred Networks
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
Kiyotaka Doumae
ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版
Tokoroten Nakayama
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
マイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karate
Takanori Suzuki
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
あなたのチームの「いい人」は機能していますか?
あなたのチームの「いい人」は機能していますか?
Minoru Yokomichi
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
YoheiGibo
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ
CLARA ONLINE, Inc.
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
例外設計における大罪
例外設計における大罪
Takuto Wada
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
What's hot
(20)
SQLアンチパターン~スパゲッティクエリ
SQLアンチパターン~スパゲッティクエリ
Protocol Buffers 入門
Protocol Buffers 入門
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
マイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karate
メタプログラミングって何だろう
メタプログラミングって何だろう
あなたのチームの「いい人」は機能していますか?
あなたのチームの「いい人」は機能していますか?
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Pythonによる黒魔術入門
Pythonによる黒魔術入門
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ
暗号技術の実装と数学
暗号技術の実装と数学
例外設計における大罪
例外設計における大罪
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Viewers also liked
XMPP仕様簡単解説
XMPP仕様簡単解説
Keiichi Daiba
XMPPクライアント・プログラミング
XMPPクライアント・プログラミング
隆行 神戸
JMeterをWebでしか設定できないサーバの設定自動化に使う
JMeterをWebでしか設定できないサーバの設定自動化に使う
隆行 神戸
オレオレ言語実装に役立つプル型ASTウォーカーAPI
オレオレ言語実装に役立つプル型ASTウォーカーAPI
隆行 神戸
テンプレート・エンジンVelocity
テンプレート・エンジンVelocity
隆行 神戸
Message delivery over XMPP network
Message delivery over XMPP network
Hideki Saito
Transports on XMPP network
Transports on XMPP network
Hideki Saito
組み込みから IoT へ
組み込みから IoT へ
Shin-ya Koga
ゴアの預言した「スマート・グリッド」が現実のものに
ゴアの預言した「スマート・グリッド」が現実のものに
Fusion Reactor LLC
デバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoT
Shin-ya Koga
ゲームマップのためのグラフAPIの設計
ゲームマップのためのグラフAPIの設計
隆行 神戸
(Unityよくわかってない人のための)なんとなくわかるかもしれないAssetBundle
(Unityよくわかってない人のための)なんとなくわかるかもしれないAssetBundle
Yusuke HIDESHIMA
IoT時代を支えるプロトコルMQTT技術詳解
IoT時代を支えるプロトコルMQTT技術詳解
Naoto MATSUMOTO
Openfire xmpp server on windows server 2012 r2 with spark sso
Openfire xmpp server on windows server 2012 r2 with spark sso
laonap166
Microsoft Azure EventHubで始めるIoT
Microsoft Azure EventHubで始めるIoT
Keiichi Hashimoto
Router chat for np
Router chat for np
Okuya Igarashi
どっかのしたのほう
どっかのしたのほう
_norin_
サーバPUSHざっくりまとめ
サーバPUSHざっくりまとめ
Yasuhiro Mawarimichi
Maven基礎
Maven基礎
Toshio Takiguchi
Mqttで始めるIoT
Mqttで始めるIoT
Shintaro Hosoai
Viewers also liked
(20)
XMPP仕様簡単解説
XMPP仕様簡単解説
XMPPクライアント・プログラミング
XMPPクライアント・プログラミング
JMeterをWebでしか設定できないサーバの設定自動化に使う
JMeterをWebでしか設定できないサーバの設定自動化に使う
オレオレ言語実装に役立つプル型ASTウォーカーAPI
オレオレ言語実装に役立つプル型ASTウォーカーAPI
テンプレート・エンジンVelocity
テンプレート・エンジンVelocity
Message delivery over XMPP network
Message delivery over XMPP network
Transports on XMPP network
Transports on XMPP network
組み込みから IoT へ
組み込みから IoT へ
ゴアの預言した「スマート・グリッド」が現実のものに
ゴアの預言した「スマート・グリッド」が現実のものに
デバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoT
ゲームマップのためのグラフAPIの設計
ゲームマップのためのグラフAPIの設計
(Unityよくわかってない人のための)なんとなくわかるかもしれないAssetBundle
(Unityよくわかってない人のための)なんとなくわかるかもしれないAssetBundle
IoT時代を支えるプロトコルMQTT技術詳解
IoT時代を支えるプロトコルMQTT技術詳解
Openfire xmpp server on windows server 2012 r2 with spark sso
Openfire xmpp server on windows server 2012 r2 with spark sso
Microsoft Azure EventHubで始めるIoT
Microsoft Azure EventHubで始めるIoT
Router chat for np
Router chat for np
どっかのしたのほう
どっかのしたのほう
サーバPUSHざっくりまとめ
サーバPUSHざっくりまとめ
Maven基礎
Maven基礎
Mqttで始めるIoT
Mqttで始めるIoT
Similar to XMPPの紹介
TRPGオンラインセッション環境とルール&シナリオ記述言語
TRPGオンラインセッション環境とルール&シナリオ記述言語
隆行 神戸
すぱこーに学ぶアプリ開発の第一歩
すぱこーに学ぶアプリ開発の第一歩
You&I
プロジェクトマネジメント再入門 〜PjMは何であって何でないのか〜
プロジェクトマネジメント再入門 〜PjMは何であって何でないのか〜
Ayako Togaeri
Java→phpエンジニアに転向した話
Java→phpエンジニアに転向した話
Kuroiwa Takumi
Jikopr
Jikopr
huydo88
夢中にさせる授業「ゲーミフィケーション×授業」2016最新事例
夢中にさせる授業「ゲーミフィケーション×授業」2016最新事例
Yoshihiro Kishimoto
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
Fumiya Sakai
2018.10.8 つくばビットコインミートアップ 藤田
2018.10.8 つくばビットコインミートアップ 藤田
Takuya Fujita
TRPGオンラインセッション環境とルール&シナリオ記述言語 その2
TRPGオンラインセッション環境とルール&シナリオ記述言語 その2
隆行 神戸
私の失敗道(仮)
私の失敗道(仮)
Yuuki Tan-nai
Go x Slack API
Go x Slack API
weddingpark
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
tokyorgirls
Aizu.LT #16
Aizu.LT #16
Taku Unno
ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治
Drecom Co., Ltd.
【Fan】学びの場づくり、"勝手に"最先端はこれだ! コンテンツデザインからコミュニティデザインへ
【Fan】学びの場づくり、"勝手に"最先端はこれだ! コンテンツデザインからコミュニティデザインへ
Jun Nakahara
WebSig1日学校2013開校資料~和田 嘉弘
WebSig1日学校2013開校資料~和田 嘉弘
WebSig24/7
大学におけるICT教育の事例
大学におけるICT教育の事例
Hiroki OKAZAKI
認知症プロジェクト~社会課題解決のパートナーとして~
認知症プロジェクト~社会課題解決のパートナーとして~
Dementia Friendly Japan Initiative
なぜ、いま情報デザインなのか?
なぜ、いま情報デザインなのか?
Takahito Kamihira
Sapporo Data Pioneers #1 LT:240118_sapporodatapioneers.pptx
Sapporo Data Pioneers #1 LT:240118_sapporodatapioneers.pptx
yasuhiro ishida
Similar to XMPPの紹介
(20)
TRPGオンラインセッション環境とルール&シナリオ記述言語
TRPGオンラインセッション環境とルール&シナリオ記述言語
すぱこーに学ぶアプリ開発の第一歩
すぱこーに学ぶアプリ開発の第一歩
プロジェクトマネジメント再入門 〜PjMは何であって何でないのか〜
プロジェクトマネジメント再入門 〜PjMは何であって何でないのか〜
Java→phpエンジニアに転向した話
Java→phpエンジニアに転向した話
Jikopr
Jikopr
夢中にさせる授業「ゲーミフィケーション×授業」2016最新事例
夢中にさせる授業「ゲーミフィケーション×授業」2016最新事例
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
2018.10.8 つくばビットコインミートアップ 藤田
2018.10.8 つくばビットコインミートアップ 藤田
TRPGオンラインセッション環境とルール&シナリオ記述言語 その2
TRPGオンラインセッション環境とルール&シナリオ記述言語 その2
私の失敗道(仮)
私の失敗道(仮)
Go x Slack API
Go x Slack API
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
Aizu.LT #16
Aizu.LT #16
ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治
【Fan】学びの場づくり、"勝手に"最先端はこれだ! コンテンツデザインからコミュニティデザインへ
【Fan】学びの場づくり、"勝手に"最先端はこれだ! コンテンツデザインからコミュニティデザインへ
WebSig1日学校2013開校資料~和田 嘉弘
WebSig1日学校2013開校資料~和田 嘉弘
大学におけるICT教育の事例
大学におけるICT教育の事例
認知症プロジェクト~社会課題解決のパートナーとして~
認知症プロジェクト~社会課題解決のパートナーとして~
なぜ、いま情報デザインなのか?
なぜ、いま情報デザインなのか?
Sapporo Data Pioneers #1 LT:240118_sapporodatapioneers.pptx
Sapporo Data Pioneers #1 LT:240118_sapporodatapioneers.pptx
XMPPの紹介
1.
XMPPの紹介 神戸隆行(椎路ちひろ)Twitter: @ChihiroShiiji /
FB: takayuki.kando 2015/12/06(第12.5回福岡市西区プログラム勉強会資料)
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.
この発表の内容 XMPPの概要と特長 インスタントメッセージング&プレゼンスの説明
XMPPの基本的な概念の説明 他プロトコルとの比較 HTTP, IRC, SMTP&POP XMPPの拡張可能性、プロトコルの定義と通信例 拡張規格の例 …十分長くなってしまったのでプログラミングは次回以降に
4.
XMPPとは XMPP: eXtensible
Messaging and Presence Protocol(旧名: jabbar) 標準化団体: http://xmpp.org/ コア部分はRFCとしてIETFへ出されるが、そのRFCの内容の検討 XMPP内の拡張(XEP: XMPP Extension Protocols)の 策定 インスタント・メッセージングとプレゼンス(状態)情報のための オープンなプロトコル 例:GoogleTalk…残念ながらサービス終了 まだだ、まだ終わらんよ! 規格の制定プロセスは進行中 さまざまなクライアントやサーバの実装も存続中 現状、インスタント・メッセージング・サービスは特定の企業が提供し、 プロトコルが非公開であるものが多い SNSの機能の一部として提供されていることも多い 4
5.
XMPPの狙いと特長 狙い: メール、IRC、Web上の各種メッセージングサービス、マイクロBlog、RSSと いったプッシュ通知を伴うテキスト送受信サービスの機能を包含し、置き換える ことも可能なプロトコル
既存のオープンでない企業独自のメッセージングサービスを置き換え可能であ るオープンなプロトコル 特長: オープン オープンな制定プロセス ドキュメントもオープン・アクセス 拡張可能(詳細は後述) プロトコル自身をセキュアに拡張可能 クライアントもサーバも段階的にプロトコルをサポートすることで機能を追加可能 セキュア(詳細は後述) サーバ間のリレー接続を排し、セキュアなサーバのみでのネットワークの実現を可能 にする 連絡先リストによりSPAMユーザを拒否し易くする 拡張可能なプロトコルにより、実行可能なダウンロードコンテンツによる拡張を必要と しない
6.
インスタント・メッセージング テキスト・メッセージングはメール、チャットなどユーザ間でテ キストメッセージを送り合うサービスの総称 中でもインスタント・メッセージングは両者がオンラインであれば即 時にメッセージを送受信できるサービス
ただしXMPPではメールのようにオフライン状態のユーザあてのメッセー ジを蓄積して後で配送することもできる(オフライン・メッセージ) 基本は1対1 ただしXMPPは: 複数人での会議もサポート(チャット) マイクロブログ、RSSに似たマルチキャスト配信もサポート(PubSub) 拡張機能: 音声通話、映像通話、ファイル転送、……etc.(Stream Initiation、 JIngle) メッセージングのために必要な連絡先リスト(Roster)の管理 も含む 連絡を許すユーザの登録、拒否するユーザの登録など
7.
プレゼンス ユーザの状態をマルチキャストする機能 送られる状態の例:
オンライン、オフライン、ビジー、離席、…etc. 任意のショート・テキスト メッセージ入力中を示す通知 連絡先リスト(Roster)に登録されている相手にだけ配信され る 拡張機能: ユーザーアバター(所謂「アイコン」)画像 現在聞いている曲 …etc.
8.
XMPPネットワークの構造と機能 XMPP サーバ XMPP クライアント XMPP サーバ・コン ポーネント XMPP クライアント XMPP クライアント XMPP クライアント 他所のXMPP サーバ UserA UserB ボット(ユーザがおらず自動応 答するクライアント) サーバに機 能を追加する メッセージ等をルーティ ングする ユーザを認証する ユーザーアカウント情 報を管理する ユーザの連絡先リスト を管理する オフライン・メッセージを 保管する 実装ポリシー: クライアントはUIに専念 サーバ側に様々な機能を実現 することが推奨されている
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.
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.
IRCとXMPPの比較 IRC XMPP ユーザ・アドレス なし
あり ユーザ間メッセージング なし(DCCでは可能) あり 拡張機能 なし(DCCではファイル転 送可能) 音声通話、映像通話、ファ イル転送、他 連絡先リスト なし あり プレゼンス なし あり 会議室(チャット) チャネル ユーザはチャネルを作成 できる チャネルを指定して参加 チャネルは参加者がい なくなると自動消失 チャットルーム サーバにチャットルーム を設置できる 管理者を指定できる 明示的に削除するまで 利用者がいなくても存続 サーバ間接続 ツリー・トポロジー、サーバ 間リレー サーバ間は直接接続のみ。 リレーはしない ※ DCC: IRCの拡張、ユーザ間の直接チャットとファイル転送を可能にする。規格化はされていない
12.
XMPPとHTTPの比較 12 HTTP XMPP 開発された目 的 ドキュメント公開、ファイル転送 インスタント・メッセージング 通信のモデル
厳密なサーバ・クライアント型、 プル型、subscribe不要 サーバ・クライアント型、プッシュ型、 subscribeに基づくユーザー管理 セッション管理 なし、cookieなどを用いプログラ マが行う あり(ログインからログアウトまでが1 セッション、この間基本的に接続しっ ぱなし) 認証/暗号化 なし、行う場合は単位となるアク セス(GETやPOST)毎 セッション開始時に認証、暗号化方 式の協議も行う 拡張可能性 プロトコル自身にはなし、コンテ ンツにスクリプトやフォームを含 めることで対応 XMLによりプロトコルが定義され、 XMLの名前空間の仕組みを利用して プロトコル自身の拡張が可能
13.
XMPPの拡張可能性 将来の必要に対応できる柔軟性 プロトコルがコア・プロトコル+拡張プロトコルの集合とな りサーバやクライアントの実装を段階的に機能強化可能
XMPPではプロトコルを安全に拡張できる XMLによるプロトコルの定義 HTTPには拡張可能性がないので機能拡張は以下により行 われてきた: コンテンツの動的生成(CGI、PHP、…etc.) 実行可能コンテンツの配布(JavaScript、Flash、…etc.)
14.
XMLによるプロトコル定義 XMPPのプロトコルはXMLを通じて定義される XMLの解析、検証、生成、拡張の仕組みを利用して XMPPの「パケット」の解析、検証、生成、拡張を行うこと ができる
実際、入力の処理にはXMLパーサが、出力の生成にはXML フォーマッタが利用される 規格においてプロトコルの形式的な定義はXML Schemaで 記述されている XMLの名前空間の仕組みを利用してプロトコルの拡張が定 義されている 形式的な厳密さと拡張可能性の両立
15.
XML文書としてのXMPPセッション XMPPの通信の1セッションは2つ1組のXML文書の送 受信と看做すことができる 入出・出力のデータ列をそれぞれまとめてストリーム・オブジェ クトと看做すことができるのと同じアイディア
XMPPの通信セッションは全て1対のXML文書となる クライアントとサーバ間 サーバとサーバの間 サーバとサーバ拡張コンポーネントの間 …etc.
16.
XML文書としての構造 XML文書のトップレベル要素はStream要素 XMPPのセッションに対応
トップレベルの直下にはスタンザと総称される3種類の要 素がある 俗には「パケット」とも称される 各種拡張は多くの場合スタンザに子要素を追加して行われる スタンザ Presence要素: プレゼンス情報を表すスタンザ Message要素: テキスト・メッセージを表すスタンザ IQ要素: 各種問合せやデータの送受信に利用されるスタンザ
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.
拡張規格(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.
拡張規格(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.
まとめ 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/
Editor's Notes
ここで分散ビルド・ミドルウェアで用いられているXMPPというプロトコルについて補足:
ここで分散ビルド・ミドルウェアで用いられているXMPPというプロトコルについて補足:
Download now