Claude codeで開発効率爆あがり!これまでにないAIエージェントでコーディングからテストまで自動化

Claude code 開発効率 爆あがり AIエージェント コーディング テスト 自動化
押さえておきたいポイント
  • CLIベースのAI開発支援ツールで、コード生成・編集・テスト・PR作成まで自然言語で一括操作が可能
  • VS Code拡張やGitHub Actions、Playwright MCPとの連携により、テストと修正の自動化が実現可能
  • 従量課金または月額プランに対応し、個人開発からチーム運用まで柔軟に導入できる環境が整う

2025年5月23日にClaude opus 4やClaude sonnet 4がリリースされましたが、それと同時に「Claude code」もリリースされています。

みなさん、Claude code使ってますか?一度使うと離れられなくなるのがClaude codeです。本記事ではClaude codeの概要から使い方、活用事例についてお伝えします。工夫次第ではコード生成→テスト→修正を一貫して放置で実行可能。

本記事を最後まで読めば、今日からClaude codeを使うことができますので、ぜひ最後までお読みください!

目次

Claude codeの概要

Claude codeはAnthropicが開発した、CLIベースの対話型AIコーディングツールです。コード生成のみならず、ファイルの編集やコードのテスト実行、Gitの操作も行うことができます。CLIベースとはいえ、コード生成などは全て自然言語で行うことが可能

参考:https://www.anthropic.com/claude-code

イメージとしてはCursorに近いかもしれません。が、実際に使ってみた感想としては、プログラムの大枠を作るのはClaude codeの方が得意そうだな、という感じでした。

また、Claude codeリリース直後はVS codeとの統合はベータ版として登場していましたが、2025年5月28日よりClaude codeの公式VS code拡張がリリースされています。

Claude codeの使い方

Claude codeを使うには以下のシステム要件が必要です。公式ページはこちら

  • オペレーティングシステム: macOS 10.15+、Ubuntu 20.04+/Debian 10+、またはWSL経由のWindows
  • ハードウェア: 最小4GB RAM
  • ソフトウェア:
    • Node.js 18+
    • git 2.23+(オプション)
    • PRワークフロー用のGitHubまたはGitLab CLI(オプション)
  • ネットワーク: 認証とAI処理にインターネット接続が必要

上記のシステム要件を確認したら、実際にインストールを進めていきましょう。

npm install -g @anthropic-ai/claude-code

sudo npm install -g は、パーミッションの問題やセキュリティリスクにつながるので、使わないでください。パーミッションエラーに遭遇した場合は、configure Claude Codeを参照してください。

インストールができたらプロジェクトを作成してプロジェクトに移動。

mkdir Claudecode-my-project
cd Claudecode-my-project
npm init -y

Claude codeを実行します。

claude

Claude codeが起動するとテキストスタイルを聞かれるので、好みのものを選んでください。

テキストスタイル選択後に認証が開始されるので、下記の画面が出たらOKです。

以下の画面が表示されていればOKです。

あとは「>」の後に自然言語で指示を与えていけばOK。

実際に指示を出している様子がこちら。今回は下記の指示を与えます。

「弊社で取り扱っている健康関連器具を新たに販売します。30-40代女性、富裕層がターゲットなのでそれに合致するLPを作成してください。」

完成したページがこちら。

主要なコマンド一覧

Claude codeにはいくつものコマンドが用意されています。下記に主なカテゴリ別のコマンドを紹介します。

Git・バージョン管理関連

  • /2-commit-fast:最初の提案メッセージを自動選択してgitコミットプロセスを自動化
  • /commit:絵文字付きの従来のコミット形式でgitコミットを作成
  • /create-pr:プルリクエスト作成ワークフロー全体を処理(ブランチ作成、コミット、フォーマット、PR提出)
  • /create-pull-request:GitHub CLIを使った包括的なPR作成ガイダンス
  • /fix-github-issue:GitHub IssueをGitHub CLIで分析・修正
  • /fix-issue:Issue番号をパラメータとしてGitHub Issueに対処
  • /fix-pr:未解決のPRコメントを自動取得・修正
  • /husky:Git hooksの設定・管理(pre-commitフック、コミットメッセージ標準等)

コード分析・テスト関連

  • /analyze-code:コード構造をレビューし、主要コンポーネントを特定
  • /check:包括的なコード品質・セキュリティチェック
  • /clean:コードフォーマット・品質問題を修正(black、isort、flake8、mypy対応)
  • /code_analysis:高度なコード分析コマンドメニュー
  • /optimize:コードパフォーマンス分析・最適化提案
  • /tdd:テスト駆動開発の原則に従った開発ガイド
  • /testing_plan_integration:Rust風インラインテスト作成・包括的テストカバレッジ

CI/デプロイメント

  • /build-react-app:インテリジェントエラーハンドリングでReactアプリをローカルビルド
  • /deploy:本番設定でサイトビルド・変更のコミット・プッシュ・デプロイメントチェック
  • /run-ci:仮想環境アクティベート・CI互換チェックスクリプト実行
  • /run-pre-commit:インテリジェント結果処理でpre-commitチェック実行

Claude codeの料金

Claude codeの料金は2パターンに分かれています。

従量課金もしくは月額サブスクです。

スクロールできます
種類課金方式特徴料金目安
API従量課金トークン使用量に応じて都度請求使用分を支払う。AnthropicのAPI料を前払いで支払っておき、そこから支払いがされる。
個人開発やPoCであればAPI従量課金が最適
使用量によって変化するが、月数ドルから数十ドル程度
Claude Max月額サブスクMax 5xプラン:月100ドル
Max 20xプラン:月200ドル
日常的にOpus4を使う開発者や研究者など。
Claude codeを常に使う方。

ちなみに先ほどのLPは0.15ドルくらいでした。

なお、OpenAIのAIコーディングエージェント「Codex」について詳しく知りたい方は、下記の記事を合わせてご確認ください。

Claude codeの活用事例

Claude codeを使うことで、開発の自由度がかなり上がると感じていますが、並列処理を行っている方がいました。

上記の方はClaude codeとtmuxを使って16画面並列処理を実現しています。

こちらはClaude codeを使ってデータサイエンティスト向けの英単語帳を開発されています。Claude codeを使えば、上記のようなWebアプリもあっという間に完成させることができます。

また、スマホからClaude codeを使用できるようにしている猛者もいました。やはりClaude codeは開発の自由度を高めてくれます。

Claude codeの連携

Claude codeはいくつかのサービスと連携させることができます。

ここではMCPとGitHub Actionsとの連携について解説をします。

元々はplaywright mcpと連携させてエラー画面のスクショ→Claude codeで自動修正、みたいなのを構築したいと思っていたのですが、その代わりに後述の自動テスト&修正システムを構築しています。

今回はClaude codeとplaywright mcpを連携させてみたいと思います!

playwright mcpとClaude codeの連携

まずは設定ファイルを作成します。

設定ファイルの作成はこちら
cat > playwright-mcp-config.json << 'EOF'
{
  "browser": {
    "browserName": "chrome",
    "isolated": true,
    "userDataDir": "/tmp/playwright-user-data",
    "launchOptions": {
      "channel": "chromium",
      "headless": true,
      "args": ["--no-sandbox", "--disable-dev-shm-usage"]
    },
    "contextOptions": {
      "viewport": {
        "width": 1920,
        "height": 1080
      },
      "locale": "ja-JP",
      "timezoneId": "Asia/Tokyo"
    }
  },
  "outputDir": "/tmp/playwright-output"
}
EOF

次にPlaywright MCPサーバーを追加します。

claude mcp add playwright npx @playwright/mcp@latest

その後、設定がちゃんとできているかを確認します。

claude mcp list
playwright: npx @playwright/mcp@latest

上記のように出力されていればOKです。

最後にClaudeで/mcpとコマンドを入力して画像のように出力されれば設定は完了。

また、CLAUDE.mdを作成して、ルールを明記しておきます。

CLAUDE.mdはこちら
## Playwright MCP使用ルール

### 絶対的な禁止事項
1. **いかなる形式のコード実行も禁止**
   - Python、JavaScript、curlなど
   - MCPツールを調査するためのsubprocessやコマンド実行

2. **利用可能なのはMCPツールのみ**
   - playwright:browser_* 系のみ使用可能

3. **エラー時は即座に報告**
   - 回避策を探さない
   - 代替手段を実行しない
   - エラーメッセージをそのまま報告

### 実装後の必須作業
実装が終わった後は playwright mcpを使って実際にアクセスして実装した機能を一通り試してエラーがないか確認する

そしたら先ほど作成したLPを使って試してみたいと思います。

フィードバックをちゃんとくれましたし、スクショも保存されていました。

フィードバックはこちら
ランディングページのスクリーンショットを保存しました。デザインと表示を確
  認した結果、以下の良い点と改善提案をお伝えします:

  良い点:

  - ヒーロー部分:メインメッセージ「理想の自分を手に入れる」が明確で印象的
  - CTAボタン:「詳細を見る」のボタンが目立つ金色で効果的
  - 特徴説明:3つの特徴(プレミアム品質、時短ケア、プライベート空間)が絵文
  字付きで分かりやすい

  改善提案:

  1. ページ下部が見切れている:「あなたが得られるもの」セクション以降が表示
  されていない
  2. 視覚的要素の不足:商品画像エリアに実際の画像がない
  3. CTAセクション:最下部のお問い合わせ部分の視認性

  スクリーンショットは/Users//health-lp-full-page.pngに保存され
  ています。

何度か試してみたのですが、自動でページ下部まで飛んでくれる時とそうでない時があったので、そこら辺は的確に指示を与えたほうが良いかもしれません。

ただ、これで「ログインを試してみて」などのテストが行いやすいですね。実際にログインさせてみてログインできなかった時に自動で修正させるように指示を与えておけば、開発者側の負担はかなり減る気がします。

GitHub Actionsとの連携

Claude codeとGitHubのActionsを連携させることで、GitHub上からでもClaude codeを動かすことができます。

Claude code Actionsを使うためには、CLIでClaude codeの準備ができている必要があります。準備ができたら、下記を参考に実行してみてください。

ちなみに筆者はClaude code Actionsでプルリクエストが作成・更新された時もしくはコメントで @claude がメンションされた時に自動テスト&修正システムを構築して使っています。

開発者側がPRを作成するだけで自動的にテストが実行されて、問題があればClaudeが自動的に修正するというものです。

claude-nextjs-test.ymlはこちら
name: Claude Next.js Auto Test & Fix

on:
  pull_request:
    types: [opened, synchronize, ready_for_review]
  issue_comment:
    types: [created]

permissions:
  contents: read
  pull-requests: write
  issues: write

jobs:
  auto-test:
    if: |
      (github.event_name == 'pull_request') ||
      (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude'))
    runs-on: ubuntu-latest
    
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.sha || github.sha }}
          fetch-depth: 0

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '18'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Run TypeScript type checking
        id: typecheck
        run: |
          echo "🔬 TypeScript型チェック実行中..."
          if npm run type-check 2>&1 | tee typecheck-output.log; then
            echo "✅ 型チェック成功"
            echo "typecheck_status=passed" >> $GITHUB_OUTPUT
          else
            echo "❌ 型チェック失敗"
            echo "typecheck_status=failed" >> $GITHUB_OUTPUT
          fi
        continue-on-error: true

      - name: Run ESLint
        id: lint
        run: |
          echo "🔍 ESLint実行中..."
          if npm run lint 2>&1 | tee lint-output.log; then
            echo "✅ リンティング成功"
            echo "lint_status=passed" >> $GITHUB_OUTPUT
          else
            echo "❌ リンティング失敗"
            echo "lint_status=failed" >> $GITHUB_OUTPUT
          fi
        continue-on-error: true

      - name: Run tests
        id: test
        run: |
          echo "🧪 テスト実行中..."
          if npm test -- --passWithNoTests --watchAll=false 2>&1 | tee test-output.log; then
            echo "✅ テスト成功"
            echo "test_status=passed" >> $GITHUB_OUTPUT
          else
            echo "❌ テスト失敗"
            echo "test_status=failed" >> $GITHUB_OUTPUT
          fi
        continue-on-error: true

      - name: Build application
        id: build
        run: |
          echo "🏗️ Next.jsビルド実行中..."
          if npm run build 2>&1 | tee build-output.log; then
            echo "✅ ビルド成功"
            echo "build_status=passed" >> $GITHUB_OUTPUT
          else
            echo "❌ ビルド失敗"
            echo "build_status=failed" >> $GITHUB_OUTPUT
          fi
        continue-on-error: true

      - name: Collect detailed error information
        if: |
          steps.typecheck.outputs.typecheck_status == 'failed' ||
          steps.lint.outputs.lint_status == 'failed' ||
          steps.test.outputs.test_status == 'failed' ||
          steps.build.outputs.build_status == 'failed'
        run: |
          echo "## 🔍 詳細エラー情報" > error-details.md
          echo "" >> error-details.md
          
          if [ "${{ steps.typecheck.outputs.typecheck_status }}" = "failed" ]; then
            echo "### ❌ TypeScript型チェックエラー" >> error-details.md
            echo "\`\`\`" >> error-details.md
            cat typecheck-output.log 2>/dev/null || echo "型チェックエラーログの取得に失敗" >> error-details.md
            echo "\`\`\`" >> error-details.md
            echo "" >> error-details.md
          fi
          
          if [ "${{ steps.lint.outputs.lint_status }}" = "failed" ]; then
            echo "### ❌ ESLintエラー" >> error-details.md
            echo "\`\`\`" >> error-details.md
            cat lint-output.log 2>/dev/null || echo "リントエラーログの取得に失敗" >> error-details.md
            echo "\`\`\`" >> error-details.md
            echo "" >> error-details.md
          fi
          
          if [ "${{ steps.test.outputs.test_status }}" = "failed" ]; then
            echo "### ❌ テストエラー" >> error-details.md
            echo "\`\`\`" >> error-details.md
            cat test-output.log 2>/dev/null || echo "テストエラーログの取得に失敗" >> error-details.md
            echo "\`\`\`" >> error-details.md
            echo "" >> error-details.md
          fi
          
          if [ "${{ steps.build.outputs.build_status }}" = "failed" ]; then
            echo "### ❌ Next.jsビルドエラー" >> error-details.md
            echo "\`\`\`" >> error-details.md
            cat build-output.log 2>/dev/null || echo "ビルドエラーログの取得に失敗" >> error-details.md
            echo "\`\`\`" >> error-details.md
            echo "" >> error-details.md
          fi
          
          echo "## 📋 修正が必要な項目" >> error-details.md
          [ "${{ steps.typecheck.outputs.typecheck_status }}" = "failed" ] && echo "- [ ] TypeScript型エラーの修正" >> error-details.md
          [ "${{ steps.lint.outputs.lint_status }}" = "failed" ] && echo "- [ ] ESLintエラーの修正" >> error-details.md
          [ "${{ steps.test.outputs.test_status }}" = "failed" ] && echo "- [ ] テスト失敗の修正" >> error-details.md
          [ "${{ steps.build.outputs.build_status }}" = "failed" ] && echo "- [ ] ビルドエラーの修正" >> error-details.md

      - name: Comment success results
        if: |
          github.event_name == 'pull_request' &&
          steps.typecheck.outputs.typecheck_status == 'passed' &&
          steps.lint.outputs.lint_status == 'passed' &&
          steps.test.outputs.test_status == 'passed' &&
          steps.build.outputs.build_status == 'passed'
        uses: actions/github-script@v7
        with:
          script: |
            const report = `
            # 🤖 Claude Next.js自動テスト結果
            
            ## 📋 結果サマリー
            - **TypeScript型チェック**: ✅ 成功
            - **ESLint**: ✅ 成功
            - **テスト**: ✅ 成功  
            - **Next.jsビルド**: ✅ 成功
            
            ## 🎯 総合判定
            ✅ **全テスト通過 - レビュー可能**
            
            すべての自動チェックが正常に完了しました。このPRは人間によるレビューの準備ができています。
            
            ---
            💡 [詳細ログを確認](${context.payload.repository.html_url}/actions/runs/${context.runId})
            `;
            
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: report
            });

      - name: Auto-request fix from Claude on failure
        if: |
          github.event_name == 'pull_request' && (
            steps.typecheck.outputs.typecheck_status == 'failed' ||
            steps.lint.outputs.lint_status == 'failed' ||
            steps.test.outputs.test_status == 'failed' ||
            steps.build.outputs.build_status == 'failed'
          )
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            let errorDetails = '';
            
            try {
              errorDetails = fs.readFileSync('error-details.md', 'utf8');
            } catch (e) {
              errorDetails = 'エラー詳細の取得に失敗しました';
            }
            
            const typecheckStatus = '${{ steps.typecheck.outputs.typecheck_status }}';
            const lintStatus = '${{ steps.lint.outputs.lint_status }}';
            const testStatus = '${{ steps.test.outputs.test_status }}';
            const buildStatus = '${{ steps.build.outputs.build_status }}';
            
            const failureReport = `
            # 🚨 Next.js自動テスト失敗 - 修正が必要です
            
            @claude Next.js自動テストで問題が検出されました。以下のエラーを確認して修正してください:
            
            ## 📊 テスト結果
            - **TypeScript型チェック**: ${typecheckStatus === 'passed' ? '✅ 成功' : '❌ 失敗'}
            - **ESLint**: ${lintStatus === 'passed' ? '✅ 成功' : '❌ 失敗'}
            - **テスト**: ${testStatus === 'passed' ? '✅ 成功' : '❌ 失敗'}
            - **Next.jsビルド**: ${buildStatus === 'passed' ? '✅ 成功' : '❌ 失敗'}
            
            ${errorDetails}
            
            ## 🔧 対応をお願いします
            上記のエラーを解析して、適切な修正を行ってください。修正後は自動的に再テストが実行されます。
            
            ## 📝 Next.js/React修正のポイント
            - TypeScriptエラー: 型定義の修正、interfaceの追加
            - ESLintエラー: コーディング規約の修正、未使用変数の削除
            - テストエラー: テストケースまたは実装の修正
            - ビルドエラー: 依存関係、設定ファイル、構文エラーの確認
            
            ---
            💡 [詳細ログを確認](${context.payload.repository.html_url}/actions/runs/${context.runId})
            `;
            
            await github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: failureReport
            });
            
            try {
              await github.rest.issues.addLabels({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: context.issue.number,
                labels: ['🚨 nextjs-test-failed', '🔧 needs-claude-fix']
              });
            } catch (e) {
              console.log('ラベル追加に失敗');
            }

      - name: Set success labels
        if: |
          github.event_name == 'pull_request' &&
          steps.typecheck.outputs.typecheck_status == 'passed' &&
          steps.lint.outputs.lint_status == 'passed' &&
          steps.test.outputs.test_status == 'passed' &&
          steps.build.outputs.build_status == 'passed'
        uses: actions/github-script@v7
        with:
          script: |
            try {
              await github.rest.issues.addLabels({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: context.issue.number,
                labels: ['✅ nextjs-tests-passed', '👀 ready-for-review']
              });
              
              const labelsToRemove = ['🚨 nextjs-test-failed', '🔧 needs-claude-fix'];
              for (const label of labelsToRemove) {
                try {
                  await github.rest.issues.removeLabel({
                    owner: context.repo.owner,
                    repo: context.repo.repo,
                    issue_number: context.issue.number,
                    name: label
                  });
                } catch (e) {
                  // ラベルが存在しない場合は無視
                }
              }
            } catch (e) {
              console.log('ラベル操作に失敗');
            }

これのおかげで完成→実行→エラー→修正依頼、というめんどくさい工数がかなり減りました。

まとめ

本記事ではClaude codeの概要から使い方、他のサービスとの連携方法について解説をしました。Claude codeをうまく使いこなせば、開発効率はかなり上がりますし、自動テストまで設定しておけば寝ている間にWebアプリなどが完成している可能性もあります。

できることがかなりたくさんありそうで、使いこなすのが大変ですが、ぜひ皆さんも本記事を参考にClaude codeを使ってみてください!

最後に

いかがだったでしょうか?

コード生成からPR作成、UIテストまで一気通貫。自然言語で“書かない開発”を始めたい方にClaude Codeは最適です。

株式会社WEELは、自社・業務特化の効果が出るAIプロダクト開発が強みです!

開発実績として、

・新規事業室での「リサーチ」「分析」「事業計画検討」を70%自動化するAIエージェント
・社内お問い合わせの1次回答を自動化するRAG型のチャットボット
・過去事例や最新情報を加味して、10秒で記事のたたき台を作成できるAIプロダクト
・お客様からのメール対応の工数を80%削減したAIメール
・サーバーやAI PCを活用したオンプレでの生成AI活用
・生徒の感情や学習状況を踏まえ、勉強をアシストするAIアシスタント

などの開発実績がございます。

まずは、無料相談にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

生成AIを社内で活用していきたい方へ
無料相談

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。

セミナー内容や料金については、ご相談ください。

また、サービス紹介資料もご用意しておりますので、併せてご確認ください。

投稿者

  • 翔平

    総合病院で10年間理学療法士として勤務し、患者のリハビリテーション支援に従事。その後、Pythonを独学で学び、データ分析のスキルを活かしてデータアナリストに転身。 データ分析の知見を活かし、主にテクニカル記事を担当。趣味はキックボクシング。

  • URLをコピーしました!
  • URLをコピーしました!
目次