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
PumaとUnicornって結局何なん!?
Search
Yusuke Inai
September 21, 2022
Programming
0
1.2k
PumaとUnicornって結局何なん!?
Yusuke Inai
September 21, 2022
Tweet
Share
More Decks by Yusuke Inai
See All by Yusuke Inai
で、エンジニアになって1年経ったけどどう?
youliangdao
1
330
人よりアウトプットができるようになるためのコツ
youliangdao
0
180
Next.jsから見る Webフロントエンドの歴史
youliangdao
1
1.1k
SaaSスタートアップで3ヶ月働いてみて感じた現実(リアル)
youliangdao
0
480
個人開発で挫折する人を救いたい
youliangdao
2
3.6k
Qiitaでバズりやすい記事の書き方を伝授する
youliangdao
0
3.8k
React って本当に使う意味あるの? 〜SPA と React の「キホン」の「キ」〜
youliangdao
1
230
"ぼくのかんがえたさいきょうの"勉強法
youliangdao
0
390
低レイヤへの誘い
youliangdao
0
290
Other Decks in Programming
See All in Programming
もうちょっといいRubyプロファイラを作りたい (2025)
osyoyu
1
430
Android 16 × Jetpack Composeで縦書きテキストエディタを作ろう / Vertical Text Editor with Compose on Android 16
cc4966
1
220
AI Coding Agentのセキュリティリスク:PRの自己承認とメルカリの対策
s3h
0
210
AIでLINEスタンプを作ってみた
eycjur
1
230
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
320
意外と簡単!?フロントエンドでパスキー認証を実現する WebAuthn
teamlab
PRO
2
740
Swift Updates - Learn Languages 2025
koher
2
470
AIコーディングAgentとの向き合い方
eycjur
0
270
「手軽で便利」に潜む罠。 Popover API を WCAG 2.2の視点で安全に使うには
taitotnk
0
850
テストコードはもう書かない:JetBrains AI Assistantに委ねる非同期処理のテスト自動設計・生成
makun
0
260
Ruby×iOSアプリ開発 ~共に歩んだエコシステムの物語~
temoki
0
270
Tool Catalog Agent for Bedrock AgentCore Gateway
licux
6
2.4k
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
The Power of CSS Pseudo Elements
geoffreycrofte
77
6k
Practical Orchestrator
shlominoach
190
11k
A designer walks into a library…
pauljervisheath
207
24k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Building Applications with DynamoDB
mza
96
6.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
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 やってみよう!