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
92
[Roppongi.rb#31]Roda紹介
Hoang Duc Quan
June 12, 2025
Tweet
Share
More Decks by Hoang Duc Quan
See All by Hoang Duc Quan
[Roppongi.rb#38] RubyによるStrategyパターンの実践
blazingrockstorm
0
1
[SaigonRB#20] Clean code in Ruby
blazingrockstorm
0
32
[SaigonRB#21] Ruby Silver & Ruby Gold
blazingrockstorm
0
35
[Roppongi.rb#28] Sentiment-aIというgemを作りました
blazingrockstorm
0
160
Other Decks in Programming
See All in Programming
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
520
[AI Engineering Summit Tokyo 2025] LLMは計画業務のゲームチェンジャーか? 最適化業務における活⽤の可能性と限界
terryu16
2
260
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.5k
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
160
Go コードベースの構成と AI コンテキスト定義
andpad
0
160
TestingOsaka6_Ozono
o3
0
270
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
160
JETLS.jl ─ A New Language Server for Julia
abap34
2
470
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
0
1.7k
クラウドに依存しないS3を使った開発術
simesaba80
0
220
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
290
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
77
5.2k
A Tale of Four Properties
chriscoyier
162
24k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.2k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
140
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The Invisible Side of Design
smashingmag
302
51k
So, you think you're a good person
axbom
PRO
0
1.9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Become a Pro
speakerdeck
PRO
31
5.8k
The Curious Case for Waylosing
cassininazir
0
200
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
0
1.8k
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