Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ractorが出たからRubyの並列処理をおさらいする
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
mokichi
February 24, 2021
Programming
0
800
Ractorが出たからRubyの並列処理をおさらいする
mokichi
February 24, 2021
Tweet
Share
More Decks by mokichi
See All by mokichi
Elixir以外の言語もよく使うエンジニアが考える、Phoenix LiveViewの使いどころ
mokichi
2
520
Rubyistから見たElixir
mokichi
1
490
動的画像変換サービス「imagepix」のご紹介
mokichi
1
290
Phoenix LiveViewをプロダクション利用してみた所感
mokichi
3
980
Phoenix1.6で標準搭載されたLiveViewに入門してみよう
mokichi
0
260
WebエンジニアのためのKubernetesサクッと入門
mokichi
1
190
未来予知できない凡人の生存戦略
mokichi
0
93
Other Decks in Programming
See All in Programming
AI時代のシステム設計:ドメインモデルで変更しやすさを守る設計戦略
masuda220
PRO
4
460
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
640
Unity6.3 AudioUpdate
cova8bitdots
0
120
今、アーキテクトとして 品質保証にどう関わるか
nealle
0
210
AI時代のソフトウェア開発でも「人が仕様を書く」から始めよう-医療IT現場での実践とこれから
koukimiura
0
140
Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー
n4mlz
0
120
Agentic AI: Evolution oder Revolution
mobilelarson
PRO
0
140
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
1
210
Claude Codeセッション現状確認 2026福岡 / fukuoka-aicoding-00-beacon
monochromegane
4
410
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
380
Ruby and LLM Ecosystem 2nd
koic
1
400
Go Conference mini in Sendai 2026 : Goに新機能を提案し実装されるまでのフロー徹底解説
yamatoya
0
550
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
3k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
300
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
110
Facilitating Awesome Meetings
lara
57
6.8k
The Cost Of JavaScript in 2023
addyosmani
55
9.8k
Optimizing for Happiness
mojombo
378
71k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
240
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
100
YesSQL, Process and Tooling at Scale
rocio
174
15k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
How to make the Groovebox
asonas
2
2k
Transcript
Ractorが出たから Rubyの並列処理をおさらいする 2021/02/24 @第28回ゆるはち.it 株式会社スマートアルゴリズム 齋藤 和也
自己紹介 名前:齋藤 和也 HN:mokichi 年齢:33歳 居住:東京都 出身:福岡県 🍜 Twitter:@mokichi_s12m 株式会社スマートアルゴリズム 代表取締役 株式会社Vook
外部CTO クラウドインフラを含むサーバサイド開発やDevOps が得意 ここ数年は Elixir/Phoenix にお熱 🔥 (ビルディット社との付き合いは結構長い )
Ruby3.0で Ractor が追加されました 🎉 まだ experimental
Ractorとは • アクターモデル風の並行・並列制御機構 • 並列実行単位をRactorと呼んでいる Ractor.new{ expr } • メッセージの送受信でRactor間のコミュニケーション
• 各Ractorに少なくとも1つのスレッドがある • コントリビューター曰く「らくたー」と読むのが正しそうです (当初あーるあくたーと読んでいたのは内緒) https://www.youtube.com/watch?v=40t8EPpnujg
プロセスやスレッドじゃダメなの? 🤔
プロセスの問題点 • OSへの負荷がスレッドと比較して高い • メモリをたくさん使う (COWがあったとしても) • プロセス間でメモリ上のオブジェクトを直接共有する ことができず、別の手段でやりとりする必要がある
スレッドの問題点 • スレッド間でメモリを共有するため、複数スレッドから同じオブ ジェクトを同時に操作するとまずいことに (Mutex等使えば解消できるが、かなり気を使う) • 処理どうしに依存関係があると複雑さが増す • CRubyにはGIL(GVL)があるためスレッド安全ではあるが、マ ルチコアを活用できない
GILについて • Global Interpreter Lock の略 RubyではGVL(Giant VM Lock)という名称 •
同時に実行されるスレッドは常に1つ • I/Oの待機時には解放される ◦ WebアプリケーションのようにI/Oが処理の大部分を占めるものは マルチスレッドによる並列化の恩恵を受けられる
人類には マルチスレッドプログラミングは 難しすぎる 🤯 C++やJavaでは結構やってましたが… (お察し)
Ractorの特徴 • 異なるRactorではGILの影響を受けない • ミュータブルな変数をRactor間で共有できない ◦ ディープコピーを渡す or 所有権を移動させる •
別Ractorからのメッセージを待つことができるため、 依存関係がある処理やワーカープールを記述しやすい ◦ スレッドで同じことしようとすると、ロックが複雑に絡み合う
時間があればサンプルを少し見る
将来Ractorはこう使われる?(勝手な想像です) • Unicorn/Puma や Resque/Sidekiq の発展型 ◦ GILの影響を受けないことによる恩恵を受けられる • 機械学習
(データ収集 > 前処理 > 学習 > 予測 の全工程) ◦ Ruby自体も処理速度が向上しているし、ライブラリも結構あるみたい ◦ RubyでWebアプリ作ってるのに、そこだけわざわざPython使うのは… • 分散コンピューティング ◦ PubSubとうまく使えば別マシンのプロセスと連動できたり?
We ❤ Ruby!