Submit Search
Upload
Ruby is comming ractor編
•
0 likes
•
274 views
Yoichi Toyota
Follow
Ruby3の目玉の一つであるところのRactorを触ってみたレポートです
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 10
Download now
Download to read offline
Recommended
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
Tomohiro Kumagai
2015/06/28 に @k_katsumi さん主催で開催された「Swift 2 シンポジウム」 (http://realm.connpass.com/event/16556/) で発表させて頂いた資料です。 初めて Swift 2.0 に触れたときに大域関数がごっそり削除されていた衝撃から、それを敢行する上での柱となっていた Protocol Extension の魅力を紹介し、それを以って積極的に使っても良いものなのかを議論させて頂きました。 後半は疑問系が連発しますが「自分はそう思ってるけれど、どう感じますか?」という意味合いです。自分はこう思う!とかありましたらぜひぜひ教えてくださいませ。
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
y_taka_23
NGK2015B で使用したスライドです。モデル検査器 Alloy を用いて、AWS のセキュリティグループ設定を自動で検査します。
基礎構文班 5回目 繰り返し
基礎構文班 5回目 繰り返し
XMLProJ2014
とっとるびー(2回目)発表資料
とっとるびー(2回目)発表資料
ionis111
眠い目をこすりつけながら、作った微妙な資料(苦笑 RWC2010を聴きに行ったこととか、Ruby1.9の入り口手前でつまずいたこととか。
18166746-NeverBlock-RubyKaigi2009
18166746-NeverBlock-RubyKaigi2009
Muhammad Ali
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
普段Djangoを使っている人間がruby on railsを勉強してみた話
普段Djangoを使っている人間がruby on railsを勉強してみた話
ko ty
普段Djangoを使っている人間がruby on railsを勉強してみた話
Ruby 3.0.0 コネタ集
Ruby 3.0.0 コネタ集
Kazuhiro Nishiyama
[Fukuoka.rb 200回 LT大会 (#202) - connpass](https://fukuokarb.connpass.com/event/206956/)での発表資料です。
Recommended
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
Tomohiro Kumagai
2015/06/28 に @k_katsumi さん主催で開催された「Swift 2 シンポジウム」 (http://realm.connpass.com/event/16556/) で発表させて頂いた資料です。 初めて Swift 2.0 に触れたときに大域関数がごっそり削除されていた衝撃から、それを敢行する上での柱となっていた Protocol Extension の魅力を紹介し、それを以って積極的に使っても良いものなのかを議論させて頂きました。 後半は疑問系が連発しますが「自分はそう思ってるけれど、どう感じますか?」という意味合いです。自分はこう思う!とかありましたらぜひぜひ教えてくださいませ。
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
y_taka_23
NGK2015B で使用したスライドです。モデル検査器 Alloy を用いて、AWS のセキュリティグループ設定を自動で検査します。
基礎構文班 5回目 繰り返し
基礎構文班 5回目 繰り返し
XMLProJ2014
とっとるびー(2回目)発表資料
とっとるびー(2回目)発表資料
ionis111
眠い目をこすりつけながら、作った微妙な資料(苦笑 RWC2010を聴きに行ったこととか、Ruby1.9の入り口手前でつまずいたこととか。
18166746-NeverBlock-RubyKaigi2009
18166746-NeverBlock-RubyKaigi2009
Muhammad Ali
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
普段Djangoを使っている人間がruby on railsを勉強してみた話
普段Djangoを使っている人間がruby on railsを勉強してみた話
ko ty
普段Djangoを使っている人間がruby on railsを勉強してみた話
Ruby 3.0.0 コネタ集
Ruby 3.0.0 コネタ集
Kazuhiro Nishiyama
[Fukuoka.rb 200回 LT大会 (#202) - connpass](https://fukuokarb.connpass.com/event/206956/)での発表資料です。
超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする
Yoichi Toyota
スクラム開発の本当に重要だと思うことをお話しします
ジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押し
Yoichi Toyota
ジャワカレーは普通に作ってもとてもおいしいカレールーですが、最後の味の調整でクオリティを大きく上げることが出来ます。
ライブラリを作る思考回路
ライブラリを作る思考回路
Yoichi Toyota
ライブラリを作るに当たって、どういう思考回路で設計していったのかを、実際に作成したReactのカスタムフックの実例をもとに解説します。
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
Yoichi Toyota
DynamoDBを設計するに当たって利用する3つの手法(GSIの多重定義、複合ソートキー、スパースインデックス)についてお話しします。
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
Yoichi Toyota
DynamoDBのスキーマ設計で気をつけるべきことについてまとめてみました
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないこと
Yoichi Toyota
「オブジェクト指向」って言葉はよく聞くんだけど、具体的に何を指しているのかよく分からないという人向けに、なんでよく分からないかを歴史的経緯から簡単に説明します。
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねん
Yoichi Toyota
rubyのコードでよく見られる、ブロックの代わりに&:keyみたいに渡されるやつの正体について説明します!
はじめてのPull Request
はじめてのPull Request
Yoichi Toyota
開発が捗るPull Requestの作り方の心がけについてまとめてみました
Railsの開発環境作るぞ
Railsの開発環境作るぞ
Yoichi Toyota
railsの初期セットアップとか開発環境の構築の決定版作ったので、最初はこれをやれば大丈夫!
jqで極めるシェル芸の話
jqで極めるシェル芸の話
Yoichi Toyota
JSONを整形するコマンドだと思われがちなjqコマンド、実はかなり高性能で、これを使いこなせるとシェル芸が捗ります!
足し算をつくろう
足し算をつくろう
Yoichi Toyota
論理回路によってどうやって足し算が実現されているかというお話。
React Hooksでカスタムフックをつくろう
React Hooksでカスタムフックをつくろう
Yoichi Toyota
React Hooksで実現できることをカスタムフックの作り方の実例を踏まえて紹介します。
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
Yoichi Toyota
ActionCableのクライアント作りたいけど、クライアント側はRailsから切り離したいと思ったので、調査してみた
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
Yoichi Toyota
AWS SAMの使い方のお話
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方
Yoichi Toyota
JavaScriptが解釈できないクローラーが正しくogpタグを読めるようにするために、どのようなアーキテクチャでSPAのサイトを構築すればいいかというお話
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活
Yoichi Toyota
AWS WAFを初めて触ってみたので、その感触をまとめてみた
Docker in production
Docker in production
Yoichi Toyota
Dockerを本番で使おうとして死んだ話
How to fight against “full scratch disease”
How to fight against “full scratch disease”
Yoichi Toyota
かかったかな?と思ったら作り直したい病
Amazon lexを触ってみた
Amazon lexを触ってみた
Yoichi Toyota
AWS re:Invent 2016で発表された、チャットボットが簡単に作成できるAmazon Lexに関する紹介スライドです。 2017/2/10 pizza_jp #1にて発表。
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Yoichi Toyota
ねたほうがいい
More Related Content
More from Yoichi Toyota
超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする
Yoichi Toyota
スクラム開発の本当に重要だと思うことをお話しします
ジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押し
Yoichi Toyota
ジャワカレーは普通に作ってもとてもおいしいカレールーですが、最後の味の調整でクオリティを大きく上げることが出来ます。
ライブラリを作る思考回路
ライブラリを作る思考回路
Yoichi Toyota
ライブラリを作るに当たって、どういう思考回路で設計していったのかを、実際に作成したReactのカスタムフックの実例をもとに解説します。
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
Yoichi Toyota
DynamoDBを設計するに当たって利用する3つの手法(GSIの多重定義、複合ソートキー、スパースインデックス)についてお話しします。
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
Yoichi Toyota
DynamoDBのスキーマ設計で気をつけるべきことについてまとめてみました
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないこと
Yoichi Toyota
「オブジェクト指向」って言葉はよく聞くんだけど、具体的に何を指しているのかよく分からないという人向けに、なんでよく分からないかを歴史的経緯から簡単に説明します。
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねん
Yoichi Toyota
rubyのコードでよく見られる、ブロックの代わりに&:keyみたいに渡されるやつの正体について説明します!
はじめてのPull Request
はじめてのPull Request
Yoichi Toyota
開発が捗るPull Requestの作り方の心がけについてまとめてみました
Railsの開発環境作るぞ
Railsの開発環境作るぞ
Yoichi Toyota
railsの初期セットアップとか開発環境の構築の決定版作ったので、最初はこれをやれば大丈夫!
jqで極めるシェル芸の話
jqで極めるシェル芸の話
Yoichi Toyota
JSONを整形するコマンドだと思われがちなjqコマンド、実はかなり高性能で、これを使いこなせるとシェル芸が捗ります!
足し算をつくろう
足し算をつくろう
Yoichi Toyota
論理回路によってどうやって足し算が実現されているかというお話。
React Hooksでカスタムフックをつくろう
React Hooksでカスタムフックをつくろう
Yoichi Toyota
React Hooksで実現できることをカスタムフックの作り方の実例を踏まえて紹介します。
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
Yoichi Toyota
ActionCableのクライアント作りたいけど、クライアント側はRailsから切り離したいと思ったので、調査してみた
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
Yoichi Toyota
AWS SAMの使い方のお話
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方
Yoichi Toyota
JavaScriptが解釈できないクローラーが正しくogpタグを読めるようにするために、どのようなアーキテクチャでSPAのサイトを構築すればいいかというお話
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活
Yoichi Toyota
AWS WAFを初めて触ってみたので、その感触をまとめてみた
Docker in production
Docker in production
Yoichi Toyota
Dockerを本番で使おうとして死んだ話
How to fight against “full scratch disease”
How to fight against “full scratch disease”
Yoichi Toyota
かかったかな?と思ったら作り直したい病
Amazon lexを触ってみた
Amazon lexを触ってみた
Yoichi Toyota
AWS re:Invent 2016で発表された、チャットボットが簡単に作成できるAmazon Lexに関する紹介スライドです。 2017/2/10 pizza_jp #1にて発表。
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Yoichi Toyota
ねたほうがいい
More from Yoichi Toyota
(20)
超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする
ジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押し
ライブラリを作る思考回路
ライブラリを作る思考回路
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないこと
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねん
はじめてのPull Request
はじめてのPull Request
Railsの開発環境作るぞ
Railsの開発環境作るぞ
jqで極めるシェル芸の話
jqで極めるシェル芸の話
足し算をつくろう
足し算をつくろう
React Hooksでカスタムフックをつくろう
React Hooksでカスタムフックをつくろう
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活
Docker in production
Docker in production
How to fight against “full scratch disease”
How to fight against “full scratch disease”
Amazon lexを触ってみた
Amazon lexを触ってみた
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Ruby is comming ractor編
1.
Ruby3 is comming Ractor編 株式会社エクストーン 豊田陽一
2.
Ractor ▰ Ruby3で導入される並列処理 ▰ 3.0ではexperimental扱い ▰
今年Guildから名前が変更 ▰ Data raceが起こらないような設計 ▰ スレッドセーフとか考えなくてもいい
3.
Ractorの生成 ▰ Ractor.newで生成 ▰ 渡したブロックが並行実行される Ractor.new
do # このブロックが並行に実行される end
4.
環境の隔離 ▰ Ractor間ではオブジェクトが共有され ない ▰ 外部の変数を参照すると例外が起こる ▰
Proc#isolateを利用 obj = "hoge" Ractor.new do # Ractor生成時に例外発生 puts obj end
5.
引数経由で値を渡す ▰ 値のコピーが渡される obj =
"hoge" puts obj.object_id Ractor.new obj do |local_obj| # Ractor外のobjと異なるobject_id puts local_obj.object_id end
6.
引数経由で値を渡す (2) ▰ 共有可能な値は実体が渡される ▰
数値・シンボル・frozenな文字列など ▰ クラス・モジュール ▰ Ractor obj = "hoge".freeze puts obj.object_id Ractor.new obj do |local_obj| # Ractor外のobjと異なるobject_id puts local_obj.object_id end
7.
send/recvで値を渡す ▰ push型のRactor間通信 ▰ 送信側が宛先のRactorを知っている obj
= "hoge" puts obj.object_id p1 = Ractor.new do # 値を受け取るまで待つ local_obj = Ractor.recv # コピーされた値を受け取る puts local_obj.object_id end p1.send obj # p1にメッセージ送信
8.
yield/takeで値を渡す ▰ pull型のRactor間通信 ▰ 受信側が送信元を知っている p1
= Ractor.new do local_obj = "hoge" puts local_obj.object_id sleep 5 # 5秒待つ # 受信側にメッセージ送信 Ractor.yield local_obj end # p1からメッセージ受信 (値を受け取るまで待つ ) obj = p1.take puts obj.object_id
9.
デモ
10.
まとめ ▰ Ractor ▰ Ruby3からの並列処理のライブラリ ▰
まだexperimental ▰ 並列処理楽しい
Download now