[{"data":1,"prerenderedAt":134},["ShallowReactive",2],{"content-doc:article:/articles/tdd":3,"content-surroundings:article:/articles/tdd":123},{"id":4,"title":5,"body":6,"date":107,"description":108,"extension":109,"kind":110,"meta":111,"navigation":112,"ogImage":113,"path":114,"seo":115,"sitemap":116,"stem":118,"tags":119,"updatedAt":107,"__hash__":122},"article/articles/tdd.md","TDDを実践してみて感じたこと",{"type":7,"value":8,"toc":100},"minimark",[9,13,21,26,29,32,43,46,49,55,58,65,68,71,74,78],[10,11,12],"p",{},"マインドマップのアプリをTDDで作成している。\n私にとって、TDD も テストコードを書きながらの開発もこれが初。\n実践前に以下動画を参考にした。（今でも見ている）",[10,14,15],{},[16,17,18],"a",{"href":18,"rel":19},"https://www.youtube.com/live/Q-FJ3XmFlT8?t=2515&si=Kw7gGkyqHJb6sDZN",[20],"nofollow",[22,23,25],"h2",{"id":24},"todoリスト作成が大事","TODOリスト作成が大事",[10,27,28],{},"TDDの最初のステップとして、システムが満たすべき要件を列挙していく",[10,30,31],{},"例: マインドマップのノード操作",[33,34,39],"pre",{"className":35,"code":37,"language":38},[36],"language-text","- [ ] ノードをクリックすることで選択状態になる\n- [ ] ノードを選択状態で Tabキー を押下することで、子ノードを追加する\n- [ ] ノードを選択状態で Enterキー を押下することで、兄弟ノードを追加する\n- [ ] ノードを選択状態で Deleteキー を押下することで、対象ノードを削除する\n- [ ] ルートノードを選択状態で Enterキー を押下しても、兄弟ノードが追加されない\n...etc\n","text",[40,41,37],"code",{"__ignoreMap":42},"",[10,44,45],{},"思いつく限りのケースを列挙した後、テスト容易性・重要性を高めるようブラッシュアップする。 具体的にはテストしにくい要素（入出力やUI操作）を切り離した表現に直していく。",[10,47,48],{},"すると、以下のように表現できる。",[33,50,53],{"className":51,"code":52,"language":38},[36],"- [ ] ルートノードに対する追加・削除操作\n  - [ ] ルートノードを選択状態にできる\n  - [ ] ルートノードを解除状態にできる\n  - [ ] 選択状態を変更したとき、更新日時はこうしんしない\n  - [ ] 子ノードを新規追加できる\n  - [ ] 兄弟ノードを新規追加できない\n  - [ ] 削除できない\n- [ ] 通常ノードに対する追加・削除操作\n  - [ ] 選択状態にできる\n  - [ ] 解除状態にできる\n  - [ ] 対象ノードの子ノードを新規作成できる\n  - [ ] 対象ノードの兄弟ノードを新規作成できる\n  - [ ] 対象ノードを削除できる\n... etc\n",[40,54,52],{"__ignoreMap":42},[10,56,57],{},"ドメインロジックじゃん。",[10,59,60,61,64],{},"Vue.jsを使っているので、ノード操作を",[40,62,63],{},"useNode","というComposablesに切り出した。",[10,66,67],{},"テスト容易なTODOを作成する過程で、UIとロジックを強制的に切り離さざるを得なくなるのが嬉しい。 AIにコードを書かせてもUIとロジックが混じらないし、1つのTODOごとに開発ないしはレビューができるので、品質が担保しやすい。",[10,69,70],{},"プロジェクトをコントロールできている感があって良い。気持ちが良い。最高、楽しすぎる。",[10,72,73],{},"ちなみに今は UI側って TDD でどうやるんだよ...ﾄﾎﾎ... というところで立ち往生している。",[75,76,77],"h3",{"id":77},"参考にしている資料",[10,79,80,85,88,93,95],{},[16,81,84],{"href":82,"rel":83},"https://www.youtube.com/watch?v=Q-FJ3XmFlT8",[20],"TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング",[86,87],"br",{},[16,89,92],{"href":90,"rel":91},"https://www.amazon.co.jp/%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA-Kent-Beck/dp/4274217884?tag=googhydr-22&source=dsa&hvcampaign=books&gad_source=1",[20],"テスト駆動開発",[86,94],{},[16,96,99],{"href":97,"rel":98},"https://www.amazon.co.jp/%E5%8D%98%E4%BD%93%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E8%80%83%E3%81%88%E6%96%B9-%E4%BD%BF%E3%81%84%E6%96%B9-Vladimir-Khorikov/dp/4839981728?tag=googhydr-22&source=dsa&hvcampaign=books&gad_source=1",[20],"単体テストの考え方/使い方",{"title":42,"searchDepth":101,"depth":101,"links":102},2,[103],{"id":24,"depth":101,"text":25,"children":104},[105],{"id":77,"depth":106,"text":77},3,"2026-01-09T00:00:00.000Z","TDDを初めてやってみた短い感想。","md","essay",{},true,null,"/articles/tdd",{"title":5,"description":108},{"loc":114,"lastmod":117},"2026-01-09","articles/tdd",[120,121],"life","routine","YC_Xd03rXjIBWHwBZyQEzg3CQe7V3HTQisXIzxskVfQ",[124,129],{"title":125,"path":126,"stem":127,"date":128,"children":-1},"開発環境現状確認 2026","/articles/dev-env-2026","articles/dev-env-2026","2026-01-18T00:00:00.000Z",{"title":130,"path":131,"stem":132,"date":133,"children":-1},"target='_blank'なリンクが開かない","/articles/target-blank-not-working-with-disqus","articles/target-blank-not-working-with-disqus","2025-08-24T00:00:00.000Z",1772952405473]