WORK LIFE
STORY

スクウェア・エニックスで「働く」ストーリー

現場社員が語る!QA自動化 開発ツールプログラマーの仕事とは

こんにちは、スクウェア・エニックス 人事部 採用担当 平山です。
今年もあっという間に残り1カ月半。紅葉も散り始め、いよいよ冬が近づいてきたと感じます。

さて、今回は弊社で開発ツールプログラマーとして働く社員の声をお届けします。
Wantedlyのスカウトがきっかけとなり、AIという未経験領域に飛び込んだ社員です。ぜひお読みください!

04-item-01.jpg
品質管理部 太田健一郎

太田さんの入社のきっかけを教えてください。

前職ではゲーム業界のお客様を中心に、ソフトウェアテスト専門の第三者検証会社で、テスト自動化アーキテクト兼コンサルタントをしていました。

会社の業績拡大に伴い、BtoBに携わることが多くなりました。それをきっかけに、本来長期戦であるテスト自動化において、検証プロセスを含め継続的に自動化を改善していくことが難しいこと、元々前々職で長くテストツールを含めた開発支援のツールのプログラマーをしていたことから、やはり開発者に戻りたいという思いが強くなりました。

また、ゲームのように自分自身がユーザーでもあるシステムに関わることが、サービスや製品に対するこだわりを持ってテストができるので、その方向を目指したいと思いました。

そんな時、スクウェア・エニックスからWantedly経由で、AIを活用した品質改善で人を探しているというお話がありました。スクウェア・エニックスでAIといえば、ゲームAI開発者の三宅さん(※)かなと思ったらまさにそうで、三宅さんとは大学時代に研究していたソフトウェアパターンの繋がりで知り合いでもあったので、是非お話を聞いてみたいということで、面談させていただきました。

ゲームは自転車、技術書、映画に続く趣味で、スクェア・エニックスの大型タイトルが出たときには、集中して100時間ぐらいプレイすることもあります。
ドラゴンクエスト
110時間以上プレイしました。

AIという未知数な領域で不安もありましたが、ゲームは好きなので、サービスや製品に愛着を持って仕事できそうということで、挑戦させていただくことにしました。

三宅陽一郎 スクウェア・エニックス ゲームAI開発者。
京都大学で数学を専攻、大阪大学(物理学修士)、東京大学工学系研究科博士課程(単位取得満期退学)。デジタルゲームにおける人工知能の開発・研究に従事。
IGDA日本ゲームAI専門部会設立(世話人)、日本デジタルゲーム学会理事、芸術科学会理事、人工知能学会編集委員。
共著『デジタルゲームの教科書』『デジタルゲームの技術』 翻訳監修『ゲームプログラマのためのC++』『C++のためのAPIデザイン』(SBCr)『はじめてのゲームAI』(WEB+DB PRESS Vol.68、技術評論社)。近著に『人工知能のための哲学塾』(ビー・エヌ・エヌ新社)、『絵でわかる人工知能 明日使いたくなるキーワード68 (SBクリエイティブ)がある。

現在の仕事内容を教えてください。

品質管理部の方々をカウンターパートナーとして、AIやコンピュータービジョンを活用した3つのツールを部門の先輩と開発しながらサポートしています。
(本インタビュー記事は20181115日に掲載されたものです。2020年以降は下記の3つ目のツールの開発・運用がメインの業務となっています。)

現在メインで担当している1つ目のツールは、モバイルタイトルのガチャの表示が、マスターデータと一致しているのかを確認するべく、Google Vision APIOCRの機能を使って支援するものです。

ガチャのテストは大きく分けて3つあり、
a. シミュレーターを実行して、設定した確率で各キャラクターが出現すること
b. 実機を使って少なくとも1回は各キャラクターが出現すること
c. 実機上の最終的な表示(出現確率、レア度)がマスターデータの値と一致していること

このうちc.を支援するのが1つ目のツールです。

従来は人が目検でやっていたのを、一部ツールで自動的に一致の確認をするのですが、この際に問題になるのは、OCRの認識精度で、Google Vision APIでは教師データを使ったフォントや文字並びの学習ができないため、コンピュータービジョンやアルゴリズムを使って、前処理と後処理でGoogle Vision APIの認識精度を上げる工夫をしています。

他の機械学習の分野でも同じような問題はありますが、自分の経験則上、人が手動でやる場合、ある程度訓練された人であれば99%(100回に1回だけ認識ミスがある)、スキル・経験ともある人あれば99.9%(1,000回に1回しか認識ミスがない)ぐらいの精度があります。
そのため、ツールとしては
98%ぐらいの認識精度でないと、逆にツールを使わない方が、作業時間が短かったりします。ツールが役立つためには、ツールの使い勝手に加え、精度の向上が不可欠で、この部分のチューニングに苦労しています。

2つ目のツールは、品質管理部門と共同で作成していて、上記のb.をサポートするもので、自動テストで画面キャプチャーされ、切り取られたキャラクターの画像を、適切にフォルダに分類して、最終的な確認の個数を下げるモジュールを作成しています。

こちらも、理想的には開発のビルドパイプラインでキャラクターとラベルを生成して、それをもとにディープラーニングに教師あり学習ができれば、高い分類精度が出るのですが、ビルドプロセスに踏み込んでまでの改善は難しいため、学習を用いない従来のコンピュータービジョンの特徴量解析という技術を使った分類で実装しています。分類精度は学習がないため、若干落ちてしまうのですが、学習のためのコストがいらないため、開発体制に制限のある中で、最新技術ではなく、あえて従来技術を利用するというあくまで実務の改善に役立つための技術選択ということもエンジニアには重要だと思います。

3つ目のツールは、最も難易度の高いもので、コンソールゲームの3Dフィールドを自動探索し、クラッシュや、フレームレート、コリジョンチェック(壁抜け、壁や地面にめり込んでしまうのを検出)を検出し、レポートするものです。自動探索の部分は元Googleのディープラーニングの達人社員が開発していて、現在、私は死活・クラッシュ検出・再起動のモジュールなどの補助機能を担当しており、最終的には異常検知の技術を使って、コリジョンチェックの実装なども対応する予定です。ゲームの自動テストの難易度が高い理由として、最近ではゲーム自体にワールドマップやキャラクターの移動、バトルなどにAIが使われておりランダム性が高まっていることです。

また、ゲームでの出力の検証はある断面ではなく、フレームレートの低下やコリジョンチェックなど連続量であることが多いです。前職までに主に経験してきたBtoCBtoBの世界はデリバティブなど一部を除き、入力に対する出力は決定的であり、ランダムではありません。

また、出力は断面を検証するだけだったので、このツールではそもそも連続量の異常を検証するのにはどのような技術があるのかという調査から始めています。

04-item-03.jpg

当社で働く魅力や面白さは何ですか。

働く人たちが自社のサービスや製品を本当に愛しているかは非常に重要だと考えていたので、ゲームを直接作っている開発者だけでなく、品質管理部門やその他部門含め、会社全体で良いゲームを作るというこだわりは、本当にすごいと思えるとともに、自分もそうありたいと思いました。

ツールの改善や新しいアイディアで、品質管理部の皆さんの作業が効率化され、負担も減ったと直接お聞きすることはやはり嬉しいです。コストもさることながら、ゲームの開発では、品質管理部の検証も含め、できる限りゲームを面白くすること、良い物語を作ることに時間を使いたいので、それ以外のことは、できる限り自動化でできるようにツール作成して支援することが、直接ゲームタイトルの開発に携わらない自分のミッションだと思っています。

テクノロジー推進部は直接ゲームタイトルの開発をしているわけではないのですが、ゲームタイトルに組み込まれる新技術をはじめ最新の技術開発をする部門なので、学会やGDCへの論文への寄稿をしている方、非常に高いプログラミングスキルを持っている方などが、国籍・人種を問わずたくさんいるので、会話も英語の割合が高くなり、世界レベルの技術者と一緒に仕事ができる喜びがあります。
2022年現在は太田を含め上記3つ目のツールを担当しているメンバーは品質管理部 品質ツール開発へ異動しています。)



また、20Fにあるラウンジ(社員食堂)のメニューが非常においしく、特にホットカフェラテとクロワッサンが好きで毎日食べています(笑)。今までの社会人経験から、食事のおいしい会社は良い会社であると確信しています。

それから、自転車通勤が公式に認められているため、ストレスだった満員電車から解放されて、当社に入社してから質の高い生活ができています2022年現在は在宅勤務メインであるため、出社時には徒歩出勤しています)。

04-item-04.jpg

仕事の厳しさ・難しさを感じるのはどんな時ですか。

元々BtoBの仕事が多かったため、開発技術の能力が部門の先輩の方々に比べると弱いです。
BtoBの場合、お客様の業務をどれだけ正しく理解し改善するかということがメインであるため、技術力や問題の解決力というより、理解力とわかりやすい説明力を高めることが求められてきました。

当社ではツールの新機能実装の一部を担当することから業務が始まったのですが、自分自身の技術不足もあって、使い勝手や性能速さ、スムーズさ、精度などの機能以外の要件を満たすことがなかなか難しく、日々思考錯誤を重ねています。

特に技術者のレベルが非常に高いので、なんとか頑張って実装した機能を1/10ぐらいの時間かつバグがない状態で素早く実装したり、そもそも自分のアルゴリズムが全然良くなくて、打ちのめされることが結構あります。

ゲーム業界における品質の定義バグがなければよいというものではないがまた確立できていないこともあり、私には業界の理解と技術力の両面で向上が必要だと思います。

また、テクノロジー推進部は、外国籍社員が多く、チーム内では英語でのコミュニケーションの割合が高いので、話についていけなかったり、自分の英語が拙すぎてうまく意図が伝わらなかったりすることがあります。前職では英語が主体のお客様の環境で働くことがあったため、洋画と海外ドラマをひたすら見ることでヒアリング力を鍛え、聞き取れるようにまではなっていたので、多少英語力には自信があったのですが、同開発チームの外国籍社員は、非常に早口なので、最初は半分くらいしか話が分からず、かなり苦労しました。

現在はその部分を向上させるため、平日夜や休日に、プログラミングの高速化技術やアルゴリズム、数学パズル、英語などの勉強をしています。

04-item-02.jpg

今後の目標や夢を教えてください。

いろいろなビジネスドメイン業種、業態のソフトウェアのツール開発やテストの自動化を担当してきましたが、ランダム性やAI、面白さという要素が入ってくるゲームが、一番テストの自動化に関しては難しいと感じています。

現在ゲーム業界ではツールによって自動化できている検証作業は全体の3%ぐらいという印象なので、この比率をAIやコンピュータービジョンの技術を使って高め、人間のテスト担当、QA担当者が本当に人間でしかできないゲームの面白さ・楽しさといった最高の物語を作るのに注力できるようなツールを作れる、開発ツールプログラマーを目指していきたいと思います。

これから当社へ応募される方へのメッセージをお願いします。

開発ツールプログラマーとしては、直接ゲームタイトルの開発をするわけではないので、縁の下の力持ち的な役割、ファイナルファンタジーのジョブでいう青魔道士的なキャラとしてゲームに関わることが好きかというところがポイントです。

趣味の自転車では整備のために工具を揃えていますが、専用工具というのはやはり汎用道具より楽かつ安全に作業ができるもので、目的に応じた専用のツールを作ることは、製造業でいうところの作業のための冶具を作るのに近く、作業の目的を把握したうえで作業の効率を高められ、冶具自身も精度の高いものである必要があります。

特にテストツールの場合、医療機器や計測機器のようにテストツール自体の信頼性が高くないといけないので、単純に機能を作るだけでなく、ツール自体を信頼性の高いものにするためのプログラミング技術高速化、省メモリ、防衛的プログラミングと、ツール自体を自分自身で批判的にテストするという開発しているときとは180度異なる視点が同時に必要になります。

また、最初に作って終わりではなく、ツールを長く育てていき、業務上の要請によって、機能改善を継続していくのが好きであることも必要です。

まとめると、仕事上の道具にとことんこだわる人が実際に役立つ良いツールを作っていけるかなと思います。ツールを作ってチームに貢献することに喜びがあり、間接的にでも、「最高の物語を提供することで、人々の幸福に貢献したい」という気持ちがあれば、ぜひご応募いただきたいと思います。