mattintosh note

どこかのエンジニアモドキの備忘録

Elasticsearch と Kibana で遊んでみたよ

エンジニアで記事を書くと言えば Qiita でしょうか。先日、数年ぶりに記事を投稿してみましたがやっぱりなんか書きづらいなぁと。というかいつからあそこは自分の年収を書く場所になったのやら。

そんな話は置いておき、7月に転職しました。会社に所属はしてますが、いまのところはフリーランスっぽい感じで仕事してます。昨日、家の書類の片付けをしていたら前の会社の給料明細が出てきたのでちまちまと開封していたんですが(いつも郵便で来て開封してなかった)、最後の方は有休消化のみだったせいか、最終的な支給額は17万弱でした(おいおい高卒かよ)。都内の会社でも賃金の安いところはこんなもんなんですかね。転職の理由は色々ありますが、「いまの会社にいると人生無駄にするなぁ〜」と思ったのが一番ですかね。エンジニアとしての技術が全然詰めない。プライベートの方がよほど勉強になっていました。

いまの会社に入ってから AWS を色々と自由に触れるようになったので仕事で使ったり遊びで使ったりしているんですが、前々から使いたいと思っていた Elasticsearch Service をちょっと真面目に使うようになりました。

Elasticsearch や Kibana は Docker を使っても構築できるんですが、パブリックな環境に一台常駐して置いておかないとデータ収集が面倒です。Elasticsearch Service はボタンぽちぽちでアクセス制限とかの設定するばすぐ使えて優れものですね。本格的な請求はまだ来てませんが EC2 インスタンス 1台分で 1,000 〜 2,000 円くらいじゃないかな。(全然違ったらごめんなさい)

さて、いままで IoT デバイスの温度くらいしか収集していなかった Elasticsearch Service ですが、お仕事で Google Play ストアの仕様を調べる機会がありまして、進めていくうちに「これ Elasticsearch に入れた面白そう」と思ったので色々とデータを突っ込んでみることにしました。

先に言ってくと、Google Play ストア全体ではなく、アプリに限定した話です。

私は iPhone ユーザなので Android は旧式のタブレットくらいしか持ってなくてほとんど利用してないのであまり市場の状況というのがわからず。

アプリページを見るとこんな感じですね。このページの随所に分析用として使えるデータが点在しています。それをクローリングしていく感じです。クローラーは自作でもいいですし、Python とかで google-pley-scraper みたいなものもあるのでそちらを利用するのもありでしょう。今回、私は自分でクローラーを作成しました。

f:id:mattintosh4:20181008220307p:plain

アプリページ以外にもランキングや特集コーナーがあります。こちらもランキングでは順位が付いてたりします。マーケティング関係のお仕事をされている方であればこういう情報も必要でしょうね。(下の画像は事前登録系なので順位は特に無いと思います)

f:id:mattintosh4:20181008220459p:plain

クローラーを作成したらあとは Elasticsearch に合わせた JSON を投げるだけでどんどん登録してくれます。たまに型を間違ったりするのでその場合は事前に定義を作成したり、Kibana 側で調整します。ただ、DATA 型は 最初から書式を合わせておいた方が無難ですね。

f:id:mattintosh4:20181008215724p:plain

本当はもう少し細かく拾う情報を拾う予定でしたが、とりあえず Elasticsearch と Kibana を使ってみたかったので項目を少し省きました。

{
  "_index": "play",
  "_type": "apps",
  "_id": "",
  "_version": 1,
  "_score": null,
  "_source": {
    "genreId": "GAME_ACTION",
    "developerAddress": "東京都千代田区神田須田町2-8-2 プライム神田ビル 9階",
    "icon": "https://lh3.googleusercontent.com/aeULuMyhf0kzv-i-ICR1YV1m1zwdCjM7w9-6v49NwyO5s_sa-26Y_gUy72I6DflfLcQ",
    "description": "これが君の望んでいる「海戦-ロマン-」<br><br>・擬人化艦船 少女×シューティングRPG! <br>世界中の艦船を可愛い少女に擬人化した艦船を操作するシューティングRPGの登場! <br>個性豊かなキャラクターが織り成す『アズールレーン』の世界、いざ抜錨せよ!<br><br>・簡単操作で爽快感のあるシューティングゲーム! <br>『アズールレーン』最大の特徴はシューティングゲーム <br>・最大で6隻からなる艦隊を編成し、敵の砲火を縦横無尽に潜り抜け、敵を倒そう! <br>・敵の弾には当たっても大丈夫!自動操作もあり、アクションが苦手な人でも楽しめる!<br><br>・あなただけの艦隊を作り上げよう! <br>日本の艦船も含め、世界中の有名な、時にはマニアックな艦船が登場! <br>・100種以上の艦船と可愛く綺麗なキャラクター達が特徴! <br>・好感度システム搭載、お気に入りのキャラクターを自由に強化し、あなただけの娘に!<br><br><br>公式ツイッター <br>@azurlane_staff",
    "3-starts": 1137,
    "4-starts": 3426,
    "developerEmail": "cs@azurlane.net",
    "title": "アズールレーン",
    "2-starts": 632,
    "5-starts": 14225,
    "developerWebSite": "http://www.azurlane.jp",
    "crawledTime": "2018-10-08T21:49:48+0900",
    "score": 4.3141346,
    "developerId": "/store/apps/developer?id=Yostar,+Inc.",
    "reviews": 8362,
    "ratings": 21147,
    "price": 0,
    "genre": "アクション",
    "familyGenre": null,
    "currency": "USD",
    "inAppItem": null,
    "offeredBy": "Yostar, Inc.",
    "released": "2017/09/13",
    "summary": "新感覚美少女戦艦シューティングRPG",
    "1-star": 1727,
    "contentRatingDescription": "ヌード",
    "requiresAndroid": "4.3 以上",
    "privacyPolicy": "http://www.azurlane.jp/private.html",
    "version": "1.5.2",
    "installs": 1000000,
    "familyGenreId": "GAME_ACTION",
    "size": "52M",
    "contentRating": "16 歳以上",
    "developer": "Yostar, Inc.",
    "updated": 1536891354
  },
  "fields": {
    "crawledTime": [
      "2018-10-08T12:49:48.000Z"
    ],
    "released": [
      "2017-09-13T00:00:00.000Z"
    ]
  },
  "highlight": {
    "title": [
      "@kibana-highlighted-field@アズールレーン@/kibana-highlighted-field@"
    ]
  },
  "sort": [
    1539002988000
  ]
}

んでワクワクするのが Kibana のヴィジュアライザやダッシュボードですね。3日ほど回してみてるところですが、ジャンル指定無しのランキング情報を拾ってみるだけでも結構面白いです。クローラを稼働させているサーバのリソースなんかも同じダッシュボードで監視できるようにしています。

f:id:mattintosh4:20181008213651p:plain

まずはランキングに登場するアプリのインストール数別の割合です。Google Play ストアのランキングには多いところで最大 600 位まで表示されるようになっていますが、100 万ダウンロード以下だけで約8割を占めます。FacebookTwitter なんかの有名アプリはほんの一部なんですね。

f:id:mattintosh4:20181008225327p:plain

こちらはリリース時期が新し目のアプリの評価推移です(色設定するの忘れた)。9月末に配信された Nintendo のドラガリアロストが順調に評価を獲得していますね。「アトリエ オンライン ~ブレセイルの錬金術士~」や「カスタムキャスト」なんかも順調(たまに評価数が減る現象はよくわからない)。ワイルドアームズはいまいち伸び悩んでいるようです。

f:id:mattintosh4:20181008221836p:plain

そしてこちらはトップセールスランキングのアプリです。1位は「LINE:ディズニー ツムツム」で、その次にモンスト、パズドラと続きます。意外にも FGO は評価数が少なく、単純にリセマラやらなんやらでダウンロード数だけ増えてるって感じなんでしょうかね。グラブルは低評価が少ないのでサービス的には悪くないって感じなんでしょうか。

f:id:mattintosh4:20181008221938p:plain

自分の中ではモンストって結構人気アプリだと思ってたんですが、ストア全体で見た時に実際どうなのか?範囲をゲームだけに絞って評価数をタイトルごとに並べてみます。そしたら「クラッシュ・オブ・クラン (Clash of Clans)」がダントツの1位。モンストはなんと80位でした。

f:id:mattintosh4:20181008222950p:plain

実際には「評価数が多い=売上が高い」というわけではありませんがある程度の指標にはなるかなぁと。

次に企業にいってみましょう。

こちらはランキングに掲載されているアプリが多い企業の割合です(ゲームカテゴリだけで絞っていません)。どれだけランキング入りする人気アプリを多く配布しているかですね。こちらは「BANDAI NAMCO Entertainment Inc.」と「SQUARE ENIX Co.,Ltd.」が1、2位をいったりきたりという感じです。

f:id:mattintosh4:20181008223655p:plain

Google Play ストアはどんなジャンルが人気なの?」っていうのはこちらのグラフです。ロールプレイングが人気で、パズルやアクションなどはだいたい同じくらいですね。

f:id:mattintosh4:20181008224307p:plain

ではジャンルごとにディベロッパーの割合を出してみましょう。Kibana の Split chart を使うとこんなのも簡単に出来ます。ロールプレイングはスクエニ、パズルはやや LINE が優勢、アクションはバンナムの一強。ディベロッパーごとの得意としている分野がわかりますね。

f:id:mattintosh4:20181008224504p:plain

最後にこちらは試験中ですが、時間ごとのジャンルの推移です。曜日や時間帯で人気ジャンルって変わってくるのかな?と思って収集してみているところです。

f:id:mattintosh4:20181008224909p:plain


Elasticsearch の何がすごいってこれだけ色々グラフとか作って表示設定とか変えてるのに反応がすぐ返ってくるところ。ヒートマップの色を変更するとたまにバグって全部黒くなることがあったりしますが概ね良好です。6 系でいくつか仕様が変わったようでネット上の情報が古くなっていることもありましたが、ネットで調べた範囲の情報でこれくらい遊べました。

私はスマホ用アプリは製作しないので Google Play ストアや iTunes ストアの情報はあまり興味がなく、今後もストア情報を収集し続ける予定はないのですが、今後の仕事の次第ではもうちょっとクローラーを改良してみたりしようかと思っています。

ストア情報とは別に Yahoo や Google トレンドワードを拾ってタグクラウドにしてるんですが、こっちは結構面白いです。Twitter は Developer 登録をしないと使えないようなので申請しているところですがどれくらいかかるのやら。

f:id:mattintosh4:20181009002840p:plain

次に遊ぶとしたら Twitter API ですかね。今年から来年にかけて Elasticsearch をもうちょっと覚えていきたいなと思ってます。

ではまた。