新卒入社1年目のグロースエンジニア

池澤龍星氏:今回は、機械学習ではなく「リサーチデータとうまく付き合うために大事なこと」という話をするので、宜しくお願いします。

まず自己紹介から。池澤龍星と申します。株式会社FiNC Technologiesに新卒入社して1年目で、趣味はフットサルとランニングです。

私は、グロースエンジニアを自称しています。グロースエンジニアについては、あとで説明します。

ところで、この会場でFiNC Technologiesを知っている方はいますか? 

(会場挙手)

すごい、けっこういますね。最近、資金調達や代表交代で話題になった会社です。主なサービス内容としては、日々の歩数や体重、睡眠、食事の記録ができて、AI(人工知能)が一人ひとりにパーソナライズされた健康アドバイスを提供するヘルスケアプラットフォームアプリを作っています。今年の1月から毎週月曜日〜木曜日の深夜0時45分にテレビ朝日で『フィンク1分フィット』という番組が開始されたので、気になる方はぜひ見てください。

外部ツールに溜まったデータを分析

先ほど、グロースエンジニアと自称しましたが、実際やっていることはデータ分析とエンジニアリングです。分析して実装して振り返る、といった流れの作業です。今回は、その中で学んだことを共有します。

アプリ制作に関わっている方は、外部ツールをよく利用すると思います。外部ツールはうまく使いこなせれば、内製するより便利です。弊社でも「ユーザーにアンケートを実施したい」という要望が出てきて、費用対効果で外部ツールを導入しました。

アンケートツールを導入したときの分析への期待値として、「アプリのユーザーをもっと分析したい」とか「ユーザーのデータをもっと集計したい」、「アンケートツールのグラフが見やすくなってほしい」みたいな声がありました。

そして、徐々にユーザーのアンケートデータも溜まり、「ここから分析していくぞ!」と思った矢先、ある問題が発生しました。

ツールは、ほぼ手動で管理や集計をしていました。ツールにログインできるのも数人だけでしたので、データも見れない環境でした。さらに、ツールから「API」が提供されていないのでローカルにダウンロードが必要。しかも、ローカルでデータをダウンロードする形式がとても複雑で大変でした。

その結果、分析レポートを出すのに長時間必要だったり、各部署・各チームから依頼が来ても、そのたびに手動で対応する事態に。あとは、データの形式が特殊なので、ダウンロード後にローカルで使えるように整形してデータを結合する作業といった、ユーザーデータの抽出や回答状況の分析にもけっこうな手間を要していました。

Redshiftにデータを定期的に入れる仕組みを構築

そこで分析チームのメンバーで議論を重ね策を講じました。問題に対しての解決策として、レポートを作り閲覧可能状態にし、社内の誰でも使えるように「Redshift」にデータを置いたり、自動でRedshiftにデータを定期的に入れる仕組みや、きちんと整形をスクリプトで行うようにすることになりました。

方法としては、まずツールからCSVをダウンロードしてS3にアップロードします。そして、「Jenkins」でコードを定期実行して、スクリプトで整形してRedshiftに入れる。ビジネスサイドの人は「Redash」を見て分析可能な状態にしました。

その結果、分析レポートをRedashで可視化したり、Redash上でのデータ閲覧を社内の誰でもできるようになりました。あとは、Redash上でSQLを書いてアプリのデータとアンケートのデータを結合できたり、抽出依頼が減り各自で分析可能になっています。

事業への影響としては、クライアントへ提案する前にちゃんと議論やサンプリングができるように改善しました。アプリのデータでなく、より詳細なユーザーのセグメントの作成もでき、アプリマーケティングの戦略に活かすことができています。

今後の課題と反省点

リサーチデータとの付き合い方のまとめとして、導入前に、導入後に問題が起きた場合どう対処するか。どんな解決方法があるのかを考えておくべきです。データ分析といった部分は事業会社だと後回しになることも多く、そこにも注意が必要です。

あとは、社内の誰でも使えるようにデータを整形する。特定の誰かだけ使える形式では意味がありません。

また、自動化できる部分はどんどん自動化していく必要があります。特にデータの持ち方が特殊な場合があるので、スクリプトで対応して定期実行できる環境を作ることがデータを共有するチームや社内の人間とのうまく付き合う方法だと思います。

本質的な問題解決を目指す

すごく簡単に解決したように見えますが、最初は自分1人だけでどうにかしようと思い動いていました。

問題が発生して、データを閲覧できる人が少ないところにまずはフォーカス。スクレイピングを使い、アンケートの回答率の項目をみんなが閲覧できる環境にしようと考えました。ひとまず、「Jupyter」で回答率を取得しようと思いコードを書いたところ、ツールへのログインは簡単にできて、アンケートにもすぐ到逹。「Selenium最高!」とか「このままいけるじゃん!」と思ったら、すぐにエラーだらけになりました。

(会場笑)

はい(笑)ここからが大変で、コード上でなにかのグラフのマーカー上にカーソルを動かさないと数値が表れない仕様になり、自分の技術力ではどうにもならなくなりました。

この一連の流れが新卒あるあるですが、自分だけでやろうとしないことが大事で、知見のある人を巻き込むべきでした。

また作業を始める前に、困ってる人と議論することも重要です。「回答率よりデータそのものが欲しかった」みたいな声があって、スクレイピングが実現できても手動部分は他にもたくさんありました。

あとは、どこが問題なのかちゃんと本質的な部分を解決することも大切です。データの結合と社内の誰でもデータが閲覧できることが重要で、今、振り返るとスクレイピングよりもデータの整形とRedshiftへのインポートが大事だったと思います。自分はなぜかグラフのスクレイピング作業をひたすら残業でやっていました(笑)。

外部ツールを導入する際はお気をつけください。ご清聴ありがとうございました。

(会場拍手)