Claude Codeを活用したRailsコントローラー生成&リファクタリング術

ClaudeCode

Railsでコントローラーを作成するとき、rails generate controllerで雛形を作るのは簡単ですが、その後のアクション追加やリファクタリングに時間がかかることはありませんか?
Claude Codeを使えば、初期生成だけでなく、既存コントローラーの改善まで対話形式で自動化できます。この記事では、Claude Codeを活用してRailsコントローラー開発を効率化する方法を解説します。

Claude Codeとコントローラー開発の相性

RailsのコントローラーはCRUD処理や認証チェックなど、定型パターンが多いため、AIによるコード生成に適しています。
Claude Codeは、仕様を自然言語で伝えるだけで、次のような作業を自動化できます。

  • アクションの作成(index, show, createなど)
  • 認証や権限チェックの追加
  • JSON API対応
  • before_actionの共通化

コントローラーの自動生成方法

例:記事管理用のコントローラーを生成

rails generate controller Articles index show new create edit update destroy

Claude Codeへの依頼例:

Rails 7でArticleコントローラーを作成してください。
- index, show, create, update, destroyアクションを持つ
- Articleモデルにはtitleとbodyを持たせる
- 認証が必要(DeviseのUserモデルを想定)

Claude Codeは以下を提案してくれます。

  • コントローラーコード(before_action :authenticate_user!を含む)
  • Strong Parametersの実装
  • redirect_torenderの適切な指定
  • エラーハンドリング

アクション追加をClaude Codeに依頼する例

要件変更:記事の公開・非公開を切り替えるアクションを追加
Claude Codeへの依頼例:

Articlesコントローラーにpublish/unpublishアクションを追加してください。
- Articleモデルにpublished:booleanカラムがある
- publishでtrue、unpublishでfalseに更新する
- 成功時は一覧ページにリダイレクト

Claude Codeは以下を生成:

def publish
  @article = Article.find(params[:id])
  @article.update(published: true)
  redirect_to articles_path, notice: "記事を公開しました。"
end

def unpublish
  @article = Article.find(params[:id])
  @article.update(published: false)
  redirect_to articles_path, notice: "記事を非公開にしました。"
end

さらに、ルーティング追加やリンクボタンのサンプルまで提示されます。

コントローラーリファクタリングの実践

リファクタリング依頼例:

このArticlesコントローラーをリファクタリングしてください。
- before_actionで共通処理をまとめる
- エラー処理を追加

Claude Codeは次のように改善:

before_action :set_article, only: [:show, :edit, :update, :destroy, :publish, :unpublish]

private

def set_article
  @article = Article.find(params[:id])
rescue ActiveRecord::RecordNotFound
  redirect_to articles_path, alert: "記事が見つかりません。"
end

これにより、コードの重複が削減され、保守性が向上します。

プロンプト例集

  • 基本生成

RailsでUserコントローラーを作り、index, showアクションを持たせる。
  • API用

Rails APIモードでTaskコントローラーを作り、JSONで返す実装にしてください。
  • リファクタリング

このコントローラーをFat Controllerにならないようにリファクタリングしてください。

まとめ

Claude Codeを活用すれば、Railsのコントローラー開発は初期生成→機能追加→リファクタリングまでを一気通貫で効率化できます。
次回は「Railsモデル設計をClaude Codeで効率化するプロンプト例10選」をお届けします。

 

コメント

タイトルとURLをコピーしました