みなさんはコンテンツを作成する際、最適化・ブラッシュアップの期間をどれくらい取っていますか? ストレスなく最適化が実施出来ていますか? 今回の記事では、弊社で取り入れている最適化の基本的プロセスをご紹介し、さらに最適化を問題解決と捉え、最適化を行う際に押さえておきたい問題解決と分析の7つ道具を具体例を挙げてお話します。これからゲーム開発やアプリ開発を始めようとしている方、コンテンツのブラッシュアップがうまくいかないと感じている方、本記事を参考にしていただきコンテンツ力アップにお役立てくださいませ。

  1. 最適化の重要性とメリット
  2. 最適化の基本プロセス
    2-1. 測定 (定量化)
    2-2. 分析・問題定義
    2-3. 仮説の構築
    2-4. 仮説の立証 (再測定)
  3. 問題解決と分析の7つ道具
    3-1. MECE
    3-2. 問題発見の4P
    3-3. ゼロベース思考
    3-4. 仮説思考
    3-5. CS/CE分析
    3-6. 感度分析
    3-7. ABC分析

最適化の重要性とメリット

品質・パフォーマンス面での重要性・メリット コードの最適化を行うことで、「アニメーション」や「エフェクト」という重要な要素を作りこむことが可能になり、ユーザー体験の向上につながります。さらに、CPUの稼働率、メモリの使用量に余裕が生まれ、継続的な開発を行う余地も残せます。パフォーマンスがギリギリの状態では、バージョンアップによる機能追加やエフェクト追加をすることが厳しくなってしまうためです。最適化を行わない状態では、メモリリーク、プチフリーズなどといったユーザーにとって嬉しくない現象が発生することが多く、最適化は必須の対応と言えるでしょう。 コスト・収益面での重要性・メリット 運用データを分析し改善項目に優先度を設けることや、ユーザー期待度の高いものに開発資源を集中させることは、費用対効果の増大につながります。また、最適化されたコンテンツはより多くのユーザーにリーチすることができ、ユーザー数・収益の拡大につながるでしょう。最適化の実施はコンテンツをより良いものにしユーザー体験を向上させるだけでなく、コンテンツを継続開発していく上でも必要なことだと言えます。続いて弊社の開発フローに取り入れている最適化の基本プロセスをお話しします。

最適化の基本プロセス

 

  1. 測定 (定量化) コンテンツの特定の動作に対し定量化を実施します。例えば、特定画面間の遷移を10回繰り返す。ゲーム中の特定のユーザー操作を10回繰り返すなど。その際、フレームレートの変化、メモリ量の変化をデータとして収集します。この動作は繰り返し行うため、測定を自動化したり、コンテンツに再現機能を持たせると尚良いでしょう。
  2. 分析・問題定義 定量化されたデータを元に問題となる箇所を定義します。特定の箇所でFPSが大きく低下している。特定の操作でメモリがリークしているなどの問題を見つけます。さらに詳しく調査する場合、重要な箇所でコードの実行に何ミリ秒かかっているかなども計測します。
  3. 仮説の構築 問題の原因となる仮説を立て、仮説を確かめるための変更を行います。例えば、特定の動作でメモリリークしていることが確認された場合、ある一部分の機能が原因であると仮定し単体テストを行ったり、単機能に分解するのが難しい場合は一部分のパラメーターを増加させ、その変化量(影響度)を計ることで原因を絞り込むことができます。
  4. 仮説の立証 (再測定) 再度測定を行い仮設を立証します。原因が特定できれば最適化できる可能性があることがわかります。

このサイクルを最適化したい項目毎に実施します。最適化やブラッシュの作業は試行錯誤を繰り返すことになるため、パラメータを変更しやすい作りにしておくとよいでしょう。測定には以下の計測ツールを使うとが大変便利です。

問題解決と分析の7つ道具

物事の効果を測定し課題を設定して解決していく手法は、コンテンツ開発に限らずビジネスを進めていく上でも大切な考え方の1つです。ここからは最適化プロセスを1つの問題解決とみなし、最適化とコンテンツのブラッシュアップに役立つ問題解決の7つ道具を紹介します。

  1. MECE MECEとは、Mutually Exclusive, Collectively Exhaustiveの頭文字から取ったもので「モレがなくダブりもない」という集合の概念。見落としていた問題はないか、重複して検討している問題はないか。効率的に問題を対処するためにコンテンツや再生環境をあるテーマのもと分類してみましょう。

    単純に画面毎に最適化を考えるより、例えば通信性の有無が与える影響を考慮した最適化や、更新性を考慮した設計の最適化など、MECEを用いることで問題が発見しやすくなるでしょう。
     

    モバイル環境での最適化を考えたとき、特定のOS毎での検証・最適化、ハードウェアの違いによるパフォーマンス最適化メモリスペックを考慮した設計など、検討することが多岐に渡ります。前もって最適化項目を把握しておけば工数の見積もりが立てやすくなるでしょう。
  2. 問題発見の4P
    「問題」とは「現状」と「理想」とのギャップとも言えます。理想の姿、最適化された状態をイメージするためには、様々な軸(目的、空間、立場、時間)でコンテンツを眺める必要があります。 ・Purpose (目的軸) – 何のためにその施策を行うのか。何のためのアニメーション、何のためのボタンなのか。真の目的を理解することでブラッシュアップ・最適化を効率的に実施できるでしょう。 ・Position (立場軸) – 誰にとって、どんなユーザーにとって問題なのか。どういう立場で問題をとらえるかによって、問題の発見・解決により早く近づくことができます。例えばモバイルゲームのライトユーザーになったつもりで見てみる、クライアントの立場になって見てみる。コンテンツを様々な立場から眺めてみるとよいでしょう。 ・Perspective (空間軸) – 物事を捉える「視野」を広げたり、視点を変えることで問題が発見されたり、新たな解決策が見出されることがあります。例えば、1画面では違和感はないがコンテンツ全体の中で捉えると違和感に感じることや、ターン制と捉えて開発してたゲームを、アクションシューティングと捉えて開発することでよりアクティブな実装が可能となる事など。 ・Period (時間軸) – その問題はどの時点での問題なのか。例えば、月初では問題がなかったことが月末になると問題になってしまったことはありませんか? 物事を時間軸を変えて捉えると新たな問題や解決策が見つかる場合があるでしょう。
  3. ゼロベース思考
    問題を解決しようとするときに、既成概念にとらわれずゼロから物事を捉え直して考える思考法。例えば、コンテンツのパフォーマンスアップという課題があった際、コードレベルでの解決のみに頼らず、ビジュアル面さらには表現方法まで検討する範囲を広げると、解決策が見つかることがあります。
  4. 仮説思考
    最適化のプロセスでも触れた通り、問題に対してその時点で考えられる「仮説」を立て、それを立証していく手法。経験が長い開発者は、新たな問題に直面した際でも過去のノウハウから類推し仮説を立てるのに長けています。様々な問題を解決していくことで仮説構築力は上がります。仮説が外れても気にせず試行錯誤を繰り返すことも大切です。
  5. CS/CE分析
  6. ユーザー満足度(Customer Satisfaction)とユーザー期待度(Customer Expectation)をマトリックスにして問題の優先度付けを行います。ユーザー期待度の高いものから対応することで開発の投資対効果を高めることができます。
  7. 感度分析
  8. 問題に影響するパラメーター(変動要因)を設定し、各パラメーターによる影響度を計測します。最も影響のあるパラメーターから順に調整することでより効率的に最適化を行うことができます。影響度の高いパラメーターのノウハウがあれば開発工数の削減につながります。
  9. ABC分析
  10. 複数の事象にランクをつけて管理する分析手法の1つ。例えばアイテム販売数の累積比率を算出し70~80%付近までをAランク(主力商品)、95%付近までをBランク(準主力商品)、95%~100%付近をCランク(非主力商品)とすると、それぞれの特性に応じた最適化を行うことができます。またこの表によると全体の20%の商品(アイテムAとアイテムB)が売上の80%を占めるというパレートの法則(全体の数値の大部分は、全体を構成するうちの一部の要素が生み出しているという経験則)があてはまることがわかります。このことを事前に予測し最適化の対象を選択・集中するとさらに効果的です。

まとめ

今回の記事ではコンテンツのブラッシュアップ・最適化に有効ないくつかのフレームワークや考え方をご紹介しました。最適化の作業は一見難しそうですが、細かいレベルに分解すると全体の作業工程が明らかになり開発フローの中に取り入れることができると思います。本記事で紹介したフレームワークを活かしてコンテンツのブラッシュアップに役立てていただければと思います。 次の内容も合わせてご覧ください。

※Icons by dryicons