Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
webSocket通信を知らないiOS
エンジニアが知っておいて損は
しない(経験談的な)軽い話
mitolab 宮里 悠平
2015/03/26 @ Loco Partnersもくもく会 #6
お話すること
• webソケット通信って?
• iOSではどんなライブラリがあってどれがいいの
• サンプル作ってみたよ
• 作ってみて気づいた点(初めて触る人には有用かも)
自己紹介
• @mito_log こんなアイコン→
• フリーランスiOSプログラマ
• from沖縄 9月から海外(予定)
• mitolab.co
(8月末ごろまで東京で活動予定!お仕事ください!)
webソケット通信
なるほど、Slackのあのレスポンスの良さ
はこういう通信方式を使っているから?
あれ、もしかしてこれ使えば
Slackぽいチャットアプリ作れ
ちゃうんじゃない?
いやまて、そもそも
webソケット通信てなんなの?
Webソケット通信
なるほど双方向通信ね、でもそれっ
て今までも色々あったよな?
これまでの双方向通信といえば…
quote from http://www.slideshare.net/You_Kinjoh/websocket-10621887
Webソケット通信の場合は…
quote from http://www.slideshare.net/You_Kinjoh/websocket-10621887
Webソケット通信のメリット
• 一度つないでしまえば、最小限のパケットで済むた
めサーバ/クライアント双方の負荷が低い
• 一度つないでしまえば、サーバ/クライアントのど
ちらからでもデータのやりとりを開始できる
• HTTP通信に近いため、...
Webソケット通信のデメリット
• コネクション切断/再接続ハンドリング(サーバ側の
システムメンテとかクライアント側の端末がスリー
プしたとか)が大変。
• プロトコルはリアルタイム性に優れていても例えば
DBとかインフラも追従しないと性能発...
じゃあiOSではどうやって使う?
ライブラリ名 特徴
Socket Rocket
おそらく一番よくメンテされてるライブラリ。
一般的。でかい案件で使うならこれかなと。
Starscream
swift製。できることは上とあまり変わらないのか
な...
今回やりたいこと
• webソケット通信といえばチャット!
• マルチroomのチャットアプリ
(ググった限りだとまだそういうサンプルなかったので、作ったら優位性があるかと思い…)
SIOSocket
SIOSocket
“SIOSocket is simple interface for communicating
with socket.io 1.0 from iOS.”
via github
• roomの概念を持っている(socket...
Demo1
ec2node
socket.io
port 3000
SIOSocket SIOSocket
Qiita:socket.io × SIOSocketでマルチルーム対応 iOSチャットアプリを作ってみた
Socket.ioを使ったS...
ec2node
socket.io
port 3000
SIOSocket SIOSocket
Qiita:socket.io-php-emitterを使ってsocket.ioの外(簡易API)からemitしてみる
on memory KVS
...
感銘を受けた点
• websocketをつなぐと当該socketに割り振られたidの
roomに自動的にjoinする
• コネクションが切れると自動的に全てのroomから退出す
る
• roomの削除に関してclient/serverが意識する...
次のステップ
• node.js、socket.ioの理解を深める
• 既存で動いてるシステムを見てみたい…
• socket.ioが公式swiftクライアント出したので試して
みる
ご清聴ありがとうございました
参考リンク
• フレクトのHeroku Lab WebSocket通信のメリットを考える
• SlideShare WebSocketのキホン
• Socket.io公式swiftクライアント socket.io-client-swift
• ...
Upcoming SlideShare
Loading in …5
×

webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話

12,501 views

Published on

LocoPartnersさんのiOSもくもく会#6にてお話したスライドです。
http://connpass.com/event/13198/

Published in: Technology
  • Be the first to comment

webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話

  1. 1. webSocket通信を知らないiOS エンジニアが知っておいて損は しない(経験談的な)軽い話 mitolab 宮里 悠平 2015/03/26 @ Loco Partnersもくもく会 #6
  2. 2. お話すること • webソケット通信って? • iOSではどんなライブラリがあってどれがいいの • サンプル作ってみたよ • 作ってみて気づいた点(初めて触る人には有用かも)
  3. 3. 自己紹介 • @mito_log こんなアイコン→ • フリーランスiOSプログラマ • from沖縄 9月から海外(予定) • mitolab.co (8月末ごろまで東京で活動予定!お仕事ください!)
  4. 4. webソケット通信 なるほど、Slackのあのレスポンスの良さ はこういう通信方式を使っているから?
  5. 5. あれ、もしかしてこれ使えば Slackぽいチャットアプリ作れ ちゃうんじゃない?
  6. 6. いやまて、そもそも webソケット通信てなんなの?
  7. 7. Webソケット通信 なるほど双方向通信ね、でもそれっ て今までも色々あったよな?
  8. 8. これまでの双方向通信といえば… quote from http://www.slideshare.net/You_Kinjoh/websocket-10621887
  9. 9. Webソケット通信の場合は… quote from http://www.slideshare.net/You_Kinjoh/websocket-10621887
  10. 10. Webソケット通信のメリット • 一度つないでしまえば、最小限のパケットで済むた めサーバ/クライアント双方の負荷が低い • 一度つないでしまえば、サーバ/クライアントのど ちらからでもデータのやりとりを開始できる • HTTP通信に近いため、既存の通信方式とMIXし易 い
  11. 11. Webソケット通信のデメリット • コネクション切断/再接続ハンドリング(サーバ側の システムメンテとかクライアント側の端末がスリー プしたとか)が大変。 • プロトコルはリアルタイム性に優れていても例えば DBとかインフラも追従しないと性能発揮できない のでは?
  12. 12. じゃあiOSではどうやって使う? ライブラリ名 特徴 Socket Rocket おそらく一番よくメンテされてるライブラリ。 一般的。でかい案件で使うならこれかなと。 Starscream swift製。できることは上とあまり変わらないのか なと。 Socket.IO-objc socket.ioのラッパライブラリ。v0.9までの対応。 SIOSocket socket.ioのラッパライブラリ。webViewでjsを読 み込んで、jsをブリッジして利用。v1.0対応。
  13. 13. 今回やりたいこと • webソケット通信といえばチャット! • マルチroomのチャットアプリ (ググった限りだとまだそういうサンプルなかったので、作ったら優位性があるかと思い…)
  14. 14. SIOSocket
  15. 15. SIOSocket “SIOSocket is simple interface for communicating with socket.io 1.0 from iOS.” via github • roomの概念を持っている(socket.io自体がそう) • socket.io v1.0に対応 • 使いやすそう(webviewでsocket.ioをラップしてるだけなので)
  16. 16. Demo1 ec2node socket.io port 3000 SIOSocket SIOSocket Qiita:socket.io × SIOSocketでマルチルーム対応 iOSチャットアプリを作ってみた Socket.ioを使ったSimpleなチャットシステム 注) webSocketはforegroundでのみ有効
  17. 17. ec2node socket.io port 3000 SIOSocket SIOSocket Qiita:socket.io-php-emitterを使ってsocket.ioの外(簡易API)からemitしてみる on memory KVS apache phpsocket.io-emitter socket.io-redis + phpredis socket.io-php-emitter port 80 Demo2 Socket.io + RESTなAPIで構成したチャットシステム 注) socket.ioのプロセスの外からsocket.io プロセスにアクセスする場合、 adapter(ここではredis)を用いれば可能 Adapter
  18. 18. 感銘を受けた点 • websocketをつなぐと当該socketに割り振られたidの roomに自動的にjoinする • コネクションが切れると自動的に全てのroomから退出す る • roomの削除に関してclient/serverが意識する必要はない • socket.io-emitterはnodeサーバ側のcallbackを呼ぶのでは なく、直接roomの各メンバのcallbackを呼ぶ
  19. 19. 次のステップ • node.js、socket.ioの理解を深める • 既存で動いてるシステムを見てみたい… • socket.ioが公式swiftクライアント出したので試して みる
  20. 20. ご清聴ありがとうございました
  21. 21. 参考リンク • フレクトのHeroku Lab WebSocket通信のメリットを考える • SlideShare WebSocketのキホン • Socket.io公式swiftクライアント socket.io-client-swift • RFC6455 The WebSocket Protocol 日本語訳 • CyberAgent テックレポート Socket.io, Redisを使用し各ゲーム間でプッシュ 通史するシステム • 今回のサンプルソース https://github.com/mitolog/SIOChat

×