Submit Search
Upload
XMPPの紹介
•
Download as PPTX, PDF
•
3 likes
•
5,607 views
隆行 神戸
Follow
2015年12月06日 西プロ(福岡市西区プログラミング勉強会資料) オープンなメッセージングとプレゼンス情報の交換のためのプロトコル、XMPPについての紹介。
Read less
Read more
Internet
Report
Share
Report
Share
1 of 20
Download now
Recommended
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
コールバックと戦う話
コールバックと戦う話
torisoup
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
Yoshiki Hayama
Recommended
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
コールバックと戦う話
コールバックと戦う話
torisoup
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
Yoshiki Hayama
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
モノビット エンジン
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
torisoup
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
Masahito Zembutsu
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
Unity Technologies Japan K.K.
IL2CPPに関する軽い話
IL2CPPに関する軽い話
Wooram Yang
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
モノビット エンジン
ソーシャルゲームスケールアウトの歴史
ソーシャルゲームスケールアウトの歴史
Drecom Co., Ltd.
【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター
Unity Technologies Japan K.K.
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
torisoup
型安全性入門
型安全性入門
Akinori Abe
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
DeNA
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
KiyotomoHiroyasu
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
Reimi Kuramochi Chiba
XMPP仕様簡単解説
XMPP仕様簡単解説
Keiichi Daiba
XMPPクライアント・プログラミング
XMPPクライアント・プログラミング
隆行 神戸
More Related Content
What's hot
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
モノビット エンジン
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
torisoup
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
Masahito Zembutsu
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
Unity Technologies Japan K.K.
IL2CPPに関する軽い話
IL2CPPに関する軽い話
Wooram Yang
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
モノビット エンジン
ソーシャルゲームスケールアウトの歴史
ソーシャルゲームスケールアウトの歴史
Drecom Co., Ltd.
【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター
Unity Technologies Japan K.K.
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
torisoup
型安全性入門
型安全性入門
Akinori Abe
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
DeNA
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
KiyotomoHiroyasu
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
Reimi Kuramochi Chiba
What's hot
(20)
メタプログラミングって何だろう
メタプログラミングって何だろう
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
IL2CPPに関する軽い話
IL2CPPに関する軽い話
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
ソーシャルゲームスケールアウトの歴史
ソーシャルゲームスケールアウトの歴史
【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
型安全性入門
型安全性入門
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
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