村上 雅裕
許 信勇
河村 新太郎
KLab株式会社
数十台の端末で一斉に全自動テストができる
社内デバイスファームのご紹介
AirLab導入でテストコストの大幅削減と
品質向上!
2
講演者の紹介
3
2012年にKLab株式会社に中途入社。
入社後は、iOSエンジニア→Unityエンジニア→開発リーダー→プロジェクトマ
ネージャーを担当。
技術的にはC/S→Web→iOS→Unityなどを経験。いわゆる雑食系。
現在は開発組織作りとUnity関連の横断組織のマネジメントに従事。
今回のデバイスファーム導入では統括マネージャーを担当。
村上 雅裕
エンジニアリング本部 執行部
Unityエキスパートグループ グループマネージャー
KLab株式会社
4
大卒後2009年に日本留学へ
2015年にKLab株式会社に中途入社
長年にわたって、KLab内製のゲームエンジンであるPlaygroundの開発
と保守の傍らで、Unityのネイティブライブラリ、ミドルウェアの開発、アプ
リのセキュリティー推進と品質改善などの活動。
最近、自動テストの環境整備、プロジェクトへの導入サポートやブロック
チェーンの研究開発も担当。
許 信勇
テクニカルディレクター
エンジニアリング本部
KLab株式会社
5
セキュリティソフトウェアの開発に7年従事した後、品質管理の分野に転
向。
品質管理では開発者であった頃の知見を活かし、ソフトウェアテストへの
自動テストの導入に取り組む。
2018年にKLabに入社し、様々なゲームタイトルのテストマネジメントに携
わりつつ、ゲームテストの自動化を行っている。
河村 新太郎
品質管理グループ グループリーダー
品質管理部
KLab株式会社
6
会社紹介
7
KLab(クラブ)株式会社について
「エンターテインメントで、世界中のユーザーをひとつにつなげる」
をビジョンに掲げ
世界中の人々にワクワクしてもらえるサービスや技術を創造しています。
設立 2000年8月1日
資本金 54億5795万円(2023年7月末現在)
株式公開市場 東京証券取引所・プライム市場(3656)
代表者
代表取締役社長CEO 森田 英克
代表取締役副会長 五十嵐洋介
所在地
本社(東京都港区、六本木ヒルズ森タワー)
大阪事業所、福岡事業所
主要関連会社
株式会社グローバルギア
株式会社BLOCKSMITH&Co.
海外拠点 可来软件开发(上海)有限公司 (KLab China Inc.)
グループ従業員数 正社員 516名(2023年6月末時点)
主力事業:ゲーム事業
世界中で人気の高いアニメ、コミックな
どのIPを原作としたモバイルオンライン
ゲームを国内外に展開。
現在155の国と地域で配信
その他:
スマートフォン関連のアプリケーショ
ン、サービス及びサーバーインフラの
企画、開発、提供、新規事業開拓など
8
本日の講演内容
9
● デバイスファーム導入の背景
● AirLabとは?
● AirLabが導入できるまでの秘話
● 使ってみて初めてわかったAirLabのすごさ
● QAテストの変貌
● 今後の展望
本日の講演内容
10
デバイスファーム導入の背景
11
多種多様な環境でプレイ
・多くの端末(500機種以上) / OSバージョン(20種類以上)
・国によって言語 / コンテンツが異なる
・アプリのバージョンによってUIが異なる
様々な条件でのテストが必要
短いリリースサイクル
・2週間に1回のコンテンツ配信
・1ヶ月に1回のアプリのアップデート
テストを頻繁に実施する必要あり
ゲームのリッチ化
・複数のグラフィック品質(高/中/低など) が存在
・グラフィックス品質= 表現方法 / FPS / 演出 など
ユーザー設定によるケース数の増大
モバイルゲームのテストにおいて考慮すべき観点
品質を担保するために様々な端末での挙動や性能を
網羅的かつ継続的に確認する必要性
12
テストパターンの組み合わせ爆発問題
● グローバルで広く成功するには様々な環境で快適に遊べることが重要
● 開発を効率的に進めるには不具合・品質劣化を早期検知しておきたい
● しかしサポートする端末・OSのすべての組み合わせを手動でテストするの
はコスト的に非現実的
● 実態としては端末・OSの組み合わせを限定して確認
○ 概算:4 * 300 = 1200 ケース/日
■ 実施端末数:4端末 (iOS/Android合算)
■ シナリオテスト:300ケース
13
● KLabでは以下の特徴を持つ自動テスト環境を構築
○ 大量の端末を集中管理し、テストの同時実行を行うためのデバ
イスファーム
■ →NetEase社のAirLabを導入
○ テストシナリオ不要のAIを利用した自動テストツール
■ →AIテスト(ゴリラテスト)を自社開発
■ https://www.klab.com/jp/blog/tech/2022/jsai-award.html
課題解決へのアプローチ
本日はここの話をします
14
AirLabとは?
15
● 自前の端末で社内にデバイスファームを構築できる仕組み
● NetEase社が長年社内運用したデバイスファームを外販したサービス
● 端末格納用ラック、制御用ハードウェア、専用ソフトウェア等で構成
● 日本国内におけるAirLabの導入はKLabが初
AirLabとは?
ソフトウェア
ハードウェア
AirLab = +
※エンタープライズ版
16
● 中国の大手ゲーム開発・パブリッシング会社
○ data.aiが発表した「Top Publisher Award 2023」で世界5位
● 荒野行動、アイデンティティVなど日本でも有名なタイトルを多数リリース
● 多数のスタジオを持ち一定規模以上のプロジェクト全てでAirLabを導入
NetEase社とは?
17
なぜAirLabを選んだのか?
利用時間、テスト実行時間が無制限
● クラウド型のデバイスファームによくある制限
プロジェクトの需要に応じてラックに設置する端末を変更可能
● 不具合の出やすい端末、スペック別に揃える など
端末へのアプリのインストールやテスト実行などの自動化がしやすい
● デバイスファームによっては自動化ができないものも存在
社内ネットワークで完結するため情報漏洩の心配が少ない
● IPの情報漏洩にはセンシティブにならざるを得ない
18
AirLabの動作イメージ
NetEase社のAirLab
19
● 2020年末、某大手中国国内動画サイトを
運営する会社がAirLabを導入
● 近年の業務拡大によって、動画アプリから
ゲーム分野に進出
● 第一弾として700台の端末を格納できる
ラックを設置
● 主にスモークテスト、リグレッションテストで
の利用
● QA側のコスト削減や作業の効率化ができ
ている
AirLabの導入実績
※某社のAirLab専用ルーム
20
AirLabのラック
…
スマートプラグ
端末制御用PC
端末
…
スマートプラグ
端末制御用PC
端末
…
テスト実行/管理用PC
端末管理サーバー
DeviceKeeper
無線AP
● 端末格納用ラック
● 端末制御用PC (DeviceHub)
● 端末電源管理用スマートプラグ
● 端末管理サーバー (DeviceKeeper)
● 端末通信用無線AP
● テスト実行/管理用PC
AirLabのハードウェア構成
21
● 端末管理サーバ上で動作し端末の状態(使用状況、温度など)を監視
● 電源ON/OFF、画面ロック等の端末の操作が可能(API経由での操作も可能)
端末管理ソフトウェア (DeviceKeeper)
22
AirLabを導入できるまでの
秘話
23
● コロナ禍の中、私事で帰省(10ヶ月)
○ 上司の許可を得て、KLabChina(KLab上海支社)からリモートワーク
● KLabChinaの同僚との雑談でAirLabの情報を入手
○ 初見の感想は「これ、私たちでも作れそう」
○ しかし、冷静に考えると
■ 作ったら終わるのではなく、作ってからがスタート
■ 後は新規実装、バグ調査/修正、メンテナンス/保守に追われる日々
● せっかくなので、NetEaseの担当者と接触して、情報入手
○ エンジニア視点で様々な質問をした
○ 得た情報を文章でまとめて、(本社)社内で共有
AirLabとの出会い
24
社内で情報共有だけで終わるかと思いきや、
とあるプロジェクトの需要にぴったりで、
導入の検討を始めた...
25
両社とも輸入輸出周りが専門ではないため、調査することは山ほど...特に
● 法律面
○ 社内の法務グループを通して電気、輸入専門の先生に問い合わせ
■ 理由を説明してNetEaseにAirLabの部品一覧を取得
■ AirLabの輸入は法律で制限されていないのを確認
● 安全面
○ 電源改造を避けるようお願い
○ 日本の電気用品安全法(PSEマーク)を取得するよう交渉
○ その他の災害防止についてたくさんのやりとり
たくさんの調査と交渉を重ねた結果
PSEマーク(丸)があって、電源改造不要の日本仕様AirLabを作ってくれるように
導入にあたって苦労したこと
26
● 円安により予算オーバーしそう
○ FXはやらないのに為替レートをチェックする日々😱
○ ギリギリセーフで着地、再稟議せずに済んだ
外貨で支払う場合、為替市場の変動に結構影響受けるので気をつけるべし
● コロナ禍でコンテナ不足と上海ロックダウンによる大遅延
○ 越境EC気分で総重量300kg超える機材を運ぶのはのんきすぎ
○ ロックダウンが解除された頃コンテナ不足問題も消えた
○ 3ヶ月以上遅延したせいで、プロジェクト側への導入も遅れた
国を跨いだ場合、不測の事態を考慮して、もっと余裕をもった方がいい
その他の教訓
27
約2年をかけて、様々な困難をくぐり抜けて、
やっとAirLabを手に入れた!
ついでに、
今後日本国内でAirLabを導入するハードルを下げた
28
使ってみて初めてわかった
AirLabのすごさ
29
手を加えた部分
AirLabにはパワフルなAPIとツールが揃っている
● 以前KLab社内試作したDeviceFarmで諦めたiOS端末のサポートも充実
○ 例えば、ipaのリモートインストール
● Pythonスクリプトでラップしてより高度/複雑な機能を実現
AirLabのすごさ①
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
DeviceKeeperのAPI
API_A
API_B
API_C
…
airtestのAPI
API_A
API_B
API_C
…
func_a
func_b
func_c
func_d
func_e
…
module
devicekeeper
iOS_helper
android_helper
30
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
システム概要図
既存の仕組み
31
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
ビルドできたアプリを
アップロード
アプリのビルド
32
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
ダウンロード用のurl
を取得
アプリのビルド
33
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
①Jenkinsから全自動テスト
スクリプトにテストに必要な情
報を渡す
テストの前準備
34
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
②configを読み込んで端末
を選ぶためのフィルターでリ
クエストを作成
テストの前準備
35
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
③リクエストをDeviceKeeperに
送って使用可能な端末の詳細情
報を取得
テストの前準備
36
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
④DeviceKeeperへリクエストを
送って端末の充電開始、アンロッ
ク、確保
テストの前準備
37
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
⑤アプリ配布サイトからパッ
ケージをダウンロード
テストの前準備
38
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
⑥ダウンロードしたパッ
ケージを処理
aab→apk、ipa→app、
appの転送
iOS端末の場合、appのインストー
ルなどは制御用PC(MacMini)に置
いてあるツールが必要
テストの前準備
39
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
テストの前準備
⑦アプリをインストール
40
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
テストの前準備
⑧アプリを起動
41
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
⑨プロファイリングツール
を起動(必要があれば)
テストの前準備
42
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
⑩準備ができた端末の情
報を次のフェーズにパス
テストの前準備
43
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
①サブスレッドでshellを通
してpython仮想環境の
venvを起動
テスト
44
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
②仮想環境の中で端末の ip
addrとportとテストを制御するス
クリプトのパスをairtestのrunコ
マンドに渡してテストを起動
airtest runの中で制御用PCを介して
端末とコネクトをしてから、スクリプト
に従ってテストを進行
テストしながらlogやスクリーンショット
など情報収集も
テストシナリオを記載したスク
リプトもあれば、AI搭載したス
クリプトもある
テスト
45
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
テスト
46
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
①logなどの保存、プロファ
イリングツールを終了 (必要
があれば)
テストの後片付け
47
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
②アプリを終了
テストの後片付け
48
AirLab
テスト実行/管理用PC
Jenkins
アプリ配布サ
イト
端末管理サーバー
DeviceKeeper
全自動テストスクリプト
テストの前準備
テストの後片付け
テスト
…
スマートプラグ
端末制御用PC
端末
テストの後片付け
③DeviceKeeperへリクエスト
を送って確保した端末の解
放、ロック、充電終了
49
実装の前にドキュメントを読んで
多分ある程度自動化できるだろうと思っていたが、
ここまで全自動できたのは自分も驚いた
50
端末の集中管理で安心安全
● ラックに端末を集中することで管理やメンテナンスしやすい
○ DeviceKeeperを見れば、端末の状況が一目瞭然
■ 温度センサーやメール警報機能も搭載
○ 施錠することで、不慮の紛失や破損を予防
○ 定期的に人手で点検を行い、バッテリー膨張の有無など確認
● 毎日定時に充電の自動On/Off
○ 充電しっぱなしによるバッテリーの劣化を軽減
○ 手動でDeviceKeeperのGUIを使うのも十分便利だが
■ 充電を管理するスクリプトを書いて
■ 管理用PCのWindowsスケジューラーに丸投げ
AirLabのすごさ②
51
AirLabのおかげで
あまり苦労せず大量な端末の管理と監視ができた
AirLabがなければ、
盗難や火災で新聞紙面を飾っていたかもしれない
52
リモートワークの長期化による端末の共有問題をリモートアクセスで解決
「端末の受け渡しだけの出社」という無駄な時間とストレスを解消
● AirtestIDE Enterprise版
○ 主にスクリプトを使ってテストするケースが多い
● CloudDeviceと呼ばれるDeviceKeeperの拡張機能
○ アプリの起動や画面確認に最適
○ ブラウザだけで使える
○ タブレット端末と併用すると操作が楽
AirLabのすごさ③
53
54
QAテストの変貌
55
KLabの開発・QAテスト体制
ゲームの企画・実装・運営を行っている
KLabGames事業本部
品質管理部(QA)
ゲームのQAテスト・品質報告を行っている
自動テストなどの取り組みも行っている
QAで行っている自動テストでAirLabを活用しました
56
自動テストの取り組みについて
KLabでは「Airtest」を活用して自動テストを行っています
Airtestとは
NetEase社が提供する、
ゲームの自動テスト用ツー
ルです。
Pythonのスクリプトで動作
し、画像認識などアプリの
情報をもとに自動テストが
できます
57
自動テストの取り組みについて
接続しているスマホの画面を表示
pythonで操作内容を記載
Pythonの記載を元に、Airtestが接続しているスマホ端末を操作する
テスト手順をpythonで記載すれば、Airtestがテスト操作を自動で実施してくれる
58
自動テストの取り組みについて
手元でスマホ端末をPCに接続して自動テストを実施
・毎日、スマホ2~3台で自動テストを実施
・自動テストの実施結果をログに書き出す
・ログからその日のビルドに問題が無いかを確認
実施ログ
Airtest
実行
59
AirLabの導入で
QAテスト環境が変わりました
60
QAテストの変貌
AirtestIDEのEnterprise版が使用できるようになりました
● AirLab接続端末へのリモートアクセスとテスト実行機能を提供
● 無料版Airtest IDEの機能全部使える
● 複数端末でパラレルテストが可能 (Enterprise版のみ)
61
QAテストの変貌
実施ログ
Airtest
実行
AirLab リモートでAirLabの端末にアクセス
10台以上の端末で
同時に自動テストできるようになった
62
QAテストの変貌
自動テスト準備作業を行わなくて良くなった
● 以前は業務で使用するPCで自動テストを行っていた
○ 業務終了後は端末の電源をOFFにする
○ 端末を接続したままにできない(バッテリー膨張を懸念)
○ 端末の接続~アプリのインストール、自動テスト準備作業が必要
● AirLab導入後
○ DeviceKeeperが端末を制御(端末接続ON/OFF)
○ 端末へのアプリのインストール~自動テスト開始までを自動化
何も作業をしなくても、自動テストが開始できる環境が構築された
63
AirLabの導入で感じた
QAのメリット
64
AirLabを導入して、
テスト削減効果が倍増しました!
60万円 250万円
/月
/月
65
メリット①:テストコスト削減
人力では250万円かかるテストを自動で実施
AirLabの活用でテスト端末が増えた事で効果が倍増
自動テストの運用コスト: 20万円 ~ 40万円程度
AirLab導入前後でコストは変わらず
実施端末は増えるが、DeviceKeeperなどのソフトウェアで
端末管理が簡略化したため、コストは増えずに効果が増えた
66
メリット②:エンバグの発見/対処の早期化
AirLab導入で
エンバグを発見するスピードがUPした
複数端末の端末制御が容易になった事が要因
自動テスト実施準備も不要になり、実施コストも下がりました
デイリーで回帰テストを自動実行
前日に組み込んだモノの影響を早期に発見できる
67
メリット③:低発生頻度のバグ検知
AirLab導入で
自動テスト実施回数が増えた
テスト実施端末を手軽に追加できる事が要因
テスト内容に応じて、テスト実施量を柔軟に調整できる
テスト実施回数増加で、低発生頻度バグ検知率UP
クラッシュ率の低下など品質向上にも繋がる
68
メリット④:端末依存バグの検知率増加
AirLab導入で
自動テスト実施する端末機種が増えた
様々な機種で手軽にテストできる環境ができた事が要因
端末にリモート接続も可能なので、端末受け渡しも不要
バグの原因調査などにもスムーズに繋ぐ事ができる
日常的に幅広い機種でテストできる
機種の増加で端末依存バグを発見しやすくなる
69
QAテストで役立った具体例
バグの発見、修正確認テストでAirLabが活躍
現象:
● 特定箇所でアプリがフリーズする
発生条件:
● アプリ新規開始後、1時間の箇所でのみ発生する
● デバッグ機能を使用しない
● 特定の端末でのみ発生する
多くの機種で回帰テストを行っていたため発見できた
70
デバッグ機能を使わないというのが非常に厄介
しかも、発生箇所はアプリ新規開始後1時間の箇所
● 再現確認
● 影響範囲確認
● 原因調査
● 修正確認
全ての作業に1時間のゲームプレイが必要
発生頻度の確認や、修正確認は 5回 実施が必要
影響範囲確認のため複数端末で実施が必要
バグの修正・確認に多大なコストが必要になる
71
AirLab + 自動テストで作業を効率化
発生端末で
1時間ゲームプレイ
発生しない端末で
1時間ゲームプレイ
発生端末で
1時間ゲームプレイ
修正確認
修正確認
影響確認
バグの発生箇所まで自動テストで進める + 複数端末同時実行で効率UP
自動テスト中は他の作業ができる
72
QAテストの変貌
自動テストでAirLabを活用する事で
テストコスト削減効果が倍増
問題発見・対処が早くなる
低頻度の問題が見つかりやすくなる
端末依存の問題が見つかりやすくなる
73
今後の展望
74
社内全タイトルへの導入
● 新規・運営含めた社内全タイトルへのAirLabの導入
継続的なパフォーマンスの計測の実現
● 自動テスト実行時にパフォーマンスを計測し性能劣化の早期検知
長時間稼働によるエージングテストの実現
● 数十時間のエージングテストの基盤としての利用
実プロジェクトでシフトレフト(工程前倒し)の実現
● プロジェクトの早いフェーズからAIテスト(ゴリラテスト)をAirLabで回し、初回の手動
テストのNG率 / ブロック率を改善
○ AIテスト(ゴリラテスト) = 内製のスマートなモンキーテストツール
今後の展望
75
● 本日、ポータブル版のAirLabを持ってきました
● 気になる方は「Ask the speaker」にて話しましょう
最後に
76
ご清聴ありがとうございました

AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介