mattintosh note

Hello Raspberry Pi!

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 をもうちょっと覚えていきたいなと思ってます。

ではまた。

Wine 3.13 版 EasyWine.app リリースしました

タイトルの通りです。今回は諸事情により WineSkin 版と MikuInstaller-Kai-Kit 版はありません。

matome.naver.jp

Google URL Shortener が終了してたので久しぶりに bit.ly 使いました。インターフェイスが色々変わっていてびっくり。

今年は「夏コミ前に 64-bit 版出すぞ!」とか言いながら忙しくて Mac と向き合う予定がありませんでした。最近ようやく少し落ち着いてきたので年内には 64-bit 版作りたいなぁと思っています。今年の夏コミカタ ROM は Ubuntu で見てたんですがなんか重いんですよね。自分でビルドした Wine 使おうかしら。

最近転職して以前よりかは自由な時間が増えた(気がする)のでまた新しく何か始めてみようかと思ってます。んで、自分も技術書典かコミケに出展してみたいなぁと思ったのですがネタがなく…絵心もなく、技術的なことなら世の中にもっとすごい人いるしなぁ…という感じ。Wine 関係の折本でも出せば誰か一人くらいは買いに来てくれるだろうか。

今年の夏コミは暑かったですね。自分は1日目と3日目一般参加でしたが雨も降らなくてよかったです。参加された皆様お疲れさまでした。

ではでは。

Begin: Running /scripts/local-premount で Ubuntu の起動が遅い

昨日ぐらいから Ubuntu を起動するときにやたら時間がかかるようになった。nosplash で起動しているので画面にログは出ているのだけど Begin: Running /scripts/local-premount のあたりで止まっている様子。

/scripts/local-premount と言えば /etc/initramfs-tools/scripts/local-premount なんだろうけど、新しくファイルが作成されているわけでもないしディレクトリ自体も変化はない。

調べてみたら同じ症状の人がいた。

askubuntu.com

/etc/initramfs-tools/conf.d/resume はなかったので新しく作成してとりあえず下記のコードを書き込む。

RESUME=none

んで initramfs を更新。

sudo update-initramfs -u

再起動してみたら直った。直近で持ち運びのためにスリープとかしてたのが問題だったのだろうか?

復帰用のスワップ領域の UUID を書いておくものっぽいけどとりあえず none で様子見しておくか。

このエラーを詳しくみようと dmesg とか journalctl とかで探してみたんだけど見つからなかった。どこに記録されてるんだ???

Environments

NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.1 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

Ubuntu で Atom や Haroopad のフォントが汚い

Haroopad。なかなか良いアプリなんだけど Ubuntu 18.04 で使っているとなぜだかレンダリングがおかしい。うちは KDE だし仕方ないのかなぁ〜なんて思ってて、Atom を使う用事があったので起動したらこいつも汚い。freetype か pango あたりかな、なんて調べたら同じ症状の人発見。

github.com

どうも libefreetype6 の 2.8.1 がダメっぽい。Atom の方は Atom 自体をアップグレードしたら正常になったが、Haroopad は最新版でもダメ。

なので libfreetype6 を 2.8.0 にダウングレードしてバージョン固定。

wget http://ftp.jaist.ac.jp/pub/Linux/ubuntu/pool/main/f/freetype/libfreetype6_2.8-0.2ubuntu2_amd64.deb
wget http://ftp.jaist.ac.jp/pub/Linux/ubuntu/pool/main/f/freetype/libfreetype6_2.8-0.2ubuntu2_i386.deb
sudo dpkg -i libfreetype6_2.8-0.2ubuntu2_amd64.deb
sudo dpkg -i libfreetype6_2.8-0.2ubuntu2_i386.deb
sudo apt-mark hold libfreetype6

Cisco Packet Tracer 用 Docker コンテナを作る

タイトルの通り。Cisco Packet Tracer が Ubuntu 14.04 向けなら Ubuntu 14.04 で環境を作ればいいじゃない!」というノリ。

「ん?X11 転送以外で Docker コンテナから GUI ウィンドウってホストに持ってこれるのか?」と思ったけど -v /tmp/.X11-unix/X0:/tmp/.X11-unix/X0 でソケット共有したら普通に使えた。

-v $HOME/pt:/home/cisco/pt とかでホストのディレクトリをマウントしておかないとファイルを作成してもコンテナから取り出せなくなる。

git clone https://gist.github.com/4a18b03d22d1206e55bdfcc73ebc7172.git docker-packettracer
cd docker-packettracer
cp ~/Downloads/Packet\ Tracer\ 7.1.1\ for\ Linux\ 64\ bit.tar.gz .
docker build -t packettracer .
docker run -v /tmp/.X11-unix/X0:/tmp/.X11-unix/X0 -v $HOME/pt:/home/cisco/pt --name packettracer packettracer

一度コンテナを作ったあとは docker start だけでよい。

docker start packettracer