コラム Claude Code入門 更新:

Claude CodeでReact・Next.jsを開発する方法!コンポーネント生成からビルド最適化まで

Claude CodeでReact・Next.jsを開発する方法!コンポーネント生成からビルド最適化まで
目次 (27項目)
  1. 1. はじめに
  2. 2. 目次
  3. 3. 1. React開発でのClaude Code活用の基本
  4. プロジェクト構成の自動認識
  5. 効果的な指示の例
  6. 4. 2. コンポーネントの自動生成
  7. 機能コンポーネントの生成
  8. ページコンポーネントの生成
  9. カスタムフックの生成
  10. 5. 3. 状態管理の実装
  11. Zustandでの状態管理
  12. React Query(TanStack Query)の導入
  13. 6. 4. Next.js App Routerの活用
  14. ファイルベースルーティングの設定
  15. Middlewareの実装
  16. 7. 5. Server ComponentsとClient Componentsの使い分け
  17. 自動的な最適化提案
  18. Server Actionsの実装
  19. 8. 6. フォームとバリデーション
  20. React Hook Formの実装
  21. 9. 7. パフォーマンス最適化
  22. 画像最適化
  23. コンポーネントのメモ化
  24. 10. 8. テストの自動生成
  25. React Testing Libraryのテスト
  26. 11. 9. まとめ
  27. 12. よくある質問(FAQ)

はじめに

「Reactコンポーネントの書き方がパターン化していて、毎回同じものを書いている」

「Next.js App RouterとPages Routerの違いに戸惑っている」

「Server ComponentsとClient Componentsの使い分けがわからない」

ReactとNext.jsは現代のWebフロントエンド開発のスタンダードですが、進化が速く、ベストプラクティスも変化し続けています。Claude Codeを使えば、コンポーネント生成から状態管理・パフォーマンス最適化まで、最新のプラクティスに沿った開発ができます。

目次

  1. React開発でのClaude Code活用の基本
  2. コンポーネントの自動生成
  3. 状態管理の実装
  4. Next.js App Routerの活用
  5. Server ComponentsとClient Componentsの使い分け
  6. フォームとバリデーション
  7. パフォーマンス最適化
  8. テストの自動生成
  9. まとめ

1. React開発でのClaude Code活用の基本

プロジェクト構成の自動認識

Claude Codeはpackage.jsonを読み込んで、使用しているReactのバージョン・Next.jsのバージョン・状態管理ライブラリ(Redux・Zustand・Jotai等)・スタイリング(CSS Modules・Tailwind・styled-components等)を自動認識します。

効果的な指示の例

> このプロジェクトのコーディングスタイルと
  使用しているライブラリを確認してから、
  以下のコンポーネントを作成してください:[要件]

プロジェクトの既存コードを分析してから生成するため、一貫したスタイルのコンポーネントが生成されます。

2. コンポーネントの自動生成

機能コンポーネントの生成

> 以下の要件でReactコンポーネントを作成してください。

  コンポーネント名:ProductCard
  要件:
  - 商品画像・タイトル・価格・評価(星)・カートに追加ボタンを表示
  - 在庫切れの場合はボタンをdisabledにする
  - お気に入りトグルボタン
  - モバイル対応(Tailwind CSS使用)
  - TypeScriptの型定義
  - Storybookのstoryファイルも作成

  プロジェクトの既存コンポーネントのスタイルに合わせてください。

ページコンポーネントの生成

> Next.js App Router対応のダッシュボードページを作成してください。

  ページ構成:
  - 左サイドバー(ナビゲーション)
  - ヘッダー(ユーザー情報・通知)
  - メインコンテンツエリア(統計カード・グラフ・最新アクティビティ)

  要件:
  - レスポンシブデザイン(モバイルはサイドバーをドロワーに変更)
  - サーバーコンポーネントで初期データを取得
  - ローディング状態(loading.tsx)とエラー状態(error.tsx)を実装

カスタムフックの生成

> 以下の機能を持つカスタムフックを作成してください。

  フック名:useInfiniteScroll
  機能:
  - IntersectionObserverを使ったInfinite Scroll
  - ローディング状態の管理
  - エラーハンドリング
  - 重複フェッチの防止
  - TypeScript対応

3. 状態管理の実装

Zustandでの状態管理

> このコンポーネントのローカル状態をZustandのグローバルストアに移行してください。

  移行する状態:
  - ユーザー情報(認証状態)
  - ショッピングカートの中身
  - 通知の未読件数

  要件:
  - 永続化(localStorageへの保存)
  - DevToolsサポート
  - 型安全なセレクター

React Query(TanStack Query)の導入

> このAPIフェッチのコードをReact Queryに移行してください。

  移行のポイント:
  - useEffectとuseStateを使ったフェッチをuseQueryに変換
  - ミューテーション(作成・更新・削除)をuseMutationに変換
  - キャッシュの設定(staleTime・cacheTime)
  - 楽観的更新の実装
  - エラーハンドリングの統一

4. Next.js App Routerの活用

ファイルベースルーティングの設定

> 以下のページ構成をNext.js App Routerで実装してください。

  ルート構成:
  - / → ホームページ(静的)
  - /products → 商品一覧(SSG + ISR、1時間ごと再生成)
  - /products/[id] → 商品詳細(SSG、ビルド時に生成)
  - /account → マイページ(CSR、認証必須)
  - /account/orders → 注文履歴(SSR、毎回最新データ)

  各ルートに適したデータフェッチ戦略を選択してください。

Middlewareの実装

> Next.jsのMiddlewareを使って以下を実装してください:
  - 未認証ユーザーを/loginにリダイレクト
  - 認証済みユーザーが/loginにアクセスした場合は/dashboardにリダイレクト
  - 管理者ページ(/admin/*)はadminロールのみアクセス可能
  - 国際化(i18n)のパス処理

5. Server ComponentsとClient Componentsの使い分け

自動的な最適化提案

> このコンポーネントファイルを分析して、
  Server ComponentsとClient Componentsを適切に分離してください。

  判断基準:
  - イベントハンドラー・useState・useEffectを使う → Client Component
  - データフェッチのみ・静的な表示 → Server Component
  - 'use client'ディレクティブを最小限にする

  [コンポーネントファイルを貼り付け]

Server Actionsの実装

> フォームの送信処理をServer Actionsで実装してください。

  要件:
  - お問い合わせフォームの送信
  - バリデーション(Zod使用)
  - データベースへの保存
  - メール送信(バックグラウンドジョブ)
  - 成功・エラー状態のフィードバック
  - Progressive Enhancementに対応

6. フォームとバリデーション

React Hook Formの実装

> React Hook FormとZodを使った
  ユーザー登録フォームを実装してください。

  フィールド:
  - メールアドレス(重複チェック含む非同期バリデーション)
  - パスワード(8文字以上・大文字小文字数字を含む)
  - パスワード確認
  - 利用規約への同意

  エラーメッセージはフィールドの下にリアルタイム表示してください。

7. パフォーマンス最適化

画像最適化

> このコンポーネントの画像をNext.js Imageコンポーネントに変換してください。
  width・height・priority・sizes・placeholder属性を適切に設定してください。
  LCPスコアの改善を優先してください。

コンポーネントのメモ化

> このコンポーネントツリーを分析して、
  React.memo・useMemo・useCallbackを適切に追加してください。

  不要なメモ化は追加しないように注意してください。
  本当に効果があるケースのみメモ化して、
  その理由もコメントで説明してください。

8. テストの自動生成

React Testing Libraryのテスト

> ProductCardコンポーネントのテストを作成してください。

  テストシナリオ:
  - 商品情報が正しく表示される
  - 在庫切れの場合にボタンがdisabledになる
  - お気に入りボタンをクリックしたときのコールバックが呼ばれる
  - カートに追加ボタンがクリックできる

  @testing-library/user-eventを使ってユーザー操作をシミュレートしてください。

9. まとめ

Claude CodeでのReact・Next.js開発の効率化ポイント:

  • プロジェクトの既存スタイルを分析してから一貫したコンポーネントを生成
  • Server Components・Client Componentsの適切な分離を自動提案
  • Next.js App RouterのSSG・SSR・CSRの使い分けをアドバイス
  • React Hook Form + Zodの組み合わせでフォームを自動実装

よく使うライブラリとの組み合わせ:

  • 状態管理:Zustand・TanStack Query
  • フォーム:React Hook Form + Zod
  • スタイリング:Tailwind CSS + shadcn/ui
  • テスト:Vitest + React Testing Library

次回の第27回:セキュリティ診断をする方法では、脆弱性をAIが自動スキャンして修正する方法を解説します。

よくある質問(FAQ)

Q. Pages RouterからApp Routerへの移行もClaude Codeで対応できますか?

A. はい。「Pages RouterのこのコンポーネントをApp Routerに移行してください」と指示するだけで対応できます。getServerSideProps・getStaticPropsなどの変換も自動で行います。

Q. Remixなど他のフレームワークにも対応していますか?

A. 対応しています。「Remixで実装してください」のように指定することで、各フレームワークのベストプラクティスに沿ったコードを生成します。

この記事はClaude Code入門シリーズ(第3部)の第26回です。← 第25回:パフォーマンス最適化第27回:セキュリティ診断 →

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

著者:R-LLM 開発者

フォロー

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

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

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

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

関連記事

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