Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PumaとUnicornって結局何なん!?
Search
Yusuke Inai
September 21, 2022
Programming
0
1.4k
PumaとUnicornって結局何なん!?
Yusuke Inai
September 21, 2022
Tweet
Share
More Decks by Yusuke Inai
See All by Yusuke Inai
で、エンジニアになって1年経ったけどどう?
youliangdao
1
340
人よりアウトプットができるようになるためのコツ
youliangdao
0
200
Next.jsから見る Webフロントエンドの歴史
youliangdao
1
1.1k
SaaSスタートアップで3ヶ月働いてみて感じた現実(リアル)
youliangdao
0
490
個人開発で挫折する人を救いたい
youliangdao
2
3.7k
Qiitaでバズりやすい記事の書き方を伝授する
youliangdao
0
4k
React って本当に使う意味あるの? 〜SPA と React の「キホン」の「キ」〜
youliangdao
1
240
"ぼくのかんがえたさいきょうの"勉強法
youliangdao
0
400
低レイヤへの誘い
youliangdao
0
310
Other Decks in Programming
See All in Programming
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
210
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
3
830
WebRTC と Rust と8K 60fps
tnoho
2
2k
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
130
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
150
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
6
3k
Integrating WordPress and Symfony
alexandresalome
0
150
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
660
ID管理機能開発の裏側 高速にSaaS連携を実現したチームのAI活用編
atzzcokek
0
220
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
450
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
400
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
2.3k
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
6k
Why Our Code Smells
bkeepers
PRO
340
57k
Context Engineering - Making Every Token Count
addyosmani
9
500
GitHub's CSS Performance
jonrohan
1032
470k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Transcript
〜RackからみたRailsアプリケーション〜 PumaとUnicornって結局何なん!? 2022.9.20 最近学んだこと
自己紹介 1 2 Railsのリクエストサイクル 4 PumaとUnicornの正体 3 Rack 5 目次
まとめ 6 なぜ話そうと思ったのか? おまけ(RailsとRack) 7
1 自己紹介
・稲井友亮 ・25歳 ・RUNTEQ34期生 ・医者目指してた ・低レイヤ大好き
None
2 なぜ話そうと思ったの か?
その前に....
まずPumaとUnicornって??
None
デプロイ時によく見 かける
3 PumaとUnicornの正体
Rack(の仕様に基づいて動く)サーバー
is 何??
4 Railsのリクエストサイクル
① ②
用意してあるリソースしか 返却できない 問題点
・ユーザーが投稿したものの最新の10個を表示 ・投稿したもの削除したい ・いいね機能やブックマーク機能も欲しい 例えば...
どうすればいい...?
・簡単な更新作業程度ならできる ・複雑な作業になってくると限界あり 手動で頑張る
プログラムに 任せよ
動的 静的 アプリケーション
インターフェース
None
アプリケーションサー バー 常にプロセスが実行さ れているためCGIより効 率が良い 使い回しモデル Common Gateway Interface リクエストのたびに新
しくプロセスを起動さ せる必要があり非効率 使い捨てモデル CGI APサーバー インターフェースの種類
このインターフェースのうちの 1つがRack
5 Rack
Rackは、RubyでWebアプリケ ーションを開発するための、最 小限の、モジュール化された、 適応性の高いインターフェイス を提供します。 引用元:github.com/rack/rack
RackとはサーバーとRubyアプリ がやりとりする際のルール
Rackのルール サーバーからアプ リへのリクエスト の通知はメソッド 呼び出しで行う リクエストの内容 は引数で渡す メソッドの戻り値 をサーバー側に返 す。
1 2 3
None
Rackアプリケーション
Rackサーバー ・rack gemを用いて開発 ・利用したいサーバーに対応した Rack::Handlerにアプリを渡すだけ
マルチプロセス スロークライアント リバースプロキシと 組み合わせて使う Nginx + Unicorn マルチスレッド Railsのデフォルト リクエストのバッファ
可能 スロークライアントに 強い Puma Unicorn Rackサーバーの種類
6 まとめ
サーバーが動的なリソースを提供する ためにはインターフェースが必要 1 Rackとはそのインターフェースであ り、ルール 2 Rackに沿ってアプリとサーバーを実装 することで、Webアプリケーションを構 築できる。PumaやUnicornはRackに沿 って動くサーバー。
3
ありがとうございます times_34期生_inai_yusuke
7 おまけ (RailsとRack)
bin/rails serverでサーバー立ち上げ 1 bin/rails cでコンソール開く 2 Rails.application.call(env) 4 Rack::MockRequest.env_forでenv取得 3
puts body.join('') 5 やってみよう!