AIQVE ONEで使っている4つのツールの紹介

飛澤正人氏(以下、飛澤):よろしくお願いします。飛澤です。今日はQAツールの紹介ということで、AIQVE ONEで実際に使っているツールの紹介をしたいと思います。

自己紹介です。ちょうどPCエンジンが世の中に出た頃でしょうか。その頃にハドソンという会社に入り、そこでプログラマーやディレクターをしていました。そのうちに、ハドソンの中の品質管理部門で家庭用ゲームや、最後のほうはモバイルゲームなどのQAを担当していました。

2015年からは違う会社に移り、テスト業務の品質向上やコスト削減を目指して、AI自動化グループでテストの自動化に取り組んでいました。その関係もあって、今はAIQVE ONEにお世話になり、QAツールの真っ只中で、一緒にやっている感じです。

AutoTesterの特徴

それでは、実際に使っているツールを紹介します。4つあります。AutoTesterとVideoCloud、AutoMapper、BTSTransporterです。

まずはAutoTesterです。こちらはゲームを自動化するために開発した、独自のテスト自動化ツールです。これは回帰テストや通しテスト、シナリオテストに最適です。今はゲームを中心に使っていますが、スマホで動くものであれば、ほとんど全部動きます。

(スライドの)左画面の中央ペインを見てもらいたいのですが、基本的にはPythonを使って、左画面の右ペインは接続しているスマホの画面が出ていて、画像を切り貼りして、貼り付けて、イメージをマッチングさせながら自動化していくツールになっています。

このAutoTesterの特徴ですが、手順が決まっているテストの部分の自動化がメインになっています。今のところ、AndroidやiOSのスマホの画面キャプチャーが可能です。あと、テスト実行レポートとして、実行時の動画やスクリーンショットなどをレポートとしてブラウザで閲覧できます。

中身というか、シナリオ自体はPythonや中の簡易コマンドで作成でき、1回作ったシナリオは、だいたい再利用が可能です。多少なにかが変わったとしても、例えば画像を貼り付け直したりで対処しています。

AutoTesterを使う効果

このツールを使うことの効果です。デバッグ業務などでは繰り返し作業のテストがけっこうありますが、そこのテスト工数が大幅に削減できます。

あとは、属人化というか、慣れた人しかできない作業を自動化テストにすることで、いつでも標準的な手順として効率化が図れるようになります。もちろん、毎回同じ手順を踏むのでムラがなくなり、テストの品質が向上することもあります。

このツールを使って、例えば、スマホのソーシャルゲームのガチャをずっと引き続けて登場アイテムを確認したり、あと確率を検証したり。地道にずっと自動でやってくれるので、かなり有効に使えると思います。

実際に自動化するスクリプトを作る、ツールの中の様子です。Assistant画面でコマンドを選択して、Script画面で貼り付け。あとは選択したデバイスの画面からイメージを切り貼りしてきて、Script画面に貼り付けていきます。実行したときには、下の部分に、実行しているログがどんどん吐き出される感じになります。

実行が終わったときは、レポートを出せます。ここで動画が見えたり、もしくはなにかスクリーンショートを下でどんどん見えたりできます。

今までの部分だと、Pythonのプログラムを多少知っていないと、なかなかシナリオが書けませんでした。しかし、最近はビジュアルプログラミング化といって、AutoTesterをWebクライアントからコントロールするものがあります。

Blocklyを組み合わせて、ビジュアル的にスクラッチ的なものでどんどん組み立てられるようになっています。スクラッチ的なものでどんどん組み立てられるので、テスト現場でプログラムを知らないスタッフでも、わりと簡単にシナリオ作成ができるようになりました。

実際、弊社内のテスト現場で、プログラムを知らない子たちが最近作り始めていますが、もしかすると、依頼されている案件のテスト全体の半分ぐらいを自動化してしまうぐらいの勢いで、今どんどんシナリオを作っているような状態です。

AutoTesterの動き

実際の画面をちょっと見せます。

(動画再生開始)

こんな感じでWebクライアントを起動します。こちらは、従来あるAutoTesterの部分です。今回はどんなテストケース名にしようかを入力して、こちらに見えているのが、つながっている端末の画面です。ここから切り貼りしていきます。

「タップする」というコマンドを持ってきて、今切り取ってきた画像をそこにカチッとはめる。さらに次に何をしようかも、画像を切り取っていきます。こんな感じでやっています。

最初は、ホーム画面からこのアイコンをタップして、ゲームを起動させて、タイトル画面。タイトル画面を認識するのに、この「あばれ旅」というところを認識しようと。さらにタイトル画面が現れたら、今「タップする」となっているところを「『はじめから』をタップする」に組み立てているところです。

ここでもう分岐もできますが、「このメッセージがあれば、これをタップ」を今組み立てています。こんな感じでどんどん作っていき、このあたりは10回繰り返すとか。そういうコマンドも用意されています。

(動画再生終わり)

という感じで、シナリオを作っているところでした。次に、さらにこれを実行させるところをご覧ください。

(動画再生開始)

これをPythonで書いたらこうなるってプログラムで、左画面の下ペインがログです。これは全部自動で動いています。このような感じで実行できます。

(動画再生終わり)

というのがAutoTesterでした。今我々はこれを使ってテストケースをいろいろ作っています。約20~30パーセントをこのツールで自動化できれば、というところを目指して、各案件で導入しています。

VideoCloudの特徴と効果

では、次にVideoCloudを紹介します。VideoCloudは、スマホやPC、あとSwitchやプレステなどの画面を、どんどんクラウド上に録画して、ブラウザで再生して見れるツールです。

このツールは今まではスマホ専用に作っていました。しかし、最近になってコンシューマゲーム機にも対応して、HDMIでつながる機器であれば、だいたい録画できるようになっています。

ずっと録画できるというか、PCのローカルに置くことなくずっと保存できるので、容量を心配したりが不要になります。

ずっと録っている動画をどうやって報告に使うかというと、不具合が発生しているところをトリミングして、トリミングした画像を見せるような方法をとっています。トリミングしたときに発行されるURLで、そこの画像を見てもらう感じになります。

セキュリティ対策としてですが、DBはもちろんプロジェクトごとに違います。コンテナも違います。アクセス制限はグローバルIPでかけています。あとは、誰かが誤ってYouTubeに流してしまったなどが起きづらいように、クラウド上の動画ファイルのダウンロードができないような運用にしています。

効果ですが、作業開始から終了まで、ずっと撮っていることが前提でやっているので、撮り忘れがありません。例えば「今不具合が発生したんだけど、ああ、撮っていなかったね」ということがほぼなくなります。あとは、容量が圧迫されないとかがあります。

動画を再生するだけでなく、そのときの操作説明も見ればそのままわかるので、説明の不備もかなり解消できると思います。

弊社内のテスターの動画編集にかかる時間が、平均1時間ぐらいですが、このツールを使うことでほぼなくなる感じで、かなり検証効率がアップしています。

VideoCloudの動き

(動画再生開始)

実際に撮っているところをご覧ください。ツールを起動して、ちょっと地味ですが、録画ボタンを押します。PC上で録画開始して、あとは1日放っておけばいい感じです。

これが実際撮られている画像です。今どこをタップしたかが、この赤い印で表示されています。

先ほど言った「トリミングができます」ですが、24とか29秒のところでトリミングする指定をして、コメントを入力して、これで報告用のURLが作成されるようになっています。

これが実際にトリミングされた画面です。このように、短い時間で報告が可能になります。

(動画再生終わり)

こんな感じのVideoCloudです。画面的にはこうなっていて、トリミングを指定するところや再生画面、あとは動画の情報が映ります。ここにはちょっと表示されていませんが、録画時刻表示があり、Onにすると、これがいつ撮られたものか、トレースされたものかも表示されます。

AutoMapperの特徴

以上がVideoCloudになります。次に、AutoMapperというツールを紹介します。このツールですが、アプリの遷移情報から、その遷移図を作成するツールです。

この(スライドの)ようなツールの画面があり、どんどんプレイしていく。同じ画面はどんどん端折ってくれて、シーンが変わったときに、自動的にその新しい画像を取り込んで、さらに遷移図を作ってくれる。そういうツールになっています。

特徴としては、スクリーンショットを元に画面遷移図を作成できます。出力はHTMLです。遷移関係というか、遷移図をツリー情報で閲覧と削除が可能。あと一番大きいところで、最初に紹介したAutoTester(自動化ツール)とこれを組み合わせると、「じゃあ遷移図データのここまで自動で移動してね」というテストも可能になっています。

なぜ作られたかというと、「ゲームのテストを依頼されたが、実は仕様書がなかった」ということで、結局手作業でスクリーンショットを撮ってその遷移図を作る作業がけっこう発生していて。じゃあそれをどうにか自動化できないか、ということで作られました。

BTSTransporterの特徴

次に、BTSTransporterです。これは弊社の社内の効率化ツールです。従来は「ここにお客さまのRedmineがあり、弊社の社員スタッフがチケットをどんどん起票していきます」というところがありましたが、それだと、なかなか弊社のノウハウ残らない、あとで分析データをうまく報告できないなどがありました。

(スライドに)「御社」と書いていますが、お客さんのRedmineと、弊社の中のRedmineの2つがあり、このRedmineに弊社のスタッフがどんどん起票していきます。起票したものをリーダーの人が情報を見て、よければBTSTransporterにチケットを転送する。こちらではどんどん分析作業もできるし、お客さんのRedmineにも正確にチケットを転送できるツールになっています。

カスタムフィールドや優先度など、いろいろなものがありますが、そこらへんは対応表を使って、多少環境が違っても自動的に変換して送れます。あとは、今まで一つひとつコピペしていたのが自動的にできるので、コピペミスがなくなります。

弊社の社内サーバーのRedmineに書き込んだのを、BTSTransporterでお客さまのサーバーに変換して送るようなイメージです。

導入予定のツール「AIプレイヤー(仮)」

ここまでが、現在導入しているツールの説明です。この先は、今取り組んでいる、これから導入予定のツールを紹介します。

1つは「AIプレイヤー(仮)」です。AIプレイヤーは模倣学習を利用した自動プレイのAIです。UnityとUnreal Engineに対応しています。現在は、3Dのアクションゲームで調整をしている段階です。

これは2020年の「CEDEC」で発表したものですが、こんな感じで動いています、というのを見せます。

(動画再生開始)

今AIが動かしています。このAIに学習させるために、あらかじめデモプレイを何回か行って、それを学習させていく方法で、AIプレイヤーが実現しています。

このあたりになると、ちょっと進めなくなっています。今は進めなくなったりしないよう、自分でその地形を読み取って、どんどん学習していくAIも研究しています。

(動画再生終わり)

ということで、AIプレイヤーは今のところ、決められた手順でマップ内を移動するとか、道中にいる敵の攻撃が可能。あとは、常にジャンプとか、敵をすべて無視するとか、宝箱だけを開けるとか、特徴的な攻略の模倣も可能です。

あと、乗り物に乗るとか扉を開けるなど、特定タイミングで特定のキーを押す操作にも対応できます。今のところ、乗り物にも乗れます。このへんを使って、通しプレイや長時間プレイ、コリジョンチェックなどの自動化が可能になります。

我々の試算ですが、これを使って、例えば通しプレイやコリジョンチェックなど、最終的に人がわーっとかけてやるフリーチェックを、半分ぐらいは自動化できるのではなかろうかと見ています。かなり大幅なコスト削減が可能になる、夢のようなツールを今研究中です。

「校閲ツール(仮)」も開発スタート予定

もう1つ、これはもうすぐ開発をスタートしようと思っている「校閲ツール(仮)」です。今回の校閲ツールですが、ゲーム画面をOCRで読み取って、それを文字起こしして、さらに自動で校正とか校閲を行う。キャラクターの言い回しも自動的に校閲できるシステムを今考えています。

プラスアルファの要件で、ボイスもテキスト化することも考えています。あとはテキストに付随して、そこに載っているキャラクターの表情やビックリマークのような、エモーショナルエフェクト的なものも判別して、表情に合っているかどうかの判定までできるようにしようと、夢を見ているところです。

実際には(スライドの)このような手順になります。まずはスクリーンショットを撮ります。OCRして文字起こしをします。さらに校閲・校正します。検査結果を出します。といったところを、手作業ではなく、ほとんど自動でやろうと考えています。

これ(スライド)がOCRの実験で、ゲーム画面からどれだけ読み取れるかです。この「はじめから」ですが、OCRで「はじめから」と読めました。

次にこのテキストエリアにある文字ですが、ここは簡単に「回復を1個手に入れた!」と読めます。

次に、ここの「奇跡の一撃!!」という文字ですが、後ろにかぶってたり、半透明であったりグラデーションかかってたり、けっこう難しいですが、これも読めました。

さらに次ですが、同じ画面の中の「-93」があります。ここも実は読めるので、かなり後ろというか、背景で何か動いているとか、同系色で見えづらくても、今のところおそらく99パーセント以上読めているような感じです。人間が読めないものは、やはり読めないのかなと思いますが、人間がなんとか見えるようなものは、だいたいというかほぼ読み取れます。

という感じで、今後は校閲ツールと、先ほどのAIプレイヤー。この2つを中心にQAツールを開発していくので、どうぞご期待ください。私のお話は終わります。ありがとうございました。