SlideShare a Scribd company logo
1 of 36
XMPPクライアント・プログラミング
神戸隆行(椎路ちひろ)Twitter: @ChihiroShiiji / FB: takayuki.kando
2016/04/03(第13回福岡市西区プログラム勉強会資料)
自己紹介
 神戸 隆行(かんど たかゆき)、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 ]に置いてます
2016/04/032 第13回福岡市西区プログラム勉強会
本日の内容
2016/04/03第13回福岡市西区プログラム勉強会3
 準備
1. XMPPサーバのインストール
2. XMPPユーザアカウントの作成
3. Smack APIライブラリのインストール
 サンプルプログラム"EchoBot"
 話かけるとオウム返ししてきて、以降無理やり5分毎に時報を
送ってくるやや迷惑なボット(自動クライアント)
 Gist "EchoBot.java":
https://gist.github.com/TakayukiKando/ca0c72a07bcdd04f
7a55595895ea296d
本日のターゲット(赤破線枠内):
XMPPネットワークの構造と機能
XMPP
サーバ
XMPP
クライアント
XMPP
サーバ・コン
ポーネント
XMPP
クライアント
XMPP
クライアント
XMPP
クライアント
他所のXMPP
サーバ
UserA
UserB
ボット(ユーザがおらず自動応
答するクライアント)
サーバに機
能を追加する
メッセージ等をルーティ
ングする
ユーザを認証する
ユーザーアカウント情
報を管理する
ユーザの連絡先リスト
を管理する
オフライン・メッセージを
保管する
実装ポリシー:
クライアントはUIに専念
サーバ側に様々な機能を実現
することが推奨されている
2016/04/034 第13回福岡市西区プログラム勉強会
XMPPサーバのインストール
2016/04/03第13回福岡市西区プログラム勉強会5
Openfireサーバの特徴
2016/04/03第13回福岡市西区プログラム勉強会6
 配布元: ignite realtime社、オープンソース
 2016年4月2日現在の最新版は4.0.2
 http://www.igniterealtime.org/projects/openfire/index.jsp
 中小企業程度の規模までをターゲットとするXMPPサーバ
 XMPPとその拡張について一通りの機能は実装されている
 Web(9090番ポート)で設定用GUIが提供されている
 というか設定手段はそれだけなので自動化する際には難がある
 詳しくは「JMeterをWebでしか設定できないサーバの設定自動化に使
う」(福岡Javaツール勉強会資料)へ
 http://www.slideshare.net/takayukikando/jmeterweb
 Javaで書かれている
 LinuxでもWindowsでも(未確認だけど多分Macでも)動く
 Javaでサーバ機能を拡張するサーバ・コンポーネント作成可能
 Windows版はインストーラ(.exe)あり
 .rpm(Linux)、.deb(Debian)、.dmg(Mac)もある
インストール後入力を求められること
2016/04/03第13回福岡市西区プログラム勉強会7
 localhostの9090ポートにWebブラウザでアクセスすると管理
画面(初回は初期設定画面)
 Windowsでは起動ダイアログにあるLaunch Adminボタンでも可
 サーバ名(サーバのDNS名)
 Windows環境でDNS名割り当てなしの場合、localhostからテスト
に使うだけであればはホスト名と同じにしておいても動く
 以下の設定画面例はWindowsでホスト名と同じ"ostrich"と設定した場
合
 管理者IDとパスワード
 管理者ID(JIDの"@"の左側)とパスワードを決めておく
 スキップした場合はユーザ名"admin"、パスワード"admin"となる
 RDBの指定
 内蔵(Embedded)の簡易DBを使う設定もあり
 今回はlocalhostでテストに使いたいだけなのでこちらを選択
 標準的にはPostgrsSQLを利用
 インストーラーが入れてくれます
インストール後のログイン
2016/04/03第13回福岡市西区プログラム勉強会8
 管理者のパスワードはインストール時に設定した物
 スキップしてしまった場合
 デフォルト管理者のユーザ名"admin"、パスワード:"admin"
 ユーザ作成後はそのユーザ名とパスワードでログイン可
 ユーザ名はJabbar IDの"@"より前の部分
ログイン後トップ画面
2016/04/03第13回福岡市西区プログラム勉強会9
 Openfireの
最新版は
4.0.2
 このスク
リーンショッ
トは3.7.0
 今回操作
する部分は
変更なし
データベース設定の確認
2016/04/03第13回福岡市西区プログラム勉強会10
"Database"を選
ぶとこの画面に
なる
"embedded-db"になっていれば組
み込み簡易DBが使われている
XMPPユーザアカウント作成
2016/04/03第13回福岡市西区プログラム勉強会11
ユーザ登録前のおさらい:
XMPPの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と呼ばれていたことによる
2016/04/0312 第13回福岡市西区プログラム勉強会
新規ユーザ作成
2016/04/03第13回福岡市西区プログラム勉強会13
 テストに利用するアカウントを作成
 少なくとも1つあれば主だったクライアント機能のテストはできる
 が、2つほど作っておくと分かり易いと思う
ユーザ名。Jabber IDの"@"より左
側の部分。使える文字はメールの
ユーザ名と同じ
ニックネーム。任意の文字列。
省略可。
メールアドレス。省略可。
パスワード。XMPPログイン
時とWebUIのログインで共通
パスワード確認。パスワード
と同じ文字列。
管理権限のある
アカウントを作る
時にチェック
"Create New
User"を選ぶとこ
の画面になる
"User/Groups"の"Users"タブを選ぶ
とユーザ管理画面
ユーザ登録後のユーザ一覧(User Summary)
2016/04/03第13回福岡市西区プログラム勉強会14
 テスト用のユーザのRoster(連絡先リスト)を編集して相互に連
絡可能(Both)なように登録する
 連絡先リストに関する操作をクライアントで行う場合は不要
 今回のサンプルコードではその辺りは省いているので必要
編集するユーザの
Editアイコンをクリック
例:ユーザemiri.kの連絡先一覧
2016/04/03第13回福岡市西区プログラム勉強会15
3. Editアイコンをクリックすると表
示される属性ダイアログで
subscriptionを編集してBoth
にしておく
2. "Add New Item"でRosterにエ
ントリを追加しておく
1. "User Options"の
"Roster"を選ぶと
この画面になる
※ 連絡先リストには別
サーバのJabber IDも
登録されるのでサーバ
名も含める
オマケ: Spark
2016/04/03第13回福岡市西区プログラム勉強会16
 Openfireの提供元が提供するXMPPクライアント
 Javaで書かれている
 名前の似ているSparkWebはWebページ組み込み用のクライ
アント
 配布元: ignite realtime社、オープンソース
 2016年4月2日現在の最新版は2.7.6
 http://www.igniterealtime.org/projects/spark/index.jsp
 Windows版はインストーラ(.exe)あり
 .rpm(Linux)、.deb(Debian)、.dmg(Mac)もある
 クライアント・プログラミングに必須ではないがサーバの
動作を確認したい時など、比較用にあると便利
Smack APIライブラリの
インストール
2016/04/03第13回福岡市西区プログラム勉強会17
クライアント用ライブラリSmack API
2016/04/03第13回福岡市西区プログラム勉強会18
 配布元: ignite realtime社、オープンソース
 2016年4月2日現在の最新版は4.1.6
 http://www.igniterealtime.org/projects/smack/index.jsp
 DL
 http://www.igniterealtime.org/downloads/download-
landing.jsp?file=smack/smack_4_1_6.zip
 http://www.igniterealtime.org/downloads/download-
landing.jsp?file=smack/smack_4_1_6.tar.gz
 Javaで書かれたクライアント用ライブラリ
 一通りの機能は揃っている
 自分で拡張機能の実装でもしない限りは、XMLパーサを呼んでXML
要素をパース&生成する必要はない
 Java 7 SE以上、Java 8 SEでも動く
Smack APIのインストール
2016/04/03第13回福岡市西区プログラム勉強会19
 環境に応じて.zipか.tar.gzファイルをダウンロード&展開
 必要な.jarファイルにクラスパスを通す
 smack-core.jar …コア部分
 smack-extensions.jar …拡張部分
 smack-debug.jar …デバッグ用拡張
 Smack APIをソースからコンパイルする場合
 GradleやMavenを依存の自動解決をしないならばXml Pull
Parser(詳細は付録に)のインストールが必要
 Xml Pull Parser: http://www.xmlpull.org/
サンプル・プログラム
EchoBot
2016/04/03第13回福岡市西区プログラム勉強会20
XMPP/Smack APIプログラミングの基本
2016/04/03第13回福岡市西区プログラム勉強会21
 XMPPのポリシ
 複雑な機能はサーバ側で実装
 クライアントはUIの提供に徹する
 サービスの類は本当はボットとか作らずにサーバコンポーネントにする
のが望ましい
 今回はサンプルなのでUIを省いてメッセージ処理に集中するためボット
を作成
 Smack APIの基本
 接続を表すXMPPConnectionオブジェクトが中心
 コネクションに紐づけられた各種マネージャを介してXMPPの実装にア
クセスする
 基本はリスナ登録を通じたイベント・ドリブンなプログラミング
 一応、フィルタとコレクタを使って着信を待つスタイルもあります
 タイムアウトが実現できるので返信を待つような場合に使われる
 プロトコル実装上、返信を待つ必要がある際に良く使われる
 今回は利用しなかった
EchoBot
2016/04/03第13回福岡市西区プログラム勉強会22
 仕様
 自動クライアント
 ログイン情報はプロパティファイルresource/echo.propertiesで与え
る
 標準入力から"quitn"が入力されると終了
 ボットのプレゼンス情報(時間表示付き)を30秒ごとに更新
 メッセージを送ると同文を返信する
 一度メッセージを送られるとその相手へ5分毎の時報を送信
 ソース
 Gist "EchoBot.java":
https://gist.github.com/TakayukiKando/ca0c72a07bcdd04f
7a55595895ea296d
EchoBot動作例
2016/04/03第13回福岡市西区プログラム勉強会23
 私の手製のXMPPクライアントから見た例
←
プレゼンス
表示画面
→
会話画面
EchoBotのプロジェクト構成と
EchoBotクラスの構造
2016/04/03第13回福岡市西区プログラム勉強会24
 下:プロジェクトの構成
 パッケージ構造とecho.properties、
参照ライブラリに注目
 右:クラスの構造
main()
2016/04/03第13回福岡市西区プログラム勉強会25
メインスレッドを待機させる
ログインに必要な情報を
取得する
メッセージ処理本体
 ここではサボってますが終了前にconnectionのdisconnect()メソッドを呼んで接続
を切断しましょう
loadSettings()
2016/04/03第13回福岡市西区プログラム勉強会26
 プロパティを読み込む何時ものアレ
EchoBotコンストラクタ
2016/04/03第13回福岡市西区プログラム勉強会27
 XMPPConnectionクラスのオブジェクトがクライアント・プログラミングの中心
 基本機能はconn.getAAAManager()、拡張機能はXXX.getXXXManager(cconn)で各
機能のマネージャーを取得してそれを操作することで実現できる
 マネージャーはコネクションと紐づけられているので何度取得しても基本的に同じオブ
ジェクトが返る
 保存しておかなくてもいい
接続~ログイン
デバッグモー
ド指定(opt.)
自身をチャッ
トメッセージ
のリスナとし
て登録
時報機能開
始
Presence更
新開始
chatセッションを
保持するリスト
newする時に参
照される
リソース名に自身のクラス名を利
用(同一アドレスから一個しか接
続できない)
ChatListenerとしてのメソッド
2016/04/03第13回福岡市西区プログラム勉強会28
 1対1のチャットセッションが開始された際に呼ばれる
 引数
 Chatオブジェクトはセッションを表す
 createdLocally引数は自身が開始したセッションである時にtrue
 動作
 自身をメッセージリスナとしてChatオブジェクトに登録
 時報発信のためのリストに登録
MessageListenerとしてのメソッド
(エコー機能の実現)
2016/04/03第13回福岡市西区プログラム勉強会29
 セッションでメッセージが着信した際に呼ばれる
 引数
 Chatオブジェクトはメッセージが届いたセッションを示す
 Messageオブジェクトはメッセージ
 XMPPのMessageスタンザを表すオブジェクト
 送信者(From)はXMPPサーバが付けるのでクライアントによる詐称はできない
 クライアントが付けて送っても上書きされる
 宛先(To)、送信者とタイムスタンプ、本文以外に付加的なフィールドが幾つかある
 スレッド識別子とかムード情報とか、言語情報とか、……、etc.
送信者を取り出
す
送信者へメッセージを送り返す
getBody()でメッセージ本文が取れる
のでそれを渡してオウム返しさせてい
る
エラーはログを
吐いて黙殺
setTimeSignal()
(時報機能の実現)
2016/04/03第13回福岡市西区プログラム勉強会30
 引数intervalは時報間隔のミリ秒
 EchoBotのstaticなタイマー(TIMER)のscheduleAtFixedRate()で
開始時刻と時間間隔を指定して一定時間ごとにTimerTaskを実行
させる
 TimerTask内では現在時刻を取得、フォーマットして
sendMessageToAll()を呼び出す
時報開始時刻の設定。
切りのいい時刻になるよう、現在時刻から
分、秒、ミリ秒を0に設定。
sendMessageToAll()
(リストに記録された全セッションへの同報)
2016/04/03第13回福岡市西区プログラム勉強会31
 ChatListenerのメソッドでリストに記録しておいた全セッ
ションへの同一メッセージの送信(同報)
setPresenceUpdater()
(Presence更新機能の実現)
2016/04/03第13回福岡市西区プログラム勉強会32
 引数intervalはPresence更新間隔のミリ秒
 EchoBotのstaticなタイマー(TIMER)の
scheduleAtFixedRate()で開始時刻(現在)と時間間隔
を指定して一定時間ごとにTimerTaskを実行させる
 TimerTask内では現在時刻を取得、フォーマットして
sendPresence()を呼び出す
sendPresence()
(Presenceの送信)
2016/04/03第13回福岡市西区プログラム勉強会33
 引数statusはPresenceに表示する任意のテキスト
 現況を簡潔に表す短文
 PresenceはXMPPのPresenceスタンザを表すオブジェクト
 Typeは通常の状態の表示に使うのはavailable(接続中), unavailable(非接
続)の2種
 残りのsubscribe, subscribed, unsubscribe, unsubscribed, errorは連絡先リストへの
登録、解除のプロトコルに利用される。
 Modeはchat(会話歓迎), available(接続している), away(離席中), xa(長
時間の離席), dnd(Don't disturb.忙しい)の5種類
 Messageスタンザと同じく付加的なフィールドが幾つかある
 Presenceスタンザは連絡先リスト全体に送られるのでできるだけ小さく
するのが望ましい
まとめ
XMPP/Smack APIプログラミング
2016/04/03第13回福岡市西区プログラム勉強会34
 XMPPのポリシ
 複雑な機能はサーバ側で実装
 クライアントはUIの提供に徹する
 サービスの類は本当はボットとか作らずにサーバコンポーネントにする
のが望ましい
 今回はサンプルなのでUIを省いてメッセージ処理に集中するためボット
を作成
 Smack APIの基本
 接続を表すXMPPConnectionオブジェクトが中心
 コネクションに紐づけられた各種マネージャを介してXMPPの実装にア
クセスする
 基本はリスナ登録を通じたイベント・ドリブンなプログラミング
 一応、フィルタとコレクタを使って着信を待つスタイルもあります
 タイムアウトが実現できるので返信を待つような場合に使われる
 プロトコル実装上、返信を待つ必要がある際に良く使われる
 今回は利用しなかった
付録
2016/04/03第13回福岡市西区プログラム勉強会35
XML Pull Parserについて
 Xml Pull Parser
 http://www.xmlpull.org/
 実装例
 kXML
 Web: http://www.kxml.org/
 SourceForge(JARファイル):
https://sourceforge.net/projects/kxml/
 MXP1(Smackが使っているが、ダウンロードURLがリンク切
れ)
 http://www.extreme.indiana.edu/xgws/xsoap/xpp/mxp1/
2016/04/0336 第13回福岡市西区プログラム勉強会

More Related Content

What's hot

Development and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and mafDevelopment and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and mafKenta Oono
 
Antプログラミング(1) - プラグイン
Antプログラミング(1) - プラグインAntプログラミング(1) - プラグイン
Antプログラミング(1) - プラグイン隆行 神戸
 
Pythonによる画像処理について
Pythonによる画像処理についてPythonによる画像処理について
Pythonによる画像処理についてYasutomo Kawanishi
 
fastTextの実装を見てみた
fastTextの実装を見てみたfastTextの実装を見てみた
fastTextの実装を見てみたYoshihiko Shiraki
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data scienceTakami Sato
 
PHP でファイルシステムを作ろう
PHP でファイルシステムを作ろうPHP でファイルシステムを作ろう
PHP でファイルシステムを作ろうshinjiigarashi
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplibShinya Okano
 
bottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアルbottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアルSatoshi Yamada
 
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)Satoshi Yamada
 
形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話Kensuke Mitsuzawa
 
Android道第1回公開用
Android道第1回公開用Android道第1回公開用
Android道第1回公開用Takaya Funabiki
 
S16 t1 python学習奮闘記#6
S16 t1 python学習奮闘記#6S16 t1 python学習奮闘記#6
S16 t1 python学習奮闘記#6Takeshi Akutsu
 
S20 t1 stapyのこれまでとこれから
S20 t1 stapyのこれまでとこれからS20 t1 stapyのこれまでとこれから
S20 t1 stapyのこれまでとこれからTakeshi Akutsu
 
Rとpythonとjuliaで機械学習レベル4を目指す
Rとpythonとjuliaで機械学習レベル4を目指すRとpythonとjuliaで機械学習レベル4を目指す
Rとpythonとjuliaで機械学習レベル4を目指すyuta july
 
本気でPythonで宛名書きした話
本気でPythonで宛名書きした話本気でPythonで宛名書きした話
本気でPythonで宛名書きした話Satoshi Yamada
 
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈	BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈 順也 山口
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3tak9029
 
Requestsで始める5分前帰社
Requestsで始める5分前帰社Requestsで始める5分前帰社
Requestsで始める5分前帰社Satoshi Yamada
 

What's hot (20)

Development and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and mafDevelopment and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and maf
 
Antプログラミング(1) - プラグイン
Antプログラミング(1) - プラグインAntプログラミング(1) - プラグイン
Antプログラミング(1) - プラグイン
 
Pythonによる画像処理について
Pythonによる画像処理についてPythonによる画像処理について
Pythonによる画像処理について
 
fastTextの実装を見てみた
fastTextの実装を見てみたfastTextの実装を見てみた
fastTextの実装を見てみた
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
PHP でファイルシステムを作ろう
PHP でファイルシステムを作ろうPHP でファイルシステムを作ろう
PHP でファイルシステムを作ろう
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplib
 
bottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアルbottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアル
 
S18 t0 introduction
S18 t0 introductionS18 t0 introduction
S18 t0 introduction
 
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
 
S15 t0 introduction
S15 t0 introductionS15 t0 introduction
S15 t0 introduction
 
形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話
 
Android道第1回公開用
Android道第1回公開用Android道第1回公開用
Android道第1回公開用
 
S16 t1 python学習奮闘記#6
S16 t1 python学習奮闘記#6S16 t1 python学習奮闘記#6
S16 t1 python学習奮闘記#6
 
S20 t1 stapyのこれまでとこれから
S20 t1 stapyのこれまでとこれからS20 t1 stapyのこれまでとこれから
S20 t1 stapyのこれまでとこれから
 
Rとpythonとjuliaで機械学習レベル4を目指す
Rとpythonとjuliaで機械学習レベル4を目指すRとpythonとjuliaで機械学習レベル4を目指す
Rとpythonとjuliaで機械学習レベル4を目指す
 
本気でPythonで宛名書きした話
本気でPythonで宛名書きした話本気でPythonで宛名書きした話
本気でPythonで宛名書きした話
 
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈	BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3
 
Requestsで始める5分前帰社
Requestsで始める5分前帰社Requestsで始める5分前帰社
Requestsで始める5分前帰社
 

Viewers also liked

ゲームマップのためのグラフAPIの設計
ゲームマップのためのグラフAPIの設計ゲームマップのためのグラフAPIの設計
ゲームマップのためのグラフAPIの設計隆行 神戸
 
XMPP仕様簡単解説
XMPP仕様簡単解説XMPP仕様簡単解説
XMPP仕様簡単解説Keiichi Daiba
 
オレオレ言語実装に役立つプル型ASTウォーカーAPI
オレオレ言語実装に役立つプル型ASTウォーカーAPIオレオレ言語実装に役立つプル型ASTウォーカーAPI
オレオレ言語実装に役立つプル型ASTウォーカーAPI隆行 神戸
 
Message delivery over XMPP network
Message delivery over XMPP networkMessage delivery over XMPP network
Message delivery over XMPP networkHideki Saito
 
Transports on XMPP network
Transports on XMPP networkTransports on XMPP network
Transports on XMPP networkHideki Saito
 
Openfire xmpp server on windows server 2012 r2 with spark sso
Openfire xmpp server on windows server 2012 r2 with spark ssoOpenfire xmpp server on windows server 2012 r2 with spark sso
Openfire xmpp server on windows server 2012 r2 with spark ssolaonap166
 
どっかのしたのほう
どっかのしたのほうどっかのしたのほう
どっかのしたのほう_norin_
 
インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造Taiji Tsuchiya
 
TCP/IPでネットワークが繋がるわけ「で・ね・と」
TCP/IPでネットワークが繋がるわけ「で・ね・と」TCP/IPでネットワークが繋がるわけ「で・ね・と」
TCP/IPでネットワークが繋がるわけ「で・ね・と」Takashi Abe
 
ネットワーク通信入門
ネットワーク通信入門ネットワーク通信入門
ネットワーク通信入門Yuki Suga
 

Viewers also liked (12)

ゲームマップのためのグラフAPIの設計
ゲームマップのためのグラフAPIの設計ゲームマップのためのグラフAPIの設計
ゲームマップのためのグラフAPIの設計
 
XMPP仕様簡単解説
XMPP仕様簡単解説XMPP仕様簡単解説
XMPP仕様簡単解説
 
オレオレ言語実装に役立つプル型ASTウォーカーAPI
オレオレ言語実装に役立つプル型ASTウォーカーAPIオレオレ言語実装に役立つプル型ASTウォーカーAPI
オレオレ言語実装に役立つプル型ASTウォーカーAPI
 
Message delivery over XMPP network
Message delivery over XMPP networkMessage delivery over XMPP network
Message delivery over XMPP network
 
Transports on XMPP network
Transports on XMPP networkTransports on XMPP network
Transports on XMPP network
 
Openfire xmpp server on windows server 2012 r2 with spark sso
Openfire xmpp server on windows server 2012 r2 with spark ssoOpenfire xmpp server on windows server 2012 r2 with spark sso
Openfire xmpp server on windows server 2012 r2 with spark sso
 
Router chat for np
Router chat for npRouter chat for np
Router chat for np
 
どっかのしたのほう
どっかのしたのほうどっかのしたのほう
どっかのしたのほう
 
Maven基礎
Maven基礎Maven基礎
Maven基礎
 
インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造
 
TCP/IPでネットワークが繋がるわけ「で・ね・と」
TCP/IPでネットワークが繋がるわけ「で・ね・と」TCP/IPでネットワークが繋がるわけ「で・ね・と」
TCP/IPでネットワークが繋がるわけ「で・ね・と」
 
ネットワーク通信入門
ネットワーク通信入門ネットワーク通信入門
ネットワーク通信入門
 

Similar to XMPPクライアント・プログラミング

Yet anothor プロジェクト管理ツール ~Backlog~
Yet anothor プロジェクト管理ツール ~Backlog~Yet anothor プロジェクト管理ツール ~Backlog~
Yet anothor プロジェクト管理ツール ~Backlog~ikikko
 
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成Hiroshi Yamaguchi
 
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告Takuya Iwatsuka
 
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告apkiban
 
ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治Drecom Co., Ltd.
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストYoichiro Sakurai
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能kimulla
 
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013晃 遠山
 
dots.女子部勉強会 vol.5 機械学習ハンズオン ~ 協調フィルタリング ~
dots.女子部勉強会 vol.5 機械学習ハンズオン ~ 協調フィルタリング ~dots.女子部勉強会 vol.5 機械学習ハンズオン ~ 協調フィルタリング ~
dots.女子部勉強会 vol.5 機械学習ハンズオン ~ 協調フィルタリング ~dots.
 
WagtailとPelicanでJAMstack環境作ってみた
WagtailとPelicanでJAMstack環境作ってみたWagtailとPelicanでJAMstack環境作ってみた
WagtailとPelicanでJAMstack環境作ってみたMakoto Mochizuki
 
Computer Vision と Translator Text API 使ってみた
Computer Vision と Translator Text API 使ってみたComputer Vision と Translator Text API 使ってみた
Computer Vision と Translator Text API 使ってみたYoshito Tabuchi
 
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...Naruhiko Ogasawara
 
はじめよう!PowerAppsキホンのキ kintone × Microsoft Flow / Logic Appsの話
はじめよう!PowerAppsキホンのキ kintone × Microsoft Flow / Logic Appsの話はじめよう!PowerAppsキホンのキ kintone × Microsoft Flow / Logic Appsの話
はじめよう!PowerAppsキホンのキ kintone × Microsoft Flow / Logic Appsの話典子 松本
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Tatsuya Atsumi
 
ノンコーディングでやってみよう!Logic Appsのすゝめ
ノンコーディングでやってみよう!Logic Appsのすゝめノンコーディングでやってみよう!Logic Appsのすゝめ
ノンコーディングでやってみよう!Logic Appsのすゝめ典子 松本
 

Similar to XMPPクライアント・プログラミング (20)

Yet anothor プロジェクト管理ツール ~Backlog~
Yet anothor プロジェクト管理ツール ~Backlog~Yet anothor プロジェクト管理ツール ~Backlog~
Yet anothor プロジェクト管理ツール ~Backlog~
 
ARCore
ARCoreARCore
ARCore
 
IkaLog_FPGAStartup1
IkaLog_FPGAStartup1IkaLog_FPGAStartup1
IkaLog_FPGAStartup1
 
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
 
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
 
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
 
ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能
 
My portfolio
My portfolioMy portfolio
My portfolio
 
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
 
Collecting corpus
Collecting corpusCollecting corpus
Collecting corpus
 
dots.女子部勉強会 vol.5 機械学習ハンズオン ~ 協調フィルタリング ~
dots.女子部勉強会 vol.5 機械学習ハンズオン ~ 協調フィルタリング ~dots.女子部勉強会 vol.5 機械学習ハンズオン ~ 協調フィルタリング ~
dots.女子部勉強会 vol.5 機械学習ハンズオン ~ 協調フィルタリング ~
 
Api
ApiApi
Api
 
WagtailとPelicanでJAMstack環境作ってみた
WagtailとPelicanでJAMstack環境作ってみたWagtailとPelicanでJAMstack環境作ってみた
WagtailとPelicanでJAMstack環境作ってみた
 
Computer Vision と Translator Text API 使ってみた
Computer Vision と Translator Text API 使ってみたComputer Vision と Translator Text API 使ってみた
Computer Vision と Translator Text API 使ってみた
 
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...
 
はじめよう!PowerAppsキホンのキ kintone × Microsoft Flow / Logic Appsの話
はじめよう!PowerAppsキホンのキ kintone × Microsoft Flow / Logic Appsの話はじめよう!PowerAppsキホンのキ kintone × Microsoft Flow / Logic Appsの話
はじめよう!PowerAppsキホンのキ kintone × Microsoft Flow / Logic Appsの話
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
 
ノンコーディングでやってみよう!Logic Appsのすゝめ
ノンコーディングでやってみよう!Logic Appsのすゝめノンコーディングでやってみよう!Logic Appsのすゝめ
ノンコーディングでやってみよう!Logic Appsのすゝめ
 

XMPPクライアント・プログラミング