Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AI Adaptable なテストを整える工夫 / Ways to Make Your Tes...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

AI Adaptable なテストを整える工夫 / Ways to Make Your Tests AI-Adaptable

登壇者名:佐藤 拓人
登壇したイベントタイトル:歴史あるプロダクトで、"AIに任せられる領域"をどう広げるか?TSKaigi アフターイベント
登壇したイベントのURL:https://bitkey.connpass.com/event/390408/

More Decks by 株式会社ビットキー / Bitkey Inc.

Other Decks in Technology

Transcript

  1. 3 Copyright © 2025 Bitkey Inc. All right reserved. テストを上手く活用して

    間接的に検査できるようにしよう! 1. はじめに Message
  2. 4 Copyright © 2025 Bitkey Inc. All right reserved. 自己紹介

    2015.04 2019.05 2020.01 大学(建築学専攻)卒業後、 株式会社ワークスアプリケーションズに入社 会計システムのソフトウェア開発を担当 特に財務会計の仕訳関連 ビットキーへ参画 ECサイトの開発 / 保守、社内システムの開発 TaKuTyの開発 今のhomehub事業の前身となるResidenceチームに配 属。スマートロックを扱う管理画面やバックエンド、 スマホアプリの開発に従事 Now homehub事業のプロダクト責任者 複雑な事象を読み解いて構造化し、抽象化 / 汎用化で きるように設計し、低コストで多くの価値をだせる開 発をすることを好む 佐藤 拓人 Sato Takuto @takuuuuuuu777
  3. 5 Copyright © 2025 Bitkey Inc. All right reserved. 自己紹介

    2015.04 2019.05 2020.01 大学(建築学専攻)卒業後、 株式会社ワークスアプリケーションズに入社 会計システムのソフトウェア開発を担当 特に財務会計の仕訳関連 ビットキーへ参画 ECサイトの開発 / 保守、社内システムの開発 TaKuTyの開発 今のhomehub事業の前身となるResidenceチームに配 属。スマートロックを扱う管理画面やバックエンド、 スマホアプリの開発に従事 Now homehub事業部のビジネス業務改善担当 homehub事業のプロダクト責任者 複雑な事象を読み解いて構造化し、抽象化 / 汎用化で きるように設計し、低コストで多くの価値をだせる開 発をすることを好む 佐藤 拓人 Sato Takuto @takuuuuuuu777
  4. 6 Copyright © 2025 Bitkey Inc. All right reserved. 自己紹介

    佐藤 拓人 Sato Takuto @takuuuuuuu777 Before @TSKaigi 2024 After -25kg ベンチプレス Max 130kg
  5. 7 Copyright © 2025 Bitkey Inc. All right reserved. 目次

    1. はじめに 2. 現在の取り組みと工夫 3. TSKaigi 2026 での気づき 4. まとめ
  6. 10 Copyright © 2025 Bitkey Inc. All right reserved. 1.

    はじめに いつテストを書くか? from lacolaco
  7. 13 Copyright © 2025 Bitkey Inc. All right reserved. 1.

    はじめに AI時代の戦略的アーキテクチャ
  8. 14 Copyright © 2025 Bitkey Inc. All right reserved. 1.

    はじめに AI時代の戦略的アーキテクチャ (仮説) 人間が責任を取る ステークホルダーはその人間を介して プロダクトを信頼をする 構造はしばらく維持されるのでは?
  9. 15 Copyright © 2025 Bitkey Inc. All right reserved. Page

    Title Sample 1. はじめに AI時代の戦略的アーキテクチャ
  10. 16 Copyright © 2025 Bitkey Inc. All right reserved. 変遷(予想)

    人間が操縦 AIがサポート AIが操縦 人間がサポート AIが完全操縦 人間は管理/制御 フルAI 人間は責任をとる 1. はじめに AI時代の戦略的アーキテクチャ
  11. 17 Copyright © 2025 Bitkey Inc. All right reserved. 「検査」を「タイミング」「基準」で構造化する

    1. はじめに AI時代の戦略的アーキテクチャ 客観 x 予防 主観 x 予防 客観 x 回復 主観 x 回復
  12. 18 Copyright © 2025 Bitkey Inc. All right reserved. 「検査」を「タイミング」「基準」で構造化する

    1. はじめに AI時代の戦略的アーキテクチャ 客観 x 予防 主観 x 予防 客観 x 回復 主観 x 回復
  13. 20 Copyright © 2025 Bitkey Inc. All right reserved. 1.

    Section Title Page Title Sample 間接的な検査で責任を取れるようにする そのために... 仕組みの整備・多角的な検査が必要
  14. 22 Copyright © 2025 Bitkey Inc. All right reserved. 2.

    現在の取り組みと工夫 現在の開発プロセス 1 3 [準備] ゴールの定義 with AI & PdM & Developer 4 2 [設計] 要件整理 with AI & PdM & Developer [設計] システム設計 with AI & Developer [設計] テスト分析 / 設計 with AI & Developer & QA 5 7 [実装] AIがコーディング & テスト作成 Only AI 8 6 [レビュー ] コンポーネント構造 with AI & Developer [レビュー ] テスト観点 with AI & Developer & QA [レビュー ] (必要であれば) 実装詳細 with AI & Developer ※ 参考
  15. 23 Copyright © 2025 Bitkey Inc. All right reserved. テスト観点のレビューの方針

    基本方針 ・実装されたコードやテストの実装の詳細は確認しない ・テスト観点や対象としているケースの妥当性を確認する ・妥当性の判断のためにIFや周辺のコンポーネントとの関係性  は理解しつつ進める ※ ソースコードを全く確認しない...ということに価値は感じているわけではない   間接的な方法で検査できる状態を構築したい 2. 現在の取り組みと工夫
  16. 24 Copyright © 2025 Bitkey Inc. All right reserved. 取り組みその1

    describeに観点 itにケース を記載してチェック! … 2. 現在の取り組みと工夫
  17. 25 Copyright © 2025 Bitkey Inc. All right reserved. 取り組みその1

    describeに観点 itにケース を記載してチェック! … 2. 現在の取り組みと工夫 妥当性が判断しづらい なぜその観点で充足する としたのかがわからない ...
  18. 26 Copyright © 2025 Bitkey Inc. All right reserved. 取り組みその2

    JSDocにテスト観点を整理させて、それを確認する 2. 現在の取り組みと工夫
  19. 27 Copyright © 2025 Bitkey Inc. All right reserved. 取り組みその2

    JSDocにテスト観点を整理させて、それを確認する 2. 現在の取り組みと工夫 マシになったけど、見づらいテー ブルとか... つらすぎる ...
  20. 28 Copyright © 2025 Bitkey Inc. All right reserved. html形式で出力させる

    取り組みその3 2. 現在の取り組みと工夫 ・・・
  21. 30 Copyright © 2025 Bitkey Inc. All right reserved. 取り組みその3

    ・html形式で出力することで視認性が格段に向上した! ・一方で、テストが適切でないことも... ・特にデータベースと結合してテストする際の準備データが  不適切であることが多かった... 補足: ・JSDocに一次情報を整理させた上で、二次情報としてhtmlを出力させています ・htmlをベースにAIと対話して修正した上で、最終的にhtml、JSDoc、テスト実装  が整合性とれる状態にしてもらっています 2. 現在の取り組みと工夫
  22. 31 Copyright © 2025 Bitkey Inc. All right reserved. 取り組みその4

    テストデータの作成の仕方だけ定型化  →共通的な処理は切り出して管理する  →Builder Patternを活用した形式で実現 2. 現在の取り組みと工夫
  23. 32 Copyright © 2025 Bitkey Inc. All right reserved. ・変数を使い回すと見通しが悪くなる

    ・適切にテストの準備がされているか  判断し難い... ・特にリレーション...何が何に紐づいてる  かわからない ・結果として確認しなくなる、というか  できない... Builder Patternの活用 2. 現在の取り組みと工夫
  24. 33 Copyright © 2025 Bitkey Inc. All right reserved. Builder

    Patternの活用 2. 現在の取り組みと工夫 ・Builder Patternを活用して変数の使い  回しを閉じ込める ・リレーションは直前に作成されたデー  タに紐づけるとする ・見通しが良くなる ・準備データの妥当性を確認しやすく  できる!!!! ※ Builder Class内部の実装は精査をする  or AIを信じる...必要がある ※ 個人的にはあまりに複雑なことをさせなければ信じ て良いと考えている
  25. 34 Copyright © 2025 Bitkey Inc. All right reserved. Builder

    Patternの活用 2. 現在の取り組みと工夫 Builder Classの実装全体像
  26. 35 Copyright © 2025 Bitkey Inc. All right reserved. Builder

    Patternの活用 2. 現在の取り組みと工夫 Builder Classの実装全体像
  27. 37 Copyright © 2025 Bitkey Inc. All right reserved. TSKaigi

    2026 振り返り 1. TSKaigi 2026 での気づき
  28. 39 Copyright © 2025 Bitkey Inc. All right reserved. 1.

    はじめに いつテストを書くか? from lacolaco 【注意事項】 発表を公聴できていません ... スライドや Xの反応をもとに 私なりの理解で整理しています 本来の意図と乖離があるかも しれないので悪しからず ...
  29. 45 Copyright © 2025 Bitkey Inc. All right reserved. テストの目的

    高結合のテスト (lacolacoさんの発表) ・不安の解消 (検査方法としての活用) ・ 低結合のテスト (lacolacoさんの発表) ・構造フィードバック (検査方法としての活用) ・ 3. TSKaigi 2026 での気づき
  30. 46 Copyright © 2025 Bitkey Inc. All right reserved. 気づき

    ・これまでは構造的なチェックは、システム設  計や、コンポーネントの構造のレビューで実  施していた ・確かにテストから構造的なFBを得ることがで  きる!! 高結合のテスト (lacolacoさんの発表) ・不安の解消 (検査方法としての活用) ・期待すべき振る舞いが実現されているかの検証 / 確認 低結合のテスト (lacolacoさんの発表) ・構造フィードバック (検査方法としての活用) ・テスト戦略のマッピングを通じた構造の妥当性判断 テストの目的 3. TSKaigi 2026 での気づき
  31. 47 Copyright © 2025 Bitkey Inc. All right reserved. ケーススタディ

    ケーススタディ 3. TSKaigi 2026 での気づき
  32. 50 Copyright © 2025 Bitkey Inc. All right reserved. 3.

    TSKaigi 2026 での気づき ケーススタディ (Sample ユースケース) [前提]  入居者が自身の部屋にICカードを登録し たら、マンションのエントランスも同じ カードで解錠できるようになっている [対応]  退去にともなって、利用可能となってい るICカードを利用不可としたい。エントラ ンスに設置されている連携デバイス経由 で、エントランスの解錠デバイスを解錠す るための認証データを認証デバイスから削 除して欲しい。
  33. 51 Copyright © 2025 Bitkey Inc. All right reserved. 3.

    TSKaigi 2026 での気づき ケーススタディ (Sample 実装) 登録済みのカードを 利用不可とする! [前提]  入居者が自身の部屋にICカードを登録し たら、マンションのエントランスも同じ カードで解錠できるようになっている [対応]  退去にともなって、利用可能となってい るICカードを利用不可としたい。エントラ ンスに設置されている連携デバイス経由 で、エントランスの解錠デバイスを解錠す るための認証データを認証デバイスから削 除して欲しい。
  34. 52 Copyright © 2025 Bitkey Inc. All right reserved. 3.

    TSKaigi 2026 での気づき ケーススタディ (Sample 実装 & テスト) ・・・ ・・・
  35. 53 Copyright © 2025 Bitkey Inc. All right reserved. 3.

    TSKaigi 2026 での気づき ケーススタディ (Sample テスト観点) ・・・ Effective Key: カードやパスコードなど、スマートロックを解錠 するための手段 TDS: Effective Keyが指定のスマートロックで利用で きるか否かのステータス 使えるようにデバイスに通信はしているが結果 を受け取れなかったので、使えるかどうかわか らない...みたいステータスもありえる
  36. 54 Copyright © 2025 Bitkey Inc. All right reserved. 1.

    Section Title ・・・ ・・・ Unit Test (低結合テスト ) Integration Test (高結合テスト、 DBと結合)
  37. 55 Copyright © 2025 Bitkey Inc. All right reserved. 1.

    Section Title ・・・ ・・・ Unit Test (低結合テスト ) Integration Test (高結合テスト、 DBと結合) 高結合のテスト (=不安の解消 ) 振る舞いの確認をするので OK
  38. 56 Copyright © 2025 Bitkey Inc. All right reserved. 1.

    Section Title ・・・ ・・・ Unit Test (低結合テスト ) Integration Test (高結合テスト、 DBと結合) 低結合のテスト (=構造のFB) 多くの低結合のテストが 必要となってしまっている ...
  39. 57 Copyright © 2025 Bitkey Inc. All right reserved. 3.

    TSKaigi 2026 での気づき ケーススタディ 登録済みのカードを 利用不可とする! ・・・
  40. 58 Copyright © 2025 Bitkey Inc. All right reserved. ・・・

    3. TSKaigi 2026 での気づき ケーススタディ 登録済みのカードを 利用不可とする! ここのロジックの妥当性を確認するために mock活用して低結合のテストが作成されている
  41. 59 Copyright © 2025 Bitkey Inc. All right reserved. ・・・

    3. TSKaigi 2026 での気づき ケーススタディ 登録済みのカードを 利用不可とする! ここのロジックの妥当性を確認するために mock活用して低結合のテストが作成されている テスタブルではない ...!
  42. 60 Copyright © 2025 Bitkey Inc. All right reserved. 1.

    Section Title Page Title Sample 実際に修正してもらおう!
  43. 61 Copyright © 2025 Bitkey Inc. All right reserved. 1.

    Section Title ケーススタディ 純粋関数として、 「InvalidateTreasureDataLogic」 が切り出された!! ・・・ 元々のドメインサービスの単体テストで 対象としていた組み合わせと同等
  44. 62 Copyright © 2025 Bitkey Inc. All right reserved. 1.

    Section Title ケーススタディ 元の Domain Service はシンプルに、低結合のテストは必要最低限に! Unit Test (低結合テスト ) Integration Test (高結合テスト、 DBと結合) ・・・ ・・・
  45. 64 Copyright © 2025 Bitkey Inc. All right reserved. 主張

    ・AIの成果物を間接的に検査できる仕組みの構築が必要 ・テストはその検査方法の1つとして機能する ・テストそのものより、目的や意図を検査できる状態とすることが重要 ・そのためにhtml化や、データ準備の作成方法を整えることは意味がある 学び ・高結合 / 低結合 のテストで検査の対象が異なる ・高結合のテストは、ちゃんと動作するのか?を検査できる ・低結合のテストは、構造が妥当かを間接的に検査できる 4. まとめ 主張 & 学び
  46. 65 Copyright © 2025 Bitkey Inc. All right reserved. 4.

    まとめ お気持ち ・この時代において、具体的なアプローチや詳細な内容のもつ価値は以前と比べて  低くなっていると感じる ・新しい気づきを与えられるか?...ということの価値が増していると感じる ・この点でlacolacoさんの発表は素晴らしく、みんなが知っている「テスト」に  対してのこれまでとは異なる解釈の仕方という気づきを与えてくれた。 お気持ち
  47. 66 Copyright © 2025 Bitkey Inc. All right reserved. 4.

    まとめ お気持ち ・この時代において、具体的なアプローチや詳細の内容のもつ価値は以前と比べて  低くなっていると感じる ・新しい気づきを与えられるか?...ということの価値が増していると感じる ・この点でlacolacoさんの発表は素晴らしく、みんなが知っている「テスト」に  対してのこれまでとは異なる解釈の仕方という気づきを与えてくれた。 お気持ち 私の発表を通じて 何かしら気づきを得て いただけたら幸いです!
  48. 67 Copyright © 2025 Bitkey Inc. All right reserved. 5.

    おまけ ・We are Hiring!!!  特に私と一緒に、AIを活用した開発プロセスを整備ながら  非常に難易度の高い事業のコアドメインの開発を  促進してくれるメンバーを強く募集しています!!!! ・Herp 社と「Effect」をテーマにイベント実施予定!  TSKaigi 2026で、Effectを廃止する発表をした私 (ビットキー)と  Effectを新たに活用しようとする発表をした Herpのメンバーとイベントします! ← TSKaigi 2026の発表資料