SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
SMARTPHONE CONTROLLER
OpenIL vol.1

中川 武憲
自己紹介
•

var age = 19 歳 (誕生日 2/24)	


•

北海道工業大学 学部 2 年生	


•

インフィニットループ アルバイト	


•

趣味は旅行、写真、プログラミング	


•

Web Developer
あと 3 日で

age++
するイベントが。
p.tl/53x8

24 時間受付中
WORKS
•

IT 勉強会カレンダー for Android & iOS	


•

Image Shortener - [img.ww24.jp]	


•

Realtime Chat - [rtc.ww24.jp]	


•

Connect Smartphone - [connect-sp.ww24.jp]
IT 勉強会カレンダー
スマートフォンアプリ
IMAGE SHORTENER
短縮 URL を利用したオンラインストレージ
REALTIME CHAT
Google Drive Realtime API を利用した Chat
CONNECT SMARTPHONE
パソコンとスマホのリアルタイム連携
CONNECT SMARTPHONE
CONNECT SMARTPHONE

•

Express.IO を使った、スマートフォンとパソ
コンのリアルタイムな連携アプリケーション
AGENDA
•

リアルタイムな連携とは	


•

Express と Socket.IO	


•

仕組み	


•

デモ	


•

サンプルコード	


•

問題点、課題
CONNECT SMARTPHONE
•

リアルタイムな連携の例	

•

Chrome World Wide Maze	

•

•

https://chrome.com/maze/	


jsdo.it WebSocket Controller	

•

http://jsdo.it/controller
CHROME WORLD WIDE MAZE
Google の迷路ゲーム
WEBSOCKET CONTROLLER
jsdo.it
CONNECT SMARTPHONE
スマートフォンをパソコンへ繋げて、コントローラに。
CONNECT SMARTPHONE
•

仕組み	

•

WebSocket Server (Socket.IO)	


•

Web Application Server (Express.js)	


•

Socket.IO + Express.js = Express.IO
金の EXPRESS
物語調で解説
EXPRESS と SOCKET.IO

あるプログラマがコードを書いていたところ、 git commit する前に手が滑ってエディタごと
落としてしまいました。!
すると、突然女神が現れ「あなたが落としたのは金の express ですか?それとも銀の
Socket.IO ですか?」と尋ねてきました。
EXPRESS と SOCKET.IO

正直者のプログラマは、「私が落としたのは生の WebSocket で通信するスパゲッティコード
です」と答えます。
EXPRESS と SOCKET.IO

正直者のプログラマに感心した女神は、!

本題と無関係です。

express と Socket.IO を掛け合わせた、 express.io をプログラマに授けるのでした。
EXPRESS.IO

express のような直感的なルーティング	

express と共有できるセッション
CONNECT SMARTPHONE
/connect/{connection_id} にリダイレクト

接 続 処 理

アプリケーション・ゲームページにリダイレクト
CONNECT SMARTPHONE
Connect Smartphone

Game Page

/connect/KCL98U

2
Smartphone

(子端末)

2
3

3

PC

(親端末)

1
CONNECT SMARTPHONE
Connect Smartphone

Game Page

Socket.IO
Smartphone

(子端末)

PC

(親端末)
CONNECT SMARTPHONE
•

Connect Smartphone での接続処理	

•

乱数から connection_id 生成	


•

親端末と子端末を connection_id で照合	


•

親端末に接続端末(子端末)の一覧を表示
DEMO
connect-sp.ww24.jp
サンプルコード
接続
送信 (子端末)
受信 (親端末)
CONNECT SMARTPHONE
•

問題点	

•

同じブラウザで 2 画面開くと、全く同じセッション
情報を持っているので、どちらが親か判別できない	

!
!

たまにバグる
先に接続してきた方が親で良いよね!
両方子端末と判定されることがある。
CONNECT SMARTPHONE
•

なぜそうなるか…	

•

HTTP リクエストはステートレス。状態を持たな
い。状態を持たせるためにセッションを用いる。	


•

WebSocket 通信はステートフル。コネクション毎
に個々に状態を保持できる。ブラウザが同じであっ
ても、親端末か子端末か判定可能。
CONNECT SMARTPHONE
•

リダイレクトさせる実装にした理由	

•

スタンドアロンな実装を目指した	


•

サーバの実装不要でリアルタイム連携を実現	


•

URL ルーティングや子端末の認証など、面
倒な処理を一括して行った
今後の課題

•

自動的に認証したい	


•

パソコン スマホに限らず、

ゲームでプレイヤーマッチングもできそう
リアルタイム通信楽しい!
express.io	

で

快適なリアルタイム通信ライフを

Más contenido relacionado

Similar a OpenIL vol.1

Sharoid Service Menu
Sharoid Service MenuSharoid Service Menu
Sharoid Service Menusharoid
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublishedYoichiro Sakurai
 
楽しむプログラミングのためのファシリテーションの学びと実践(公開版)
楽しむプログラミングのためのファシリテーションの学びと実践(公開版)楽しむプログラミングのためのファシリテーションの学びと実践(公開版)
楽しむプログラミングのためのファシリテーションの学びと実践(公開版)Kazuhiro Abe
 
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発Hikaru Ito
 
スマートフォン時代のコンテンツ戦略を考える
スマートフォン時代のコンテンツ戦略を考えるスマートフォン時代のコンテンツ戦略を考える
スマートフォン時代のコンテンツ戦略を考えるトモロヲ いちがみ
 
タブレットでわくわくプログラミング体験(公開版)
タブレットでわくわくプログラミング体験(公開版)タブレットでわくわくプログラミング体験(公開版)
タブレットでわくわくプログラミング体験(公開版)Kazuhiro Abe
 
みなさんがHtml5をやらなくていい3つの理由
みなさんがHtml5をやらなくていい3つの理由みなさんがHtml5をやらなくていい3つの理由
みなさんがHtml5をやらなくていい3つの理由Masakazu Muraoka
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Saki Homma
 
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルOpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルMasaru Kurahayashi
 
デブサミ2013【15D-3】Azureセッション資料
デブサミ2013【15D-3】Azureセッション資料デブサミ2013【15D-3】Azureセッション資料
デブサミ2013【15D-3】Azureセッション資料Shinichiro Isago
 
リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール WeinerをつかってみたMasakazu Muraoka
 
これからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れこれからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れMitsuru Katoh
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよYohei Oda
 
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術KLab Inc. / Tech
 
Quantum computer applications in serverless architecture and challenges
Quantum computer applications in serverless architecture and challengesQuantum computer applications in serverless architecture and challenges
Quantum computer applications in serverless architecture and challengesSatoyuki Tsukano
 
WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!Ryu Shindo
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Saki Homma
 
Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知
Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知
Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知Sunao Komuro
 

Similar a OpenIL vol.1 (20)

Sharoid Service Menu
Sharoid Service MenuSharoid Service Menu
Sharoid Service Menu
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublished
 
楽しむプログラミングのためのファシリテーションの学びと実践(公開版)
楽しむプログラミングのためのファシリテーションの学びと実践(公開版)楽しむプログラミングのためのファシリテーションの学びと実践(公開版)
楽しむプログラミングのためのファシリテーションの学びと実践(公開版)
 
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
 
スマートフォン時代のコンテンツ戦略を考える
スマートフォン時代のコンテンツ戦略を考えるスマートフォン時代のコンテンツ戦略を考える
スマートフォン時代のコンテンツ戦略を考える
 
タブレットでわくわくプログラミング体験(公開版)
タブレットでわくわくプログラミング体験(公開版)タブレットでわくわくプログラミング体験(公開版)
タブレットでわくわくプログラミング体験(公開版)
 
みなさんがHtml5をやらなくていい3つの理由
みなさんがHtml5をやらなくていい3つの理由みなさんがHtml5をやらなくていい3つの理由
みなさんがHtml5をやらなくていい3つの理由
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
 
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルOpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクル
 
Oss on Azure, social mobile web
Oss on Azure, social mobile webOss on Azure, social mobile web
Oss on Azure, social mobile web
 
デブサミ2013【15D-3】Azureセッション資料
デブサミ2013【15D-3】Azureセッション資料デブサミ2013【15D-3】Azureセッション資料
デブサミ2013【15D-3】Azureセッション資料
 
リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみた
 
これからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れこれからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れ
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
 
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
 
Quantum computer applications in serverless architecture and challenges
Quantum computer applications in serverless architecture and challengesQuantum computer applications in serverless architecture and challenges
Quantum computer applications in serverless architecture and challenges
 
Abc2015 winterkobe
Abc2015 winterkobeAbc2015 winterkobe
Abc2015 winterkobe
 
WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
 
Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知
Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知
Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知
 

Más de Takenori Nakagawa (20)

Docker で Deep Learning
Docker で Deep LearningDocker で Deep Learning
Docker で Deep Learning
 
GitHub Travis-CI Go!
GitHub Travis-CI  Go!GitHub Travis-CI  Go!
GitHub Travis-CI Go!
 
01.app
01.app01.app
01.app
 
Service Workers Push API Hands-on
Service Workers Push API Hands-onService Workers Push API Hands-on
Service Workers Push API Hands-on
 
Service Workers
Service WorkersService Workers
Service Workers
 
OpenGL 3DCG
OpenGL 3DCGOpenGL 3DCG
OpenGL 3DCG
 
WebGL
WebGLWebGL
WebGL
 
01:artificial life
01:artificial life01:artificial life
01:artificial life
 
後期05
後期05後期05
後期05
 
後期03
後期03後期03
後期03
 
後期02
後期02後期02
後期02
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
 
phpck
phpckphpck
phpck
 
Git 初心者のための GitHub Pages
Git 初心者のための GitHub PagesGit 初心者のための GitHub Pages
Git 初心者のための GitHub Pages
 
後期講座08
後期講座08後期講座08
後期講座08
 
後期講座07
後期講座07後期講座07
後期講座07
 
後期講座05
後期講座05後期講座05
後期講座05
 
後期講座03
後期講座03後期講座03
後期講座03
 
後期講座01
後期講座01後期講座01
後期講座01
 
Illust bookmark
Illust bookmarkIllust bookmark
Illust bookmark
 

Último

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 

Último (11)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

OpenIL vol.1