Webバックエンド - フレームワーク

Ruby on Rails るびーおんれいるず

RubyMVCフレームワークWebアプリケーションCoCActiveRecord
Ruby on Railsって何?

簡単に言うとこんな感じ!

Webアプリを作るための「既製品の土台キット」だよ!ゼロからレンガを積むんじゃなく、柱も壁もある程度できた状態でスタートできるイメージ。Rubyという言語で書かれていて、開発の速さで大人気なんだ!


Ruby on Railsとは

Ruby on Rails(通称 Rails)は、プログラミング言語 Ruby で書かれたオープンソースの Webアプリケーションフレームワークです。フレームワークとは「よく使う機能をあらかじめまとめた開発の骨組み」のこと。ゼロから作ると数週間かかる部分を、Railsが肩代わりしてくれます。

Railsが特に評価されているのは「開発スピードの速さ」です。データベース操作・画面表示・URL管理など、Webアプリに必要な定番機能がすべて揃っており、少ないコードで動くアプリを素早く作れます。スタートアップ企業や新規サービスの立ち上げで特に重宝されてきました。

2004年にデンマーク人プログラマー David Heinemeier Hansson(DHH) が発表して以来、GitHub・Shopify・Airbnbなどの著名サービスが採用し、世界中に普及しました。「少ない記述で多くのことを実現する」という思想が、多くの開発者に支持されています。


Railsの2大哲学

Railsには、開発全体を貫く2つの重要な考え方があります。

哲学英語名意味
設定より規約Convention over Configuration(CoC)決まった名前・構造に従えば設定ファイルをほぼ書かなくて済む
同じことを繰り返さないDon’t Repeat Yourself(DRY)同じコードを何度も書かず、一か所にまとめる

「設定より規約」の具体例

たとえば「ユーザー情報」を管理するなら、Railsは自動的に以下を前提とします。

テーブル名 → users(複数形)
モデル名  → User(単数形・先頭大文字)
URL       → /users, /users/1 など

この命名ルールに従うだけで、設定ファイルをほぼ書かずに動作します。逆を言えば「Railsの流儀から外れる」と途端に手間が増えるため、慣れるまでは少し窮屈に感じることもあります。

Railsが採用するMVCアーキテクチャ

Railsは MVC(Model・View・Controller) という設計パターンを採用しています。

役割名称担当
Modelモデルデータベースとのやり取り・ビジネスロジック
Viewビューユーザーへの画面表示(HTML生成)
ControllerコントローラーModelとViewの仲介・処理の指示出し

歴史と背景

  • 2003年 — DHHが社内プロジェクト管理ツール「Basecamp」開発中にRailsの原型を作成
  • 2004年 — Ruby on Railsとしてオープンソース公開。「15分でブログが作れる」デモ動画が話題に
  • 2005年 — バージョン1.0リリース。Ruby言語ともどもコミュニティが急拡大
  • 2006年 — AppleがMac OS X LeopardにRailsをバンドル。知名度が一気に広がる
  • 2008年 — GitHubがRailsで構築されていることが話題に
  • 2010年代前半 — Airbnb・Shopify・Twitterなど著名サービスが採用し全盛期を迎える
  • 2016年 — バージョン5.0リリース。WebSocket対応(Action Cable)など機能拡充
  • 2020年代Node.jsGoなど後発フレームワークが台頭するも、Railsは依然メジャーな地位を維持。Shopifyが積極的に開発を牽引

Railsの構成要素と他フレームワークとの比較

Railsは多くのコンポーネントを内包した「フルスタック」フレームワークです。

Ruby on Rails の主要コンポーネント Active Record データベース操作を Rubyコードで記述 (ORM) Action View HTMLテンプレートで 画面を生成 (View層) Action Controller リクエストを受け取り 処理を振り分け (Controller層) Action Mailer メール送受信機能を 簡単に実装 (メール送信) Action Cable WebSocketで リアルタイム通信 (チャット機能等) Active Storage 画像・ファイルの アップロード管理 (ファイル管理) Rails Router — URLとControllerを自動でマッピング RESTful設計に基づくルーティングを自動生成

主要Webフレームワーク比較

フレームワーク言語特徴向いている用途
Ruby on RailsRubyフルスタック・高速開発スタートアップ・管理画面・MVP
DjangoPython安全性重視・管理画面強力データ活用系・AIとの連携
LaravelPHPシェアが高い・学習リソース豊富受託開発・中小規模Webサービス
Spring BootJavaエンタープライズ向け・堅牢大規模基幹システム
ExpressJavaScript軽量・柔軟API専用・SPAのバックエンド
Next.jsJavaScriptフロントと統合SEOが重要なサービス

発注・選定時に知っておきたいこと

Railsを採用した場合、開発会社から以下のようなキーワードが出てきます。

よく聞く言葉
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Gem(ジェム)  → Rubyの拡張ライブラリ。「認証用Gemを入れます」
                  のように使われる。npm(Node.js)に相当

Scaffold       → ひな形の自動生成機能。一覧・詳細・作成・編集・
                  削除画面をコマンド一発で作れる

Migration      → データベースの構造変更を管理する仕組み

Heroku         → Railsアプリの定番クラウド環境(かつて圧倒的人気)

Bundler        → Gemのバージョンを管理するツール
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

関連する規格・RFC

※ Ruby on Railsはオープンソースフレームワークであり、IETFやISOによる直接的な標準化規格はありません。ただし、Railsが準拠・活用する関連規格は以下の通りです。

規格内容
RFC 9110HTTP Semantics(RailsのHTTPルーティングの基礎)
RFC 6455WebSocket(Action Cableが使用するプロトコル)
RFC 7159JSON形式(Rails APIモードのレスポンス形式)

関連用語

  • MVC — アプリを「データ・画面・制御」の3役割に分ける設計パターン
  • REST API — URLでリソースを操作するWebAPIの設計スタイル。RailsはRESTを標準採用
  • ORM — データベースをオブジェクトとして操作する仕組み(RailsではActive Record)
  • データベース — アプリのデータを永続的に保存する仕組み
  • WebSocket — サーバーとブラウザが双方向でリアルタイム通信するプロトコル
  • フレームワーク — アプリ開発の骨組みとなる再利用可能なコード集
  • クラウド(PaaS) — Railsアプリの実行環境として選ばれるプラットフォームサービス
  • Git — Railsプロジェクトのソースコード管理に欠かせないバージョン管理ツール