狠狠撸

狠狠撸Share a Scribd company logo
Rails5 Action Cableの紹介
Rails 5.0.0.beta1がリリース!
Rails5
● 2015年12月18日 Rails 5.0.0.beta1リリース
● Rails1.0がリリースされたのは10年前
● 主な変更点
○ Action Cable
○ API mode
○ Rails command
Action Cable
● WebSocketを扱うフレームワーク
● 以下を統合したフレームワーク
○ EventMachineを使ったコネクションループ
○ サーバーサイドの処理を実行するスレッド化されたチャンネルレイヤー
○ クライアントサイドのやりとりを実行するJavaScriptレイヤー
● チャットアプリのようなリアルタイムWebアプリケーションを作
れる
WebSocket
● 双方向通信を実現するプロトコル
○ HTTPとは別物
● サーバ?クライアントで低コストで双方向通信可能
● 各ブラウザの実装状況
IE Firefox Chrome Safari Opera Android
RFC
6455
10 11 16 6 12.10 4.4
リアルタイム通信の歴史(Ajax)
クライアント サーバ
Open
Request
Response
Close
リアルタイム通信の歴史(Comet)
クライアント サーバ
Open
Request
Response
Close
リアルタイム通信の歴史(WebSocket)
クライアント サーバ
Open
Request
Response
Close
Action Cableでの双方向通信の仕組み
● EventMachineによるコネクションループ
● EventMachineとは
○ Reactorパターンを用いたイベント駆動I/Oライブラリ
■ ノンブロッキングI/Oを実現する仕組みのこと
○ gem install eventmachine
ノンブロッキングI/O
● コンビニでわかるノンブロッキングIO | break the code!! |
codebreak;:
● http://codebreak.com/blog/takezoe/page/d0e2b2/
1. シングルスレッド×ブロッキングIO
2. マルチスレッド×ブロッキングIO
3. シングルスレッド×ノンブロッキングIO
Action Cableの特徴
● 通常のRailsのプロセスとは別のAction Cable用のプロセスを
立ち上げる
● Action Cable用のプロセスがブラウザとのWebSocket通信を
担当
● Action CableはRailsとセッション用のクッキー情報を共有
→Railsで管理しているDB情報を扱える
Railsとブラウザがやり取りする流れ
Rails アプリケーション
Railsのプロセス Action Cableのプロセス
クライアント
メッセージを整形
送信
DBを更新して非同期でやり取りをする場合
Rails アプリケーション
Railsのプロセス Action Cableのプロセス
クライアント
メッセージを整形
送信
DBを更新
DBのCallBack
Active Jobのキュー
に積まれる
Redisのpubsubで
Acion Cableのプロセ
スにメッセージ送信
Active Jobの
キューから取り出
す
まとめ
● Rails5のAction Cableに絞って話した
● Action Cable
○ WebSocketを簡単に扱える
○ RailsのModel操作などいつも通り使える
● なぜAction Cableが出てきたの?
○ 従来:サーバーで全部レンダリング
○ 今後:ページの一部分だけを部分的にレンダリング
○ →サーバーサイドの仕事とクライアントサイドの仕事を分業しようという動き
○ 近年の流れにRailsも乗っかって来たのかな?

More Related Content

What's hot (9)

続マスタ狈対スレーブ1レプリケーションの作り方
続マスタ狈対スレーブ1レプリケーションの作り方続マスタ狈対スレーブ1レプリケーションの作り方
続マスタ狈対スレーブ1レプリケーションの作り方
do_aki
?
Web API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのことWeb API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのこと
Tomokazu Kiyohara
?
笔丑辞别苍颈虫を使った案件て?リリースまて?に起きた问题と対応
笔丑辞别苍颈虫を使った案件て?リリースまて?に起きた问题と対応笔丑辞别苍颈虫を使った案件て?リリースまて?に起きた问题と対応
笔丑辞别苍颈虫を使った案件て?リリースまて?に起きた问题と対応
ndruger
?
惭补肠办别谤别濒による?简単サーバー管理入门と発展形
惭补肠办别谤别濒による?简単サーバー管理入门と発展形惭补肠办别谤别濒による?简単サーバー管理入门と発展形
惭补肠办别谤别濒による?简単サーバー管理入门と発展形
Shinji Tanaka
?
颁辞苍肠谤别迟别5×さくら
颁辞苍肠谤别迟别5×さくら颁辞苍肠谤别迟别5×さくら
颁辞苍肠谤别迟别5×さくら
Masaya Hayashi
?
202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers
Takayoshi Tanaka
?
次世代仮想化テクノロジー
次世代仮想化テクノロジー次世代仮想化テクノロジー
次世代仮想化テクノロジー
Syuichi Murashima
?
Firefox OS and Web server
Firefox OS and Web serverFirefox OS and Web server
Firefox OS and Web server
Tomoaki Konno
?
続マスタ狈対スレーブ1レプリケーションの作り方
続マスタ狈対スレーブ1レプリケーションの作り方続マスタ狈対スレーブ1レプリケーションの作り方
続マスタ狈対スレーブ1レプリケーションの作り方
do_aki
?
Web API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのことWeb API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのこと
Tomokazu Kiyohara
?
笔丑辞别苍颈虫を使った案件て?リリースまて?に起きた问题と対応
笔丑辞别苍颈虫を使った案件て?リリースまて?に起きた问题と対応笔丑辞别苍颈虫を使った案件て?リリースまて?に起きた问题と対応
笔丑辞别苍颈虫を使った案件て?リリースまて?に起きた问题と対応
ndruger
?
惭补肠办别谤别濒による?简単サーバー管理入门と発展形
惭补肠办别谤别濒による?简単サーバー管理入门と発展形惭补肠办别谤别濒による?简単サーバー管理入门と発展形
惭补肠办别谤别濒による?简単サーバー管理入门と発展形
Shinji Tanaka
?
颁辞苍肠谤别迟别5×さくら
颁辞苍肠谤别迟别5×さくら颁辞苍肠谤别迟别5×さくら
颁辞苍肠谤别迟别5×さくら
Masaya Hayashi
?
202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers
Takayoshi Tanaka
?
次世代仮想化テクノロジー
次世代仮想化テクノロジー次世代仮想化テクノロジー
次世代仮想化テクノロジー
Syuichi Murashima
?
Firefox OS and Web server
Firefox OS and Web serverFirefox OS and Web server
Firefox OS and Web server
Tomoaki Konno
?

Similar to Rails5 Action Cableの紹介 (20)

Mvc conf session_1_osada
Mvc conf session_1_osadaMvc conf session_1_osada
Mvc conf session_1_osada
Hiroshi Okunushi
?
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
Akira Inoue
?
搁耻产测て?作る迟飞颈迟迟别谤风飞别产アフ?リケーション
搁耻产测て?作る迟飞颈迟迟别谤风飞别产アフ?リケーション搁耻产测て?作る迟飞颈迟迟别谤风飞别产アフ?リケーション
搁耻产测て?作る迟飞颈迟迟别谤风飞别产アフ?リケーション
Naoto Hori
?
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Naoki (Neo) SATO
?
猫でも分かる Android WebKit
猫でも分かる Android WebKit猫でも分かる Android WebKit
猫でも分かる Android WebKit
Naruto TAKAHASHI
?
WebSphere Application Server V8.5.5 Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5 Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
Takakiyo Tanaka
?
A 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web StackA 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web Stack
GoAzure
?
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
?
TFセミナー マイクロソフト製品で作る Web インフラ 基本編
TFセミナー マイクロソフト製品で作る Web インフラ 基本編TFセミナー マイクロソフト製品で作る Web インフラ 基本編
TFセミナー マイクロソフト製品で作る Web インフラ 基本編
hirookun
?
API Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップAPI Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップ
CA Technologies
?
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
?
AWS Black Belt Techシリーズ Amazon VPC
AWS Black Belt Techシリーズ  Amazon VPCAWS Black Belt Techシリーズ  Amazon VPC
AWS Black Belt Techシリーズ Amazon VPC
Amazon Web Services Japan
?
【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート
日本マイクロソフト株式会社
?
Magic Leap で WebRTC 触ってみた
Magic Leap で WebRTC 触ってみたMagic Leap で WebRTC 触ってみた
Magic Leap で WebRTC 触ってみた
NishoMatsusita
?
10.1 res tful services
10.1 res tful services10.1 res tful services
10.1 res tful services
Jian Feng
?
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep diveAmazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
Amazon Web Services Japan
?
ブラウザからWeb OSへ?Web - TV連携事例からその可能性を探る?
ブラウザからWeb OSへ?Web - TV連携事例からその可能性を探る?ブラウザからWeb OSへ?Web - TV連携事例からその可能性を探る?
ブラウザからWeb OSへ?Web - TV連携事例からその可能性を探る?
Kensaku Komatsu
?
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Akira Inoue
?
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
Akira Inoue
?
搁耻产测て?作る迟飞颈迟迟别谤风飞别产アフ?リケーション
搁耻产测て?作る迟飞颈迟迟别谤风飞别产アフ?リケーション搁耻产测て?作る迟飞颈迟迟别谤风飞别产アフ?リケーション
搁耻产测て?作る迟飞颈迟迟别谤风飞别产アフ?リケーション
Naoto Hori
?
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Naoki (Neo) SATO
?
猫でも分かる Android WebKit
猫でも分かる Android WebKit猫でも分かる Android WebKit
猫でも分かる Android WebKit
Naruto TAKAHASHI
?
WebSphere Application Server V8.5.5 Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5 Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
Takakiyo Tanaka
?
A 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web StackA 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web Stack
GoAzure
?
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
?
TFセミナー マイクロソフト製品で作る Web インフラ 基本編
TFセミナー マイクロソフト製品で作る Web インフラ 基本編TFセミナー マイクロソフト製品で作る Web インフラ 基本編
TFセミナー マイクロソフト製品で作る Web インフラ 基本編
hirookun
?
API Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップAPI Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップ
CA Technologies
?
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
?
Magic Leap で WebRTC 触ってみた
Magic Leap で WebRTC 触ってみたMagic Leap で WebRTC 触ってみた
Magic Leap で WebRTC 触ってみた
NishoMatsusita
?
10.1 res tful services
10.1 res tful services10.1 res tful services
10.1 res tful services
Jian Feng
?
ブラウザからWeb OSへ?Web - TV連携事例からその可能性を探る?
ブラウザからWeb OSへ?Web - TV連携事例からその可能性を探る?ブラウザからWeb OSへ?Web - TV連携事例からその可能性を探る?
ブラウザからWeb OSへ?Web - TV連携事例からその可能性を探る?
Kensaku Komatsu
?
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Akira Inoue
?

Rails5 Action Cableの紹介