Ruby

Rails 8 API構築ガイド:環境構築・認証・テスト・デプロイまで

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


Contents

スポンサードリンク

1️⃣ 環境構築と Rails API プロジェクトの作成

この章では、現在公式にリリースされている安定版(Ruby 3.2 系、Rails 7.2 系)を前提に、ローカル環境へのインストール手順と rails new --api で API‑only アプリケーションを作成する流れを解説します。
なぜ公式版を使うことが重要か → 将来のアップデートやセキュリティパッチが確実に提供されるため。
本章の結論 → rbenv(または RVM)でバージョン管理し、Docker・GitHub Actions と組み合わせた開発基盤をすぐに構築できる。

1.1 Ruby と Rails のインストール

📦 必要なツール

ツール 用途 推奨インストール方法
rbenv Ruby バージョン管理 macOS: brew install rbenv
Ubuntu: 手動 Git クローン(後述)
Bundler Gem の依存解決 gem install bundler
Rails アプリケーションフレームワーク gem install rails -v "~> 7.2"

🛠 Ubuntu における rbenv の正しいインストール手順

参考: rbenv 公式インストール手順 https://github.com/rbenv/rbenv#basic-github-checkout

🚀 Ruby と Rails の導入

これで ruby -vrails -v がそれぞれ 3.2.x7.2.x と表示されれば完了です。

1.2 API‑only プロジェクトの作成

📂 コマンドと生成結果

ポイント--api オプションはビュー・アセット系のディレクトリを省き、軽量な API 用テンプレートだけを生成します。

📁 主要ディレクトリ構造(抜粋)

出典:Rails Guides – API Mode https://guides.rubyonrails.org/api_app.html


2️⃣ 必須 Gem と JSON:API 準拠実装

この章では、JSON:API に準拠したシリアライザ・コントローラの雛形を提供する 主要 Gem を紹介し、実際にコードへ落とし込む手順を示します。
目的 → データ構造の一貫性とクライアント側の開発負荷低減。
結論 → jsonapi-serializer と組み合わせるだけで、ほぼ自動的に規格通りの JSON が生成できます。

2.1 Gem の選定とインストール

Gem 主な機能 設定手順
jsonapi-serializer JSON:API 準拠シリアライザ bundle add jsonapi-serializer
rswag Swagger (OpenAPI) のテスト駆動生成 bundle add rswagrails generate rswag:install
devise, devise-jwt 認証基盤 + JWT 発行 bundle add devise devise-jwt
rack-cors CORS ヘッダ制御 bundle add rack-cors
kaminari ページネーション bundle add kaminari

参考:各 Gem の公式リポジトリ(例: jsonapi‑serializer https://github.com/jsonapi-serializer/jsonapi-serializer

2.2 JSON:API 準拠シリアライザとコントローラ実装例

📄 ArticleSerializer(シリアライザ)

🛠 ArticlesController(API コントローラ)

出典:jsonapi‑serializer README https://github.com/jsonapi-serializer/jsonapi-serializer#basic-usage


3️⃣ 認証・認可と CORS 設定

API の安全性を担保するために JWT 認証CORS 制御 を必ず実装します。ここでは devise-jwt によるシンプルなトークンベース認証、OAuth2 の代替オプション(Doorkeeper)、そして rack-cors の設定例を示します。

3.1 JWT 認証(devise‑jwt)実装手順

🔧 前提条件

  • devisedevise-jwt が Gemfile に追加済みであること。
  • User モデルが Devise の標準モジュールを持つこと。

⚙️ Devise 初期設定(抜粋)

📡 認証コントローラ例

参考:devise‑jwt README https://github.com/waiting-for-dev/devise-jwt

3.2 OAuth2 の代替オプション(Doorkeeper)

項目 説明
用途 複数クライアント・スコープ管理が必要な B2B サービス向け
導入手順 gem "doorkeeper"bundle installrails generate doorkeeper:installrails db:migrate
ポイント resource_owner_authenticator に Devise ロジックを流用すれば、既存ユーザーデータベースと統合可能

出典:Doorkeeper 公式ガイド https://doorkeeper.gitbook.io/guides/

3.3 CORS 設定(rack‑cors)

📄 config/initializers/cors.rb

  • ポイントorigins は本番環境・ステージング環境に合わせて変更してください。
  • 注意:ワイルドカード * は開発時以外は使用しないことがベストプラクティスです。

参考:rack‑cors GitHub https://github.com/cyu/rack-cors


4️⃣ テスト自動化・CI/CD と Docker 開発環境

品質保証とデプロイの高速化は実務で欠かせません。ここでは RSpec + FactoryBot によるテスト基盤、GitHub Actions を用いた CI パイプライン、そして Docker / docker‑compose で統一ローカル環境を構築する手順を示します。

4.1 RSpec と factory_bot のセットアップ

📦 必要な Gem(すでに Gemfile に追加済み)

🧪 サンプルリクエストスペック

出典:RSpec Rails 公式ガイド https://relishapp.com/rspec/rspec-rails/docs

4.2 GitHub Actions による CI パイプライン

📄 .github/workflows/ci.yml(主要ステップ)

ポイントruby-version はローカルで使用しているバージョンと合わせることで、環境差異を減らします。

4.3 Dockerfile と docker‑compose による統一開発環境

📦 Dockerfile(Node.js のパッケージ名に注意)

🐳 docker-compose.yml(開発用)

使用方法
bash
docker compose up --build # 初回ビルド+起動
docker compose exec web rails db:create db:migrate # DB 初期化


5️⃣ OpenAPI/Swagger ドキュメント公開と本番デプロイ・バージョニング戦略

この最終章では、テスト駆動型ドキュメント生成 (rswag) と バージョニングのベストプラクティス、そして Docker イメージをそのまま Fly.io / Render / Railway にデプロイ する流れをまとめます。

5.1 rswag による Swagger UI の自動生成

📄 spec/integration/articles_spec.rb(rswag DSL)

出典:rswag 公式リポジトリ https://github.com/rswag/rswag

5.2 API バージョニング戦略

手法 メリット デメリット
URI ベース (/api/v1/...) 可視性が高く、外部ドキュメントと整合しやすい。 エンドポイントが増えると URL が長くなる。
ヘッダー方式 (Accept: application/vnd.myapp.v2+json) 同一エンドポイントで複数バージョンを同時提供可能。 クライアント実装がやや複雑になる。

推奨実装(URI + ヘッダー併用)

参考:API バージョニングベストプラクティス(Google Cloud) https://cloud.google.com/apis/design/versioning

5.3 Docker イメージをそのまま Fly.io / Render / Railway にデプロイ

📦 共通前提

  • Dockerfileマルチステージ で不要なビルド依存を除去済み。
  • 環境変数は各プラットフォームのシークレット管理機能で設定する。

Fly.io 用 fly.toml の最小構成

デプロイ手順(Fly.io)

RenderRailwayGitHub リポジトリを接続 → Dockerfile を自動検出 の流れで同様にデプロイ可能です。シークレットは各 UI から RAILS_MASTER_KEYDATABASE_URL 等を設定してください。

参考:Fly.io デプロイガイド https://fly.io/docs/getting-started/rails/


まとめ

セクション キーアクション
環境構築 rbenv → Ruby 3.2、Rails 7.2 をインストールし rails new --api で軽量プロジェクトを作成
主要 Gem jsonapi‑serializer・rswag・devise‑jwt・rack‑cors・kaminari を導入して JSON:API と認証基盤を構築
認証 & CORS JWT 認証実装例、OAuth2 の代替(Doorkeeper)、安全な CORS ポリシー設定
テスト・CI RSpec + FactoryBot、GitHub Actions に Lint・Security Scan・RSpec を組み込み
Docker & CI/CD Dockerfile(Node.js パッケージ名に注意)+ docker‑compose でローカル統一環境を提供
ドキュメント & デプロイ rswag によるテスト駆動型 Swagger、URI + ヘッダー併用バージョニング、Fly.io/Render/Railway へのコンテナデプロイ

上記手順を踏むことで、「公式安定版」+「テスト駆動」+「Docker 化」 の三位一体の開発フローが完成します。これにより、コード品質・セキュリティ・デプロイ速度すべてで実務レベルの要件を満たした 本番環境対応 Rails API が迅速に構築できます。


参考文献

  1. rbenv 公式インストール手順 – https://github.com/rbenv/rbenv#basic-github-checkout
  2. Ruby on Rails Guides – API Mode – https://guides.rubyonrails.org/api_app.html
  3. jsonapi‑serializer GitHub – https://github.com/jsonapi-serializer/jsonapi-serializer
  4. devise‑jwt README – https://github.com/waiting-for-dev/devise-jwt
  5. Doorkeeper 公式ガイド – https://doorkeeper.gitbook.io/guides/
  6. rack‑cors GitHub – https://github.com/cyu/rack-cors
  7. RSpec Rails Documentation – https://relishapp.com/rspec/rspec-rails/docs
  8. rswag 公式リポジトリ – https://github.com/rswag/rswag
  9. API バージョニングベストプラクティス (Google Cloud) – https://cloud.google.com/apis/design/versioning
  10. Fly.io Rails デプロイガイド – https://fly.io/docs/getting-started/rails/
スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Ruby