SlideShare a Scribd company logo
1 of 17
Download to read offline
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

続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方do_aki
 
Web API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのことWeb API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのことTomokazu Kiyohara
 
Phoenixを使った案件でリリースまでに起きた問題と対応
Phoenixを使った案件でリリースまでに起きた問題と対応Phoenixを使った案件でリリースまでに起きた問題と対応
Phoenixを使った案件でリリースまでに起きた問題と対応ndruger
 
Mackerelによる
簡単サーバー管理入門と発展形
Mackerelによる
簡単サーバー管理入門と発展形Mackerelによる
簡単サーバー管理入門と発展形
Mackerelによる
簡単サーバー管理入門と発展形Shinji Tanaka
 
202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineersTakayoshi Tanaka
 
次世代仮想化テクノロジー
次世代仮想化テクノロジー次世代仮想化テクノロジー
次世代仮想化テクノロジーSyuichi Murashima
 
Firefox OS and Web server
Firefox OS and Web serverFirefox OS and Web server
Firefox OS and Web serverTomoaki Konno
 

What's hot (9)

続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方続マスタN対スレーブ1レプリケーションの作り方
続マスタN対スレーブ1レプリケーションの作り方
 
20100224
2010022420100224
20100224
 
Web API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのことWeb API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのこと
 
Phoenixを使った案件でリリースまでに起きた問題と対応
Phoenixを使った案件でリリースまでに起きた問題と対応Phoenixを使った案件でリリースまでに起きた問題と対応
Phoenixを使った案件でリリースまでに起きた問題と対応
 
Mackerelによる
簡単サーバー管理入門と発展形
Mackerelによる
簡単サーバー管理入門と発展形Mackerelによる
簡単サーバー管理入門と発展形
Mackerelによる
簡単サーバー管理入門と発展形
 
Concrete5×さくら
Concrete5×さくらConcrete5×さくら
Concrete5×さくら
 
202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers
 
次世代仮想化テクノロジー
次世代仮想化テクノロジー次世代仮想化テクノロジー
次世代仮想化テクノロジー
 
Firefox OS and Web server
Firefox OS and Web serverFirefox OS and Web server
Firefox OS and Web server
 

Similar to Rails5 Action Cableの紹介

.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデートAkira Inoue
 
Rubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーションRubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーション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 WebKitNaruto 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_r51Takakiyo 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 StackGoAzure
 
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.jsTanUkkii
 
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 servicesJian 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
 

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
 
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
 
10th jan 2013_miyazaki
10th jan 2013_miyazaki10th jan 2013_miyazaki
10th jan 2013_miyazaki
 
Rubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーションRubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーション
 
[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 を使ったマイクロサービス開発
 
猫でも分かる Android WebKit
猫でも分かる Android WebKit猫でも分かる Android WebKit
猫でも分かる Android WebKit
 
20100313
2010031320100313
20100313
 
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
 
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
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
 
TFセミナー マイクロソフト製品で作る Web インフラ 基本編
TFセミナー マイクロソフト製品で作る Web インフラ 基本編TFセミナー マイクロソフト製品で作る Web インフラ 基本編
TFセミナー マイクロソフト製品で作る Web インフラ 基本編
 
API Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップAPI Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップ
 
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
 
AWS Black Belt Techシリーズ Amazon VPC
AWS Black Belt Techシリーズ  Amazon VPCAWS Black Belt Techシリーズ  Amazon VPC
AWS Black Belt Techシリーズ Amazon VPC
 
【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート
 
Magic Leap で WebRTC 触ってみた
Magic Leap で WebRTC 触ってみたMagic Leap で WebRTC 触ってみた
Magic Leap で WebRTC 触ってみた
 
10.1 res tful services
10.1 res tful services10.1 res tful services
10.1 res tful services
 
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep diveAmazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
 
ブラウザからWeb OSへ〜Web - TV連携事例からその可能性を探る〜
ブラウザからWeb OSへ〜Web - TV連携事例からその可能性を探る〜ブラウザからWeb OSへ〜Web - TV連携事例からその可能性を探る〜
ブラウザからWeb OSへ〜Web - TV連携事例からその可能性を探る〜
 
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
 

Rails5 Action Cableの紹介