Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
[Roppongi.rb#31]Roda紹介
Search
Hoang Duc Quan
June 12, 2025
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[Roppongi.rb#31]Roda紹介
Hoang Duc Quan
June 12, 2025
More Decks by Hoang Duc Quan
See All by Hoang Duc Quan
[Roppongi.rb#38] RubyによるStrategyパターンの実践
blazingrockstorm
0
59
[SaigonRB#20] Clean code in Ruby
blazingrockstorm
0
40
[SaigonRB#21] Ruby Silver & Ruby Gold
blazingrockstorm
0
49
[Roppongi.rb#28] Sentiment-aIというgemを作りました
blazingrockstorm
0
190
Other Decks in Programming
See All in Programming
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
140
wkhtmltopdfの次どうするか問題2026
willnet
2
1.8k
Java 27新機能 / Java 27 new features
kishida
2
180
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
140
App Intentsのビルドプロセスを支える技術
kntkymt
0
480
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
590
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
460
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
2.9k
Are APIs Still Relevant in the AI Era?
soyuka
0
370
AWSに止められる覚悟してますか?
morizo_1984
2
480
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1k
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
130
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
560
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
560
WCS-LA-2024
lcolladotor
0
840
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
290
YesSQL, Process and Tooling at Scale
rocio
174
15k
Ethics towards AI in product and experience design
skipperchong
2
400
Odyssey Design
rkendrick25
PRO
2
840
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
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