Slide 1

Slide 1 text

© 2024 Loglass Inc. 0 テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 2025年7⽉8⽇ 株式会社ログラス r.kagaya 0

Slide 2

Slide 2 text

1 ⾃⼰紹介 新卒でヤフー株式会社に入社、ID連携システムの開発 2022年に株式会社ログラスに入社 経営管理SaaSの開発、開発生産性向上に取り組んだのち、 生成AI/LLMチームを立ち上げ、複数LLM機能の開発を リード 現在は新規AIプロダクトの立ち上げに従事 株式会社ログラス r.kagaya(@ry0_kaga)

Slide 3

Slide 3 text

2 今日の内容 主にテストが主題で、プラスTDD with Claude Code ● AIコーディングにおけるテストの捉え方 ● Claude CodeでのTDD Claude Code、TDDよりテストが主役になってしまった

Slide 4

Slide 4 text

© 2024 Loglass Inc. 3 我々を取り巻く状況

Slide 5

Slide 5 text

4 1ヶ月前まで https://comemo.nikkei.com/n/n26dc284dcd5a

Slide 6

Slide 6 text

5 1年間の育休からの異世界転生 https://x.com/jamgodtree/status/1927682077719498893

Slide 7

Slide 7 text

6 1年間の育休からの異世界転生 https://x.com/jamgodtree/status/1927682077719498893

Slide 8

Slide 8 text

7 今となってはClaude Codeに大移動 余談: Clade Codeの開発責任者はCursorに移籍したらしい (https://x.com/btibor91/status/1940125489311752306)

Slide 9

Slide 9 text

8 Claude Code開発者の談 https://www.youtube.com/watch?v=Yf_1w00qIKc

Slide 10

Slide 10 text

9 Claude Code開発者の談 https://www.youtube.com/watch?v=Yf_1w00qIKc 「私はもう何ヶ月もユニットテストを書いていない」 「今では手書きコードを書くのが嫌になった。Claudeがあまりにも上手いか ら」 「パンチカードからプロンプトへ」

Slide 11

Slide 11 text

10 AI時代にテストにどう向き合うか?

Slide 12

Slide 12 text

© 2024 Loglass Inc. 11 AIコーディングにおけるテスト

Slide 13

Slide 13 text

12 スタンス テストの価値は変わらない・むしろ大きくなった 一方で捉え方や向き合い方は多少なり変わっていく

Slide 14

Slide 14 text

13 AIコーディングエージェントは変幻自在

Slide 15

Slide 15 text

14 ほとんどの人間よりコーディングに関する知識はある but.. 時たま顔を覗かせる、予測不可能な性質 このスーパー知能を我々は上手く協働・制御しないといけない

Slide 16

Slide 16 text

15 Agentic Coding and Vibe Coding Agentic Coding ● Agentic Codingは、自律的に動く AIエージェントをどのように導くか? オーケストレートするか? ● 「人を増やす」から「Agentを増やす」 へのパラダイムシフト Vibe Coding ● 対話型・人間主導、探索的なアプロー チ https://arxiv.org/pdf/2505.19443

Slide 17

Slide 17 text

16 Agentic Coding and Vibe Coding Agentic Coding ● Agentic Codingは、自律的に動く AIエージェントをどのように導くか? オーケストレートするか? ● 「人を増やす」から「Agentを増やす」 へのパラダイムシフト Vibe Coding ● 対話型・人間主導、探索的なアプロー チ ● https://arxiv.org/pdf/2505.19443 Agentic CodingはAIを「導く」 AIをどこに導きたいか? ゴールに近づいてるかをどう図るか?

Slide 18

Slide 18 text

17 AIのアウトプットを収斂させるゴールと制約と評価(評価関数)をどう与えるか? AIの制約・ガードレールとして機能する歴戦の勇たち ある種のゴール・制約として機能する 通過まで自律的にAIは試行錯誤(勝手にテスト自体を消したりしない限り) ● 型システムによる安全性の 担保 ● 自動テストによる動作保証 ● コーディング規約の自動 チェック 型(Types) テスト(Tests) リント(Lints)

Slide 19

Slide 19 text

18 テストがあるから色々できる 包括的なテストカバレッジがあれば、AIコード生成のリスクは減少する ● テストの範囲で、AIによる多少違和感のあるコードでも受け入れられる ○ なぜなら、テストでその動作は保証されているなら ● 納得いくまでAIにリファクタリングを任せることもできる ○ なぜなら、テストでその動作は保証されているなら テストは仕様を形式化し、AIとも共有可能な「認識の装置」

Slide 20

Slide 20 text

19 Agentic Codingには「明確なゴール・物差し」が必要 目的の場所に辿り着くのをただ祈るだけは辛い (これはこれでバイブスで楽しいが)

Slide 21

Slide 21 text

20 「良い感じに動くようにして」 「全ユニットテストをパスするコードを書いて」

Slide 22

Slide 22 text

21 「良い感じに動くようにして」 「全ユニットテストをパスするコードを書いて」 限りなくシンプル but 確かな目的地の提示

Slide 23

Slide 23 text

22 テストで一つの「理想の状態」をAIに示す テストが落ちること自体が具体的なフィードバック

Slide 24

Slide 24 text

23 ゴールがテストとして示されていれば、 少なくとも”テストを通過するコード”というアウトプッ トを得られる可能性は高い (テストを勝手に消す・コメントアウトするのは辞めさせよう!)

Slide 25

Slide 25 text

24 > "The role is changing from someone who writes code to someone who teaches AI what good code looks like. Tests are the curriculum." > (役割は、コードを書く人から、良いコードとは何かをAIに教える人へと変 わっています。テストがそのカリキュラムなのです。) Kent Beck談 https://newsletter.pragmaticengineer.com/p/tdd-ai-agents-and-coding-with-kent

Slide 26

Slide 26 text

© 2024 Loglass Inc. 25 TDD with Claude Code

Slide 27

Slide 27 text

26 ようやくTDDの話... テストはAIコーディングに有意義と考えていることを 話した

Slide 28

Slide 28 text

27 t-wada氏によるTDD https://levtech.jp/media/article/interview/detail_480/ ・TDDを実践しながらコードを書く感覚をたとえるなら、不確実性にまみれた ソフトウェア開発に少しずつ確実性を持たせていく、一種の陣取り合戦みたい なものです。 ・その中で「こう動いてほしい」という期待を反映したテストを書き、それに対 するコードを書いて、動かしてみる。

Slide 29

Slide 29 text

28 t-wada氏によるTDD https://levtech.jp/media/article/interview/detail_480/ ・TDDを実践しながらコードを書く感覚をたとえるなら、不確実性にまみれた ソフトウェア開発に少しずつ確実性を持たせていく、一種の陣取り合戦みたい なものです。 ・その中で「こう動いてほしい」という期待を反映したテストを書き、それに対 するコードを書いて、動かしてみる。 仕様や設計を見つける・良くしていく過程がTDD 「何を作るべきか」という不明瞭さ、設計に向き合 いつつも、テストはAIを導く印にもなる

Slide 30

Slide 30 text

29 TDD with AI Agents テストをAIへの継続的フィードバック・ガードレールとして活用 振る舞いや仕様準拠の保証がある程度でも出来ていればその部分は安心 ● 期待する動作をテストで定義し、AIへ仕様として提示 ● 自動テストでAIが生成したコードの誤りを即座に検出 ● 包括的なテストスイートで意図しない変更を防止 いかにAI生成コードを信じられる構造を作るか? そして、広範囲かつ高速なテストスイートが欲しくなってくる

Slide 31

Slide 31 text

30 Claude CodeでTDDを行うなら? (正直大したことはやっていない)

Slide 32

Slide 32 text

31 TDD with Claude code 最初の一歩はカスタムコマンド BDD + RGBC(RED-GREEN-BLUE-COMMIT)サイクルを模したカスタムコマンドを定 義

Slide 33

Slide 33 text

32 TDD with Claude code BDD + RGBCサイクル + ドキュメント生成まで行う指示を含め たコマンドを定義

Slide 34

Slide 34 text

33 Swarm Intelligence 同じテストに対して複数の異なる実装を試す ● 例えば、3パターン同時実装からのチェリーピック ● 「とりあえず実装してみてから選ぶ」という贅沢 「今思えばあの設計の方が..でも期限が..」

Slide 35

Slide 35 text

34 Simon Willisonが提唱するPerfect Commit 実装・テスト・ドキュメントのフルセットをコミットに含める AIがあるから低コストで実現可能に https://simonwillison.net/2025/May/28/automated-tests/ カスタムコマンド内でPerfect Commitになるように設定 ● 機能を実現するコード ● その機能が正しく動作す ることを保証するテスト ● コードの使い方や設計意 図の説明 実装(Implementation) テスト(Tests) ドキュメント(Documentatio)

Slide 36

Slide 36 text

35 Perfect Commitの実践例 コミットメッセージにはドキュメント・テストのパスも含める AIが探索する時のコンテキストになる(と信じて) *イメージ

Slide 37

Slide 37 text

36 また別軸の試行錯誤や思考

Slide 38

Slide 38 text

37 テストの高速化大事 (出来ていない)高速で実行される大量のテストを気軽に実行したい Kent Beckによる具体的な数値: 遅いテスト実行は人間にも億劫、言わんばAIもや https://newsletter.pragmaticengineer.com/p/tdd-ai-agents-and-coding-with-kent > 私のテストスイートは300ミリ秒で実行されます。これは、すべての変更後 に実行できるほど速いのです。AIが何かを誤って壊しても、私はすぐに気づ きます。

Slide 39

Slide 39 text

38 試している ピラミッドの上下を手厚くして、砂時計型を目指してみる(Claude Codeの力でテスト生成) Unit Test E2E

Slide 40

Slide 40 text

39 試している ピラミッドの上下を手厚くして、砂時計型を目指してみる(Claude Codeの力でテスト生成) Unit Test E2E E2Eが最も少なくなるのは、コスト、実行 速度、不安定さなどが理由 (一方で某ポータルサイトのID連携システ ムには、ほぼ全てのシナリオを網羅した E2Eがあり、安心感はあった)

Slide 41

Slide 41 text

40 試している ピラミッドの上下を手厚くして、砂時計型を目指してみる(Claude Codeの力でテスト生成) Unit Test E2E 実行の遅さが解消されるかはわからない が、実装コストは確実に下がる (E2Eテストよりもブラウザ自動化エー ジェントな世界かもしれない

Slide 42

Slide 42 text

41 試している ピラミッドの上下を手厚くして、砂時計型を目指してみる(Claude Codeの力でテスト生成) Unit Test E2E いかにAIコードを信用できる構造を作る か?を考えたい E2Eが最適かはさておき、システムレイヤー で振る舞いが保証されているのはわかりや すい例の一つ

Slide 43

Slide 43 text

42 試している ピラミッドの上下を手厚くして、砂時計型を目指してみる(Claude Codeの力でテスト生成) Unit Test E2E AIによってテストのコスト構造が変わった時 に、今と同じ感覚でE2E(相当の何か)を捉 えるべきか?何が変わるのか? (を考えている)

Slide 44

Slide 44 text

43 Googleの「AlphaEvolve」 出典: https://xtech.nikkei.com/atcl/nxt/column/18/03248/062000001/

Slide 45

Slide 45 text

44 Googleの「AlphaEvolve」 出典: https://xtech.nikkei.com/atcl/nxt/column/18/03248/062000001/ 問題と評価式がインプットの世界 考えるべきは評価式。 「良い」や「理想状態」を定義・評価したい

Slide 46

Slide 46 text

45 Googleの「AlphaEvolve」 出典: https://xtech.nikkei.com/atcl/nxt/column/18/03248/062000001/ ソフトウェア開発・コーディングにおけ る評価式/評価関数は?

Slide 47

Slide 47 text

46 AIコーディングエージェントによる開発 is Reconciliation Loop? Reconciliation Loop is 「記述された理想状態と、現在の状態を比較し、その差分がなく なるまで調整する」 そのためには理想状態を定義できること、現在の状態との差分を評価・測れること 宣言的(Declarative)` 継続的(Continuous) 収束的(Convergent) 自己修復的(Self-healing) 46

Slide 48

Slide 48 text

47 AIコーディングエージェントによる開発 is Reconciliation Loop? Reconciliation Loop is 「記述された理想状態と、現在の状態を比較し、その差分がなく なるまで調整する」 そのためには理想状態を定義できること、現在の状態との差分を評価・測れること 宣言的(Declarative)` 継続的(Continuous) 収束的(Convergent) 自己修復的(Self-healing) 47 ここに活用できるのが BDDや形式手法?

Slide 49

Slide 49 text

© 2024 Loglass Inc. 48 まとめ

Slide 50

Slide 50 text

● テストはAIに対する指示書でありフィードバックであり、Reconciliation Loop を回すための評価関数かもしれない ● テストを書くこと自体にもAIコーディングエージェントをどう使うか考える ● Claude Codeでテスト/TDDを行うのにカスタムコマンドやPerfect Commit の取り組みをしている ● Hooksや形式手法ももっとうまく使いたいので、今後の自分に期待 49 まとめ

Slide 51

Slide 51 text

50