こんにちは!Diverse広報担当です。
突然ですが、Diverseでは週に1回、エンジニア同士で「見せびらかし会」を開催しています。
「見せびらかし会」とは、各エンジニアが1週間の中で頑張った開発Tipsを、仲間に向けて発表する場。
各自の知見やノウハウの共有を目的に行っています。”見せびらかす”という仰々しい名前ですが、ちょっとした工夫や改善も大歓迎!というラフな発表会です。
※第1回目のブログはこちら
第2回目は、エンジニア村本さん(@1amageek)の”見せびらかし”を紹介します。ぜひお読みください!
▼目次
ユーザー属性を分析するためのツール作り
村本さんの今週の見せびらかしについて
村本:私の見せびらかしは、HOPのユーザーの属性を分析するために作ったツールです。Swift UIを使って作成しました。
カラフルなグラフが表示されていますが、これはヒストグラムを出していて、丸や四角など形の違いで男性・女性を示しています。また、色塗りの違いでユーザーごとに写真があるかないかを表しています。
※セキュリティ上の理由により、実際の画面を加工しています。
現在の表示はAge=年齢で、ユーザー全体の年齢分布を見ているヒストグラムです。
性別の部分を選択すれば、男性と女性のユーザーを分けて見られます。このように分析したい軸に応じて、分布をひと目で確認できるようにしました。
どんなツールを作ったのか?
村本:HOPではユーザーをスコアリングしていますが、このツールでは、スコアの高さに応じて色を変えるよう設定しました。
このように色分けすることで、HOPにとって優良なユーザーがどのように分布しているのかぱっと分かります。
またアプリ内の行動分析をするために、HOPでの行動ログも表示できるようにしました。
下のグラフでは、ユーザーのスコアの高さと特定のアクションを起こしていた回数の相関がわかります。
また上部のバーを右にスライドさせることで、確認したいデータの期間を絞ることができます。
逆に左方向に狭めることにより、過去のデータを遡ることも可能です。
他にもいろんな軸で見られる機能をつけました!
Major City(首都圏)とMinor CIty(首都圏以外)に分けると、スコアの分布が変わるんです。
ユーザーを地方別に分けてグラフ化することで、スコアが高いユーザーが、どの地方・どのロケーションに分布しているのかを見ることができます。
そのため、どの地方のユーザーを獲得するのがよさそうかという、マーケティングに役立てる使い方もできます。
また、課金しているユーザーをフィルタリングすることもできます。
このツールを使うことで、複数の情報を1つの画面で見られるため、複数の集計結果を見比べる時よりも見落としが少なくなります。
例えば、このグラフを見て面白いのが、スコアの高低と課金の相関が分かるという点です。
これも複数の情報が、1つの画面に表示しているからこそ分かりやすくなっていると言えます。
また、年齢の軸に切り換えると、課金と年齢には相関関係があまりないと見ることができます。
―(一同拍手)ここから質問タイムです!
【質問】このツールを作るきっかけを教えてください。また、作成にはどれくらいの時間がかかりましたか?
村本:1週間ほどで作りました。ツールを作った理由は、見たい情報があっても、思い通りに見られるツールがなかったからです。セグメントを切りたい時には二次元では分かりません。
もう一段階次元を加えるためには、そういったツールが必要になると考えて作り、実際活躍してくれています。
【質問】Lookerを使うことは考えませんでしたか?
村本:Lookerはテーブルでは見ているのですが、グラフィカルにしたい時に、二次元でしか表現することができません。SwiftUIを使えば、色を付けることで一次元追加、さらに写真の有無で一次元追加できます。
一つの画面で多くの情報を見たいときに、Lookerだと表現する幅が少なく、セグメントを分けづらかったので、SwiftUIを使ってこういう形のツールにしました。
【質問】このツールをチームの他メンバーでも見る場合は、どのように展開するのでしょうか?
村本:現在悩んでいる部分です。このツールはコマンドラインを叩かないとデータが引けず、引いたデータをビルド時に同梱しているので、単純にツールだけを配布しても、データが更新されません。
その解消方法として、ストレージなどに入れて解放するか、BigQueryと連携させるなどの方法を考えています。しかし、HOPではセキュリティ上の制限から、そういったことが中々できないので困っているという感じですね。
ーLookerを拡張して実現できるかもしれません!Lookerの営業の方から、LookerをJavaScriptで拡張できると聞いたことがあります(※)。
村本:そうなんですね…!ぜひ試してみたいです。
(※)後日調べたところ「Custom Visualization」という機能でした。
【質問】作成されたツールについて、課題はありますか?
村本:多くのデータを扱うことができないことですね。今は、データが数百人ずつくらいでしかとれていないのですが、本当は数千人くらいのデータで見たいです。しかし、そうなるとメモリ不足などマシンパワーが足りず、表現できなくなってしまいます。
解決する案として全部をメモリで持つのではなくて、必要に応じてロードしたり、SQLiteにデータを入れて必要な分だけQueryをかけて取ってくるといういくつかの案を考えています。
最後に
いかがでしたか?
Diverseエンジニアは、見せびらかし会でお互いを刺激し、チームのナレッジ蓄積を図っています。
今後も見せびらかし会を通じて、Diverseエンジニアの裏側を紹介していきます!お楽しみに!
◆Diverseの取り組みに共感いただいた方、エンジニアの働き方に興味がある方、ぜひ弊社の採用ページをご覧ください!