こんにちは!Schoo Advent Calendar2024の8日目の記事を担当します @ftakizawa です。
最近のマイブームはんぽちゃむです。
今回は、Ruby界隈で「Rails以外のフレームワーク」について取り上げます。
RubyといえばRailsのイメージが強いですが、実は他にも素晴らしいフレームワークがたくさんあるんです。
Railsが強力すぎるせいで「他のフレームワークを知らない」という方も多いのではないでしょうか?
この記事では、用途別にRubyのフレームワークを紹介していきます。SinatraやHanamiなどの軽量フレームワークから、特定のユースケースに特化したものまで、幅広く取り上げます!
※GitHubのスター数は2024年11月時点のものです。
1. Sinatra - 軽量でシンプルなフレームワーク (⭐️12.2k)
まずはRubyで最も有名な軽量フレームワーク Sinatra から。
リポジトリ:https://github.com/sinatra/sinatra
require 'sinatra'
get '/' do
'Hello, world!'
end
Sinatraはとにかくシンプル!こんな感じで、ほんの数行のコードでWebアプリが動きます。
ちょっとしたツールやAPIを作りたいときには最適ですね。軽量さと柔軟性が魅力です。
Railsと比べても公式ドキュメントの量が少なく、Ruby初心者でも簡単にWebアプリケーション開発に取りかかれると思います。
2. Hanami - アーキテクチャ重視派にオススメ(⭐️6.2k)
Hanami は「堅牢なアプリケーションを作りたい」という人向けのフルスタックフレームワークです。
リポジトリ:https://github.com/hanami/hanami
module Web
class Application < Hanami::App
end
end
アプリケーションをコンポーネントに分割する設計が特徴です。
RailsはMVCパターンをベースにした設計に対して、HanamiはDDDをベースにしています。
つまりRailsはサービスを素早くローンチすることに向いていて、Hanamiは長期的にメンテナンスすることに向いており、保守性の高いコードを書けることが特徴です。
一歩進んだアプリ設計を学びたい方は、ぜひ試してみてください。
3. Grape - API構築に特化(⭐️9.9k)
RESTfulなAPIを手軽に作りたいなら、 Grape 一択!
リポジトリ: https://github.com/ruby-grape/grape
require 'grape'
class API < Grape::API
version 'v1', using: :path
format :json
get :ping do
{ ping: 'pong' }
end
end
Grapeは、Ruby用のRESTライクな APIフレームワークです。Rack上で実行したり、RailsやSinatra などの既存の Webアプリケーションフレームワークを補完したりするために設計されており、RESTful API を簡単に開発できるシンプルなDSLを提供しています。
APIバージョニングやリクエストのバリデーションが簡単に書けたりします。
RailsでAPI専用アプリを作るのが大げさに感じたら、Grapeを使ってみましょう。
4. Roda - 高速で柔軟(⭐️2.1k)
軽量かつ柔軟なフレームワークなら Roda がおすすめ。
リポジトリ:https://github.com/jeremyevans/roda
require 'roda'
class App < Roda
route do |r|
r.root do
'Welcome to Roda!'
end
end
end
Rodaは非同期処理やスレッドセーフな設計が特徴で、とにかく高速。
必要な機能をプラグインで追加していくスタイルが新鮮です。
5. Camping - 超軽量!(⭐️0.9k)
驚くほど小さなコードベースで動作する Camping。
学習用や趣味のプロジェクトにぴったり。
リポジトリ:https://github.com/camping/camping
require 'camping'
Camping.goes :MyApp
module MyApp::Controllers
class Index
def get
'Hello Camping!'
end
end
end
ちょっとしたデモアプリを作りたいときに試してみてください。
6. Cuba - 最小限のコードでWebアプリ(⭐️1.4k)
Cuba はシンプルなルーティングとパフォーマンスが魅力。
リポジトリ:https://github.com/soveran/cuba
require 'cuba'
Cuba.define do
on get do
on root do
res.write 'Hello, Cuba!'
end
end
end
「コードの最小化」を追求する開発者にはピッタリです。
まとめ - 自分の用途に合ったフレームワークを選ぼう
Rails以外の各フレームワークにも独自の強みがあります。
以下を参考に選んでみてください:
- 小規模なツールやAPI: Sinatra, Grape, Roda
- 堅牢な設計を目指す: Hanami
- パフォーマンス重視: Cuba, Roda
Rubyの可能性はRailsだけじゃない!
このアドベントカレンダーを機に、他のフレームワークにも挑戦してみてはいかがでしょうか? 🎉
参考
Schooでは一緒に働く仲間を募集しています!
https://corp.schoo.jp/careers/graduates
https://corp.schoo.jp/careers