Share
Embed
クオリティエンジニアリング ーゲームの品質を支えるエンジニアー
2026年度「ゲーム開発最前線」(電気通信大学大学院オムニバス講義)
「クオリティエンジニアリング ーゲームの品質を支えるエンジニアー」
株式会社セガ 技術本部 開発技術部 阪上 直樹
株式会社セガ RGGスタジオ事業本部 第1事業部 桑原 和人
SEGADevTech
November 12, 2026
Transcript
95 slides
-
自己紹介・阪上 直樹(さかうえ なおき) • 所属 – 株式会社セガ 技術本部 開発技術部 –
CEDEC企画委員 • 職種 – シニアクオリティエンジニア • 講演 – 「龍が如くスタジオ」のQAエンジニアリング 技術を結集した全自動バグ取りシステム • 現在の仕事 – セガグループ内を横断して自動化をサポート ©SEGA -
自己紹介・桑原和人(くわばら かずと) • 所属:株式会社セガ RGGスタジオ事業本部 第1事業部 • 職種:クオリティエンジニア • 経歴
『JUDGE EYES:死神の遺言』 ゲームプログラマー 『龍が如く7 光と闇の行方』 ゲームプログラマー 『LOST JUDGMENT:裁かれざる記憶』 ゲームプログラマー 『龍が如く 維新! 極』クオリティエンジニア 『龍が如く7外伝 名を消した男』クオリティエンジニア 『龍が如く8』 クオリティエンジニアリングチームリーダー ©SEGA -
目次 • クオリティエンジニアリングとは • クオリティエンジニアリングの実例 – ツール・サービスの実装 – ツール・サービスの運用 –
ツール・サービスのサポート – クオリティエンジニアリングの成果 • クオリティエンジニアの楽しみ方 • まとめ ©SEGA -
目次 • クオリティエンジニアリングとは • クオリティエンジニアリングの実例 – ツール・サービスの実装 – ツール・サービスの運用 –
ツール・サービスのサポート – クオリティエンジニアリングの成果 • クオリティエンジニアの楽しみ方 • まとめ ©SEGA -
ゲームの品質を支えるエンジニアとは • ゲームの品質に関わる問題を技術で解決するエンジニア – セガでは「クオリティエンジニア」と呼称 • 仕事の範囲 – 開発環境の自動化・効率化 •
ゲーム業界では「ビルドエンジニア」の業務 – QA(品質保証/Quality Assurance)環境の自動化・効率化 • ゲーム業界では「QAエンジニア」「テスト自動化エンジニア」の業務 – 翻訳や翻訳QA(LQA)環境の自動化・効率化 • ゲーム業界では「ローカライズエンジニア」の業務 ゲーム開発(QA・LQA含む)すべてが問題解決の対象 ©SEGA -
ゲームの品質とは • 当たり前品質 – ユーザーにとってあって当然 • ゲームが開発の意図通り動作している • 頻繁に致命的なバグ(クラッシュなど)に遭遇しない •
魅力品質 – ユーザーにとってあると嬉しい • UI/UXの快適さ • ゲームの面白さ まず、当たり前品質を確保するのが重要! ©SEGA -
ゲームのバグとは • ゲームのバグの例 – プログラムが原因 • アプリケーションエラー – データが原因 •
壁を抜けてしまう – 複合的な原因で発生する進行不能 1. 2. 3. 4. ドアのカギを持っている ドアの前でカギを使う ドアが開かない ゲームが進行しないのでバグ ©SEGA -
ゲームのバグを見つけて報告する流れ 手動 プレイ 手動 プレイ (半自動) バグを 見つける バグ発生時の ゲーム情報
スクリーンショットなどを 手動で収集 バグを 見つける バグ発生時の ゲーム情報 スクリーンショットなどを 自動で収集 バグを 自動検知 バグ発生時の ゲーム情報 スクリーンショットなどを 自動で収集 バグ箱 チケット管理 システム 機材 自動 プレイ ©SEGA チケット管理 システム 自動登録 -
チケット管理システムについて • バグやタスクを一括管理するシステム – RedmineやJiraなど • バグチケットのステータスの流れ 修正開始 新規 修正完了
対応中 確認待ち 修正確認OK 確認済 修正確認NG 差し戻し チケット管理システムの詳細は『「龍が如く」の高速デバッグ術 ~そびえ立つバグの山を踏破するための弾丸ワークフロー~』 http://jasst.jp/symposium/jasst16tokyo/pdf/E2.pdf ©SEGA -
本講義は自動テストを中心とした自動化 手動 プレイ 手動 プレイ (半自動) バグを 見つける バグ発生時の ゲーム情報
スクリーンショットなどを 手動で収集 バグを 見つける バグ発生時の ゲーム情報 スクリーンショットなどを 自動で収集 バグを 自動検知 バグ発生時の ゲーム情報 スクリーンショットなどを 自動で収集 バグ箱 チケット管理 システム 機材 自動 プレイ ©SEGA チケット管理 システム 自動登録 -
ゲーム開発サイクルを高速に回すため 作成・修正 原因調査 ビルド エラー検知 配布 動作確認 ©SEGA 毎日・毎時間回すことでゲームの品 質が上がっていく
↓ 高速に回せばより早く品質を上げら れる ↓ ゲーム起動エラーで止まるなど、 日々のゲームが不安定だとトライ& エラーを正確にできない ↓ 自動テストでバグを早期発見&修正 することで高速なサイクルに貢献 -
ゲーム開発における自動テストの効用 • QCD(Quality/Cost/Delivery)への貢献 • ゲーム開発におけるQCD – Quality(品質) • ゲームを面白くするための作業に集中 –
Cost(コスト) • 開発規模拡大に伴うQAコスト上昇を抑制 – Delivery(納期・スケジュール) • 開発サイクルを高速化して、より早くユーザーに届ける ゲームをより面白くする作業に集中できる! ©SEGA -
「テスト」と「デバッグ」 • テスト – ゲームをプレイしてバグを見つける – バグを報告し、修正を確認する – QAテスターの仕事 •
デバッグ – バグの原因を調査する – バグを修正する – 開発者(主にプログラマ)の仕事 ©SEGA -
「自動テスト」と「テスト自動化」 テスト自動化 テストケース 設計の自動化 テスト環境 構築・運用 の自動化 自動テスト テスト実行 の自動化
©SEGA テストレポート 作成・分析 の自動化 -
テストピラミッド(ゲーム開発) 高 • 通しプレイ • ミッションクリア • コリジョン抜けチェック Play コ
ス ト 結合 単体 低 • • • • 起動チェック ステージ描画テスト イベントシーン単体再生 ゲームオブジェクト・エンティティの連携動作 • • • • 関数・モジュール単位の単体テスト ライブラリ・エンジンのテスト データのレギュレーションチェック ゲームオブジェクト・エンティティの単体動作 ※本講義でのテストピラミッドの定義 ©SEGA -
目次 • クオリティエンジニアリングとは • クオリティエンジニアリングの実例 – ツール・サービスの実装 – ツール・サービスの運用 –
ツール・サービスのサポート – クオリティエンジニアリングの成果 • クオリティエンジニアの楽しみ方 • まとめ ©SEGA -
ゲームのバグを見つけて報告する流れ 手動 プレイ 手動 プレイ (半自動) バグを 見つける バグ発生時の ゲーム情報
スクリーンショットなどを 手動で収集 バグを 見つける バグ発生時の ゲーム情報 スクリーンショットなどを 自動で収集 バグを 自動検知 バグ発生時の ゲーム情報 スクリーンショットなどを 自動で収集 バグ箱 チケット管理 システム 機材 自動 プレイ ©SEGA チケット管理 システム 自動登録 -
自動テスト導入のきっかけ • カバーすべきテストケースが膨大 – メインストーリーをクリアするだけでも数十時間 – 手動テストが賄えない範囲をサポートするため • 自動プレイ(自動テストの一種)を導入 –
単体テストはゲームのアプリ層だと難しい • 結果が画像出力しかない場合が多く、成否が不安定 – 信頼性の確保 • 自動テストを通常のゲームに限りなく近い状態で実行するこ とで開発チームに信頼してもらう ©SEGA -
どこでもリプレイシステム(記録) ゲーム内 ゲームを手動で プレイ ゲーム動作を アクション単位で スクリプト化 WebSocketサーバ ©SEGA 外部ツール
どこでもリプレイエディタ GUI(C#) -
Pythonを採用した理由 • 人気があって使える人が多い • これから学習する人にとっても有益な言語 – ほかの自動化にも使える • ゲーム外のモジュールとの連携のしやすさ –
画像認識(OpenCV、PyOCRなど) – データ分析(Pandasなど) – AI(大規模言語モデルを含む) ©SEGA -
どこでもリプレイシステム(再生) ゲーム内 外部ツール どこでもリプレイエディタ GUI(C#) Pad情報 AutoPad 結 果 AutoAI
WebSocketサーバ JSONで 受け渡し アクションを指定 結果通知 ©SEGA p y フ ァ イ ル 行 ご と の 結 果 path(x,y,z)を アクション(JSON)に変換 どこでもリプレイ CUI(Python) -
WebSocketサーバ ゲーム内 外部ツール どこでもリプレイエディタ GUI(C#) Pad情報 AutoPad 結 果 AutoAI
WebSocketサーバ JSONで 受け渡し アクションを指定 結果通知 ©SEGA p y フ ァ イ ル 行 ご と の 結 果 path(x,y,z)を アクション(JSON)に変換 どこでもリプレイ CUI(Python) -
WebSocketを採用した理由 • 汎用性 – ゲーム内の依存度を下げる • ゲーム内で自動テストが不具合を起こす可能性を減らす – 各プラットフォーム対応の手間を省力化 •
応答の即時性 – スクリプトの実行結果をすぐに受け取って次を実行 – HTTP/1.1で直接通信する場合は、一定時間でポーリ ングしないといけない上に、無駄に通信量も増える – 最近だとRPCが一般的 ©SEGA -
AutoPadとAutoAI ゲーム内 外部ツール どこでもリプレイエディタ GUI(C#) Pad情報 AutoPad 結 果 AutoAI
WebSocketサーバ JSONで 受け渡し アクションを指定 結果通知 ©SEGA p y フ ァ イ ル 行 ご と の 結 果 path(x,y,z)を アクション(JSON)に変換 どこでもリプレイ CUI(Python) -
AutoPadの種類 • 指定座標に移動 – path(100, 0, 200) • 指定半径内をランダム –
target_pos_zone_radius • 指定アイテムを選択 – select_item_name(“onigiri”) • 各ミニゲーム用 • バトル用 ©SEGA -
AutoAIでAutoPadを選択 • AutoAI(シナリオクリア用)の優先度 1. ロード・画面遷移中 • 何もしない、ランダム 2. イベント・会話中 •
何もしない、スキップ、連打 3. バトル・ミニゲーム中 • • バトル用AutoPad、ランダム 各ミニゲーム用AutoPad、ランダム 4. アドベンチャー・UI操作中 • Pythonで制御 ©SEGA -
ゲームのバグを見つけて報告する流れ 手動 プレイ 手動 プレイ (半自動) バグを 見つける バグ発生時の ゲーム情報
スクリーンショットなどを 手動で収集 バグを 見つける バグ発生時の ゲーム情報 スクリーンショットなどを 自動で収集 バグを 自動検知 バグ発生時の ゲーム情報 スクリーンショットなどを 自動で収集 バグ箱 チケット管理 システム 機材 自動 プレイ ©SEGA チケット管理 システム 自動登録 -
【バグ検知の自動化】クラッシュレポート クラッシュ時のダンプ・ゲーム情報を自動収集&レポート 1エラー数百MB~数十GB ゲーム実行中に 例外発生! • • • • •
• ネットワークドライブ ダンプ ログ スタックトレース スクリーンショット 直前の動画 再現スクリプト メール送信 • • • ダンプ表示batのURL スタックトレース リビジョン チケット管理システム (Redmine) ログサーバ ©SEGA -
【バグ検知の自動化】テスト結果の見える化 • どこでもログ分析 – Fluentd – Elasticsearch – Kibana –
独自分析ツール • RedmineのWikiに自動更新 • ヒートマップ・分析結果 参考:JaSST’18 Tokyo 無料で始める!「龍が如く」を面白くするための高速デバッグログ分析と自動化 http://jasst.jp/symposium/jasst18tokyo/pdf/D4.pdf ©SEGA -
ゲームのバグを見つけて報告する流れ 手動 プレイ 手動 プレイ (半自動) バグを 見つける バグ発生時の ゲーム情報
スクリーンショットなどを 手動で収集 バグを 見つける バグ発生時の ゲーム情報 スクリーンショットなどを 自動で収集 バグを 自動検知 バグ発生時の ゲーム情報 スクリーンショットなどを 自動で収集 バグ箱 チケット管理 システム 機材 自動 プレイ ©SEGA チケット管理 システム 自動登録 -
自動テストを中心とした自動化が完成 手動 プレイ 手動 プレイ (半自動) バグを 見つける バグ発生時の ゲーム情報
スクリーンショットなどを 手動で収集 バグを 見つける バグ発生時の ゲーム情報 スクリーンショットなどを 自動で収集 バグを 自動検知 バグ発生時の ゲーム情報 スクリーンショットなどを 自動で収集 バグ箱 チケット管理 システム 機材 自動 プレイ ©SEGA チケット管理 システム 自動登録 -
目次 • クオリティエンジニアリングとは • クオリティエンジニアリングの実例 – ツール・サービスの実装 – ツール・サービスの運用 –
ツール・サービスのサポート – クオリティエンジニアリングの成果 • クオリティエンジニアの楽しみ方 • まとめ ©SEGA -
テスト自動化のワークフロー 自動テスト 準備 テスト設計 自動テスト 作成と保守 ランダム シナリオクリア 自動テスト 環境の構築
壊れたテスト ミニゲーム アイテム コンプリート 自 動 テ ス ト 実 行 ©SEGA ログ サーバ テ ス ト 結 果 の 見 え る 化 クラッシュレポート QA チーム 開発 チーム -
自動テストの実行環境 自動テスト 準備 テスト設計 自動テスト 作成と保守 ランダム シナリオクリア 自動テスト 環境の構築
壊れたテスト ミニゲーム アイテム コンプリート 自 動 テ ス ト 実 行 ©SEGA ログ サーバ テ ス ト 結 果 の 見 え る 化 クラッシュレポート QA チーム 開発 チーム -
自動テストのエラー検知 自動テスト 準備 テスト設計 自動テスト 作成と保守 ランダム シナリオクリア 自動テスト 環境の構築
壊れたテスト ミニゲーム アイテム コンプリート 自 動 テ ス ト 実 行 ©SEGA ログ サーバ テ ス ト 結 果 の 見 え る 化 クラッシュレポート QA チーム 開発 チーム -
エラー検知の必要性と仕組み • テストしただけでは品質は上がらない – 結果を開発チームに伝えて修正してもらう必要がある • エラー検知の仕組み – クラッシュレポート –
どこでもログ分析 • テスト結果を見える化してエラーを見つける ©SEGA -
クラッシュレポートのワークフロー 1. 自動テストのエラーをチケット化 – アサーションの場合は書いた人を自動アサイン 2. 重複数でランキング化 – 重複数が多い順に調査&修正 3.
修正反映後の自動テストで確認 – 問題なければ修正完了 – 問題があればチケットが自動で返ってくる このサイクルを毎日高速に回すことでゲームが安定 CEDEC2020 「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム https://speakerdeck.com/segadevtech/long-garu-kusutazio-falseqaenziniaringuji-shu-wojie-ji-sitaquan-zi-dong-baguqu-risisutemu ©SEGA -
テスト結果の見える化のワークフロー 日ごと or リアルタイムで修正&確認 ログ送信 自動テスト 手動テスト 自 動 集
計 修 正 QA 開発者 Elasticsearch 集計結果を確認 ©SEGA Jenkinsで 1日1回 Redmine内の Wikiに公開 -
テスト結果の見える化(シナリオ) 自動テストのシナリオクリア結果ページ(毎日更新) 実行 回数 クリア回数 シナリオ名 成功 率 機材名 ログ
成功率が低いので バグの可能性がある ※「W64」は、デバッグ用Windows版の結果 ©SEGA -
テスト結果の見える化(マップ) エラー&警告マップ (Kibana) VRAM使用率ヒートマップ (Folium) NPCアクセスオートテスト (Kibana) 配置バッティング検出 (Kibana) イベント開始位置
(配置情報) NPC(配置情報) アクセス成功 (オートテストのログ) ©SEGA イベント終了位置 (オートテストのログ) 敵配置 -
自動テスト作成と保守 自動テスト 準備 テスト設計 自動テスト 作成と保守 ランダム シナリオクリア 自動テスト 環境の構築
壊れたテスト ミニゲーム アイテム コンプリート 自 動 テ ス ト 実 行 ©SEGA ログ サーバ テ ス ト 結 果 の 見 え る 化 クラッシュレポート QA チーム 開発 チーム -
自動テスト作成と保守 自動テストのカバー範囲が拡大 メインシナリオ クリア サブシナリオ クリア 2周目クリア パフォーマンス 計測 再現・修正確認
ミニゲーム アイテム ドロップ率 壊れたテスト の修正 ©SEGA -
再現率の低いバグの修正確認に活用 10万人がプレイすると 157人がエラーに 遭遇してしまう! 再現率の低い バグが発生 再現用スクリプト を作成・実行 12,773回試行 20回再現
再現率:0.157% 54,304回試行 0回再現 再現率:0.000% 修正確認! 謎バグが本当に修正されたことを確認可能! ©SEGA -
自動テスト作成と保守 自動テストのカバー範囲が拡大 メインシナリオ クリア サブシナリオ クリア 2周目クリア パフォーマンス 計測 再現・修正確認
ミニゲーム アイテム ドロップ率 壊れたテスト の修正 テスト自動化をサポートするチームが必要! ©SEGA -
目次 • クオリティエンジニアリングとは • クオリティエンジニアリングの実例 – ツール・サービスの実装 – ツール・サービスの運用 –
ツール・サービスのサポート – クオリティエンジニアリングの成果 • クオリティエンジニアの楽しみ方 • まとめ ©SEGA -
テスト自動化チームを作る • 自動テスト環境の整備 • 自動テストのスクリプト作成と保守 • 自動テスト結果の見える化 • 自動テスト結果の報告 •
手動テスト環境の自動化 – パッケージの自動インストール テスト自動化を開発・QAチームに 浸透させるのが目的 ©SEGA -
テスト自動化チームの構成を検討 • クオリティエンジニアのサポートが必要 • 開発の知見が必要 • QAの知見が必要 • 開発とQAのそれぞれに自動テストの結果を共有 しやすい環境
• プロジェクトごとに固有の問題が発生するので、 チームはプロジェクトごとにあるとよさそう 開発とQAの共同チームを作る ©SEGA -
テスト自動化チームの構成 • 開発とQAのチームが共同で立ち上げ 開発部門 テスト自動化 チーム QA部門 クオリティ エンジニア CEDEC2022
開発もQAも自動テスト!「LOST JUDGMENT:裁かれざる記憶」のQAテスター参加で進化した「テスト自動化チーム(仮)」の取り組みについて https://speakerdeck.com/segadevtech/kai-fa-moqamozi-dong-tesuto-lost-judgment-cai-karezaruji-yi-falseqatesutacan-jia-dejin-hua-sita-tesutozi-dong-hua-timu-jia-falsequ-rizu-minituite ©SEGA -
各部門で必要な準備 • クオリティエンジニア – 自動テストシステムのQA環境でのサポート – チームの組成と運営 • 開発チーム –
自動テストの結果からデバッグするための知見 • QAチーム – 人材の確保 • プログラミングに興味があるQAテスターから選出 – Pythonの学習 ©SEGA -
テスト自動化チームのワークフロー 自動テスト 準備 自動テスト 作成と保守 テスト 設計 ランダム シナリオクリア 自動テスト
環境の構築 開発・QAの 手動テスト 環境の構築 アイテム コンプリート 壊れたテスト テ ス ト 実 行 パッケージ の自動更新 ログ サーバ テ ス ト 結 果 の 見 え る 化 クラッシュレポート ©SEGA QA チーム 開発 チーム -
QAチームがテスト自動化を行うメリット QA部門内の「テスト自動化チーム」の動き ※pkg = パッケージ テスト自動化チームが無い時→ pkg 自動 ダウン ロード
pkg 自動 インス トール 自動起動・ 自動テスト 開始 業 務 開 始 ©SEGA pkg ダウン ロード pkg インス トール 自動テスト 結果確認・ 手動テスト 開始 ←テスト自動化チームがある時 起動・ 手動テスト 開始 -
1分1秒を縮めるためのこだわり • パッケージのダウンロード待ち – 無駄な待ち時間 • パッケージのインストール待ち – 無駄な待ち時間 •
バグが多数あるパッケージの差し替え – 無駄な作業時間 • 例えば、テストしたいボス戦行けないパッケージかどうかが 事前に自動テストの結果を見てわかる ©SEGA -
クオリティエンジニアリングチームも作る • 課題 – クオリティエンジニアの仕事範囲は広いので、プロ ジェクトを複数担当するのは困難 – マルチプラットフォーム対応 – 多言語・多拠点対応
– ゲームエンジンの複数対応 • 内製エンジンだけでなく汎用・商用エンジンにも対応 – 例:Unreal Engine、Unity 各プロジェクトを賄うだけの人員を確保して クオリティエンジニアリングチームを結成! CEDEC2024 「龍が如く」も「スーパーモンキーボール」も自動化!クオリティエンジニアリングチームによるマルチゲームエンジン対応で進化した「龍が如くスタジオ」のテスト自動化環境について ©SEGA https://speakerdeck.com/segadevtech/long-garu-ku-mo-supamonkiboru-mozi-dong-hua-kuoriteienziniaringutimuniyorumarutigemuenzindui-ying-dejin-hua-sita-long-garu-kusutazio-notesutozi-dong-hua-huan-jing-nituite -
多言語・多拠点のサポート • 最近のゲームは世界同時発売が前提 – 様々な言語に対応するため、海外拠点と作業を分担 – 海外を含めた多拠点での品質を高める活動が必要 • 海外拠点でツール使ってもらう必要がある –
言語・文化の違い – 開発・QA環境などの調査が大変 • 拠点ごとのネットワーク環境 • 英語OSなど環境設定の違い – 大変だがやる価値がある 詳細:クオリティエンジニアってどんな仕事?―ゲームの開発もQAも横断して自動化するプロジェクト専任エンジニア誕生の軌跡― https://techblog.sega.jp/entry/sega_qe_work_202408 ©SEGA -
目次 • クオリティエンジニアリングとは • クオリティエンジニアリングの実例 – ツール・サービスの実装 – ツール・サービスの運用 –
ツール・サービスのサポート – クオリティエンジニアリングの成果 • クオリティエンジニアの楽しみ方 • まとめ ©SEGA -
テスト自動化の成果 エラー検知 タイトル名(発売日順) 規模 品質価値 のべ稼働時間 自動テスト 自動テスト率 稼働数 8,102件
18.7% 150 82,104 h JUDGE EYES:死神の遺言 16,930件 33.4% 200 244,040 h 龍が如く7 32,315件 70.4% 219 593,560 h LOST JUDGMENT:裁かれざる記憶 19,007件 63.7% 212 566,976 h 龍が如く 維新! 極 45,548件 89.7% 316 450,176 h 龍が如く7外伝 名を消した男 10,330件 81.1% 160 164,624 h 龍が如く8 65,662件 84.3% 270 721,064 h スーパーモンキーボール バナナランブル 4,350件 83.1% 64 46,520 h 龍が如く6 命の詩。 光と闇の行方 ※2024年3月末時点 ©SEGA -
自動テストのエラー検知率 100.0% 90.0% 80.0% 70.0% 60.0% 50.0% 89.70% 81.10% 40.0%
70.4% 30.0% 20.0% 10.0% 84.30% 83.10% 龍8 バナナランブル 63.7% 33.4% 18.7% 0.0% 龍6 JUDGE EYES 龍7 LOST JUDGMENT 龍 維新! 極 龍7外伝 エラー検知率で80~90%に到達! ©SEGA -
自動テストの割合は高ければ高いほど良い? • 人間のテストが減ることでゲームの品質が落ち ることもある – 例:バグはないけど面白くない… • 当たり前品質があるが魅力品質がない状態 • 自動テストはあくまで人間のテスト効率を上げ
るためのもの – 最後は人間が品質を保証する必要がある ©SEGA -
自動テストの効果 • 品質向上に寄与 – 新規バグとデグレ(エンバグ)の検出 – パフォーマンス計測に活用 – ゲームバランス調整に活用 •
コストは削減できる? – 手動テストのコスト増大を抑える効果がある – デバッグ期間の短縮が可能 – コスト削減はアピールしていない ©SEGA -
自動テストを10年やって気付いたこと • 自動テストは資産 – パッチやDLC、バージョンアップ、移植、シリーズ次回作の回帰テスト として使い続けることが可能 • 自動テストは信頼 – チームにエラーをエラーとして受け入れてもらうことが大事
– 手動プレイに限りなく近づける、自動テストの仕組みの説明に取り組む • 自動テストは継続 – 継続しないとノウハウが蓄積されない – 組織やチームの文化にしていくことが大事 ©SEGA -
目次 • クオリティエンジニアリングとは • クオリティエンジニアリングの実例 – ツール・サービスの実装 – ツール・サービスの運用 –
ツール・サービスのサポート – クオリティエンジニアリングの成果 • クオリティエンジニアの楽しみ方 • まとめ ©SEGA -
クオリティエンジニアになる方法 • 必要な技術・知見 – ゲーム開発 – ゲームQA – ソフトウェア開発全般 •
別の職種からのステップアップが現実的 – ゲームプログラマーから – ゲームテスターから – ソフトウェアエンジニアから 参照元:Test automation for video games: The first vertical slice https://www.youtube.com/watch?v=XicvYK9TZ9c&t=890s ©SEGA -
適切な提案をするために必要なこと • プロジェクト外の知見のみの提案 – NG:プロジェクトにマッチせず、普及しない可能性 • プロジェクト内の要望をそのまま実装 – NG:個々にはマッチするが、プロジェクト全体に マッチしせず、全体の効率化に寄与しない可能性
• プロジェクト内の全体のワークフローを俯瞰し て、プロジェクト外の知見を加味した提案 – OK:そのためにはプロジェクト内にいる必要がある ©SEGA -
クオリティエンジニアのマインド • 「おせっかい」であること – 自分の周りが困っていることに手を差し伸べる勇気 – 真に困っていることを突き止める探求心 • 信念を持ってフィードバック –
品質は時になぁなぁになる • 時間がない、忙しい、予算がない、組織の壁がある、言葉が 通じない… – しかし、品質を上げたくない人はいないはず – 品質を技術で守る最後の砦としての役割 • データに基づいたエンジニアの視点から品質を判断する ©SEGA -
クオリティエンジニアを長く続けるには • 開発・QAのチームメンバーがユーザー(顧客) – 顧客期待以上のツールを作る試行錯誤が楽しい – ゲーム作りと同様に100個作って1,2個程度の成 功率なので、小さく始める • ゲーム作りを「ゲーム」として楽しむ
– ゲーム業界内でエンタメを純粋に楽しむのは難しい • なぜ面白いの、なぜ売れているのかを分析してしまう – 長く続けるためにゲーム作りそのものを楽しくするこ とを目指す ©SEGA -
目次 • クオリティエンジニアリングとは • クオリティエンジニアリングの実例 – ツール・サービスの実装 – ツール・サービスの運用 –
ツール・サービスのサポート – クオリティエンジニアリングの成果 • クオリティエンジニアの楽しみ方 • まとめ ©SEGA -
日々成長を続けるアーキテクチャ Test Cases E2E Game Instances (PC/Console) In-Game Debug Game
Video File Sharing Auto Play Integration Smoke Hosts (PC) Test Scripts (Python) Target Controller Game Object Unit Data Validation Coverity Build (Warn as Error) AutoTest Manager Servers (File/DB) AutoTest Client Log Sender Crash Reporter Fluentd Kibana (Dynamic) Elasticsearch Folium (Static) File Sever (Dump) File Sever (Package) Servers (CI/CD) Agents (PC) Jenkins Version Control 詳細:自動テストのアーキテクチャとその理由ー大規模ゲーム開発の場合ー https://speakerdeck.com/segadevtech/zi-dong-tesutonoakitekutiyatosonoli-you-da-gui-mo-gemukai-fa-nochang-he ©SEGA Servers (Visualization) AutoTest Monitor Redmine (Wiki) Redmine (Issue) Notify Teams Email -
まとめ • クオリティエンジニアリングとは – ゲームの品質にとって重要な技術 • クオリティエンジニアリングの実践 – ツール・サービスを作るだけじゃダメ –
それらを運用して、成果を出すところまで持っていく ことが大事 • クオリティエンジニアとは – ゲーム制作のフロー全体を俯瞰して、技術を切り札に 品質の課題を解決するエンジニア ©SEGA -
参考文献 • CEDEC 2010 10ヵ月でHDゲームを開発する方法 ~龍が如くを支えたテクノロジ~ – • JaSST'16 Tokyo
「龍が如く」の高速デバッグ術 ~そびえ立つバグの山を踏破するための弾丸ワー クフロー~ – • https://speakerdeck.com/segadevtech/long-garu-ku7-guang-toan-falsexing-fang-falsezi-dongtesutohuo-yong-shi-li-totesutozi-dong-hua-timu-jia-niyoruruo-shou-yu-cheng-falsequ-rizuminituite CEDEC2020 「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム – • http://jasst.jp/symposium/jasst18tokyo/pdf/D4.pdf GCC’20 「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若 手育成の取り組みについて』 – • http://jasst.jp/symposium/jasst16tokyo/pdf/E2.pdf JaSST’18 Tokyo 無料で始める!「龍が如く」を面白くするための高速デバッグログ分析と自動化 – • https://cedil.cesa.or.jp/cedil_sessions/view/324 https://speakerdeck.com/segadevtech/long-garu-kusutazio-falseqaenziniaringuji-shu-wojie-jisitaquan-zi-dong-baguqu-risisutemu CEDEC2022 開発もQAも自動テスト!「LOST JUDGMENT:裁かれざる記憶」のQAテスター参加 で進化した「テスト自動化チーム(仮)」の取り組みについて – https://speakerdeck.com/segadevtech/kai-fa-moqamozi-dong-tesuto-lost-judgment-caikarezaruji-yi-falseqatesutacan-jia-dejin-hua-sita-tesutozi-dong-hua-timu-jia-falsequ-rizu-minituite ©SEGA -
参考文献 • CEDEC2024 「龍が如く」も「スーパーモンキーボール」も自動化!クオリ ティエンジニアリングチームによるマルチゲームエンジン対応で進化した「龍 が如くスタジオ」のテスト自動化環境について – https://speakerdeck.com/segadevtech/long-garu-ku-mo-supamonkiborumozi-dong-hua-kuoriteienziniaringutimuniyorumarutigemuenzindui-ying-dejinhua-sita-long-garu-kusutazio-notesutozi-dong-hua-huan-jing-nituite • 自動テストのアーキテクチャとその理由ー大規模ゲーム開発の場合ー
– https://speakerdeck.com/segadevtech/zi-dong-tesutonoakitekutiyatosonoliyou-da-gui-mo-gemukai-fa-nochang-he • Test automation for video games: The first vertical slice – https://www.youtube.com/watch?v=XicvYK9TZ9c • QAエンジニアってどんな仕事?~ゲーム開発におけるテストの世界~ – https://techblog.sega.jp/entry/2018/08/27/100000 • クオリティエンジニアってどんな仕事?―ゲームの開発もQAも横断して自動 化するプロジェクト専任エンジニア誕生の軌跡― – https://techblog.sega.jp/entry/sega_qe_work_202408 ©SEGA