TDDを実践してみて感じたこと
公開日 2026/01/09更新日 2026/01/09
TDDを初めてやってみた短い感想。
マインドマップのアプリをTDDで作成している。 私にとって、TDD も テストコードを書きながらの開発もこれが初。 実践前に以下動画を参考にした。(今でも見ている)
TODOリスト作成が大事
TDDの最初のステップとして、システムが満たすべき要件を列挙していく
例: マインドマップのノード操作
- [ ] ノードをクリックすることで選択状態になる
- [ ] ノードを選択状態で Tabキー を押下することで、子ノードを追加する
- [ ] ノードを選択状態で Enterキー を押下することで、兄弟ノードを追加する
- [ ] ノードを選択状態で Deleteキー を押下することで、対象ノードを削除する
- [ ] ルートノードを選択状態で Enterキー を押下しても、兄弟ノードが追加されない
...etc
思いつく限りのケースを列挙した後、テスト容易性・重要性を高めるようブラッシュアップする。 具体的にはテストしにくい要素(入出力やUI操作)を切り離した表現に直していく。
すると、以下のように表現できる。
- [ ] ルートノードに対する追加・削除操作
- [ ] ルートノードを選択状態にできる
- [ ] ルートノードを解除状態にできる
- [ ] 選択状態を変更したとき、更新日時はこうしんしない
- [ ] 子ノードを新規追加できる
- [ ] 兄弟ノードを新規追加できない
- [ ] 削除できない
- [ ] 通常ノードに対する追加・削除操作
- [ ] 選択状態にできる
- [ ] 解除状態にできる
- [ ] 対象ノードの子ノードを新規作成できる
- [ ] 対象ノードの兄弟ノードを新規作成できる
- [ ] 対象ノードを削除できる
... etc
ドメインロジックじゃん。
Vue.jsを使っているので、ノード操作をuseNodeというComposablesに切り出した。
テスト容易なTODOを作成する過程で、UIとロジックを強制的に切り離さざるを得なくなるのが嬉しい。 AIにコードを書かせてもUIとロジックが混じらないし、1つのTODOごとに開発ないしはレビューができるので、品質が担保しやすい。
プロジェクトをコントロールできている感があって良い。気持ちが良い。最高、楽しすぎる。
ちなみに今は UI側って TDD でどうやるんだよ...トホホ... というところで立ち往生している。
参考にしている資料
TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング
テスト駆動開発
単体テストの考え方/使い方