Playable!Mobile(AI自動テスト)を使ってみた 

Playable!MobileというAI自動テストが、11月から個人も使えるようになったので、使ってみました

## 🤖Playable!Mobileとは🤖

- 公式サイト
  - https://playable.qa/mobile
- モバイルゲーム開発のQA（品質保証）工程を生成AIで自動化するサービス
  - 対象ゲーム
    - Unity製(Unity 2021.3以降)
    - GUIで操作することでゲームが進行し、リアルタイム性を問わないゲーム
      - InputManager/InputSystemは、現状未対応 
      - 主にモバイルゲームを想定しているが、動作環境の制限は無し 
- 仕組み
  - Unity上のプラグインとツールをWebSocket接続し、ゲームを操作する
  - [概要](https://mobile-docs.playable.qa/unity_plugin/overview.html) 
  - ビルドしたバイナリとUnityEditorで機能します
- 費用
  - 1ライセンスあたり月額5万円
  - 1ヶ月間のトライアル期間中は、無償利用可能 
    - 2024/12/31までは、1ヶ月の制限がないようです

### ドキュメント

- [Playable!](https://docs.playable.qa/)
- [Playable!Mobile](https://mobile-docs.playable.qa/)

### 導入事例

- 魔界戦記ディスガイアRPG ～最凶魔王決定戦！～
  - https://youtu.be/xnHFSXj7sro
> 「Playable!Mobile」の導入により既存のテストの約53％を自動化。不具合を削減し、安定したゲーム環境をユーザー様にお届けすることに貢献しています。

## 導入手順

- ①公式サイトからアカウント登録
- ②Playable! General Agent for Mobileをダウンロード
- ③設定ファイルに生成AIのAPIキー等を設定
   - https://mobile-docs.playable.qa/tool/setup.html
   - OpenAI
     - [この手順](https://ai-workstyle.com/gpt-apikey/)で取得
     - [このページ](https://platform.openai.com/settings/organization/billing/overview)からクレジットを追加
       - 有料版にする必要はないですが、クレジットを入れないと動作しないので注意
   - Azure OpenAI
     - [この手順](https://cptechweb.teldevice.co.jp/hc/ja/articles/17904836139033-Azure-OpenAI-%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AE%E4%BD%9C%E6%88%90%E6%96%B9%E6%B3%95%E3%82%92%E6%95%99%E3%81%88%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84) 
     - 設定ファイルにAPIキーを入れても、動かなかったので断念...
 - ④exeファイルを起動し、セットアップ
   - https://mobile-docs.playable.qa/getting_started/README.html#%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97
   - 設定画面から、使用するLLMとモデルを指定
   - 自分の場合は、 OpenAI/gpt-4o-mini-2024-0718を使いました
- ⑤Playable!Mobile Unity Pluginをダウンロード
- ⑥導入したいプロジェクトに追加
  - 詳細は[こちら](https://mobile-docs.playable.qa/unity_plugin/how_to_install.html) 
- ⑦ツールから、開始ボタンが押して機能すれば、導入完了
  - [起動方法](https://mobile-docs.playable.qa/tool/screens.html#%E3%82%B2%E3%83%BC%E3%83%A0%E8%B5%B7%E5%8B%95%E3%82%B5%E3%83%96%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6)
  -  バイナリの場合
    - 起動したいバイナリのPathを設定。開始を押すとゲームも起動します
  - UnityEditorの場合
    - ゲームバイナリを起動しないにチェックを入れる 
    - UnityEditor側でPlayモードにする
    - その後、開始ボタンを押すと   少し待って接続するEditorが表示されます

* テストシーケンス(エクセル)を使用した自動テストの場合、コマンドラインからの起動も可能です
  * https://mobile-docs.playable.qa/tool/auto_check_cui.html#auto_check_cuiexe 



## 実際に使用

* 検証結果の一部抜粋です。

### デモプロジェクト

* 公式のデモプロジェクトのバイナリで確認

* ライセンスボタンを押して、開いたウィンドウを閉じるよう命令
  * 試行回数が3回なのは気になりましたが、問題なく動作
![検証１.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253409/a7852f77-a71e-f8f9-877f-183e3d39b5bf.gif)


* タップ後、オプション画面を開くよう命令
  * オプション画面を開くまでしか命令していないが、閉じるまでも行いました
  * 雑な命令なので、期待する動作が得られない場合は、他のボタンも押すようでした
![検証2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253409/a0828d4b-bff8-01ca-9fdd-0213eb19f657.gif)

* InputFieldへの入力命令も試したところ、動作することが確認できました。

### 自前のプロジェクト

* アバター編集のデモ画面
  * アバターの設定や装備の編集ができる画面です
  * UnityEditorと接続して試してみました。

* 色々指示を調整した結果の動画がこちら(8倍速)
  * 順番に装備アイコンをクリックしてくれるようになりました
![検証3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253409/0c1875b3-a7ca-6ece-b475-d80366eccacb.gif)

* 引っかかったポイント
  *  UnityEditorとの接続の場合、PlayModeじゃないと認識しない
  *  ボタンを押して、何も画面に変化が起きない場合、
  * リストのスクロール指示が特殊？
    * 下にスクロールしてと命令すると上に引っ張る挙動になる
    * 下にスワイプと解釈されているっぽい？ 
  * 環境と画面構成によっても変わりますが、入力に時間制限のあるものは厳しい
    * 質問に対して回答に時間制限のある画面で検証していたところ、ボタン押下まで間に合わなかった
    * 画面がアニメーションで細かく変化するとツール側が画面を分析し直すのも相まって、命令の実行まで20秒ぐらいかかることがありました。  


## 所感

* Windowsへの導入は簡単で👍️
  * macはexeを実行できるように環境構築しないといけないっぽい？

* UGUIしか対応していないのは、注意が必要  
  * 作っていたゲームで、何かキー入力orタッチしたら進行するという判定にしていたのを忘れていて、ずっと待機状態となっていた

* 30分ぐらい使って、117API/9919974トークン/1.5ドル(OpenAI/gpt-4o-mini-2024-0718)
  * 個人で使うのは割に合うかというと難しいところ
    * 実際に運用してみないとまだ費用感が読めない

* チューニングするまでが大変そうかも？
  * 設定が結構あるので、理想の自動テストになるまでが苦戦しそう
  * Playable側で操作対象のUIのヒエラルキーの階層と名前が取得できているので、絡められると上手くいきそう
  * 今回使っていないが、以下の設定も駆使すると良さそう
    * 不許可アクションリスト
    * 知識グラフ
    * 画面遷移グラフ
  * 自動テストで各画面を学習させると最適化されるようですが、画面が複雑ほど時間とお金がかかりそう

* エクセルでのテストシーケンス
  * 今回試していないが、画像やテキストチェック、チェック成功時失敗時の指示ができるのは良さそう

* サービスの将来性
  * 今のところは2週間毎ぐらいで更新されている(不具合の修正や設定の追加等)
  * Unityだと正式リリースされていない機能
    * 以下の２つは、Unity側でも使えますが、正式リリースされていない機能です
      * 2024/04以降情報が更新されていないので、開発状況不明
    * [Playthrough Tester](https://docs.playable.qa/playthrough-tester)
      *  記録した人間の操作をお手本にして、ゲームの通しプレイを自動で行うためのツール
    *  [Collision Checker](https://docs.playable.qa/collision-checker)
      * 事前に自動解析したゲームの地形データを元にコリジョンチェックを行い、 そのテスト結果を可視化してコリジョン抜けを発見しやすくするためのツール 
  * 追加実装予定の機能
    * 並列実行を支援するための新機能および環境整備
    * 監視やリトライ機能など、テスト長期実施時の安定実行を担保するための機能強化
    * 動画録画機能やテスト結果の分析レポートなど、自動実行時のエビデンスを担保するための機能強化