Initial commit

This commit is contained in:
Zhongwei Li
2025-11-29 17:52:09 +08:00
commit 863b553c2a
20 changed files with 4544 additions and 0 deletions

222
commands/implement.md Normal file
View File

@@ -0,0 +1,222 @@
---
description: 機能を実装する
argument-hint: [追加の指示(オプション)]
---
# 機能の実装
機能仕様書とテストケースに基づいて、機能を実装します。
TDDのRed-Green-Refactorサイクルに従って進めます。
## 追加の指示
$ARGUMENTS
## 実装の指針
`implementer` エージェントを使って、テストを通すための実装を進めてください。
## タスク状態の更新
実装を開始する前に、タスク状態を更新してください:
```javascript
// .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失敗するテストの確認
まず、作成したテストを実行して失敗を確認します:
```bash
# テストを実行
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. 小さくコミット
```bash
# 機能単位でコミット
git add [変更ファイル]
git commit -m "feat: [機能の説明]"
# テストが通る状態でコミット
# こまめにコミットして履歴を残す
```
### 3. ドキュメントを書く
```javascript
/**
* ユーザー情報を取得する
* @param {number} userId - ユーザーID
* @returns {Promise<User>} ユーザー情報
* @throws {Error} ユーザーが見つからない場合
*/
async function getUser(userId) {
// ...
}
```
### 4. エラーハンドリング
```javascript
// 適切なエラーメッセージ
if (!userId) {
throw new Error('User ID is required');
}
// エラーのログ記録
try {
// ...
} catch (error) {
logger.error('Failed to fetch user', { userId, error });
throw error;
}
```
### 5. 依存関係の管理
新しいライブラリを追加する場合:
```bash
# 必要性を検討
# ライセンスを確認
# バージョンを固定
npm install --save-exact package-name
```
## 実装中のチェックリスト
- [ ] テストケースを確認した
- [ ] 最小限の実装から始めた
- [ ] テストを頻繁に実行している
- [ ] コーディング規約に従っている
- [ ] 適切なエラーハンドリングをしている
- [ ] 必要なコメント・ドキュメントを書いた
- [ ] リファクタリングをした
- [ ] すべてのテストが通る
- [ ] 既存のテストも壊していない
## 次のステップ
実装が完了したら:
1. **すべてのテストを実行**
```bash
npm test
npm run test:coverage # カバレッジも確認
```
2. **コードレビュー依頼**
- ユーザーにレビューを依頼
- フィードバックを反映
3. **ドキュメント更新**
- README
- CHANGELOG
- APIドキュメント
4. **タスクの完了**
```javascript
// .tasks.json の該当タスクを更新
{
"id": 5,
"status": "completed",
"completedAt": "[現在時刻]"
}
```
5. **完了報告**
- 実装内容のサマリー
- テスト結果
- 今後の課題(あれば)
**注意**:
- `post-implementation` フックが自動的に実行され、実装の品質チェックとテストの実行を行います
- タスク進捗は `/list-tasks` で確認できます
- すべてのサブタスクが完了していることを確認してください