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
[Roppongi.rb#31]Roda紹介
Search
Hoang Duc Quan
June 12, 2025
Programming
0
79
[Roppongi.rb#31]Roda紹介
Hoang Duc Quan
June 12, 2025
Tweet
Share
More Decks by Hoang Duc Quan
See All by Hoang Duc Quan
[SaigonRB#20] Clean code in Ruby
blazingrockstorm
0
26
[SaigonRB#21] Ruby Silver & Ruby Gold
blazingrockstorm
0
19
[Roppongi.rb#28] Sentiment-aIというgemを作りました
blazingrockstorm
0
130
Other Decks in Programming
See All in Programming
KessokuでDIでもgoroutineを活用する / Go Connect #6
mazrean
0
120
TanStack DB ~状態管理の新しい考え方~
bmthd
2
340
自作OSでDOOMを動かしてみた
zakki0925224
1
1.4k
CSC305 Summer Lecture 06
javiergs
PRO
0
100
ゲームの物理
fadis
5
1.5k
Kiroの仕様駆動開発から見えてきたAIコーディングとの正しい付き合い方
clshinji
1
160
Understanding Ruby Grammar Through Conflicts
yui_knk
1
140
【第4回】関東Kaggler会「Kaggleは執筆に役立つ」
mipypf
0
900
A Gopher's Guide to Vibe Coding
danicat
0
180
Ruby Parser progress report 2025
yui_knk
1
140
AI時代のドメイン駆動設計-DDD実践におけるAI活用のあり方 / ddd-in-ai-era
minodriven
23
9.1k
AHC051解法紹介
eijirou
0
630
Featured
See All Featured
It's Worth the Effort
3n
187
28k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
A designer walks into a library…
pauljervisheath
207
24k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Unsuck your backbone
ammeep
671
58k
For a Future-Friendly Web
brad_frost
179
9.9k
How STYLIGHT went responsive
nonsquared
100
5.7k
Agile that works and the tools we love
rasmusluckow
329
21k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
6k
Transcript
Roda の紹介: ルーティングツ リー Web フレームワーク Hoang Quan @BlazingRockStorm
自己紹介 Hoang Quan (ホアンクアン) @BlazingRockStorm rocker.gryphon クラウドとバックエンドに特化したシステムエンジニア。 RubyとAWSとAgileが好き 折り紙インスタグラマー、ドラマー・パーカッショニスト https://www.linkedin.com/in/hoang-quan-8418a7155/
新しい Rubyフレームワークを探す 1 Railsの制限 Rails は強力ですが、簡単なプロトタイプやハッカソンでは遅く なる可能性がある。 2 他のオプション 多くのハッカソン
プロジェクトでは、Go、 TypeScript/JavaScript、または Python が使用されてい る。 3 Sinatraの短所 Sinatra は優れたフレームワークですが、開発されてから長 い年月が経っているため、一部がやや時代遅れになっている 部分がある。 4 スピードプログラミング 高速でシンプルな Ruby フレームワークが必要で、Python の FastAPI に似たものが望ましい。
Rodaとは? Rubyウェブフレームワーク Roda は Jeremy Evans によって作成さ れた、Web アプリケーション構築のための 軽量なソリューションです。
ルーティングツリーデーサイン 動的でスケーラブルなリクエスト処理のた めに、ルーティングツリーを使用します。 軽くて早い 100万回以上のダウンロード数を誇る Roda は、その速度と効率性で高く評価さ れています。
Rodaの主な特徴 1 シンプルさ Rodaは、学習と使用が容易になるように設計されており、ウェブ開発をより身近 なものにする。 2 信頼性 イミュータビリティ(不変性)とスレッドセーフをサポートしており、安定した予測可 能なパフォーマンスを保証します。 3
拡張性 プラグインベースのアーキテクチャにより、Roda は特定のニーズに合わせて容 易に拡張できます。 4 パーフォーマンス Roda は、純粋な Rack の速度に近いパフォーマンスを提供し、リソースの使用 を最適化します。
ルーティングツリーの概念 1 動的なリクエスト処理 Roda は、ルーティングツリー構造を通じて、 Web リクエストを効率的に処理し ます。 2 逐次的なパスのマッチング
パスのセグメントを順番に照合し、正確なルーティングロジックを実現します。 3 重複を減ら ルーティングツリーは、複雑なウェブアプリケーションにおけるコードの重複を 減らします。
ルーティングツリーの概念 4 例 r.on "a" do # /a branch r.on
"b" do # /a/b branch r.is "c" do # /a/b/c request r.get do end # GET /a/b/c request r.post do end # POST /a/b/c request end r.get "d" do end # GET /a/b/d request r.post "e" do end # POST /a/b/e request end end
基本的な Roda アプリケーションの 構造 Roda を継承 アプリケーションを作成するには、まず Roda クラスを継承することから始め ます。
ルートを定義 route ブロックを使用して、アプリケーションのルートとロジックを定義しま す。 r.on、r.isとのマッチング ルートのマッチングには、r.on、r.is、r.getなどのメソッドを利用します。 戻り値 ブロックの戻り値は、クライアントに送信される応答になります。
人気のあるRuby Webフレームワークとの比較
Roda vs Sinatra Roda 構造化されたリクエスト処理のためのルーティングツリーを中心に 構築されています。 • 最小限のオーバーヘッドでより高いパフォーマンス。 • プラグインベースのアーキテクチャ。
• 設計上スレッドセーフ。 • 不変なリクエストオブジェクト。 • ベンチマークで2~3倍高速。 • コードの重複が少ない。 Sinatra よりシンプルなアプリケーション向けに、フラットなルーティング構造 を使用します。 • より主流な採用。 • より多くのRubyistにとって馴染み深い。 • 広範なドキュメント。 • シンプルさに焦点を当てたDSL • より大きなコミュニティ • より平坦な学習曲線
Rodaのプラグインシステム コア機能 プラグインがコア機能を 駆動する。 簡単に追加 機能の追加や削除が簡 単。 公式プラグイン 100以上の公式プラグイ ンが存在します。
カスタムプラグイン 特定のニーズに合わせ てプラグインを作成す る。
Rodaを始める インストール 以下のコマンドで Rodaをインストール gem install roda config.ru 設定のために、 config.ru
ファイルを作成する プログラミング アプリのクラスとルートを書く アプリを行動 rackup コマンドでアプリを行動する
例のRodaプロジェクト • RodaとMongoDBでペットプロジェクトを作成しました • Github: https://github.com/BlazingRockStorm/roda-example
例のRodaプロジェクト
例のRodaプロジェクト
注意!
https://youtu.be/smDgS8E_-jI?si=IpGH-9lUoL8QP2RD
ISUCON一緒に参加しましょう!
None