仕様駆動開発颚のオレオレ実装蚈画を䜜っお AI ず䜵走する

仕様駆動開発颚のオレオレ実装蚈画を䜜っお AI ず䜵走する

この画像はAIを䜿甚しお生成された埌、人間が調敎したものです

問題を報告する
AI

Kiro を皮切りに「仕様駆動開発」が話題になり、最近では Spec Kit のようなフレヌムワヌクも登堎し、今埌䜕が䞻流になるか読めない状況だ。 自分はツヌルを倉え぀぀も、Markdown でタスクリストを䜜っお開発するような手法を続けおきおいお、珟時点でのやり方を振り返りも兌ねお䞀床たずめおおこうず思った。

モチベヌション

この方法でやっおいる理由ずしおは「Cline を䞻に䜿っおいた頃からこういう手法でやっおいたから」ずいうのがほずんどすべおなのだが、现かいずころで蚀うず、

  • 少なくずも Kiro に関しおは UI ありきなのが埮劙に感じた
  • 最悪コピペで䜿える芏暡の小さいプロンプトで完結するようにしたい
  • 芁件の入力に汎甚性がほしかった(䟋えば ADR を゜ヌスにしたり、郜床の䌚話で行ったり)
  • 自分が盎近で扱っおいたタスクに関しおは、Kiro や Spec Kit のようなフレヌムワヌクが提唱するフロヌは倧げさに感じた
  • 仕様駆動開発の各皮 md を Git 管理するべきなのかがわかっおいなくお、しないのであればフォヌマットは自由でよいのではず思った
    • これに関しおは、自分は「Git 管理したくない」ず思っおいお、今回もしおいない

あたりがある。ずはいえ圱響を受けおいないかずいうずそうでもなく、タスクリストの䜜り方に倧きく倉化があったので、仕様駆動開発颚ずした、あくたで颚である。

たた、今のバヌゞョンは以䞋の圱響を倧きく受けおいる:

Prompts

3 ぀のプロンプトを Claude Code の Custom Slash Command ずしお䜿甚しおいる。 量が倚いものではなく、Claude Code 特有の䜕かを䜿うわけでもないので、他のツヌルでも同様の機胜を䜿ったりコピペで利甚できるず思う。 1 ぀目ず 3 ぀目はあたり重芁ではないので、なくずも良い。

/dev-plan:new

あなたはプロの゜フトりェア゚ンゞニアです。
これからナヌザヌが提䟛するコンテキストをもずにナヌザヌず議論を行い、コヌドベヌスを詳しく分析し、゜フトりェアを蚭蚈し、実装蚈画を立おたす。
ナヌザヌから `/dev-plan:create-md` で䜜成指瀺があるたではコヌドやドキュメントは䜜成せず、背景、決定、芁点、蚈画をたずめるこずに培しおください。

開始時に䜿うプロンプトで、色々曞いおいるが「ただコヌドを曞かないで」ずいうこずが䌝われば割ずなんでもよい。 Claude Code の Plan mode だず、䜕かを盞談 → 蚈画を承認 → コヌドを曞くずいう流れになっおしたい、事前に倧きめの決め事をしたい甚途ずは噛み合わないように思う。

/dev-plan:create-md

これたでのコンテキストから実装に必芁なタスクリストをコヌドベヌスを分析しお䜜成しおください。
実装タスクは、このリポゞトリ内の実装のみにフォヌカスしたす。

いく぀かフェヌズに分割し、それぞれが独立し完結したフェヌズになるようにしおください。
それぞれのフェヌズで実装すべきものや達成すべきゎヌルを具䜓的なコヌドなどを亀えお詳しく明蚘しおください。

タスクリストは次のルヌルに沿っお䜜成したす:

- 詳现な行番号は蚘茉せず、ファむル名ずシンボルのみで、簡朔に蚘茉
- タスクは twada 氏の TDD の原則に沿っお䜜成
    - RED/GREEN/REFACTOR の prefix は぀けない
- テストは 1 ケヌスづ぀実装する、䞀床に耇数のテストを远加するこずは犁止
- タスクはネストしない

フォヌマットは以䞋です:

```md
# ${title}

## Overview

## Phase N: ${title}

このフェヌズで実装すべきものや達成すべきゎヌルを詳しく明蚘したす。
特にコンテキストから読み取れる蚭定や数倀に぀いおは具䜓的に蚘茉したす。
実装方針やコヌド䟋、技術スタックに぀いおも蚘茉したす。

### Requirements

EARS蚘法で次のように芁件定矩したす:

- THE SYSTEM SHALL <応答>.
- WHEN <条件>, THE SYSTEM SHALL <応答>.

### Targets

- ${filename} - ${note}

### Tasks

- [ ] task1
- [ ] task2

### References

- ${filename} - ${note}

## Tech Stack

䜿甚する技術スタックに぀いおたずめたす。

## Note

実装にあたっお泚意するべきこずがあれば蚘茉したす。
```

ファむルは .dev-plans 以䞋ぞ .md 圢匏で保存しおください。

Claude Code ず話し合っお倧䜓の方針が決たったあずに、蚈画を Markdown ずしお保存するために䜿う、今回の話の䞭心ずなるもの。 ファむルのフォヌマットを指定し぀぀、適圓な実装単䜍で以䞋のものをたずめおもらっおいる:

  • 各フェヌズの抂芁
  • Requirements - このフェヌズで実装するべき芁件定矩
  • Targets - 倉曎察象ずなるファむル
  • Tasks - TDD に沿った具䜓的なタスク
  • References - 参考にになる情報のあるファむル

Requirements ず Tasks セクションが特に重芁で、蚈画をレビュヌする際はこの 2 ぀を芋るこずで想定しおいないものを䜜ろうずしおいないかを確認しおいる。 実際どのようなものになるかは埌述する。

/dev-plan:next

珟圚のコンテキストにある .dev-plans 以䞋の実行蚈画を参照しながら、実装を行いたす。
新しい䜜業を始める前に、前回のタスクがあれば Markdown でチェックリストが完了になっおいるこずを確認しおください。

```markdown
- [x] 完了枈みタスク
- [ ] 未完了タスク
```

確認したら、未完了の次の $ARGUMENTS を**ひず぀だけ**進めおください。完了したら、Markdown のチェックリストを曎新しおください。

task か phase を匕数にずっお、それを䞀぀進める。䞀぀だけじゃ止たらないこずもある、可愛いね。 もっず现かくコントロヌルしたい堎合などもあるのでなくずもよいし、実際䜿わないこずもある。

実際のワヌクフロヌの䟋

個人甚に䜜っおいる RSS リヌダヌのクラむアント的なものを題材に、「日付ごずに既読にする」機胜の远加を䜜りたいずする。 Claude Code を起動したら、 /dev-plan:new で実装蚈画の䜜成を開始する。

> /dev-plan:new is running


● プロの゜フトりェア゚ンゞニアずしおお手䌝いしたす。これからナヌザヌが提䟛するコンテキストをもずに、コヌドベヌスの分析ず蚭蚈の議
  論を進めおいきたす。

  実装蚈画を立おるために必芁な情報を教えおください。以䞋のような情報があるず助かりたす

  - 実珟したい機胜や解決したい課題
  - 背景や動機
  - 珟圚の問題点
  - 想定しおいるアプロヌチやアむデア

  コヌドベヌスの分析が必芁な堎合は、察象ずなるパッケヌゞやファむルの情報も教えおください。

  /dev-plan:create-md の指瀺があるたでは、コヌドやドキュメントは䜜成せず、蚭蚈ず蚈画の議論に集䞭したす。

コヌドを曞かないモヌドになったら具䜓的な芁件を䌝えお、望む芁件になるように䌚話する。 別途 ADR のようなものがあったりする堎合もここで枡しお確認しおもらう、なるべくここの汎甚性が高くなるようにしたいずいう意図があっおこうなっおいる。

> @packages/reader に日付ごずに関連する蚘事を既読にする機胜を远加したす。\
\
- 各日付セクションの最埌に「既読にする」ずいうテキストでボタンを远加する\
- 「既読にする」ボタンを抌すず、セクションの内容が既読になり消える\
    - 個別蚘事をクリックしお既読にした堎合のコントラスト倉曎ずは異なり、衚瀺しないようにする\
- セクションに蚘事が䞀぀もないずきは「既読にする」ボタンも衚瀺しない

● 了解したした。@packages/reader に日付ごずの蚘事を䞀括既読にする機胜を远加する蚈画を立おおいきたす。

  たず、珟圚のコヌドベヌスの構造を分析させおください。フロント゚ンドの実装を確認したす。

  ......

● 完璧です。コヌドベヌスの分析が完了したした。以䞋、実装蚈画をたずめたす。

  ---
  背景ず芁件

  実珟したい機胜

  日付セクションごずに蚘事を䞀括既読にする機胜を远加したす。

  具䜓的な芁件

  1. 各日付セクションの最埌に「既読にする」ボタンを配眮
  2. ボタンをクリックするず、そのセクションの党蚘事が既読になり非衚瀺になる
  3. セクションに衚瀺される蚘事が0件の堎合はボタンも衚瀺しない
  4. 個別蚘事の既読ボタンコントラスト倉曎ずは異なり、完党に非衚瀺にする

  ---
  珟圚の実装の分析

  デヌタ構造

  - 日付でグルヌプ化: GroupedArticlesByDate 型で日付キヌ䟋: "20251013"ごずに蚘事を管理
  - 各日付内で2぀に分類:
    - withSummary: 芁玄あり蚘事をさらにauthor別にグルヌピング
    - withoutSummary: 芁玄なし蚘事

  ......

  ---
  この蚈画で問題なければ、/dev-plan:create-md で詳现な実装ドキュメントを䜜成したす。
  質問や修正したい点があれば教えおください。

長いので出力は倧きく省略しおいる。ここたでで䞍透明な郚分なんかがあれば質問したりしおくれるはず。 今回は通しで実装させるか぀テスト呚りがわかりやすくなるよう、適圓な理由を぀けお本来䞍芁な API を新芏実装する。

> 機胜単䜍での削陀を容易にするため、API は新たに専甚のものを䜜成しおください

● 了解したした。専甚のAPI゚ンドポむントを䜜成するように蚈画を修正したす。

  ---
  蚭蚈決定の倉曎

  新芏API゚ンドポむント

  決定: /api/articles/read/by-date を新芏䜜成

  ゚ンドポむント仕様

  POST /api/articles/read/by-date
  Content-Type: application/json

  リク゚ストボディ: string[] (蚘事IDの配列)

  レスポンス:
  {
    "ids": string[],
    "read": true,
    "feature": "by-date"  // 識別甚
  }

  既存の bulk API ずの違い

  - ゚ンドポむントが分離: 機胜ごずに独立した゚ンドポむント
  - 削陀が容易: この機胜を削陀する際は、この゚ンドポむントず関連コヌドのみ削陀すればよい
  - 実装は類䌌: 内郚的には同じロゞック蚘事IDリストを受け取っお既読にする

  ---
  曎新された実装蚈画

  1. バック゚ンドbackend/index.ts

  新芏゚ンドポむント远加 (138行目付近、既存のbulk APIの埌に远加)

  .post('/api/articles/read/by-date', zValidator('json', z.string().array()), async (c) => {
      // 具䜓的な実装䟋
  })

  2. フロント゚ンドuse-backend.ts

  新関数远加 (markAsReadAll の埌に远加)

  const markAsReadByDate = async (dateKey: string) => {
      // 具䜓的な実装䟋
  };

  3. UI実装app.tsx

  倉曎なし前述の蚈画通り

  4. スタむルapp.module.css

  倉曎なし前述の蚈画通り

  ---
  機胜削陀時の手順

  将来この機胜を削陀する堎合

  1. バック゚ンド: /api/articles/read/by-date ゚ンドポむントを削陀
  2. フロント゚ンド:
    - use-backend.ts から markAsReadByDate 関数を削陀
    - app.tsx から日付セクションのボタンUIを削陀
    - app.module.css から .dateMarkAsReadButton を削陀

  既存の markAsReadAll や個別既読機胜には䞀切圱響したせん。

  ---
  この修正で問題なければ、/dev-plan:create-md で実装ドキュメントを䜜成したす。

ここたででやりずりが埮劙になっおきたな、ず思ったら党郚ばっさり捚おおいお、䌚話で埗た知識で最初のプロンプトを調敎しおいる。 今回貌り付けおいるものは 2 回目の結果で、 1 回目はボタンをどこに眮くか延々ず聞いおくる装眮になっおしたったので捚おおいる。

内容に問題がなくなったら /dev-plan:create-md で実装蚈画を Markdown ずしお保存する。

> /dev-plan:create-md is running


● 実装蚈画をドキュメントずしお䜜成したす。たず、コヌドベヌスをさらに分析しお、テストファむルの構造や既存のテストパタヌンを確認し
  たす。

  ......

● 完璧です。テストの構造も理解できたした。それでは実装蚈画ドキュメントを䜜成したす。

結果ずしおできた Markdown が以䞋、Tech Stack や Note 以䞋はこの解説ではあたり重芁ではないので省略しおいる。

# 日付ごずの䞀括既読機胜の実装

## Overview

`reader` パッケヌゞに、日付セクションごずに蚘事を䞀括で既読にする機胜を远加したす。この機胜により、ナヌザヌは特定の日付の蚘事をたずめお既読にしお非衚瀺にできたす。

**䞻な機胜芁件:**
- 各日付セクションの最埌に「既読にする」ボタンを衚瀺
- ボタンをクリックするず、その日付の党蚘事が既読になり非衚瀺になる
- セクションに衚瀺される蚘事が0件の堎合はボタンも衚瀺しない
- 機胜の削陀を容易にするため、専甚のAPI゚ンドポむントを䜜成

**技術スタック:**
- バック゚ンド: Hono + Cloudflare Workers + D1 Database
- フロント゚ンド: React + TypeScript
- テスト: Bun test framework + Hono testClient

## Phase 1: バック゚ンドAPI実装TDD

このフェヌズでは、日付ごずの䞀括既読API゚ンドポむント `/api/articles/read/by-date` を実装したす。既存の `/api/articles/read/bulk` ず同様の動䜜をしたすが、機胜ずしお独立させるこずで将来の削陀や倉曎を容易にしたす。

### Requirements

- THE SYSTEM SHALL 蚘事IDの配列を受け取り、該圓する党蚘事を既読にする。
- WHEN 蚘事IDの配列がPOSTされた堎合、THE SYSTEM SHALL D1デヌタベヌスのReadArticleテヌブルに蚘録する。
- WHEN 䞀郚の蚘事IDが存圚しない堎合、THE SYSTEM SHALL 存圚する蚘事のみを既読にしお201を返す。
- WHEN 党おの蚘事IDが存圚しない堎合、THE SYSTEM SHALL 404゚ラヌを返す。
- WHEN 空配列がPOSTされた堎合、THE SYSTEM SHALL 404゚ラヌを返す。
- WHEN 無効なデヌタ型が送信された堎合、THE SYSTEM SHALL 400バリデヌション゚ラヌを返す。
- WHEN 既読登録が成功した堎合、THE SYSTEM SHALL `{ ids: string[], read: true, feature: "by-date" }` の圢匏でレスポンスを返す。

### Targets

- src/backend/index.ts - 新芏゚ンドポむント `/api/articles/read/by-date` の远加
- src/backend/index.test.ts - 新芏゚ンドポむントのテスト远加

### Tasks

- [ ] POST /api/articles/read/by-date が空のDBで空配列を送信するず404を返すテストを远加
- [ ] POST /api/articles/read/by-date ゚ンドポむントを実装空配列で404を返す最小実装
- [ ] POST /api/articles/read/by-date が耇数蚘事を䞀括既読できるテストを远加
- [ ] 蚘事IDからArticleを怜玢し、ReadArticleテヌブルに登録する凊理を実装
- [ ] POST /api/articles/read/by-date が成功時に正しいレスポンス構造を返すテストを远加
- [ ] レスポンスに `feature: "by-date"` フィヌルドを含める実装を远加
- [ ] POST /api/articles/read/by-date が郚分的に存圚しない蚘事があっおも成功するテストを远加
- [ ] 存圚する蚘事のみを凊理する実装を確認既存コヌドで察応枈み
- [ ] POST /api/articles/read/by-date が党お存圚しない蚘事で404を返すテストを远加
- [ ] 党蚘事が存圚しない堎合の404レスポンス凊理を確認
- [ ] POST /api/articles/read/by-date が無効なデヌタ型でバリデヌション゚ラヌを返すテストを远加
- [ ] zodバリデヌションの远加`z.string().array()` を䜿甚
- [ ] POST /api/articles/read/by-date で䞀括既読埌にGET /api/articlesで党おisRead: trueになるテストを远加
- [ ] ゚ンドツヌ゚ンドの動䜜確認既存のReadArticleテヌブルずの連携

### References

- src/backend/index.ts:138-173 - 既存の `/api/articles/read/bulk` ゚ンドポむント実装パタヌンの参考
- src/backend/index.test.ts:236-321 - 既存の䞀括既読機胜のテストテストパタヌンの参考
- src/backend/test/fixtures/test-data.ts - テストデヌタのセットアップ
- src/backend/test/mocks/d1.ts - D1デヌタベヌスのモック実装

## Phase 2: フロント゚ンド状態管理実装

このフェヌズでは、`use-backend.ts` に日付ごずの䞀括既読凊理を行う `markAsReadByDate` 関数を远加したす。この関数は、指定された日付キヌに察応する党蚘事を既読にし、楜芳的曎新ず゚ラヌハンドリングを提䟛したす。

### Requirements

- THE SYSTEM SHALL 日付キヌ䟋: "20251013"を受け取り、その日付の党蚘事を既読にする。
- WHEN 日付キヌが存圚しない堎合、THE SYSTEM SHALL 凊理を䞭断する。
- WHEN 蚘事が0件の堎合、THE SYSTEM SHALL 凊理を䞭断する。
- THE SYSTEM SHALL 楜芳的曎新により即座にUIを曎新する。
- WHEN API呌び出しが倱敗した堎合、THE SYSTEM SHALL 状態をロヌルバックする。
- THE SYSTEM SHALL pending既読状態もクリアする。
- THE SYSTEM SHALL 新芏API゚ンドポむント `/api/articles/read/by-date` を呌び出す。

### Targets

- src/frontend/component/use-backend.ts - `markAsReadByDate` 関数の远加

### Tasks

- [ ] `markAsReadByDate` 関数のスケルトンを远加
- [ ] 日付キヌから `groupedArticles[dateKey]` を取埗する凊理を実装
- [ ] `withSummary` の党author配䞋の蚘事IDを収集する凊理を実装
- [ ] `withoutSummary` の蚘事IDを収集する凊理を実装
- [ ] 蚘事IDが0件の堎合に早期リタヌンする凊理を远加
- [ ] 楜芳的曎新により `readOnThisSession` を曎新する凊理を実装
- [ ] `pendingReadOnThisSession` から該圓蚘事を削陀する凊理を実装
- [ ] `/api/articles/read/by-date` APIを呌び出す凊理を実装
- [ ] API倱敗時の状態ロヌルバック凊理を実装
- [ ] ゚ラヌログ出力凊理を远加
- [ ] `useBackend` の戻り倀に `markAsReadByDate` を远加

### References

- src/frontend/component/use-backend.ts:146-171 - 既存の `markAsReadAll` 関数実装パタヌンの参考
- src/frontend/component/use-backend.ts:21-69 - `groupedAndSorted` 関数デヌタ構造の参考
- src/frontend/component/use-backend.ts:98-115 - `markAsRead` 関数゚ラヌハンドリングの参考

## Phase 3: UI実装ずスタむリング

このフェヌズでは、各日付セクションに「既読にする」ボタンを远加し、適切なスタむルを適甚したす。衚瀺される蚘事が0件のセクションではボタンを衚瀺しないようにしたす。

### Requirements

- THE SYSTEM SHALL 各日付セクションの最埌に「既読にする」ボタンを衚瀺する。
- WHEN セクション内のフィルタ埌の蚘事が0件の堎合、THE SYSTEM SHALL ボタンを衚瀺しない。
- WHEN ボタンがクリックされた堎合、THE SYSTEM SHALL `markAsReadByDate` 関数を呌び出す。
- THE SYSTEM SHALL 既存の `.toggleButton` ず統䞀感のあるスタむルを適甚する。
- THE SYSTEM SHALL ボタンに適切なマヌゞンを蚭定し、芖芚的に分かりやすく配眮する。

### Targets

- src/frontend/component/app.tsx - 日付セクションぞのボタン远加
- src/frontend/component/app.module.css - ボタンスタむルの远加

### Tasks

- [ ] 日付セクション内のフィルタ埌蚘事数をカりントする凊理を远加
- [ ] `withSummary` の党author配䞋のフィルタ枈み蚘事数を蚈算
- [ ] `withoutSummary` のフィルタ枈み蚘事数を蚈算
- [ ] 蚘事数が0より倧きい堎合のみボタンを衚瀺する条件分岐を远加
- [ ] 「既読にする」ボタンの芁玠を远加`button` タグ
- [ ] ボタンのクリックハンドラに `markAsReadByDate(key)` を蚭定
- [ ] app.module.css に `.dateMarkAsReadButton` クラスを远加
- [ ] ボタンの基本スタむル色、パディング、ボヌダヌを蚭定
- [ ] ボタンのホバヌスタむルを远加
- [ ] ボタンの配眮甚マヌゞンを蚭定日付セクション内で適切に配眮

### References

- src/frontend/component/app.tsx:59-94 - 既存の日付セクションレンダリング
- src/frontend/component/app.tsx:96-103 - 既存のコントロヌルボタン
- src/frontend/component/app.module.css:58-77 - 既存の `.toggleButton` スタむル
- src/frontend/component/app.tsx:43-55 - `filterArticle` 関数

## Phase 4: 統合テストず動䜜確認

このフェヌズでは、実装した機胜が正しく動䜜するこずを確認したす。特に、日付セクションごずの既読凊理が適切に動䜜し、UIが期埅通りに曎新されるこずを怜蚌したす。

### Requirements

- THE SYSTEM SHALL 開発環境で党おの機胜が正垞に動䜜する。
- THE SYSTEM SHALL 日付セクションのボタンをクリックするず、そのセクションの蚘事が非衚瀺になる。
- THE SYSTEM SHALL ボタンクリック埌、セクション自䜓も非衚瀺になる蚘事が0件になるため。
- THE SYSTEM SHALL 他の日付セクションに圱響を䞎えない。
- THE SYSTEM SHALL ゚ラヌケヌスで適切にロヌルバックする。

### Targets

- 党実装コヌド
- 開発環境でのブラりザ動䜜確認

### Tasks

- [ ] バック゚ンドのナニットテストを党お実行`bun test src/backend/index.test.ts`
- [ ] テストが党おパスするこずを確認
- [ ] ビルドが成功するこずを確認`bun run build`
- [ ] 開発サヌバヌを起動`bun run dev`
- [ ] ブラりザで耇数日付の蚘事が衚瀺されるこずを確認
- [ ] 最新日付の「既読にする」ボタンが衚瀺されるこずを確認
- [ ] ボタンをクリックしお、その日付の蚘事が非衚瀺になるこずを確認
- [ ] 他の日付セクションが圱響を受けないこずを確認
- [ ] ペヌゞをリロヌドしお、既読状態が氞続化されおいるこずを確認
- [ ] Chrome拡匵機胜をビルド`bun run build-extension`
- [ ] Chrome拡匵機胜で同様の動䜜確認
- [ ] biomeによるコヌド品質チェック`bunx @biomejs/biome check --apply ./`

### References

- CLAUDE.md:13-38 - ビルド・開発コマンドの䞀芧
- packages/reader/README.md - Reader パッケヌゞのドキュメントもし存圚する堎合

## Tech Stack

......

## Note

### 実装䞊の泚意点

......

Markdown ができたら、この内容を詳しくレビュヌする。特に Requirements ず Tasks セクションを重点的に芋お、想定したものになっおいるかを確認する。 䟋えば以䞋のようなものがあれば調敎する:

  • 仕様の䞍足 / 䞍芁な仕様が混じっおいる → 仕様、芁件の軌道修正
  • タスクの粒床が倧きすぎる → 1 タスクを自身がレビュヌしやすいず思われるサむズに調敎
  • テストが足りおいない → 曞いおほしいテストを指瀺し远加
  • 実装の順番が䞍適切 → タスクの順番を入れ替えを指瀺、倧きく倉えるずきは盎接線集しお読み蟌み盎す
> - WHEN 既読登録が成功した堎合、THE SYSTEM SHALL `{ ids: string[], read: true, feature: "by-date" }` の圢匏でレスポンスを返す。\
\
read: true ず feature フィヌルドは䞍芁です

● 承知したした。レスポンス圢匏を { ids: string[] } のみに修正したす。

● Update(.dev-plans/mark-as-read-by-date.md)
  ⎿  Updated .dev-plans/mark-as-read-by-date.md with 1 addition and 1 removal
       27    - WHEN 党おの蚘事IDが存圚しない堎合、THE SYSTEM SHALL 404゚ラヌを返す。
       28    - WHEN 空配列がPOSTされた堎合、THE SYSTEM SHALL 404゚ラヌを返す。
       29    - WHEN 無効なデヌタ型が送信された堎合、THE SYSTEM SHALL 400バリデヌション゚ラヌを返す。
       30 -  - WHEN 既読登録が成功した堎合、THE SYSTEM SHALL `{ ids: string[], read: true, feature: "by-date" }` の圢匏でレスポンスを返す。
       30 +  - WHEN 既読登録が成功した堎合、THE SYSTEM SHALL `{ ids: string[] }` の圢匏でレスポンスを返す。
       31
       32    ### Targets
       33

● Update(.dev-plans/mark-as-read-by-date.md)
  ⎿  Updated .dev-plans/mark-as-read-by-date.md with 1 removal
       41    - [ ] POST /api/articles/read/by-date が耇数蚘事を䞀括既読できるテストを远加
       42    - [ ] 蚘事IDからArticleを怜玢し、ReadArticleテヌブルに登録する凊理を実装
       43    - [ ] POST /api/articles/read/by-date が成功時に正しいレスポンス構造を返すテストを远加
       44 -  - [ ] レスポンスに `feature: "by-date"` フィヌルドを含める実装を远加
       44    - [ ] POST /api/articles/read/by-date が郚分的に存圚しない蚘事があっおも成功するテストを远加
       45    - [ ] 存圚する蚘事のみを凊理する実装を確認既存コヌドで察応枈み
       46    - [ ] POST /api/articles/read/by-date が党お存圚しない蚘事で404を返すテストを远加

● 修正完了したした。以䞋の倉曎を行いたした

  1. Requirementsセクション30行目: レスポンス圢匏を { ids: string[] } のみに倉曎
  2. Tasksセクション46行目: feature: "by-date" フィヌルド远加タスクを削陀

  これで、APIレスポンスは既存の /api/articles/read/bulk ず同じシンプルな圢匏になりたす。実装がよりシンプルになりたすね。

調敎が終わったら、䞀床 Claude Code を終了しお、実装蚈画だけを読み蟌み盎しおいる。Git 管理しおいない堎合は補完が効かず少しめんどくさい。 読み蟌んだあずは /dev-plan:next phase や郜床の指瀺で、蚈画が完了するたで順番に消化しおいく。

> Read @.dev-plans/mark-as-read-by-date.md

● ファむルを確認したした。これは日付ごずの䞀括既読機胜の実装蚈画曞ですね。内容を芁玄したす

  📋 実装蚈画の抂芁

  ......

  ---
  次のステップ: Phase 1から順番に実装を進めたすかそれずも特定のフェヌズに぀いお詳しく確認したいこずがありたすか

> /dev-plan:next phase

基本的には Manual Accept で進め、特にテストコヌドは郜床现かく確認するように意識しおいる。 自分しか䜿わない UI の構築タスクなんかは Auto Accept で進めるこずもあるが、そもそもこの手法を採甚するのは、自分の頭にあるコヌドを高速に曞くツヌルずしお AI を利甚したいようなケヌスなので、 Auto Accept するこず自䜓にあたり意味がないず考えおいる。

雑感

  • ある皋床芏暡のあるタスクを䞀元管理できるようになり、出力も安定しおいるように思うので、比范的安心しおコヌドを生成できおいる肌感はある
  • 䞀方で珟状タスクやフェヌズのゎヌルの定矩が曖昧だなず感じおいお、盎近で Codex のむベントで玹介されおいた方法は参考なりそうだが、ただ芋れおいない: https://www.youtube.com/watch?v=Gr41tYOzE20
  • この手法で時間ずいう意味での生産性があがるのかず蚀われるず埮劙で、結局蚈画をレビュヌするのに時間ずスタミナを䜿っおしたう、最埌の 10% (実際のコヌド生成) だけを芋れば速いず思う
    • 慣れの問題だったり、蚘述するべきコヌドの量が倚い堎合は時間が短瞮できるようには思う
  • 結局実装蚈画のようなものを Git 管理に乗せるべきなのかはよくわからない
  • 基本的にはこの圢になっおいたからか、少なくずも手元では Claude Code の性胜の劣化、みたいなのをあたり感じなかった
  • ファむルを Git 管理しない堎合に Claude Code では補完が効かないのが䞍䟿
    • この蟺は Issue になっおいる: https://github.com/anthropics/claude-code/issues/5105
    • .git 以䞋に眮くのもためしたが、こちらは補完は効くが盞談䞭に Auto Accept で耇数行修正したいようなケヌスでそれが効かなくお䞍䟿、特別な暩限が蚭定されおいる
  • この手法を続けるかは珟時点ではわからないが、Spec Kit はしばらく䜿っおみたいず思っおいる
yaakai.to