ゲームを動かすデータ分析Alex OnsagerHappy Elements株式会社
自己紹介• Alex Onsager (アレックス) です   - 色々な場所で @aonsager• Happy Elements株式会社でプランナーをしています
Happy Elements• 京都でソーシャルゲーム作っています マジョカ✝マジョルナ    あんさんぶるガールズ!    百花繚乱あやかし姫はじめようハッピー☆ママ   はじめようポケット・バー    パズル騎士団
あんさんぶるガールズ!最近Androidアプリ版リリースしたりしましたiPhoneはもうすぐ
では本題に
ソーシャルアプリするならデータ分析は必須です
まず、MVPをリリースする
MVP?•Minimum Viable Product  -必要最低限機能 -最低限の機能で、最大限のデータを集められる商品 -リーン・スタートアップのアレですなるべく早くリリースして、なるべく早くたくさんのデータを集めて、なるべく早く良い商品...
プランナーの仕事は?
プランナーの仕事 ①  どこに改善が必要か    早く見つける
プランナーの仕事 ②  どう改善が必要か    早く決断する
プランナーの仕事 ③      遅い。    もっと早く。
でもなかなか難しいですよね
従来の分析・統計は多分こんな感じ
従来のデータ分析• どういう質問の答えを知りたいか決める   - どういうアイテムを売ったら買う人が増える?• その質問の答え方を考える   - 課金したユーザーのレベルを見てみる• そこで必要となった情報を保存し始める   - 課金したら、そ...
従来のデータ分析• どういう質問の答えを知りたいか決める   - どういう商品だったらもっと買いたくなる?• その質問の答え方を考える         この間が長い!   - 課金したユーザーのレベルを見てみる• そこで必要となった情報を保存し...
この形のデメリット• 質問をしてから答えがわかるまでにタイムラグがある• 新しくデータを書き出す時、それは1つの質問だけの答えとなる• もっとデータが欲しかったら、新たに開発が必要
このままじゃダメだ
もっと理想的な形だと...
理想• 質問をしてからすぐに答えが出る• 同じデータで復数の質問に答えれる  - 「もっとデータが必要」が無くなる• 新しく質問をするとき、追加の開発は必要ない
作ってもらっちゃいました    (・ω<)
新データ分析ツール• ユーザーが意味のある行動をするとログを書き出す  - 課金する、アイテム使う、カードゲットする、ボス叩く、etc.  - ユーザーの基本情報も一緒に書き出される    - レベル、体力、ボスレベル、etc.• 後でどう使わ...
ログはこんな感じ
ログ attributes: {   category: card   type: get   owner_id: xxxxxxxxxx   request: {      page: missions/receive_reward   }  ...
ログ attributes: {   category: card                                      カードを手に入れた   type: get   owner_id: xxxxxxxxxx   requ...
ログ attributes: {   category: card   type: get   owner_id: xxxxxxxxxx   request: {      page: missions/receive_reward   }  ...
ログ attributes: {   category: card   type: get   owner_id: xxxxxxxxxx   request: {      page: missions/receive_reward   }  ...
ログ attributes: {   category: card   type: get   owner_id: xxxxxxxxxx   request: {      page: missions/receive_reward   }  ...
ログ attributes: {   category: card   type: get   owner_id: xxxxxxxxxx   request: {      page: missions/receive_reward   }  ...
今回の主役は mongoDB
イケメンポイント ①   大量のデータを   流しこんでも平気
イケメンポイント ①    大量のデータを   流しこんでも平気                へっち ゃらさ             ョンも         リケーシ シャー ド、レプ
イケメンポイント ②   ログがテキストで     形も自由
イケメンポイント ② なんか書いてみたけどログってこれでいいの?
イケメンポイント ② なんか書いてみたけどログってこれでいいの?      いいよ!
イケメンポイント ②こういう値も欲しかった。追加しちゃってもいい?
イケメンポイント ②こういう値も欲しかった。追加しちゃってもいい?      いいよ!
イケメンポイント ②  なんか汚かったからログの形書き直しちゃった
イケメンポイント ②  なんか汚かったからログの形書き直しちゃった      いいよ!
イケメンポイント ③キーという概念がなく、  なんでも検索出来る
イケメンポイント ③ キーという概念がなく、    なんでも検索出来る                        るユー ザーね。              以上課 金して      0以下で 5000円レ ベル2            し...
(´;ω;`)ブワッ
統計は Map/Reduce
統計は Map/Reduce   ちょっとコツはあるけどなれたらなんでも出来るようになります
Map/Reduce• Mapで検索して、気になる情報だけ書きだす  - 課金のログを検索して、日付&ユーザーID&金額を書き出す• Mapが吐き出したデータをReduceで集計  - Arrayにまとめていって、同じユーザーIDのログがあれば...
これでデメリットが全部改修されてます
理想• 質問をしてからすぐに答えが出る• 同じデータで復数の質問に答えれる  - 「もっとデータが必要」が無くなる• 新しく質問をするとき、追加の開発は必要ない•欲しがるようなデータがすでに書きだされていて、いつでも好きなように検索・集計可能に...
理想• 質問をしてからすぐに答えが出る• 同じデータで復数の質問に答えれる  - 「もっとデータが必要」が無くなる• 新しく質問をするとき、追加の開発は必要ない•欲しがるようなデータがすでに書きだされていて、いつでも好きなように検索・集計可能に...
理想• 質問をしてからすぐに答えが出る• 同じデータで復数の質問に答えれる  - 「もっとデータが必要」が無くなる• 新しく質問をするとき、追加の開発は必要ないそれぞれのログに大体欲しがる情報が入っているので、切り口を変えて同じデータから色んな...
理想• 質問をしてからすぐに答えが出る• 同じデータで復数の質問に答えれる  - 「もっとデータが必要」が無くなる• 新しく質問をするとき、追加の開発は必要ない新しいログを書き出す必要はない新しい値が欲しい場合でも、それをログファイルに追記し始...
たとえばこういう使い方
どういう人が一番多く   課金してるんだろう  5000円以上課金したユーザーを検索してレベル、レイドレベル、課金時の体力、etc.を出す
いつ脱落するんだろう   ユーザーの最終ログイン時を検索してレベル、レイドレベル、課金時の体力、etc.を出す
イベント頑張る人=課金する人なのだろうか毎日レイドを20対以上討伐する人を探して    その人の課金情報を出す
高課金ユーザーはどういう共通点があるんだろう 5000円以上課金したユーザーを検索して   とりあえずたくさん比べてみる
思いつけば大体なんでも出来ます
おまけ
サポートツールとしても   大変優秀
サポートツールとして• 「ポーション消えたぞ!」と問い合わせ• ユーザーのログを一覧で検索する - ⃝日⃝時にポーション5つ購入 - ⃝日⃝時にレイドミッション討伐 - ⃝日⃝時にポーション1つ購入 - ⃝日⃝時にポーション1つ購入 - 現在ポ...
以上、分析ツールの説明でした
ありがとうございました
ゲームを動かすデータ分析
Upcoming SlideShare
Loading in …5
×

ゲームを動かすデータ分析

3,541 views

Published on

Published in: Technology
0 Comments
27 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,541
On SlideShare
0
From Embeds
0
Number of Embeds
69
Actions
Shares
0
Downloads
43
Comments
0
Likes
27
Embeds 0
No embeds

No notes for slide

ゲームを動かすデータ分析

  1. 1. ゲームを動かすデータ分析Alex OnsagerHappy Elements株式会社
  2. 2. 自己紹介• Alex Onsager (アレックス) です - 色々な場所で @aonsager• Happy Elements株式会社でプランナーをしています
  3. 3. Happy Elements• 京都でソーシャルゲーム作っています マジョカ✝マジョルナ あんさんぶるガールズ! 百花繚乱あやかし姫はじめようハッピー☆ママ はじめようポケット・バー パズル騎士団
  4. 4. あんさんぶるガールズ!最近Androidアプリ版リリースしたりしましたiPhoneはもうすぐ
  5. 5. では本題に
  6. 6. ソーシャルアプリするならデータ分析は必須です
  7. 7. まず、MVPをリリースする
  8. 8. MVP?•Minimum Viable Product  -必要最低限機能 -最低限の機能で、最大限のデータを集められる商品 -リーン・スタートアップのアレですなるべく早くリリースして、なるべく早くたくさんのデータを集めて、なるべく早く良い商品にする
  9. 9. プランナーの仕事は?
  10. 10. プランナーの仕事 ① どこに改善が必要か 早く見つける
  11. 11. プランナーの仕事 ② どう改善が必要か 早く決断する
  12. 12. プランナーの仕事 ③ 遅い。 もっと早く。
  13. 13. でもなかなか難しいですよね
  14. 14. 従来の分析・統計は多分こんな感じ
  15. 15. 従来のデータ分析• どういう質問の答えを知りたいか決める - どういうアイテムを売ったら買う人が増える?• その質問の答え方を考える - 課金したユーザーのレベルを見てみる• そこで必要となった情報を保存し始める - 課金したら、そのユーザーのレベルを統計ログに残す - (予想して既にとってたらエライ)• 情報をみて、決断する - 低レベルのユーザーが全然課金してないから、そこが欲しが るようなアイテムを導入してみる• 繰り返す
  16. 16. 従来のデータ分析• どういう質問の答えを知りたいか決める - どういう商品だったらもっと買いたくなる?• その質問の答え方を考える この間が長い! - 課金したユーザーのレベルを見てみる• そこで必要となった情報を保存し始める - 課金したら、そのユーザーのレベルを統計ログに残す - (予想して既にとってたらエライ)• 情報をみて、決断する - 低レベルのユーザーが全然課金してないから、そこが欲しが るようなアイテムを導入してみる• 繰り返す
  17. 17. この形のデメリット• 質問をしてから答えがわかるまでにタイムラグがある• 新しくデータを書き出す時、それは1つの質問だけの答えとなる• もっとデータが欲しかったら、新たに開発が必要
  18. 18. このままじゃダメだ
  19. 19. もっと理想的な形だと...
  20. 20. 理想• 質問をしてからすぐに答えが出る• 同じデータで復数の質問に答えれる - 「もっとデータが必要」が無くなる• 新しく質問をするとき、追加の開発は必要ない
  21. 21. 作ってもらっちゃいました (・ω<)
  22. 22. 新データ分析ツール• ユーザーが意味のある行動をするとログを書き出す - 課金する、アイテム使う、カードゲットする、ボス叩く、etc. - ユーザーの基本情報も一緒に書き出される - レベル、体力、ボスレベル、etc.• 後でどう使われるかは気にせず、とにかくログを書きだす• 後で好きなようにログを集計して分析する
  23. 23. ログはこんな感じ
  24. 24. ログ attributes: {   category: card   type: get   owner_id: xxxxxxxxxx   request: {      page: missions/receive_reward }   info: {      type: 1     id: 22     special: false   condition: {      level: 20     st: 50     bp: 1     max_st: 150     max_bp: 5     gacha_pt: 1000     cards_count: 80     friends_count: 10     leader_card_id: 100     training_card_id: 100     joined_at: 2013/02/01 00:00:00 }   time: 2013-02-04 00:00:00 }
  25. 25. ログ attributes: {   category: card カードを手に入れた   type: get   owner_id: xxxxxxxxxx   request: {      page: missions/receive_reward }   info: {      type: 1     id: 22     special: false   condition: {      level: 20     st: 50     bp: 1     max_st: 150     max_bp: 5     gacha_pt: 1000     cards_count: 80     friends_count: 10     leader_card_id: 100     training_card_id: 100     joined_at: 2013/02/01 00:00:00 }   time: 2013-02-04 00:00:00 }
  26. 26. ログ attributes: {   category: card   type: get   owner_id: xxxxxxxxxx   request: {      page: missions/receive_reward }   info: {      type: 1 レイドミッションで手に入れた     id: 22     special: false   condition: {      level: 20     st: 50     bp: 1     max_st: 150     max_bp: 5     gacha_pt: 1000     cards_count: 80     friends_count: 10     leader_card_id: 100     training_card_id: 100     joined_at: 2013/02/01 00:00:00 }   time: 2013-02-04 00:00:00 }
  27. 27. ログ attributes: {   category: card   type: get   owner_id: xxxxxxxxxx   request: {      page: missions/receive_reward }   info: {      type: 1     id: 10     special: false   condition: {      level: 20 ID 10のカードを手に入れて、     st: 50     bp: 1 それはキラじゃなかった     max_st: 150     max_bp: 5     gacha_pt: 1000     cards_count: 80     friends_count: 10     leader_card_id: 100     training_card_id: 100     joined_at: 2013/02/01 00:00:00 }   time: 2013-02-04 00:00:00 }
  28. 28. ログ attributes: {   category: card   type: get   owner_id: xxxxxxxxxx   request: {      page: missions/receive_reward }   info: {      type: 1     id: 10     special: false   condition: {      level: 20 ユーザーについて     st: 50     bp: 1 その他色々嬉しい情報     max_st: 150     max_bp: 5     gacha_pt: 1000     cards_count: 80     friends_count: 10     leader_card_id: 100     training_card_id: 100     joined_at: 2013/02/01 00:00:00 }   time: 2013-02-04 00:00:00 }
  29. 29. ログ attributes: {   category: card   type: get   owner_id: xxxxxxxxxx   request: {      page: missions/receive_reward }   info: {      type: 1     id: 10 こういうログが     special: false   condition: {      level: 20     st: 50 たくさん書きだされます     bp: 1     max_st: 150     max_bp: 5     gacha_pt: 1000     cards_count: 80     friends_count: 10     leader_card_id: 100     training_card_id: 100     joined_at: 2013/02/01 00:00:00 }   time: 2013-02-04 00:00:00 }
  30. 30. 今回の主役は mongoDB
  31. 31. イケメンポイント ① 大量のデータを 流しこんでも平気
  32. 32. イケメンポイント ① 大量のデータを 流しこんでも平気 へっち ゃらさ ョンも リケーシ シャー ド、レプ
  33. 33. イケメンポイント ② ログがテキストで 形も自由
  34. 34. イケメンポイント ② なんか書いてみたけどログってこれでいいの?
  35. 35. イケメンポイント ② なんか書いてみたけどログってこれでいいの? いいよ!
  36. 36. イケメンポイント ②こういう値も欲しかった。追加しちゃってもいい?
  37. 37. イケメンポイント ②こういう値も欲しかった。追加しちゃってもいい? いいよ!
  38. 38. イケメンポイント ② なんか汚かったからログの形書き直しちゃった
  39. 39. イケメンポイント ② なんか汚かったからログの形書き直しちゃった いいよ!
  40. 40. イケメンポイント ③キーという概念がなく、 なんでも検索出来る
  41. 41. イケメンポイント ③ キーという概念がなく、 なんでも検索出来る るユー ザーね。 以上課 金して 0以下で 5000円レ ベル2 しとけ! まか
  42. 42. (´;ω;`)ブワッ
  43. 43. 統計は Map/Reduce
  44. 44. 統計は Map/Reduce ちょっとコツはあるけどなれたらなんでも出来るようになります
  45. 45. Map/Reduce• Mapで検索して、気になる情報だけ書きだす - 課金のログを検索して、日付&ユーザーID&金額を書き出す• Mapが吐き出したデータをReduceで集計 - Arrayにまとめていって、同じユーザーIDのログがあれば金額を 足す• 全部のデータの検索が終わっていい具合にまとまったら、CSVとして書きだして保存
  46. 46. これでデメリットが全部改修されてます
  47. 47. 理想• 質問をしてからすぐに答えが出る• 同じデータで復数の質問に答えれる - 「もっとデータが必要」が無くなる• 新しく質問をするとき、追加の開発は必要ない•欲しがるようなデータがすでに書きだされていて、いつでも好きなように検索・集計可能になっている
  48. 48. 理想• 質問をしてからすぐに答えが出る• 同じデータで復数の質問に答えれる - 「もっとデータが必要」が無くなる• 新しく質問をするとき、追加の開発は必要ない•欲しがるようなデータがすでに書きだされていて、いつでも好きなように検索・集計可能になっている•分析の仕方を思いついたら、すぐに実行できる
  49. 49. 理想• 質問をしてからすぐに答えが出る• 同じデータで復数の質問に答えれる - 「もっとデータが必要」が無くなる• 新しく質問をするとき、追加の開発は必要ないそれぞれのログに大体欲しがる情報が入っているので、切り口を変えて同じデータから色んな答えを出せる
  50. 50. 理想• 質問をしてからすぐに答えが出る• 同じデータで復数の質問に答えれる - 「もっとデータが必要」が無くなる• 新しく質問をするとき、追加の開発は必要ない新しいログを書き出す必要はない新しい値が欲しい場合でも、それをログファイルに追記し始めるだけですぐに対応可能
  51. 51. たとえばこういう使い方
  52. 52. どういう人が一番多く 課金してるんだろう 5000円以上課金したユーザーを検索してレベル、レイドレベル、課金時の体力、etc.を出す
  53. 53. いつ脱落するんだろう ユーザーの最終ログイン時を検索してレベル、レイドレベル、課金時の体力、etc.を出す
  54. 54. イベント頑張る人=課金する人なのだろうか毎日レイドを20対以上討伐する人を探して その人の課金情報を出す
  55. 55. 高課金ユーザーはどういう共通点があるんだろう 5000円以上課金したユーザーを検索して とりあえずたくさん比べてみる
  56. 56. 思いつけば大体なんでも出来ます
  57. 57. おまけ
  58. 58. サポートツールとしても 大変優秀
  59. 59. サポートツールとして• 「ポーション消えたぞ!」と問い合わせ• ユーザーのログを一覧で検索する - ⃝日⃝時にポーション5つ購入 - ⃝日⃝時にレイドミッション討伐 - ⃝日⃝時にポーション1つ購入 - ⃝日⃝時にポーション1つ購入 - 現在ポーション残高1つ• たしかに1個どこかでなくなってたので1つ付与• ログもユーザーに共有して安心してもらえる
  60. 60. 以上、分析ツールの説明でした
  61. 61. ありがとうございました

×