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

無料でAIを使用した探索的テストをしたい〜 .NET × Appium × Apple In...

無料でAIを使用した探索的テストをしたい〜 .NET × Appium × Apple Intelligence で Robo Test 風ツールを作った 〜

2026/10/24(土)に開催された .NETラボ 勉強会 2026年10月( https://dotnetlab.connpass.com/event/400124/ ) に参加した時に当日受付LTで発表した資料です。 #dotnetlab

Avatar for なかしょ

なかしょ

October 24, 2026

More Decks by なかしょ

Other Decks in Technology

Transcript

  1. 無料でAIを使用した 探索的テストをしたい 〜 .NET × Appium × Apple Intelligence で

    Robo Test 風ツールを作った 〜 2026/10/24 .NETラボ 10月勉強会 当日LT NTTテクノクロス株式会社 中島進也
  2. 自己紹介 • なかしょ(中島進也) @nakasho_dev • 所属:NTTテクノクロス株式会社 デジタルトランスフォーメーション事業部 • 業務:MaaS関連のスマートフォンアプリ開発担当 •

    趣味: ➢妻とモンハンデート ➢AI+モバイル+地理空間情報システム ➢IT関連の勉強会(主にAI系 or モバイル系 or アジャイル系 or Microsoft系) ➢技術コミュニティの運営スタッフ ✓ AI Dev Day 2026 ✓ eXtreme Programming Japan User Group(XPJUG) 2019〜 ✓ TDD BootCamp Online (TDDBC) 2020〜 ※本資料は私個人の意見であり、所属企業・部門見解を代表するものではありません。
  3. Robo Test のようなものを手元で作りたい Firebase Robo Test 手元で欲しいもの ・アプリを自動で操作して巡回 ・無料で何度でも回せる ・画面遷移とスクショを記録

    Apple Intelligenceを使用 ・クラッシュを検出 ・Emulator / Mac で動く ・クラウドの実機で実行 ・画面ごとのルールで制御 ・.NET で作って拡張できる → RoboTest Explorer(.NET 10 / Appium / Apple Intelligence) 7
  4. 探索的テストとは テストの設計と実行を、触りながら同時に進める ① 触る ② 観察する ③ 次を決める 画面を操作する 画面・状態を記録

    どこを触る? ↺ ③ から ① へ戻って繰り返す 自動化の肝は「次にどこを触るか」の判断 8
  5. 探索にはルールベースもAIも必要 ルールベース(決定論) AI(判断支援) ・禁止操作を必ず除外 (購入・削除・共有) ・画面ごとの操作の優先度を JSON で定義 ・同じ入力なら同じ結果 ・候補が同点で迷った時だけ

    ・画面の意味を読んで選ぶ ・既存の候補IDから選ぶだけ (任意の操作はさせない) 出力例 {"candidateId":"c2","reason":"詳細へ進むため"} JSON Schema で検証 → 失敗・Timeout 時はルールへ 9
  6. Microsoft.Maui.Essentials.AIで Apple Intelligence を LLM として使う Foundation Models ・Mac 上のオンデバイス

    LLM ・無料・オフライン ・画面の情報が外に出ない ・JSON Schema の構造化出力 // Microsoft.Maui.Essentials.AI IChatClient ai = new AppleIntelligenceChatClient(); var res = await ai .GetResponseAsync(msgs, opt); IChatClient なので他の LLM と同じコードで扱える ※ Preview版。macOS 26 / Apple Silicon / Xcode 26 が必要 10
  7. 全体構成 127.0.0.1 HTTP 画面Rule JSON AppleAiHost Foundation Models Robo Test

    Explorer 探索 Worker Secret .NET 10 環境変数 Appium Server UiAutomator2 / XCUITest 保存 API + Viewer Cytoscape.js 読取 RDB(SQLite) + スクショ画像 Android Emulator iOS Simulator すべてローカルで完結 / 端末操作は C# が実行し、AI は候補を選ぶだけ 11
  8. デモアプリを探索した結果 60 14 Step 状態 46 22 遷移 AI判断 禁止操作の実行

    0 回 学び:遷移アニメ中の誤認 → 操作後の待機と画面の安定化で解決 12
  9. Cytoscape.js で状態遷移を可視化 ・状態 = Node (画面ID + 状態キー) ・操作 =

    Edge(Tap / Back) ・Node クリックでスクショ表示 cytoscape({ container, elements, layout: { name: 'cose' } }); API が elements 形式の JSON を返す 13