App Store / Google Play におけるキーワードの検索ボリューム推定について ( ASO )

今日 ASOの基礎とASOでのAPP ANNIEの活用法 で App Annie の新機能である検索ボリュームについて聞くことができたので、App Store / Google Play の検索ボリュームについてまとめてみる。

これまでの検索ボリューム推定

これまで、App Store / Google Play でユーザーが検索したキーワードの検索数(=検索ボリューム)を知ることは難しかった。

ASO の PDCA を回す中で、「キーワードA より キーワードB の方が検索数が大きそう」というのを推定したり、App Store / Google Play の検索サジェストから推定したり、ウェブの検索ボリュームを調べるツールからアプリの検索ボリュームを想像したりとかその程度だった。

App Annie の検索ボリューム

今回追加された App Annie の検索ボリュームの項目の話を聞いたら、検索ボリュームを表す指標として、一番良い指標のような気がした。

少し分かりづらいかもしれないが、 App Annie の検索ボリュームを算出するアルゴリズムについて教えてもらったものを以下に説明する。

App Annie はアプリ事業社からアプリダウンロード数のデータを提供してもらっている。データ数が総アプリの 10% ほどを占めているので、それ以外のアプリのダウンロード数もだいたい分かっている。このデータは推定ダウンロード数という形で提供されている。

また、それぞれのアプリのキーワード順位が分かっている。これはユーザーから見える、誰でも入手可能なデータで正確なデータ。

アプリのダウンロード数とキーワード順位の大量のデータからデータ解析すると、「このキーワードがどの程度ダウンロードに寄与していそう」というおおまかな予測ができる。これを検索ボリュームという値で提供しているらしい。

値は 100 点満点(?)のスコアのような形で提供されており、検索された絶対数ではない。そのためキーワード同士を比較するのに使うと良い。

これはかなり有益なデータだと思う。有料会員しか見れないのがつらいが。。。

ちなみに Searchman の検索ボリュームって

ちなみに、 Searchman の検索ボリュームは、あるキーワードで検索した時に検索結果として表示されているアプリの総数のみを指標として “検索回数” という名前でデータ提供している。検索ボリュームというより競合数かな。

まとめ

App Annie の有料会員のみ見れる機能だが、真面目に ASO に取り組みたい人にとっては、お金を払ってでも欲しいこれまでにはない精度の情報な気がした。自分もまた真面目に ASO やる時に検討しようかな。

Mixamo のアニメーション付きキャラクターを Unity で動かす

3D モデルにボーンを入れて Unity で踊らせてみた の最後の作業としてアニメーション付きキャラクターを Unity で動かす。

3D モデルの表示

Mixamo で 3D キャラクターにアニメーションを紐付ける でできた zip ファイルを解凍し、新規に作成した Unity プロジェクトの Project ウィンドウにドラッグして読み込む。

Mixamo fbx とテクスチャ読み込み
自分の場合は Models というディレクトリを作って、その配下にドラッグした。モデルのテクスチャファイルが有ればそれも一緒に読み込んでおく。

モデルファイルをシーンに配置
3D モデルをシーン内に配置する。この場合 Hierarchy パネルに YukiTanabe をドラッグアンドドロップしている。

テクスチャの設定
テクスチャがある場合には、 Materials 以下のファイル(今回の場合 No Name という名のファイル)の Main Maps > Albedo にテクスチャファイルをドラッグアンドドロップ。3D モデルに色がつく。

これで 3D モデルの表示部分は完了。

アニメーションの設定

Animator Controller の追加
Project パネルで右クリックし Create > Animator Controller を選択。アニメーションを設定するファイルが追加される。

ファイル名は MyAnimatorController としておく
ファイル名は MyAnimatorController としておく。このファイルをダブルクリックすると Animator ウィンドウが表示されるのでそこに好きなアニメーションを追加する。

Animation の選択
いかにもカンナムスタイルらしき名前のアニメーションにする。Project パネルで選択すると Inspector に表示されるので Animations タブを選択して、下の方にある Loop Time にチェックを入れる。

Animator ウィンドウ
Animator ウィンドウに YukiTanabe@gangnam_style をドラッグアンドドロップ。

3D モデルに AnimatorController の紐付け
最後に 3D モデルに Animator Controller の紐付けを行う。Hierarchy パネルの YukiTanabe を選択した状態で、Inspector の Animator 欄の Controller に Project パネルから MyAnimatorController をドラッグする(文字で書くとかなり分かりづらい)。

ビルドすると踊りだす。

以下の動画は適当に 3D モデルを量産して再生したもの。

Mixamo で 3D キャラクターにアニメーションを紐付ける

3D モデルにボーンを入れて Unity で踊らせてみた の第二の作業として 3D キャラクターにアニメーションを紐付ける。

Unity で別途 Animation をつけることもできると思うが、自分は手っ取り早く動くか確かめたかったので Mixamo のアニメーションをそのまま使った。こちらも無料でできた。

Mixamo の My Assets
上タブの “My Assets” メニューを選択。

My Characters からアニメーションをセットするキャラクターを選択
My Characters からアニメーションをセットするキャラクターを選択。右側に出る “FIND ANIMATIONS” を選択。

Featured から Free Test Pack を選択
とりあえず今回は Free Test Pack を選択。他を選択しても後の作業は変わらないので好きなものを選んで大丈夫。

CUSTOMINZE PACK を選択
“CUSTOMINZE PACK” を選択

My Animations に追加された
My Animations に 3D モデルとアニメーション群が紐付いたパッケージが追加された。”QUEUE DOWNLOAD” を選択。

Mixamo のダウンロード設定
ダウンロード設定画面が出る。今回は Unity 用のファイルにしたいので、Format を FBX for Unity (.fbx) にして “QUEUE DOWNLOAD” を選択。

Mixamo ダウンロードページ
Downloads タブに移動すると、しばらくして DOWNLOAD ボタンが表示されるのでダウンロードする。

zip ファイルがダウンロードできたら OK。

Mixamo を使って無料で 3D モデルのリギングをする

3D モデルにボーンを入れて Unity で踊らせてみた の第一の作業として 3D モデルをリギングする。

自分がもらった 3D データはボーンのない状態だったのでボーンを入れるリギングという作業が必要だった。リギングは 3D データに骨を入れるような作業。リギング済みのデータの場合この作業は必要ない。

Mixamo という Web ツールを使ってボーンを入れていく。

まずは mixamo のユーザー登録をする。

Mixamo Store ページ
ユーザー登録が完了したら、上部の Store タブを選択して、Store ページに移動。UPLOAD ボタンを選択。

Mixamo ファイルアップロード
3D データ file (.OBJ など) をドラッグする。

Mixamo ファイルアップロード中
アップロードするとプログレスバーが出るのでしばらく待つ。

Mixamo アップロード完了
アップロードが完了すると 3D モデルが表示される。 NEXT を選択。

Mixamo リギング開始
リギングの設定画面が表示される。右の手本を参考にして、色付きの丸をドラッグしていく。左右対称の場合は “Use Symmetry” をチェックしたままで簡単に設定できる。自分のモデルは少し傾いていたのでチェックをはずして設定した。

Mixamo リギング設定
ちゃんと配置できたら NEXT を選択。

Mixamo リギング完了
暫く待つと、リギングが完了する。完了すると 3D モデルが動き出す。

ここまでできればリギング完了。

3D モデルにボーンを入れて Unity で踊らせてみた

先日 TechShop Japan で doob が展示されており、3D データを作ることができた。今回はそのデータにボーンを入れて Unity 上で踊らせてみる。

必要な作業

以下の作業が必要だった。1 と 2 の作業は今回は mixamo という Web ツールを使う。自分がやった範囲だと無料で全てできた。

説明のためにスクショを貼りまくるため、それぞれページを分けて説明する。

  1. リギング
  2. アニメーションを追加
  3. Unity 上でアニメーション設定

完成形はこちら

いかにもカンナムスタイルみたいなやつを踊らせてみた。

東京ゲームショウ 2015, 2016 から見る VR 業界の急速な成長

東京ゲームショウ 2016 に行ってきた。東京ゲームショウ 2015 と 2016 の VR 業界の差分を自分が感じた範囲で紹介しようと思う。

東京ゲームショウ 2015 の VR

2015 年も VR 系の展示はあったものの、ハコスコなどで 3D 空間を表示してジャイロセンサーで頭の動きをトラッキングしてカメラの回転を反映させている程度だった。 Oculus も展示していたようだが自分が見ていなかったのでここの部分は不明。

2015 年の VR は 3D の CG をどのように表示するかという部分にフォーカスされていたように思う。また、2015 年は個別のゲームで VR 対応しているものを展示しており、展示場所が点在していた印象。

東京ゲームショウ 2016 の VR

今年のゲームショウではまず、初日の基調講演が “VRマーケットの展望” から始まり、 VR 専用の展示ゾーン (9-11) が大きく設けられていた。また PSVR や HTC Vive, FOVE などのメジャーどころが出展しており、それぞれの整理券がすぐに完売していた。展示エリアに占める VR の割合が大幅に増えた。

展示の中身も大きく変わり、今年は VR 空間内で 3D 空間を表示するのに加え、ユーザーのインプット、フィードバック方法を変えるアプローチが多くされていた。以下に自分が試せたものを紹介していく。

Rez Infinite VR

電気刺激を様々箇所に受ける独自のスーツ (Synesthesia Suit) を着て体験するアプリケーション “Rez Infinite VR” が出展しており、運良く体験することができた。

Synesthesia Suit

音楽に合わせて微弱な電気刺激が与えられ、ダメージを受けた時に全身に電気刺激が与えれるなど、非現実的な空間だが非常にリアルに感じた。二人がかりで装着が非常に大変そうで申し訳ない気持ちになったが、ゲームショウで体験した中で一番面白いアプリケーションだった。

HTC Vive

既にご存知の方も多いと思うが、空間内移動を可能にする HMD である HTC Vive が出た。移動できる範囲は最大で 5m 四方程度。 5m 内で移動が完結できるパターンは少ないので、それぞれのアプリケーションでは The Lab のように空間内でワープできる実装が施されている。

3DRudder

ルンバのような形の足で操作するタイプのコントローラー 3DRudder が出展されていた。足の力のかけ方で移動方法をコントロールできる。

FUTURETOWN

FUTURETOWN では馬乗り型、バイク型、足で操作するタイプのコントローラーを展示していた。コントローラーでありながらフィードバックも同時に受けることができる。VR 空間内でカメラを勝手に移動するのは VR 酔いにつながって良くないとされているが、ユーザーのインプットとフィードバックを両方得られるコントローラーなので、移動時にも自然な映像に見えた。

馬乗り型のアプリケーションは試さなかったが鳥に乗って空を飛ぶシーンがあり、それが実際どれくらい自然に感じるのか試してみたかった。

FOVE

視線をトラッキングするタイプの HMD。 目の動きで VR 空間内のモノを操作するアプリケーションが可能になる。最近 FOVE 以外でも Oculus などに装着できるタイプの視線トラッキングカメラが販売されており、非常に楽しみな領域。

他にも

他にも非常に面白そうな展示があったが、展示エリアに置いてある HMD の台数と人の数のバランスが合わないよくある問題で、どこも行列になっていて半分も試せなかった。

まとめ

ゲームショウ 2015, 2016 の一年間で、ゲームにおける VR が非常に大きく成長していると感じた。見る、聞くだけでなく、動くや感じるなどの感覚が加わり、見ることに対してもそれに対するフィードバックが得られるようになった。

Oculus Remote が認識されない時の対処法(Oculus コントローラーのペアリング)

Oculus をインストールして Xbox コントローラーで操作できるようになったが、Oculus Remote のペアリングのフローを飛ばしてしまったのか、Oculus Remote が認識されなかったので別途設定した。

同じように困っている方のために記事を残しておく。

Oculus Remote のペアリング方法

必要な作業を以下に記述していく。
公式のサポートはこちら:Oculus 公式サポート

Oculus アプリを起動
Oculus アプリを起動。ギアマーク > Settings を選択

Settings から Devices を選択
Settings から Devices タブを選択(自分はペアリング完了しているので、ここで既に ON になっていることはお気になさらず)

Configure Rift から Add Remote を選択
Configure Rift > Add Remote を選択

ペアリングの設定画面
ペアリングの設定画面が開くので、指示の通り Remote のボタンを押す

Remote pairing
こうなって

Remote pairing 2
こうなるのでまたボタンを押して

ペアリング完了
ペアリング完了。

Devices Remote
Devices タブで Remote が ON になっていることが確認できれば OK。

App Store と Google Play の ASO 基礎

iOS (iPhone/iPad) のストア App Store と Android のストア Google Play はストアに同じような情報を設定できるが、それぞれの検索エンジンのアルゴリズムが異なるため、ASO 対策も異なる。

この記事では、ユーザーが入力する情報のなかで ASO に影響を与える変数をそれぞれまとめる。

なお、App Store も Google Play も検索アルゴリズムは日々アップデートされているので、以下に書いた情報が今後正しい情報である保障はない。以下の情報は過去一年以内に私が調査した結果から得られた知見である。

App Store の ASO に影響を与える変数

App Store

  • アプリ名
  • キーワード

アプリ名

アプリ名がキーワード検索に一番影響を与える変数である。そのため、 ASO 的にはアプリ名に多くのキーワードを入れた方が効果が高いが、最近アプリ名にキーワードを入れることに対して厳しくなっているので現実的に対策が難しくなっている。あくまでも自然に関連するキーワードを入れていきたい。最近アプリ名の上限文字数は 50 文字に制限されている。

キーワード

キーワードはアプリ名の他でキーワード検索に影響を与える代表的な変数である。言語ごとにカンマ区切りで 100 文字まで入力できる。カンマの後に半角スペースを入れるともったいないのでギリギリまでつめたほうが良い。

他には?

説明文は検索結果に影響を与えない。そのため、説明文はアプリ詳細ページに来たユーザーがダウンロードにつながるような自然な文章が求められる。

デベロッパー名はユーザーが設定できる点で、アプリ名とキーワードの他に検索に与える唯一の要素だと思われるが、これは頻繁に変更できる要素ではない。

App Store のアプリ名とキーワードは含有率の影響もなく、アプリ名とキーワード間で重複しても効果がない。そのためアプリ名に同じワードを複数入れても意味がないし、アプリ名に入ったワードをキーワードに含めてもプラスの効果はない。

Google Play の ASO に影響を与える変数

Google Play

  • アプリ名
  • 簡単な説明文
  • 詳細な説明文

アプリ名

アプリ名がキーワード検索に一番影響を与える変数である。 文字数の上限は 30 文字である。Google Play のアプリ名は含有率の影響を受けるので全体的なワード数が増えると一単語あたりの影響が弱まる。

簡単な説明文

簡単な説明文は上記に上げた 3 つの変数の中で一番影響の小さい変数である。文字数の上限は 80 文字である。簡単な説明文は検索に与える影響がかなり小さいため、ユーザーが詳細ページを見た時にインストールにつながるような訴求文言にしたほうが良いと思う。

詳細な説明文

詳細な説明文はアプリ名の次に気軽に変更できて検索に影響を与える変数である。文字数の上限は 4000 文字である。詳細な説明文は含有率の影響を受けないため、文字数が増えても一単語あたりの価値は下がらない。

他には?

App Store と同じく、デベロッパー名は検索に影響を与える。しかしこれも気軽に変更できる要素ではないので、最初に慎重に設定したほうが良い。

Google Play では同じキーワードを繰り返し使うとそのキーワードの価値が上がる。そのため、重要なワードはアプリ名にも簡単な説明文にも詳細な説明文にも入れたほうが、そのキーワードの検索順位は上がる。なおかつ詳細な説明文に複数回用いた方が検索順位が上がる。ただし、Google はスパム対策がされているため、あくまで自然な文章となるように無理矢理入れないほうがよい。

まとめと補足

以上で App Store と Google Play の簡単な比較を書いた。他にも溜まった知見があるので少しずつ記事にしていければと思う。

ASO は検索順位を上げるために効果的な方法であるが、ストアが望まない形でやりすぎるとリジェクトされたり削除される危険性もある。そのため、あくまでリスクを考えて各自の判断で行ったほうがよい。上記の方法を試したことによる責任は負えませんのでmm

Unity で VR モード時にカメラの位置を固定する

Unity で VR モードにして Oculus Rift, HTC Vive などのヘッドマウントディスプレイでプレイすると、自動的に hmd とセンサーとの距離からカメラの位置が動く。

これは、 Unity 公式ドキュメント:VR 概要 の “カメラを理解する” のセクションに記載されている。

カメラの Transform は、ヘッドトラッキングされた姿勢で上書きされます。

カメラの位置 (position) は固定して回転 (rotation) のみ有効にしたい場合がある。そのためには、カメラの親となるゲームオブジェクトにカメラの動きを無効化するための処理を加える必要がある。

もしもカメラを動かしたい場合は、別のゲームオブジェクトの子としてアタッチし、そのゲームオブジェクトのルートを動かしてください。

Unity の VR モードでカメラの位置を固定してみる

Unity VR モードのカメラを固定

今回は CameraController という空のゲームオブジェクトを配置し、その中に Main Camera を挿入した。CameraController にスクリプト CameraController.cs を Add Component した状態。

スクリプトの中身は以下のようにする。

CameraController.cs

using UnityEngine;
using UnityEngine.VR;
using System.Collections;

public class CameraController : MonoBehaviour {

void Update () {
    // TODO: ここで固定したい位置があれば指定しておく
    Vector3 basePos = Vector3.zero;

    // VR.InputTracking から hmd の位置を取得
    Vector3 trackingPos =
            InputTracking.GetLocalPosition(VRNode.CenterEye);

    // CameraController 自体の rotation が
    // zero でなければ rotation を掛ける
    // trackingPosition = trackingPos * transform.rotation;

    // 固定したい位置から hmd の位置を
    // 差し引いて実質 hmd の移動を無効化する
    transform.position = basePos - trackingPos;
}

}

CameraController の position に、固定したい位置から VR.InputTracking のポジションを引いた値を代入している。 Update メソッドに処理を書くことで常に hmd の動きを無効化するようにしているが、初期位置のみ固定したい場合は Start メソッド内に処理を移動すればオッケー。

また、ローテーションを無効化したい場合も同じように固定したい rotaiton との減算を行えば大丈夫。

補足

位置固定はできるが、実際にこれで Oculus, Vive などでプレイすると実際の動きとの差で VR 酔いを起こしてしまうかもしれない。自分の場合は少し気持ち悪さを感じたので、本番のプロジェクトでは導入しない予定。

特定のケースに限定して、同しようもない場合にこのような実装にしたほうが良いと思う。また、 Unity で位置やローテーションの無効化をサポートしそうな気もするので最新情報をキャッチしてから組み込んだほうが良いかも。既にあったりしたら教えてください。

Unity で VR 端末に対応する

Unity で Oculus や HTC Vive 用のアプリケーションを作成するためには VR 端末に対応する簡単な設定をする必要がある。

Player Settings > Other Settings > Virtual Reality Supported を ON にすれば良いのだが一応スクショも貼って丁寧に説明する。

Unity のメニューから File > Build Settings を選択” /><br />
Unity のメニューから File > Build Settings を選択</p>
<p><img src=
Player Settings を選択

Unity の Inspector が開くので Other Settings を展開
Unity の Inspector が開くので Other Settings を展開

Virtual Reality Supported を ON にする
Virtual Reality Supported を ON にする

以上。