はじめに
「Railsのgeneratorコマンドが多くて毎回調べている」
「モデルの関連設計やバリデーションをもっとスムーズに実装したい」
「テストを書く時間がなくていつも後回しになっている」
Ruby on RailsはCOC(設定より規約)の哲学で高い開発生産性を誇りますが、慣れるまでの学習コストや、テスト・リファクタリングの手間が課題になりがちです。Claude Codeを使えば、Rails固有の規約を理解した上でコード生成・テスト・リファクタリングを効率化できます。
目次
- Claude CodeとRails開発の相性
- モデル設計とマイグレーション
- コントローラーとルーティング
- サービスオブジェクトの実装
- RSpecテストの自動生成
- パフォーマンス改善
- デプロイの自動化
- まとめ
1. Claude CodeとRails開発の相性
Railsプロジェクトの自動認識
Claude CodeはGemfile・database.yml・routes.rbなどを読み込んでRailsプロジェクトを自動認識します。使用しているRailsのバージョン・DBアダプタ・主要なGemを把握した上で作業します。
特に効果が高い作業
> このRailsプロジェクトの構成を確認して、
よく使うrakeタスクとrailsコマンドを教えてください。
また、改善できそうな箇所があれば指摘してください。
2. モデル設計とマイグレーション
モデルと関連の設計
> ECサイトのモデル設計をしてください。
エンティティ:User・Product・Order・OrderItem・Category・Review
要件:
- 適切なhas_many・belongs_to・has_many :through関係
- バリデーションの定義
- スコープの定義(active・recent等)
- enumerableの活用(status等)
マイグレーションファイルとモデルファイルを生成してください。
インデックスも適切に設定してください。
マイグレーションの安全な実行
> 本番環境でダウンタイムなしにこのカラムを追加するマイグレーションを作成してください。
変更内容:usersテーブルにlast_login_at(datetime)を追加
考慮すること:
- 大量のレコードがあるテーブルでのALTER TABLEの影響
- strong_migrationsを使った安全チェック
- ロールバック方法
3. コントローラーとルーティング
RESTfulなコントローラーの生成
> ProductsコントローラーをRESTfulに実装してください。
要件:
- 認証(Deviseを使用)
- 認可(Punditを使用)
- ページネーション(Kaminari)
- 検索(Ransack)
- JSON APIレスポンス(jbuilderを使用)
- N+1クエリの防止(includesの適切な使用)
ルーティングも合わせて設定してください。
API modeでのコントローラー
> Rails APIモードでJWT認証付きのAPIコントローラーを実装してください。
実装内容:
- ApplicationController(共通処理)
- Api::V1::AuthController(ログイン・ログアウト・リフレッシュ)
- Api::V1::UsersController(CRUD)
- エラーレスポンスの統一フォーマット
- リクエストのバリデーション(dry-validation)
4. サービスオブジェクトの実装
ファットモデルのリファクタリング
> このUserモデルが肥大化しています。
サービスオブジェクトに切り出してください。
切り出す処理:
- ユーザー登録フロー(バリデーション・DB保存・ウェルカムメール送信)
- パスワードリセット処理
- ソーシャルログイン処理
app/services/以下に配置してください。
各サービスにRSpecテストも作成してください。
[Userモデルを貼り付け]
5. RSpecテストの自動生成
モデルスペックの生成
> このRailsモデルのRSpecテストを作成してください。
テスト内容:
- バリデーションのテスト(有効・無効なケース)
- スコープのテスト
- インスタンスメソッドのテスト
- 関連のテスト
FactoryBotでテストデータを管理してください。
Fakerを使ってリアルなテストデータを生成してください。
[モデルファイルを貼り付け]
リクエストスペックの生成
> このAPIエンドポイントのRSpecリクエストスペックを作成してください。
テストシナリオ:
- 認証なしのアクセス(401を返す)
- 権限なしのアクセス(403を返す)
- 正常系(200・201・204を返す)
- バリデーションエラー(422を返す)
- 存在しないリソース(404を返す)
shared_examplesを使って重複を排除してください。
6. パフォーマンス改善
N+1クエリの検出と修正
> bullet gemを使ってN+1クエリを検出してください。
発見した問題をeager loadingで修正してください。
対象:OrdersController#index
現在のクエリ数:約150クエリ
目標:10クエリ以下
キャッシュの実装
> このRailsアプリにRussian Doll Cachingを実装してください。
キャッシュ対象:
- 商品一覧ページ(商品が更新されたら自動でキャッシュクリア)
- ユーザーのプロフィールページ
- カテゴリナビゲーション
Redis をキャッシュストアとして使用してください。
7. デプロイの自動化
Heroku・Renderへのデプロイ
> このRailsアプリをRenderにデプロイする設定を行ってください。
設定内容:
- render.yamlの作成
- PostgreSQLデータベースの設定
- 環境変数の設定手順
- Sidekiqワーカーの設定
- デプロイフック(マイグレーション自動実行)
- ヘルスチェックエンドポイントの追加
Capistranoによるデプロイ自動化
> Capistranoを使ったデプロイ設定を作成してください。
デプロイ先:VPS(Ubuntu 24.04)
構成:Nginx + Puma
設定内容:
- Capfile・deploy.rb・deploy/environments/
- Pumaの起動・再起動タスク
- Sidekiqの管理
- アセットのプリコンパイル
- マイグレーションの自動実行
- ロールバック手順
8. まとめ
Claude CodeでのRails開発の効率化ポイント:
- Railsの規約を理解した上でモデル・コントローラー・テストを生成
- N+1クエリの検出と修正を自律的に実施
- サービスオブジェクトへのリファクタリングを適切に判断
- RSpecテストをFactory Bot・shared_examplesを使って生成
Rails開発でのClaude Codeの強み:
- 「Railsらしい(Railsway)」コードを生成する
- ActiveRecord・Devise・Punditなど主要Gemの使い方を熟知
- マイグレーションの安全性チェックを提案する
次回の第42回:Rustプログラミングを始める方法では、安全で高速なRustコードをClaude Codeと書く方法を解説します。
よくある質問(FAQ)
Q. Rails 7・8のHotwire(Turbo・Stimulus)にも対応していますか?
A. はい。「TurboとStimulusを使ってこのフォームをリアルタイム更新に対応させてください」と依頼するだけで対応できます。
Q. ActiveRecordの複雑なクエリ最適化も相談できますか?
A. はい。「このActiveRecordクエリのEXPLAIN ANALYZEを確認してインデックスを提案してください」と依頼することで、クエリの最適化を体系的に進められます。
この記事はClaude Code入門シリーズ(第5部)の第41回です。← 第40回:アクセシビリティ改善 | 第42回:Rust入門 →
ご質問はお問い合わせページからお気軽にどうぞ。