Files
gh-allex-znews-cc-workflow-…/commands/implement.md
2025-11-29 17:52:09 +08:00

5.4 KiB
Raw Blame History

description, argument-hint
description argument-hint
機能を実装する
追加の指示(オプション)

機能の実装

機能仕様書とテストケースに基づいて、機能を実装します。 TDDのRed-Green-Refactorサイクルに従って進めます。

追加の指示

$ARGUMENTS

実装の指針

implementer エージェントを使って、テストを通すための実装を進めてください。

タスク状態の更新

実装を開始する前に、タスク状態を更新してください:

// .tasks.json の該当タスクを更新
{
  "id": 5,
  "type": "workflow",
  "name": "実装",
  "status": "in_progress",
  "command": "/implement",
  "startedAt": "[現在時刻]"
}

実装フェーズでは、サブタスクを作成している場合、各サブタスクの状態も適宜更新してください:

  • /update-task [タスクID] in_progress - タスク開始時
  • /complete-task [タスクID] - タスク完了時

Red-Green-Refactor サイクル

フェーズ1: Red失敗するテストの確認

まず、作成したテストを実行して失敗を確認します:

# テストを実行
npm test  # または pytest, go test, など

失敗メッセージから、何を実装すべきかを理解します。

フェーズ2: Green最小限の実装

目標: テストを通すこと(美しいコードは後回し)

実装の優先順位

  1. コアロジックから

    • 最も重要な機能
    • 他の機能が依存する部分
  2. 正常系を先に

    • 一般的なユースケース
    • ハッピーパス
  3. エラーハンドリング

    • 異常系の処理
    • 例外処理
  4. エッジケースの対応

    • 境界値の処理
    • 特殊なケース

実装のステップ

1. 1つのテストケースに注目
2. そのテストを通す最小限のコードを書く
3. テストを実行
4. 通ったら次のテストへ
5. 失敗したらデバッグして修正
6. すべてのテストが通るまで繰り返し

フェーズ3: Refactorリファクタリング

すべてのテストが通ったら、コードを改善します:

リファクタリング観点

  1. 重複の削除

    • DRY原則に従う
    • 共通処理を関数化
  2. 可読性の向上

    • わかりやすい変数名
    • 適切なコメント
    • 関数の分割
  3. 設計の改善

    • 責任の分離
    • 依存性の注入
    • パターンの適用
  4. パフォーマンス最適化(必要な場合)

    • アルゴリズムの改善
    • キャッシングの追加
    • 不要な処理の削除

重要: リファクタリング後、必ずテストを実行して機能が壊れていないことを確認

実装のベストプラクティス

1. コーディング規約に従う

プロジェクトの既存のスタイルを確認:

  • 命名規則
  • インデントスペースorタブ
  • ファイル構成
  • コメントの書き方

2. 小さくコミット

# 機能単位でコミット
git add [変更ファイル]
git commit -m "feat: [機能の説明]"

# テストが通る状態でコミット
# こまめにコミットして履歴を残す

3. ドキュメントを書く

/**
 * ユーザー情報を取得する
 * @param {number} userId - ユーザーID
 * @returns {Promise<User>} ユーザー情報
 * @throws {Error} ユーザーが見つからない場合
 */
async function getUser(userId) {
  // ...
}

4. エラーハンドリング

// 適切なエラーメッセージ
if (!userId) {
  throw new Error('User ID is required');
}

// エラーのログ記録
try {
  // ...
} catch (error) {
  logger.error('Failed to fetch user', { userId, error });
  throw error;
}

5. 依存関係の管理

新しいライブラリを追加する場合:

# 必要性を検討
# ライセンスを確認
# バージョンを固定
npm install --save-exact package-name

実装中のチェックリスト

  • テストケースを確認した
  • 最小限の実装から始めた
  • テストを頻繁に実行している
  • コーディング規約に従っている
  • 適切なエラーハンドリングをしている
  • 必要なコメント・ドキュメントを書いた
  • リファクタリングをした
  • すべてのテストが通る
  • 既存のテストも壊していない

次のステップ

実装が完了したら:

  1. すべてのテストを実行

    npm test
    npm run test:coverage  # カバレッジも確認
    
  2. コードレビュー依頼

    • ユーザーにレビューを依頼
    • フィードバックを反映
  3. ドキュメント更新

    • README
    • CHANGELOG
    • APIドキュメント
  4. タスクの完了

    // .tasks.json の該当タスクを更新
    {
      "id": 5,
      "status": "completed",
      "completedAt": "[現在時刻]"
    }
    
  5. 完了報告

    • 実装内容のサマリー
    • テスト結果
    • 今後の課題(あれば)

注意:

  • post-implementation フックが自動的に実行され、実装の品質チェックとテストの実行を行います
  • タスク進捗は /list-tasks で確認できます
  • すべてのサブタスクが完了していることを確認してください