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
41
[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
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
450
phperだってパンチカードでコーディングしたい
o0h
PRO
0
220
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
130
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
470
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
350
setup-vp GitLab対応の裏側
naokihaba
0
150
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
550
AWSに止められる覚悟してますか?
morizo_1984
2
520
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
190
Security issues being discussed on Web Platforms
petamoriken
0
1.4k
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.4k
すこし踏み込む CancellationToken
htkym
2
1.6k
Featured
See All Featured
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Deep Space Network (abreviated)
tonyrice
0
360
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
570
Utilizing Notion as your number one productivity tool
mfonobong
4
610
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
It's Worth the Effort
3n
188
29k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
Side Projects
sachag
456
43k
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