平尾と申します。
この度、村上様が代表をされております「データラーニングギルド」様の分析プロジェクトに参加させていただき、FreCre, Inc.様が開発されております英語学習アプリ「英語物語」に関する分析を行いました。
以下はプロジェクトの最終報告になりますので、これから売上等の分析をしたいと考えておられる方にとって少しでも何かのご参考になりましたら幸いです。
概要
本記事では、英語学習アプリ「英語物語」の目標でもある売上及び継続ユーザー向上に対して仮説を立て、BigQuery上に保存されたユーザー関連データを基に以下3点の分析を行った。
<課金年齢層の分析>
売上に貢献する年齢層を明らかにし主要ターゲット層とすることで、売上向上に繋がるという仮説を基に分析を行った。
- [分析から得られたインサイト]
- 売上の7割を30代~40代が占めていることが判明した。
- 上記の年齢層を対象とした広告展開などを実施することで、売上向上が見込める可能性があるという結果が得られた。
<上位課金ユーザー課金アイテムの分析>
課金額大きいユーザーの課金傾向や売上の大きいアイテムについて調査することで、売上向上に繋げることができるのではないかという仮説を基に分析を行った。
- [分析から得られたインサイト]
- 登録後一定期間内において、売上上位を占めるユーザーは「gacha_clear」というアイテムを多く購入していることが確認できた。
- 当該アイテムの販売形態等を確認した結果、条件を与えてA/Bテストを行うことで、最適な価格や販売方法が見つかり、更なる売上向上に繋がるのではないかという結論が得られた。
<継続ユーザーの特徴分析>
継続ユーザーの特徴を調査することで、ユーザーの継続要因が見つかるのではないかと考え分析を行った。
- [分析から得られたインサイト]
- 登録後一定期間内における継続ユーザー割合は、カード取得したユーザーで約52%、カードを取得していないユーザーで約30%であり、ガチャの実行によるカードの取得が継続に繋がった可能性が考えられる、という結果が得られた。
- また、カード取得ユーザーの中で、比較可能な説明変数を用いて決定木による継続の要因分析を行ったところ、ガチャによる取得カード枚数が1枚のユーザーに対して2枚以上のユーザーの方が2日以上継続するという傾向が見られた。
使用データ
アプリのユーザーデータはごん様にBigQuery上のデータを共有していただいた。
各テーブルの情報は以下の通り。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1872129/bbd7e0a6-96aa-a482-46f0-846cf03bdc34.png)また、年齢層毎のユーザー数はごん様にFirebase上のデータを共有していただいた。
課金年齢層の分析
集計内容
売上の多い年齢層をターゲット層にすることで売上向上に繋がるという仮説を基に売上を年齢層毎に集計した。
データ期間
年齢層毎の課金ユーザー数=2021年1月12日~6月13日
年齢層毎のユーザー数=2021年9月1日~11月7日
年齢層毎のユーザー数の最終期間(2021年11月7日)を除き、データを取得できる最大期間で実施しています。
除外データ
・通貨がJPYでないユーザー
・生まれ年が入力されていないユーザー
・2021年6月のみ課金しており他ユーザーと比較し桁の異なる大量課金を行っていたユーザー(1名)
・100歳を超えるユーザー
・34歳のユーザー
34歳を除外した理由
ユーザーが生まれ年を入力する際のデフォルトが1987年のため、右記グラフの通り今年34歳のユーザーが非常に多く、正しい生まれ年ではないものを多く含むと考えたため、データから除外している。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1872129/4f62d397-c4d3-65e0-26a3-c402accae45f.png) 注) グラフ内「理論値」は30代において各年齢の人数が一様であった場合の理論値使用テーブル
・UserStateData
・PurchaseRecordData
分析内容
年齢層毎の課金ユーザー数や売上額について、UserStateDataの生まれ年から2021年時点のユーザー年齢を計算し、PurchaseRecordDataよりユーザー毎の課金額を計算し、各ユーザーの年齢と課金額を求め、ユーザーの各年齢を年齢層に変換し年齢層毎に結果をまとめることで集計した。
年齢層毎のユーザー数については、共有していただいたfirebaseのデータを用いて集計した。
年齢層の計算
年齢を10で割り、切り捨てた数字~年齢を10で割り、切り捨てた数字+9分析結果
各年齢層におけるユーザー数と、課金ユーザー数、売上を帯グラフで比較した図を以下に示す。
※比較の為、年齢層の区分をFirebase上のユーザー数のデータと一致させている。
上図の通り、ユーザー数では25-44歳が大半を占める一方、売上では35-54歳が大半を占めるという結果が得られた。
次に、20代、30代、40代という区分で表した場合の、各年齢層における課金ユーザー数、売上を帯グラフで比較した図を以下に示す。
上図の通り、売上の大半を30代および40代が占めるという結果が得られた。
考察
ユーザー人数では**25-34歳が約30%、35-44歳が約35%を占めている一方で、売上においては35-44歳が約40%、45-54歳が約34%**を占めていることが分かった。
年代で見ると、20代までの売上シェア11%に対し、**30代, 40代の売上シェアは73%**を占めており、50代を含めると87%となることが分かった。
以上の結果から、30~40代をターゲットとした広告などを検討することで、これらの世代のアプリ認知度が向上し、売上向上にも繋がる可能性が考えられる。
提案
次に、30~40代をターゲットにした広告媒体について検討した結果を示す。
まず、オンライン・オフライン両面の広告を検討することでターゲット層にリーチすることで効果があると思われるため、それぞれの特徴を紹介する。
<オンライン広告>
動画広告、SNS広告、ディスプレイ広告等
メリット | デメリット |
---|---|
手軽に実施可能 | 競合が多い |
効果測定や変更が容易 | |
SNS等で拡散されやすい |
<オフライン広告>
新聞やテレビ、看板、フリーペーパーなど
メリット | デメリット |
---|---|
露出が保証される | 準備や変更に手間とコストがかかる |
エリアを絞った発信が可能 | |
知名度やイメージの向上 |
次に、30~40代向けのオンライン・オフライン広告媒体についてリサーチした結果及び広告媒体の例を紹介する。
30~40代を対象としたオンラインのSNS広告媒体についてリサーチした結果を掲載する。
上記の結果、Youtube・Lineは全年代で利用率が高く、30~40代ではFacebook・Instagram・Twitterもそれぞれ近い割合で分布している。
これらのSNSが30~40代をターゲットとした広告媒体として役立つ可能性が考えられる。
次に、リサーチした30~40代を対象に含むオンライン広告媒体を紹介する。
情報元:
< J-Net21 > https://j-net21.smrj.go.jp/startup/research/restaurant/cons-internetcafe.html < メディアレーダー > https://media-radar.jp/detail16730.html < 三省堂書店 > https://www.books-sanseido.co.jp/assets/imgs/advertisement/sanseido_mediadata.pdf上記のような広告媒体を検討することでターゲット層にリーチできると思われる。
上位課金ユーザー課金アイテムの分析
データ期間
2021年1月12日~5月14日 (使用したユーザーの登録日の期間)
購入日の情報が2021年1月12日~6月13日のため、ユーザー毎の集計期間の偏りを避けユーザーデータを確認するために、登録から30日間の課金額と課金アイテムを調査しています。
除外データ
・PurchaseDateがnullのユーザー
・通貨がJPYでないユーザー
使用テーブル
・UserRegisterDay
・PurchaseRecordData
分析内容
まず、ユーザーID毎に登録30日以内で売上の多い順に上位15%の課金ユーザーを抽出した。
次に、抽出した上位課金ユーザーで売れているアイテムを調べるために、アイテム毎の合計課金額のランキングを作成した。
併せて、下位の課金ユーザーについてもアイテム毎の合計課金額のランキングを作成し、上位課金ユーザーとの傾向の違いを調査した。
売上の7割以上を占めているため、上位15%ユーザーを主な分析対象としています。
分析結果
まず、上位15%ユーザーにおける売上数量のランキングを示す。
上グラフより、上位課金ユーザーの中ではgacha_clearが最も多く購入されていることが分かる。
次に、残りのユーザーにおける売上数量のランキングを示す。
上グラフより、その他の課金ユーザーにおいてgacha_clearの売上数量は比較的多くないことが分かる。
考察
上位課金ユーザーにおいて、gacha_clearの売上数量が非常に大きいという結果が見られた。
一方、下記の通り登録後30日以内の下位85%課金ユーザーにおいて、gacha_clearの購入量は比較的多くなかった。
このことから、gacha_clearが上位課金ユーザーで特に購入されていたアイテムであると言える。
次に、gacha_clearに着目し、仕様などを確認した上で売上向上に繋がる販売方法ついて検討を行った。
まず、gacha_clearはゲーム内でステージをクリアする際にランダムで現れるガチャであり、価格が120円であることを確認した。
特別なガチャにおいて1回120円はかなり安価に思われたため、値上げの提案を視野に入れてクリア時ガチャの実際の出現画面を確認した。
上図より、ユーザーはgacha_clear(クリア時ガチャ)をゲーム内通貨「チョコレート」5個で実施するか、特別価格120円で実施するかの選択式であることが分かった。
次に、チョコレート5個でガチャを実行した場合、価格に換算するといくらになるのかを確認した。
チョコレートはまとめ買いをすることで割引を受けることが出来るため、以下の表ではまとめ買いの数量毎にgacha_clear1回分の単価を計算しています。
チョコレート5個で購入した場合のガチャ単価
価格 | チョコ数 | gacha_clear単価 | 備考 |
---|---|---|---|
7,500円 | 400 | 93.75円 | +福引券20枚 |
4,900円 | 235 | 104.3円 | +福引券10枚 |
2,200円 | 85 | 129.41円 | |
980円 | 30 | 163.33円 | +福引券1枚 |
120円 | 1 | 600円 |
※福引券:5枚で特定のガチャが実施できる。
上記より、単価でみた場合、ユーザーにとって120円で1回clear_gachaを実行できることはチョコレートを85個以下でまとめ買いしてから実行するよりもお得であると言える。
その他のgacha_clearの仕様として、画面の出現時にBackボタンをタップすると二度と現れず、再び実行したい場合はステージを進めながら次にランダムに現れるのを待つ必要がある、ということが分かった。
これらのことより、gacha_clearには多くの要素が絡み合うため、最適な売上を達成するには価格だけでなくチョコレートの必要数、ガチャの出現期間など総合的に考慮する必要があると考えられる。
提案
考察の結果から、売上に影響すると思われる複数の条件を用いてA/Bテストを実施することで、最適な販売条件が見つけ出せるのではないかと思われる。
A/Bテストでは、ユーザーを同数のA群とB群に分け、それぞれ同時期に異なる条件を与えて一定期間決定した指標(gacha_clearの平均売上金額や購入数等)を観測し、テスト後に各群の指標に対してt検定やカイ二乗検定等を行うことで、条件の違いによる効果があったのかどうかを調査する。
今回A/Bテストの条件として以下の項目を提案する。
テスト項目 | 条件1 | 条件2 | 条件3 |
---|---|---|---|
価格/回 | 120円 | 160円 | 200円 |
チョコレート数/回 | 5個 | 7個 | 10個 |
ガチャの出現期間 | 出現時のみ | 出現日のみ | 出現日の翌日まで |
ガチャの出現率 | 現行より低確率 | 現行通り | 現行より高確率 |
ガチャのタイプ | 1回ガチャ | 10連ガチャ | 両方(1回,10連) |
超絶レアの出現率 | 現行より低確率 | 現行通り | 現行より高確率 |
それぞれの条件について、選出した理由は以下の通り。
価格/回
1回のガチャについて、現行の価格と同じ120円/回以外に、チョコレート30個を購入した場合に近い160円/回、ユーザー全体の月平均課金額が約2,000円であったためその1/10である200円/回を選択肢に入れてテストを行うことで最適な価格が見つけられるのではないかと思われる。
チョコレート数/回
チョコレートの必要数量は通常ガチャで5個だが、特別なガチャでは7個/回というものもあり、またgacha_clearのクリア時のみ出現という限定性を考えると、10個/回など、より必要数を多めに設定することでユーザーがgacha_clearに対してより特別感を感じられる可能性も考えられる。
ガチャの出現期間
現行、gacha_clearは出現後にBackをタップすると二度と現れなくなるため、クリア後も一定期間実行可能にすることで機会損失を避け、売上を向上させる効果がある可能性が考えられる。
ガチャの出現率
現行はgacha_clearはステージクリア後にランダムで出現させているということだったため、出現率の調節が可能であれば、出現率を変更させながらテストを行うことで、最適な出現率を決定できると考えられる。
ガチャのタイプ
現行は1回ガチャのみだが、通常のガチャでは十連ガチャが導入されていることから、gacha_clearにも十連ガチャを導入することで、ユーザーがより効率よくガチャを実行でき、結果売上の向上も見込める可能性が考えられる。
超絶レアの出現率
通常よりも超絶レアの発生率が高い、というユーザーから見たgacha_clearの利点をしっかり残しつつ、無理のない範囲でテストを行うことで、最適な超絶レアの出現率の発見にも繋がると思われる。
テストを行う項目数及び条件数
上記の項目や条件を全て実施すると、組み合わせ数が膨大となりテスト期間が非常に長くなると予想されるため、優先順位を考え、最終的に優先度の高いものを選択することを提案する。
テストの実施期間
割り当てるユーザー数やテスト数によると思われるが、2週間~1ヶ月程度を目安に期間を区切り実施することを提案する。
以上のことから、条件と期間を決めてA/Bテストを実施することで、clear_gachaの売上が最適となる販売形式を見つけられることが期待できる、という結論に至った。
継続ユーザーの特徴分析
集計内容
継続ユーザーの特徴を調査することで、ユーザーの継続要因が見つかるのではないかと考え分析を行った。
- 継続ユーザーの定義:
- 初回登録の翌日以降25日以内に1度でもガチャを実行したユーザー
データ期間
2021年3月21日~5月19日
ガチャ履歴の情報が2021年3月21日~6月13日だったため、ユーザー毎の集計期間の偏りを避けユーザー毎に25日間のデータを得るために上記の期間となりました。
除外データ
<ユーザーの課金額計算時>
・PurchaseDateがnullのユーザー
・通貨がJPYでないユーザー
使用テーブル
・UserRegisterDay
・GachaRecord
・PurchaseRecordData
・UserStateData
分析内容
①ユーザー分類
ユーザーID毎に登録日の翌日以降25日以内にガチャを実行しているかどうかを基準に、継続ユーザーと非継続ユーザーを分類した。
②継続要因の分析1
継続ユーザーと非継続ユーザーそれぞれについて、登録日にガチャでカードを取得しているユーザー数と割合を計算した。
カード取得の条件は、チュートリアルの突破後にメニューからガチャを実行してカードを取得することである。
そのため、単純に継続ユーザーと非継続ユーザーを比較した場合、カード未取得のユーザーは、「カードを取得していないから継続していない」可能性の他に、「チュートリアルの途中でアプリを離脱したためにカード取得に至っていない」という可能性も考えられる。
また、チュートリアル直後に自動で実行される無料ガチャ(以下、初回ガチャ)で、目的のカードが得られるまでリセットを繰り返す(通称:リセマラ)を行うユーザーがいた場合、こういったユーザーが「カード未取得の非継続ユーザー」にカウントされる恐れがある。
そこで、「初回ログインボーナスが表示された後のユーザー」に限定して集計を行うことで上記の可能性をできるだけ排除した。
**上記の方法でチュートリアルの途中で離脱したユーザー等が除外できる理由**
- チュートリアルの途中で離脱するユーザー
- 「初回ログインボーナス画面」は、チュートリアルの突破後に初めて表示できるようになるため、集計されるユーザーはチュートリアルを突破していると言える。
- リセマラユーザー
- チュートリアルは開始前にスキップするかどうかを選択することができ、スキップをした場合はすぐに無料ガチャが行われるため、リセマラユーザーはチュートリアルをスキップする可能性が高いと思われる。 リセマラユーザーは初回ガチャで目的のカードを取得できなかった場合、データを消して再度アプリを実行しなおすと考えられるが、初回ログインボーナス画面は、チュートリアルをスキップした場合、能動的にMAPメニュー画面からログインボーナス画面を選んで表示するか、アプリを再起動しない場合は表示されない。 そのため、リセマラユーザーの多くは初回ログイン画面を表示しておらず、今回集計を行う「初回ログイン画面が表示された後のユーザー」にリセマラユーザーはそれほど含まれていないと思われる。
「カード取得」の条件はチュートリアル後にユーザーが自発的にメニューからガチャを選んで実行することであるため、チュートリアル直後に自動的に行われる初回ガチャは今回のカード取得には含まれていません。
③継続要因の分析2
登録日に比較可能な説明変数を準備し、層化交差検証を用いた決定木で継続ユーザーの分析を行った。
分析の際、SMOTEで継続ユーザーをオーバーサンプリングすることで継続ユーザー数と非継続ユーザー数の偏りを予防した。また、各モデルのパラメータはベイズ最適化を用いて求めている。
③では、②と条件を分けるためにカードを持たないユーザーは除外しています。
SMOTEや層化交差検証については後述のAppendixをご参照下さい。
- 決定木:
- 説明変数を基準に条件を与え、データを分岐して分類することで推測を行う手法
- 決定木を用いた理由:
- 継続に大きく寄与している説明変数の条件を確認するため
説明変数 | 変数名 |
---|---|
登録日にガチャで取得したカード枚数 | card_count |
登録日の曜日 | day_of_week |
登録日にガチャで取得したカードの最大レア度 | max_rare |
登録日の課金アイテム数 | item_count |
登録日の合計課金額 | total_purchase |
- 評価方法:
- 正解率、F値
分析結果①
・ユーザー分類
項目 | 人数 |
---|---|
継続ユーザー数 | 7,963 |
非継続ユーザー数 | 42,419 |
・継続要因の分析1
考察①
カード取得ユーザーの継続割合はカード未取得に対し約1.7倍であった。
上記の結果は因果関係ではなく、交絡因子がある可能性もあるため、継続ユーザーの初日のプレイ時間が長く無料ガチャに気づき実行した等の理由も考えられる一方、ガチャを回してカードを得ることがゲームを続けるモチベーションに繋がったと考えると、プレイ初期のユーザーに対するガチャ画面への誘導が継続に繋がる可能性が考えられる。
分析結果②
・継続要因の分析2
決定木分析の結果は以下の通り。
ブロック数=5の交差検証を行ったため、5つの結果が出力される。
各ブロックF値:
[0.5836758661186142, 0.5801526717557252, 0.5830886670581327, 0.5801526717557252, 0.5725190839694656]
平均正解率:
0.5887565543313263
樹形図
以下は、決定木分析を行った際の分類を表す樹形図である。
継続ユーザーと非継続ユーザーを分類する最適な分岐を学習した結果、以下の図が得られた。
上から順に条件を与えて分岐が行われているため、最も分類に寄与していると考えられる一番上の分岐に注目して考察を行う。
樹形図の分岐を見ると、カード枚数1枚以下、3枚以下、5枚以下がTrueである左側の分岐に、非継続ユーザーが多いことを示す橙色のボックスが多くみられる。
考察②
継続要因の分析2の結果、正解率やF値はそこまで高くないものの、決定木により、カード枚数が分類に最も寄与しており、カード枚数が2枚以上の方が1枚よりも継続するという傾向が見られた。
カードを多く取得することで継続に繋がった可能性も考えられるが、この結果は因果関係ではなく、交絡因子が存在する可能性も考えられる。
例えば、同じ登録日のデータであっても、ユーザーによってはプレイ時間が長いためにガチャを多く実行してカードを取得した、元からゲームへのモチベーションが高くガチャを多く実行した、等の可能性も考えられる。
上記より、説明変数として以下のデータが取得することができればより効果的に分析を行える可能性が考えられる。
ユーザー毎のプレイ時間(日毎)
カード枚数に限らず、今後継続の要因と考えた説明変数の交絡因子がプレイ時間であるという可能性も考えられるため、可能であればプレイ時間を記録することで、より継続の要因分析に役立つのではないかと思われる。
下記チュートリアルスキップの有無と組み合わせることで、リセマラユーザーを除外して分析を行うのに役立つ可能性も考えられる。
ユーザー毎のチュートリアルスキップの有無
ユーザー毎のプレイ時間を取得して、登録日の継続ユーザーと非継続ユーザーの違いを分析する上で、チュートリアルをスキップしたか否かで特に初日のプレイ時間に影響があると予想されるため、スキップの有無を切り分けて分析するのに使用できる可能性がある。
ユーザー毎の到達ステージの詳細データ(日毎)
上記のユーザー毎のチュートリアルスキップ有無と組み合わせることで、チュートリアルを突破したかどうかの確認もできると思われる。
ユーザー毎の詳細なステージ情報があればチュートリアル突破に関わる分析に繋げられる。
結論
・30~40代(+50代)のユーザーが売上の大部分に貢献していることが分かった。これらの層をターゲットにすることで売上向上に繋がる可能性がある。
・上位課金ユーザーが登録後一定期間にgacha_clearを多く購入していることが分かった。
gacha_clearの販売方法を検討しA/Bテストを実施することで売上向上に繋がる可能性が考えられる。
・カード取得したユーザーの継続率はカード未取得のユーザーより多く、ガチャによるカード取得枚数が1枚よりも2枚以上の場合に継続ユーザーが多い傾向が見られた。
ユーザーが能動的にガチャを実行しカードを取得することで継続に繋がった可能性が考えられる。
ただし、日毎のプレイ時間などが交絡因子となっている可能性もあるため、プレイ時間、チュートリアルスキップ有無などを説明変数として用いられれば、より詳細な分析に繋がる可能性が考えられる。
Appendix
SMOTE
K近傍法のアルゴリズムを利用して、少数派のサンプルを増やしていく手法。
継続ユーザーについて5つの近傍点から新たなデータを内挿し、
継続ユーザー数と非継続ユーザー数を均等にした。
層化交差検証
未知のデータに対するモデルの精度を高めるため、stratified K-foldという手法を用いて、学習データと、検証データ内の継続ユーザーと非継続ユーザーの比率がほぼ同等になるように、データを5つに分割し、1つのブロックで検証、残り4つのブロックで学習、という処理を検証データに割り当てるブロックを変えながら5回行った。(結果が5つ出力)
図で表すと以下の形となる。
F値
2クラスの分類問題における予測結果の評価尺度の一つ。
機械学習による予測結果と,真の結果に基づいて以下のように分類し、その結果から計算される。
例:予測結果が正で、実際のデータも正であるデータの個数をTP個とする。
正解率 = (TP + TN) / (TP + TN + FP + FN)
全予測に対する正答率
再現率 R = TP / ( TP + FN )
実際に正であるデータの中で正と予測できたものの割合
適合率 P = TP / ( TP + FP )
正であると予測したものの中で実際に正だったものの割合
F値 = 2 / ( 1/P + 1/R )
再現率と適合率の調和平均、分類問題に用いられる評価指標
トレードオフの関係にある再現率と適合率をバランスよく取り入れた指標。
分析の所感
英語物語にとって少しでも売上向上や継続率増加の参考になるような分析が行えればと考えておりましたが、経験のためにより広い範囲で分析を行いたいという気持ちもありました。
その結果、非常に良い経験ができたと感じておりますが、その一方で、実務的にはもっと取捨選択をした上で個々に対してより深く分析すればより良かったと感じる面もありました。
(この点を村上様からご指摘いただきました。)
また、お客様とコミュニケーションを取りより具体的な要望を理解した上で分析を行うことで、より伝わる分析結果を提示できるのではないかと感じました。
最後に
今回、村上様やごん様より専門的なアドバイスをいただきながら分析を進めたり、ゲーム業界の分析に詳しい方のコメントをお聞きしたりする、という貴重な経験をさせていただきました。
今回の経験を糧に、今後より分かりやすく分析結果を伝える力を伸ばしたいと思います。
村上様、ごん様、データラーニングギルドの皆様、この度は分析の機会をいただき、また分析に関する重要なご助言をいただきましてありがとうございました。