モリカトロン株式会社運営「エンターテインメント×AI」の最新情報をお届けするサイトです。

TAG LIST
機械学習ディープラーニングCGCGへの扉GANニューラルネットワークモリカトロンAIラボインタビュー強化学習三宅陽一郎CEDEC2019QAスクウェア・エニックス音楽CEDEC2020ゲームAIデバッグ深層学習シナリオGDC 2019不完全情報ゲームボードゲームAIと倫理VFX映画SIGGRAPH遺伝的アルゴリズムVRメタAIキャラクターAIロボットファッションルールベースビヘイビア・ツリーグーグルNVIDIADeepMind月刊エンタメAIニュースJSAI2020人工知能学会イベントレポートOpenAI敵対的生成ネットワークガイスター畳み込みニューラルネットワークtoioGDC SummerモリカトロンマルチエージェントナビゲーションAI小説AlphaZeroマイクロソフト中島秀之アートGoogle自動生成研究ディープフェイクDARPACNNメタデータTensorFlow本間翔太CM倫理Amadeus Code音声認識eSports眞鍋和子シーマン齊藤陽介お知らせ水野勇太サルでもわかる人工知能ワークショップ知識表現IGDAどうぶつしょうぎマシンラーニングクラウド完全情報ゲーム藤澤仁長谷洋平宮路洋一HTN階層型タスクネットワークソニーStyleGANプロシージャルスポーツフェイクニュースGPUALife人工生命オルタナティヴ・マシンサウンドスケープASBSぱいどんTEZUKA2020AI美空ひばり手塚治虫汎用人工知能Electronic ArtsFacebookマーケティングApex LegendsNinjaゲームTENTUPLAYMARVEL Future Fightタイムラプスバスキアブロックチェーン通しプレイ階層型強化学習WANNOpenAI Five竹内将馬淵浩希岡島学映像セリア・ホデントUXピクサー認知科学ゲームデザインAdobeLUMINOUS ENGINELuminous Productionsパターン・ランゲージ作曲ちょまどビッグデータ中嶋謙互MicrosoftMicrosoft Azureアストロノーカキャリア模倣学習テストプレイナラティブFPSマルコフ決定過程eスポーツスタンフォード大学パラメータ設計テニスバランス調整レコメンドシステム対話型エージェント協調フィルタリング人狼知能Amazon軍事AlphaDogfight TrialsエージェントシミュレーションゲームプレイAIStarCraft IIFuture of Life InstituteIntelロボティクスLAIKARotomationPyTorchドラゴンクエストライバルズ不確定ゲームDota 2モンテカルロ木探索DQNソーシャルゲームEmbeddingGTC2020NVIDIA MAXINE淡路滋ビデオ会議グリムノーツバンダイナムコスタジオゴティエ・ボエダBLUE PROTOCOLGautier Boeda階層的クラスタリングaiboJuliusSIETPRGUnityバーチャル・ヒューマン・エージェントtoio SDK for Unityクーガー田中章愛石井敦銭起揚茂谷保伯森川幸人成沢理恵マジック・リープMagic Leap Oneノンファンジブルトークン里井大輝GEMS COMPANY初音ミク転移学習デバッギングアニメーションリップシンキングUbisoftUbisoft La Forge北尾まどか将棋ナップサック問題ジェイ・コウガミ音楽ストリーミングSpotifyReplica Studioamuse5Gクラウドゲーミング和田洋一Stadia対話エンジン斎藤由多加シーマン人工知能研究所ゴブレット・ゴブラーズSIGGRAPH 2019ARAIりんなアップルiPhoneカメラAIGraph環世界予期知能ウェイポイントパス検索ドラゴンクエストPAIR画像認識アルスエレクトロニカ2019DeNA逆転オセロニア奥村エルネスト純齋藤精一高橋智隆ロボユニ泉幸典ロボコレ2019ぎゅわんぶらあ自己中心派意思決定モデルウロチョロス理化学研究所教育SIGGRAPH ASIALEFT ALIVE長谷川誠Baby Xロバート・ダウニー・Jr.YouTubeSFThe Age of A.I.レコメンデーションテンセントMOBA人事研修mynet.ai人工音声プレイ動画NBAドローン群知能ウィル・ライトシムシティシムピープルレベルデザインSporeデノイズ画像処理CPUGMAITRPGウィザードリィAI Dungeon西川善司サムライスピリッツゼビウスストリートファイター栗原聡山野辺一記大里飛鳥マンガ13フェイズ構造手塚眞不気味の谷Oculus Quest生体情報写真照明山崎陽斗立木創太松井俊浩スパーシャルAIGPT-3GameGANパックマンソサエティ5.0SIGGRAPH 2020DIB-R3D広告

【CEDEC2020】AIによるデバッグの自動化はどこまで進んでいるのか?

2020.10.05ゲーム

【CEDEC2020】AIによるデバッグの自動化はどこまで進んでいるのか?

ビデオゲームのハイクオリティ化にともない、デバッグなどのQA(品質管理)にかかるコストも年々膨大なものとなっています。現場の作業負担を軽減させ、かつ可能な限り抜け漏れのないQAを補助するものとしてAIによるQAはゲーム業界全体の注目を集めています。昨年のCEDEC2019では、モリカトロン株式会社代表取締役社長の本城嘉太郎氏が登壇し、「AIにゲームをデバッグさせることは出来るのか? 〜ゲームAI専門会社モリカトロンの挑戦〜」と題するセッションでAIによるQAの全体像と当時の最新技術を発表しました。CEDEC2020では、その続編としてのセッション「AIにゲームをデバッグさせることは出来るのか? Season2 〜monoAI technology AIQAツール開発チームの挑戦〜」を行いました。

関連記事:【CEDEC2019】AIは今どこまでゲームのデバッグをできるのか?

品質管理の分析とは?

AIによるQAの現状は、まだ人によるデバッグ作業から置き換えられる段階ではなく、AIによる自動プレイツールの研究開発と併行して、人によるデバッグの効率化を支援するツールを開発して導入を始めているのが現状です。デバッグ作業を効率化させるアプローチとしてmonoAI Technologyが考えるのは、人の検知する感性や属性を標準化し、その標準化した仕組みをAIに実行させるというものです。そして、その手前で重要なのが現状の品質管理の分析です。

従来型のテストではデバッグをする人員を大量に配置して、とにかく多くのバグを見つけるという作業をしてきました。しかしこれでは、いつ収束するのかも、なぜそのバグが出たのかも、そもそも全部の項目をチェックしきれているのかも分かりません。そういった所を最新のソフトウェアテストの技法、JSTQB(*1) などを取り入れて分析していくことにしました。(本城嘉太郎氏)

*1:JSTQB(Japan Software Testing Qualifications Board)とは、ソフトウェアの信頼性を向上するためのテスト技術を担保するソフトウェアテスト技術者の資格のこと。国際標準のソフトウェアテスト技法が問われる試験になっており、取得のための学習を通じて、ソフトウェアテストの技法を体系立てて学ぶことができる。

例えば、不具合のランク別(SABCD)に発見された数と「どこにその不具合が発生したのか」をプロットします。こちらの例では、システム不具合、コーディングミス、環境設定ミス、マスタ設定ミスなど、さまざまな種類のバグが発生した数をランク別にプロットしています。下記の図を見ると明らかにマスタ設定にミスが集中していることが分かります。

この例では、マスタ設定ミスが要因となる不具合が最も多く64件が検出された。また、最も多い不具合はランクBだが、進行不能になるレベルのランクSやAも検出されており、それがテストの進捗に影響を与えたことが分かる

さらに、ゲームの機能別にそれぞれのバグをプロットすことで具体的なバグの原因を割り出すことができます。

この例では、機能別に見てキャラクターに最も多くの不具合が検出され、そのうちマスタ設定ミスが最も多い。つまり、キャラクターのマスタ設定に問題があると分かる

テストスケジュールの管理も行います。通常は何万件ものテストケースを作成し、それを日々消化していきますが、このようなテストスケジュールもデイリーで進捗を記録しておくことで「最終日に何百個もバグが残っている!」ということもなくなります。

テストケースのステータス結果。日々の進捗を、NG(不具合が発生)、未実装(実装されていないためテストできなかったもの)、削除(仕様変更のためテストしない)、BLOCK(不具合が原因でテストできなかったもの)で分類

進捗を記録しておくことでテストスケジュールの予実管理も可能となります。例えば、下記の図のように、2週間で23,871ケースを消化しようという場合に実際の消化ベースとの乖離をつかむことができます。

折れ線グラフの青い線が理想の進捗で、赤い線が実際の消化ベースを示す。この例では4/29あたりに乖離が出てくる。棒グラフの部分を見ると「未実装」「BLOCK」が伸びているので、実装されていなかったり不具合のためテストできなかった数が多かったことが原因だと分かる

このような品質管理の分析により、遅れてしまった理由を何となく推察するのではなく、具体的にどういった問題が起きたから遅れたのかをエビデンスベースで示すことができます。

今回の事例においては、マスタ設定ミスが多く、特にキャラから多く検出されています。個々の作業員の方のイージーミスなのかスケジュールがタイトなのかを見直した方が良さそうです。テストの進捗の遅れも未実装とBLOCKが多数発生したことで起きているので、テストスケジュール自体を見直すべきです。このような判断を根拠を持ってすることができます。(本城嘉太郎氏)

もちろん、欠かせないのはこうした分析があった上でのエキスパートチームの存在だと本城氏は言います。テストケースを使ってバグをつぶしていくだけではなく、「神デバッガーがその腕でとんでもない所にバグを見つける」という、いわゆる探索型のテストも重要だからです。monoAI technologyは、テストケースでバグを発見しつつ、業界で20年以上実績を積み重ねてきた”神デバッガーの集団”も組織し、人の観点からのバグ検出も行うという両輪によって作業を進めています。2020年8月現在、monoAI technologyでは東京、神戸、京都、福岡、高知の5箇所に正社員・契約社員テスター125名、登録アルバイト300名が在籍しています。

最新のQAツール紹介:今、AIはここまで人のデバッグを支援できる

ここからは、AIをゲームのデバッグに活用するという本題に入ります。冒頭で、AIによる自動プレイツールの研究開発と、人のデバックを効率よく支援するツールの研究開発を併行で進めているという話がありましたが、ここでは後者の支援ツールとしてのAIの活用を中心にご紹介します。

なお、AIによる自動プレイツールの研究、これはグループ企業であるモリカトロン株式会社のAIエンジニアチームが同じCEDEC2020で発表し、こちらの記事で詳細が紹介されています。

関連記事:【CEDEC2020】テストプレイや接待プレイができるAI技術でモリカトロンが目指すこと

monoAI technologyでは、「こんなものがあったらいい」「これは使っておくべきだ」といった現場のQA担当者の意見を参考に、手作業で時間がかかっている部分をツールで改善するための次のようなQAツールの開発を進めています。

  1. monoAIAutoMapper
  2. monoAITester
  3. monoAIBugReporter
  4. monoAIDebugSDK
  5. monoAITextChecker
  6. monoAIVideoCloud
  7. monoAIBTSTransporter
  8. monoAIPallarelViewer

昨年のCEDEC2019においても当時開発中のQAツールが発表されましたが、今回はその続編として、monoAIAutoMapper、monoAITester、monoAIVideoCloud、monoAIBTSTransporterを取り上げ、実際に使用した結果を紹介しました。

monoAIAutoMapper

 monoAIAutoMapperはアプリ画面の遷移を行い、その遷移情報から画面遷移図を生成します。つまり、各画面がどのようにつながっているかを確認する作業を自動化できます。

QAの現場ではテストケースを作る際に画面遷移図が必要になる場合がありますが、画面遷移図が資料になかったり、画面がおおまかにフィックスしてから遷移図を作るプロジェクトもあります。とはいえ、自分たちで遷移図を作ろうとすると、画面を動かしスクリーンショットを撮る作業を繰り返すことになり、手間がかかる上に手作業のためミスも発生しやすくなります。その問題に対応すべく、画面のスクリーンショットから自動で遷移図を作成するツールの開発が始まりました。

monoAIAutoMapperの機能は以下の通りです。

  • 端末画面のスクリーンショットを元に画面遷移図を作成する
  • 遷移図データを用いることでmonoAITesterと連携することで指定画面まで移動するテストも可能

遷移図のファイルやデータをプロジェクトフォルダで一元管理し、各遷移画像に画面のタイトルを付けたり、遷移図のツリー情報を編集できます。

monoAIAutoMapperの概要。開発に使われているのはPython3、GUIの開発にはPyQt5、実行環境作成にはPyInstalller
monoAIAutoMapperの画面。プロジェクトを作成する「ファイル操作」部分、画像解析で取得した画像の一覧を表示する「タイムライン」、解析情報のツリーを表示する「画像リスト」、選択した画像・遷移図を表示する「スクリーン」など。遷移図作成を実行する「遷移ツリー」が表示される

動作フローとしては、monoAIDeviceConnectorに遷移を監視する端末をつなぎ、monoAIAutoMapperと連携させた上で、端末から必要な遷移を行います。monoAIDeviceConnectorは端末の現在の画面を保存し、ソケット通信でmonoAIAutoMapper側に送信します。monoAIAutoMapper側で前後の画面の比較や解析を行い、HTMLとPNGファイルの2種類の遷移図を出力するという流れになります。

実作業で使ってみた結果は、PCにつないで操作するだけで画面が保存されるのでアップロードの手間が不要になりました。操作した通りの遷移の順番をデータとして保持してくれるため遷移図の基本形がその場で作れるので大幅な時間短縮につながりました。

monoAITester

ゲームの自動化テストツールで、monoAITesterで作成したスクリプトの実行によりデバッグ業務の一部を自動化します。また、画像認識によってUIの自動テストなどを行うこともできます。これを開発する目的はふたつありました。ひとつは効率化を図るためです。テスト項目の中には消化するのにとても時間のかかる項目があり、それが自動化できれば他の作業に人手を回すことができます。もうひとつはテスト項目の内容自体が属人化するのを防ぐことです。作業を機械で自動化できれば、それが属人化してしまう問題も解消できるはずです。

monoAITesterの機能は以下の通りです。

  • テストケースの作成と自動実行
  • テスト実行の結果をレポートファイルとして出力する

端末画面のスクリーンショットの撮影も可能で、出力したレポートはダイアログやWebブラウザで閲覧できます。テストケースはプロジェクトフォルダで管理します。

monoAITesterの概要
monoAITesterの画面。上部がファイル操作関連、左の「Assistant」部分に基本的な操作を簡易コマンドとして収納、中央のエディタにテストを実行するスクリプトを記述する(テストケースは1行ごとの処理)

使ってみた結果は、長時間のテストの自動化による効率アップを実現、また属人化の課題も解消できました。また、似たようなものであれば少し調整することでスクリプトを使い回すことも可能で、全体の効率化につながりました。

monoAIVideoCloud

monoAIVideoCloudはゲームのテストプレイの画面動画をサーバで自動保存する動画クラウドです。スマートフォンで操作中のアプリの画面をMovieReporterによってクラウドに録画して保存していきます。保存された動画はWebブラウザを通して見ることができ、クライアントへのバグ報告や再現手順の共有ができます。

不具合の報告において、動画のほうが発生時の手順を伝えやすいのは事実ですが、これまではバックグラウンドで起動したスクリーンレコーダーでの録画はできても端末でテストしたいアプリだけを起動して画面情報を動画で残すことはできませんでした。PCにつないで直接取り込む方法もありますが、動画ファイルの容量が大きすぎてPCに保存ができなかったり、保存できても容量を圧迫するといった問題も生じます。それを解決するためにテストプレイの画面を動画で保存する動画クラウドを開発しました。

monoAIVideoCloudの機能は以下の通りです。

  • 端末画面を録画し、動画をクラウドに保存
  • 保存した動画のトリミング
  • 動画にコメントを付加

動画は発行されるURLで閲覧できます。セキュリティ対策として、アップロード先の動画が流出しないよう案件ごとに分けて管理(データベース・コンテナ・ユーザーを個別に管理)しています。また、URL改変への対応としてULIDを使ったランダム文字列を発行しています。なお、monoAIVideoCloudで撮った動画はストリーミング再生のみとなります。

monoAIVideoCloudの概要
monoAIVideoCloudのシステム概要

monoAIVideoCloudとmonoAITesterを組み合わせることによって、エージングテストを低コストで実現できます。作業現場にmonoAIVideoCloudの導入にしたことで、不具合が解消されるとともにテスト中のプレイ動画をクライアントと共有することができたため作業をスムーズに行えるようになりました。

monoAIBTSTransporter

 monoAIBTSTransporterは、社内のBTS(bug tracking system)のチケット情報を社外の開発会社のBTSに自動で転送する機能です。

テスト業務としてバグチケットを発行する際、いったん社内のBTSに発行し、精査を経てクライアント先のBTSでチケットを発行する手順になります。大型アップデート時など、多い時は1日30件出ることもあります。それらを1つひとつ確認してからコピペする作業が大きな負担を伴う工数になっていました。また、手作業には人的ミスも発生します。monoAIBTSTranspoterはその課題を解消するために開発されました。

monoAIBTSTransporterは、自社のRedmineに起票されたチケットを他社のRedmineに転送することで、先方のRedmineでチケットを作成・起票する権限を自社の作業者全員に付与する必要がなく運用することが可能です。

monoAIBTSTransporterの画面。左の送信元Redmine(社内)にチケットの一覧が表示され、その中からレポートを作成するチケットを選択する

monoAIBTSTransporterの機能は以下の通りです。

  • 社内のRedmineのチケットを客先のRedmineに転送する(添付ファイルや履歴も一緒に転送)
  • 独自の優先度、カスタマーフィールドが設定されている場合は対応表で自動変換する
monoAIBTSTransporterのシステム概要

Redmaineのサーバには外部からチケット一覧やチケットを登録する機能にアクセスできるようにWebAPIが実装されています。BTSTransporterでは、そのWebAPIを利用してまず社内サーバからチケット一覧を読み込み、転送するチケットをユーザーが選択すると、選択されたチケットを相手側のWebAPIを通じて登録していく流れになります。このツールの導入後の反応は好評でした。複数のチケットをまとめて選択して社外のBTSに履歴や添付ファイルごと転送できるようになったため、ミスも減らせたからです。

このように、品質管理業務の効率をアップするツールを新規に開発し、実案件でも使っていますが、monoAI technologyではさらに自動化スクリプトのビジュアルプログラミング対応を行っています。

やはりこれまでプログラミングに触れてこなかった人には手を出しにくいという面がありました。実はテスターさんにPythonのコードを書いてもらった所、結構使えるコードができたんです。これは「プログラマでなくとも自動化はできる」という発見でした。現在、Webクライアント上で関数ブロックを組み上げることでPythonの知識がなくても簡単にテストスクリプトを作成して自動テストを行えるようになっています。また、従来はローカルPCに保存していたテストスクリプトをデータベースに保存することで、テストスクリプトの共有化も進めています。(本城嘉太郎氏)

「AIでバグが取れるようになるにはあと1年かかる」と語る本城氏。今後も挑戦は続き、AI QAのツールやオートプレイを進化させるよう研究開発に取り組んでいきたいとの決意でセッションを締めました。

Writer:大内孝子

RELATED ARTICLE関連記事

20年前に遺伝的アルゴリズムを初めて組み込んだ農業ゲーム『アストロノーカ』が蒔いた種

2019.4.17ゲーム

20年前に遺伝的アルゴリズムを初めて組み込んだ農業ゲーム『アストロノーカ』が蒔い...

【GDC 2019】AIは感動的な物語体験をゲームで表現できるか? GDCに見る最新トレンド

2019.4.17ゲーム

【GDC 2019】AIは感動的な物語体験をゲームで表現できるか? GDCに見る...

【CEDEC2019】人工知能にテストプレイを丸投げできるか?

2019.9.24ゲーム

【CEDEC2019】人工知能にテストプレイを丸投げできるか?

RANKING注目の記事はこちら