はじめに
皆さんこんにちは。
普段、モバイルゲームの品質管理をしているものです。
不具合の再発防止や業務効率化などに従事しております。
毎年QAに関する記事を書いていますが、今回は「パフォーマンス検証」の取り組みについて書きたいと思います。
あくまで一例なので参考程度に読んでいただけると幸いです。
パフォーマンス検証とは?
まず初めにパフォーマンス検証について説明します。
パフォーマンス検証とはアプリが動作する環境での処理能力や負荷耐性を測定・評価する作業のことを指します。
具体的には以下の項目に対して必要な基準を満たしているかをチェックしていきます。
それぞれの項目に対して検証内容は異なりますが今回の記事では一部抜粋してご紹介します。
- フレームレート(FPS)
- メモリ使用量
- CPU負荷/GPU負荷
- デバイス間の動作差異
- ネットワーク遅延や負荷への耐性
パフォーマンス検証を怠ると...
パフォーマンス検証をしないと以下リスクの発見が遅くなり、
プロジェクトへの影響が大きくなってしまうので早期に見つけることが大切です。
- クラッシュの増加
メモリリークや高負荷の放置により、アプリがクラッシュしやすくなる - 低評価レビュー
「動作が重い」「クラッシュする」などのレビューが目立ち、アプリの評価が下がる - 必要スペックの増加
十分に検証していないと、低スペック端末で動作が極端に悪化
結果として多くの潜在ユーザーを失う - 収益機会の損失
不満を抱えたユーザーは課金や継続利用を控えるため収益が減少する
これらを改善するためにパフォーマンス検証が必要になります。
取り組み
まず、パフォーマンス検証を行うきっかけとして、低スペック端末を中心にアプリ落ちが頻繁に起きることが、SNSやお問い合わせによるユーザーからのFB、運営メンバーのテストプレイから発覚したため、早急に改善が必要になったという背景からになります。
そのうえで私が運営中のタイトルで行ったパフォーマンス検証を一部ご紹介します。
基準の設定
- フレームレート(FPS):目標30FPS以上
- フレームレートは開発側で作成したデバッグツールから測定しております
- 他にもツールなどで測定できると思います
- ターゲット端末:iOS/androidの低スペック機種、ユーザー使用率が高い端末
※低スペック端末はサポートの下限値、ユーザー使用率は全体の端末所持状況を調査して決定しています
検証内容
- 高負荷シーンでの動作検証
-
主にバトル周りやオブジェクトが複数置かれている箇所でクラッシュ率の計測
- 地道ですがバトルの検証だと数十回バトルをこなし何回目にクラッシュするかを確認しています
- 手順や条件は開発チームと相談しています
※解析データはiPhoneが提供しているデバイス解析になります
-
発熱チェック
- 発熱は大まかに確認しています
- 具体的に何℃といったものは作らず、プレイする上で熱すぎて持てないレベルになっていないかを基準に検証しています
- かなり曖昧なので今後明確な基準を定めます
-
- 探索プレイ
- 上記以外の個所で落ちやすい箇所がないか確認
パフォーマンス検証の振り返り
成果
検証を通してメモリリーク、クラッシュの原因となる箇所の情報提供ができ、
改善後は全体の動作が安定し、安心してリリース準備に移ることができました。
開発チームには高負荷シーンでの動作検証と発熱チェックなどの検証結果を報告しています。
※どこで何をどうしたらクラッシュするのかを報告することが大切
気づき
ターゲットの明確化
・ゲームのメインユーザー層を明確にすることで、必要な検証範囲を効率的に絞り込めた
早期テストが鍵
・開発後半に問題が発覚すると、修正のコストが大きい
・コードフリーズされてから検証を行っていたため、着手するタイミングに遅れが出てしまい修正コストがかかる
・開発の初期段階から継続的に検証を行うことの重要性
チーム間コミュニケーションの大切さ
・開発チーム全員が同じ認識を持つことの重要性
・例えば、デザイナーやアニメーターが最適化を考慮せずにリッチな素材を提供すると、結果的に開発が非効率になる
・エンジニア・デザイナー・プランナー間で早期からの情報共有が、パフォーマンス問題の未然防止に役立ち、検証個所も明確になる
まとめ
モバイルゲームのパフォーマンス検証は、単なる技術的なタスクではなく、ゲーム全体の品質やユーザー体験を左右する重要なプロセスになります。
動作のスムーズさ、クラッシュ防止、端末間での均一なプレイ感を実現することで、ユーザー満足度を向上させ、結果としてアプリの成功につながります。
パフォーマンス検証は手間のかかるプロセスですが、その効果は大きく、高品質なゲームを実現するための投資なので短期的なコストに目を奪われず、長期的なメリットを見据えて取り組むことが重要になると実感しました。
ただ、検証内容としては決められた動きを何度も実行する形になるので自動化による効率化も実現していきたいと思います。
この辺りは今後の展望として取り組んでいきたいと思います。
それでは、みなさんよいクリスマスを