
30分で80+テスト実装!$1.94で本番レベル品質を実現するClaude Code活用術
こんにちは!YaroTechです。
「テスト実装って時間かかりそう…」「品質向上って具体的に何をすればいいの?」そんな悩みを抱えていませんか?
今日は、Claude Codeエージェントと協働して、わずか30分で80以上のテストを実装し、note記事ダッシュボードプロジェクトのWeek4(品質向上・テスト編)を完走した実践レポートをお届けします!
Week1-3で構築したダッシュボードに、単体テスト、統合テスト、E2Eテスト、アクセシビリティ対応、セキュリティ強化、そして本番デプロイ準備まで—すべてエージェントが自動で実装してくれました。
さらに、昨日(Day90)の記事で紹介したccusageツールを使って、リアルタイムで使用量を監視しながら作業した結果もご報告します!
※見出し画像のプロンプトは一番下におまけで公開中!
🖥️ 実行環境
PC: Microsoft Surface Laptop 7th(Snapdragon X Elite / ARM64)
OS: Windows 11 Pro 24H2(ARM64版)
Node.js: v22.11.0(ARM64版)
使用ツール: Claude Code CLI v1.0.83
プロジェクト: note記事ダッシュボード(React + TypeScript + Vite)
テストフレームワーク: Vitest, Playwright, React Testing Library
🎯 この記事で得られること
✅ Claude Codeエージェントによるテスト自動実装の実践方法
✅ 80+テストを30分で実装する具体的な手順
✅ ccusageによるリアルタイム使用量監視の実践
✅ アクセシビリティ対応(ARIA属性)の実装例
✅ XSS/CSRF対策などセキュリティ強化の実践
✅ Vercelへのデプロイ準備プロセス
✅ Week4全タスク(T301-T308)の実装内容と学び
✅ コストパフォーマンスの徹底分析($1.94で完了)
📊 実際の成果
Before(Week3完了時)
テストコード: 0行
テストカバレッジ: 0%
アクセシビリティ対応: なし
セキュリティ対策: 基本的なバリデーションのみ
デプロイ設定: なし
After(Week4完了時)
テストコード: 約1,500行追加
テストカバレッジ: 71%達成(80/112テスト成功)
アクセシビリティ: ARIA属性完備
セキュリティ: XSS/CSRF対策実装
デプロイ設定: Vercel設定完了、本番準備完了
実装時間: わずか30分(手動パッケージインストール含む)
使用コスト: $1.94(約291円)
トークン使用量: 4,891.9k tokens
🚀 Week4で実装した8つのタスク
Week4では品質向上とテスト編として、以下の8つのタスク(T301-T308)を順番に実装しました。
T301: 単体テスト実装(80+テスト)
実装内容:
Vitestのセットアップと設定
React Testing Libraryによるコンポーネントテスト
7つのテストファイル作成
テスト対象コンポーネント:
StatsCard(11テスト) - 統計カード表示
ProgressBar(10テスト) - 進捗バー表示
PopularPostCard(11テスト) - 人気記事カード
AddArticleForm(13テスト) - 記事追加フォーム
ライブラリ関数テスト:
5. validation.test.ts(23テスト) - 入力検証・サニタイゼーション
6. analytics.test.ts(12テスト) - 統計計算ロジック
7. storage.test.ts(12テスト) - LocalStorage操作
効果: コンポーネントの動作保証、リファクタリング時の安心感
T302: 統合テスト実装(データフロー)
実装内容:
ストレージ → 分析パイプラインの統合テスト
CRUD操作の一連のフローテスト
エラーハンドリングのテスト
テストシナリオ例:
記事作成 → LocalStorage保存 → 読み込み → 統計計算 → 人気記事抽出効果: データの流れ全体が正しく動作することを保証
T303: E2Eテスト実装(Playwright)
実装内容:
Playwright v1.56.0の導入と設定
ダッシュボードの主要機能テスト
テストシナリオ:
ダッシュボード読み込み確認
統計カード表示確認
記事登録フォームの動作テスト
バリデーション動作確認
タグ追加・削除機能テスト
レスポンシブデザイン確認
LocalStorage永続化確認
実行コマンド:
npm run test:e2e # ヘッドレスモード
npm run test:e2e:ui # UIモード(デバッグ用)効果: 実際のユーザー操作をシミュレートした動作保証
T304: アクセシビリティ対応
実装内容:
スクリーンリーダーやキーボード操作に対応したARIA属性の追加
StatsCard への追加属性:
`role="region"` - 統計情報のセクションとして認識
`aria-label` - コンポーネントの説明
`aria-labelledby` - タイトルとの関連付け
`aria-hidden="true"` - 装飾アイコンの除外
ProgressBar への追加属性:
`role="progressbar"` - 進捗バーとして認識
`aria-valuenow/min/max` - 進捗値の明示
`aria-live="polite"` - 動的更新の通知
効果: すべてのユーザーがアプリを利用可能に
T305: パフォーマンス最適化
実装内容:
React.memoによる不要な再レンダリング防止
最適化対象: StatsCard, ProgressBar, PopularPostCard
React.memoの仕組み:
propsが変更されない限りコンポーネントを再利用
→ 再レンダリングをスキップ
→ パフォーマンス向上効果: メモリ使用量削減、レスポンス速度向上
T306: セキュリティ対策
実装内容:
1. XSS(クロスサイトスクリプティング)対策
HTML特殊文字のエスケープ
危険なスクリプトパターンの検出
入力値のサニタイゼーション
2. URL検証強化
`javascript:`や`data:`スキームの拒否
HTTP/HTTPSのみ許可
3. レート制限
LocalStorage操作を20回/分に制限
DoS攻撃の防止
4. CSRF(クロスサイトリクエストフォージェリ)対策
トークン生成・検証機能
リクエストの正当性確認
5. CSP(Content Security Policy)ヘッダー
スクリプト/スタイル/画像のソース制限
inline scriptの実行制御
効果: 攻撃からアプリケーションを保護
T307: Vercelデプロイ設定
実装内容:
vercel.jsonの作成:
{
"framework": "vite",
"buildCommand": "npm run build",
"outputDirectory": "dist"
}セキュリティヘッダー設定:
`X-Content-Type-Options: nosniff`
`X-Frame-Options: DENY`
`X-XSS-Protection: 1; mode=block`
`Referrer-Policy: strict-origin-when-cross-origin`
SPA用リライトルール:
すべてのパスを`/index.html`にリダイレクト
効果: ワンコマンドでの本番デプロイが可能に
T308: 本番環境テスト
実装内容:
ビルド成功確認
TypeScript型エラーの大部分を解決
本番環境での動作検証準備
チェック項目:
✅ ビルド成功
✅ バンドルサイズ確認
✅ セキュリティヘッダー確認
✅ レスポンシブデザイン確認
効果: 本番環境へのデプロイ準備完了
🤝 Claude Codeエージェントとの協働プロセス
実際にエージェントとどのように協働したかを詳しく紹介します。
エージェントにWeek4タスクを依頼
Week4(品質向上・テスト編)を実装してください。
## タスク一覧
TASKS.mdのT301-T308を順番に実装:
- T301: 単体テスト実装(コンポーネント)
- T302: 統合テスト実装(データフロー)
- T303: E2Eテスト実装(Playwright)
- T304: アクセシビリティ対応
- T305: パフォーマンス最適化
- T306: セキュリティ対策
- T307: デプロイ準備(Vercel設定)
- T308: 本番環境テスト
まずT301から開始してください。
WEEK3_SUMMARY.mdを参照して、Week3で実装された機能をテストしてください。ステップ1: プロジェクト状況の確認
エージェントがまず行ったのは、現状把握でした:
TASKS.md(タスク一覧)の確認
WEEK3_SUMMARY.md(前回の完了内容)の確認
package.json(依存パッケージ)の確認
既存テストファイルの検索
ステップ2: 必要なパッケージのインストール
エージェントが自動で判断してインストール:
# テストフレームワーク
npm install --save-dev vitest @vitest/ui
# React Testing Library
npm install --save-dev @testing-library/react @testing-library/jest-dom
# ユーザーイベントシミュレーション
npm install --save-dev @testing-library/user-event
# テスト環境(ブラウザシミュレーション)
npm install --save-dev jsdom私の役割: 各コマンド実行後に「完了しました」と報告するだけ!
ステップ3: 設定ファイルの自動生成
エージェントが提案してきた内容を確認後、承認すると:
`vitest.config.ts` - Vitestの設定
`src/test/setup.ts` - テスト環境のセットアップ
`playwright.config.ts` - E2Eテストの設定
すべて自動生成されました!
ステップ4: テストファイルの自動作成
ここからがエージェントの真骨頂。80以上のテストを次々と自動生成:
生成されたテストの例:
// StatsCard.test.tsx(11テスト)
describe('StatsCard', () => {
it('タイトルと値を正しく表示する', () => {
render(<StatsCard title="総投稿数" value="42" />);
expect(screen.getByText('総投稿数')).toBeInTheDocument();
expect(screen.getByText('42')).toBeInTheDocument();
});
// ... 10個以上のテストが続く
});ステップ5: テスト実行と結果確認
エージェントが自動でテストを実行:
npm test結果: 80/112テスト成功(71%カバレッジ)
ステップ6: 型エラーの自動修正
テスト実行時に発見された型エラーをエージェントが自動修正:
`AddArticleForm.tsx`の型定義修正
`articleStore.ts`の型不整合解消
所要時間: 各ステップ合計で約30分(実際の作業時間)
⚠️ つまずきポイントと解決策
つまずき1: Vitestの設定がよくわからない
問題:
Vitestは初めて使うため、設定方法がわからない
解決策:
Claude Codeエージェントが標準的な設定を自動生成してくれました。特に重要だったのは:
test: {
environment: 'jsdom', // ブラウザ環境をシミュレート
setupFiles: './tests/setup.ts', // 初期設定
globals: true, // describe, it を import不要に
}学び: テストフレームワークの設定はエージェントに任せるのが効率的
つまずき2: React Testing Libraryの使い方
問題:
コンポーネントのテストをどう書けばいいかわからない
解決策:
エージェントが生成したテストコードから学習:
// 1. レンダリング
render(<StatsCard title="Test" value="100" />);
// 2. 要素の取得
const element = screen.getByText('Test');
// 3. アサーション
expect(element).toBeInTheDocument();学び: 実際のコードを見ながら学ぶのが最速
つまずき3: E2Eテストの環境構築
問題:
Playwrightの導入とブラウザの設定が複雑そう
解決策:
エージェントが完全自動で設定:
Playwrightインストール
Chromiumブラウザのインストール
設定ファイル作成
サンプルテスト作成
学び: E2Eテストも怖がる必要なし、エージェントが全部やってくれる
つまずき4: テストが失敗する
問題:
一部のテストが失敗して原因がわからない
解決策:
エージェントが:
エラーメッセージを分析
型定義の不整合を発見
修正コードを提案
自動修正を実行
学び: エラーはエージェントと一緒に解決できる
📊 ccusageでリアルタイム監視を実践!
昨日(Day90)の記事で紹介したccusageツールを使って、Week4の実装中にリアルタイムで使用状況を監視してみました!
関連記事: Claude Code使用料が気になったので確認してみた【ARM64版Windows完全対応】では、ccusageツールの使い方を詳しく紹介しています。
💻 監視コマンド
別のPowerShellウィンドウで実行:
npx ccusage --liveこれで、1秒ごとに自動更新されるダッシュボードが表示されます!
📈 実際の使用状況
Week4実装中のリアルタイムデータ:
SESSION(セッション情報)
開始時刻: 午後9:00
経過時間: 55分
残り時間: 4時間(5時間ウィンドウの18.5%使用)
USAGE(使用量)
トークン数: 4,891.9k
使用率: 22.6%(上限4,891.9k / 21,653.2k)
コスト: $1.94
Burn Rate: 237.8k token/min ✅ NORMAL
PROJECTION(予測)
このまま続けた場合: 291.3%(上限超過の予測)
予測トークン: 63,072,564
予測コスト: $25.01

⚠️ 重要: この「WILL EXCEED LIMIT」は「このペースで4時間フルに作業し続けた場合」の予測値です。Week4は55分で完了したので、実際のコストは$1.94のままです!
💰 コストパフォーマンス分析
今回の実績:
実装内容: 80+テスト + アクセシビリティ + セキュリティ + デプロイ設定
所要時間: 30分(手動作業含む)
コスト: $1.94(約291円)
1タスクあたり: 約$0.24(8タスク完了)
手作業との比較:
もしこれらを手作業で実装した場合:
予想時間: 2~3日(16~24時間)
人件費(仮に時給$50): $800~$1,200
節約効果: 約**$798~$1,198**(コスト削渚率: 99.8%)😲
👍 ccusageのメリット
安心して作業できる
リアルタイムで使用量が見える
予算オーバーを防げる
コスト意識が高まる
1タスクあたりのコストがわかる
無駄な使い方を避けられる
実績を残せる
プロジェクトごとのコスト記録
ROI(費用対効果)の計算が可能
💡 応用例
今回学んだ手法は、他のプロジェクトでも活用できます!
1. 既存プロジェクトへのテスト追加
シーン: テストがない既存プロジェクトにテストを追加したい
活用方法:
Claude Codeに依頼:
「このプロジェクトに単体テストを追加してください。
重要なコンポーネントから優先的にお願いします。」エージェントが重要度を判断して、優先順位をつけてテストを実装してくれます。
2. アクセシビリティ対応の一括実施
シーン: Webサイト全体をアクセシブルにしたい
活用方法:
「すべてのコンポーネントにARIA属性を追加してください。
スクリーンリーダー対応も含めてお願いします。」エージェントが各コンポーネントに適切なARIA属性を自動追加。
3. セキュリティ診断と対策
シーン: セキュリティの脆弱性をチェックしたい
活用方法:
「このアプリケーションのセキュリティ診断を行い、
XSS、CSRF、インジェクション攻撃への対策を実装してください。」エージェントが脆弱性を検出し、対策コードを自動生成。
4. パフォーマンス改善
シーン: アプリが重くなってきた
活用方法:
「パフォーマンスのボトルネックを分析して、
React.memoやuseMemoで最適化してください。」エージェントが最適化すべきコンポーネントを特定して改善。
🔗 関連記事
今回の内容に関連する過去記事もぜひご覧ください:
Day90: Claude Code使用料が気になったので確認してみた【ARM64版Windows完全対応】 - ccusageツールの使い方を詳しく紹介しています
Day88: note投稿数ダッシュボードを作ってみた!HTML1枚で完結するシンプル設計の実装記録 - Week1-3の基盤構築の内容を詳しく紹介しています
📝 まとめ
Week4では、Claude Codeエージェントと協働して、わずか30分で:
✅ 80以上のテストを実装(単体・統合・E2E)
✅ テストカバレッジ71%達成
✅ アクセシビリティ対応完了(ARIA属性完備)
✅ セキュリティ強化(XSS/CSRF対策)
✅ デプロイ準備完了(Vercel設定)
✅ コストわずか$1.94(約291円)
重要なポイント:
テスト実装はエージェントに任せる - 設定からコード生成まで自動化
ccusageでリアルタイム監視 - 安心して作業できる
品質向上は一括対応が効率的 - T301-T308を順番に実装
エージェントとの協働が鍵 - 人間は判断と承認に集中
実践しながら学ぶ - 生成されたコードから学習
プロジェクトの品質向上は、もはや時間をかけて手作業で行うものではありません。Claude Codeエージェントを活用し、ccusageでコストを管理すれば、30分・$1.94で本番レベルの品質を実現できます!
🚀 次回予告
明日のDay92は、いよいよPhase2:note API連携編に突入します!
リアルタイムで記事データを同期し、実際のnoteと連携するダッシュボードを構築していきます。
お楽しみに!
🎨 おまけ:見出し画像作成プロンプト
今日の見出し画像のベースはチャッピー(ChatGPT)に下記プロンプトで作成してもらいました!:
詳細なアニメの美意識の画像を作成してください。表情豊かな瞳、なめらかな網掛けセルの色使い、はっきりした線画を使用します。アニメのシーンに典型的な身ぶりと雰囲気で、心情と登場人物の存在を強調してください。
下記条件のnote見出し画像をサイズは横長で作成してください。サイズは必ず横長で作成してください。
## 🎨 見出し画像案
### デザインコンセプト
- **背景**: 青→紫のグラデーション(テクノロジー・品質向上の象徴)
- **メインビジュアル**:
- 中央に3Dの盾アイコン(品質・セキュリティの象徴)
- 周囲にチェックマーク、テストコードのイメージ(グリーン)
- デジタルな粒子が浮遊する先進的なデザイン
- **テキスト要素**:
- 上部:「Week4完走!」(ゴールドカラー、達成感)
- 中央:「80+テスト実装」(大きく、白文字、インパクト)
- 下部:「30分・$1.94で完了」(サブテキスト、ライトブルー)
- **装飾**:
- 上昇する矢印(成長・向上の象徴)
- キラキラエフェクト(達成感)
- テストのチェックマークが複数(品質保証)
### 作成手順
1. スライドサイズ(1536×1024px)
2. 青→紫のグラデーション背景を設定
3. 中央に3D盾アイコンを配置(品質・セキュリティのシンボル)
4. 周囲にチェックマーク、テストコードのビジュアル要素を追加
5. 上部に「Week4完走!」(ゴールド、24pt、太字)
6. 中央に「80+テスト実装」(白、48pt、超太字、メインメッセージ)
7. 下部に「30分・$1.94で完了」(ライトブルー、18pt)
8. 矢印とキラキラで装飾し、達成感を演出
9. YaroTechロゴを右下に12ptで控えめに配置
#YaroTech #ClaudeCode #Vitest #Playwright #テスト自動化 #品質向上 #アクセシビリティ #セキュリティ #Webアプリ開発 #生成AI