コラム Claude Code入門 更新:

Claude CodeでRuby on Railsを開発する方法!モデル設計からデプロイまで効率化する手順

Claude CodeでRuby on Railsを開発する方法!モデル設計からデプロイまで効率化する手順
目次 (24項目)
  1. 1. はじめに
  2. 2. 目次
  3. 3. 1. Claude CodeとRails開発の相性
  4. Railsプロジェクトの自動認識
  5. 特に効果が高い作業
  6. 4. 2. モデル設計とマイグレーション
  7. モデルと関連の設計
  8. マイグレーションの安全な実行
  9. 5. 3. コントローラーとルーティング
  10. RESTfulなコントローラーの生成
  11. API modeでのコントローラー
  12. 6. 4. サービスオブジェクトの実装
  13. ファットモデルのリファクタリング
  14. 7. 5. RSpecテストの自動生成
  15. モデルスペックの生成
  16. リクエストスペックの生成
  17. 8. 6. パフォーマンス改善
  18. N+1クエリの検出と修正
  19. キャッシュの実装
  20. 9. 7. デプロイの自動化
  21. Heroku・Renderへのデプロイ
  22. Capistranoによるデプロイ自動化
  23. 10. 8. まとめ
  24. 11. よくある質問(FAQ)

はじめに

「Railsのgeneratorコマンドが多くて毎回調べている」

「モデルの関連設計やバリデーションをもっとスムーズに実装したい」

「テストを書く時間がなくていつも後回しになっている」

Ruby on RailsはCOC(設定より規約)の哲学で高い開発生産性を誇りますが、慣れるまでの学習コストや、テスト・リファクタリングの手間が課題になりがちです。Claude Codeを使えば、Rails固有の規約を理解した上でコード生成・テスト・リファクタリングを効率化できます。

目次

  1. Claude CodeとRails開発の相性
  2. モデル設計とマイグレーション
  3. コントローラーとルーティング
  4. サービスオブジェクトの実装
  5. RSpecテストの自動生成
  6. パフォーマンス改善
  7. デプロイの自動化
  8. まとめ

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入門 →

ご質問はお問い合わせページからお気軽にどうぞ。

著者:R-LLM 開発者

フォロー

Webエンジニアとして10年以上のキャリアがあり、現在はWordPressとLLM(大規模言語モデル)の連携、および生成AIを活用した課題解決のための開発に日々取り組んでいます。

私の信条は、クライアントに寄り添った伴走支援と、最後まで責任を持ってやり遂げる「遂行力」です。これまでの膨大なトライ&エラーの蓄積により、自身の領域内であれば不具合も迅速に解決できる現場の知見を積み上げてきました。

このブログでは、一人のエンジニアとして私自身がAI技術に抱いている純粋な興味をベースに、日々の探求プロセスを発信しています。

生成AILLMをどのように実務に組み込み、価値へ繋げていくか。自身の検証結果だけでなく、実務者としての視点に基づいた「考察や推察」も含めて共有することで、同じように試行錯誤を続ける方々と知見を繋げていければと考えています。

関連記事

SHARE Xでシェア
← 前の投稿
投稿一覧に戻る
次の投稿 →