非エンジニアでもデータ分析できる組織へ 〜社内勉強会の作り方〜
こんにちは。 エンジニアのhirutasです。
突然ですが、御社のサービスではどのようにデータ分析していますか?
それなりの規模の会社であれば、BI(ビジネス・インテリジェンス)を専門に行うチームやデータアナリストの方が主に分析を行っているかもしれません。
しかし、少人数のスタートアップでは、分析のみを専門に行うメンバーを抱えることが難しく、プロダクトマネージャやエンジニアが片手間で数値を見ているケースも多いかと思います。
neuetも分析のみを行うメンバーはおらず、データ分析ができるのは社内でも数名しかいないという状況でした。
今回は、社内で行ったデータ分析勉強会の取り組みと、その結果として数値の可視化意識が高まったお話について紹介します。
データ分析がなぜ必要なのか?
事業においては、日々の売上や利用者数など、数値を正確かつリアルタイムに理解することが何よりも重要です。しかし、何の数値が事業の成長を左右するのか、最初からすべて分かっているということはほぼ無いのではないかと思います。特にスタートアップ企業が提供するサービスにおいては、市場の環境や利用状況が目まぐるしく変わっていく中で、事業KPIの構造も常に更新し続ける必要があります。
しかし当時のneuetでは、生の数値を抽出したり分析クエリを書くためには一部のメンバーに都度依頼するしかない状態になっていました。そもそもデータがどこにどうやって保存されているかが分からなかったり、分析のやりかたを全く知らないというメンバーが大半だったためです。
KPIの解像度を上げるためのサイクルを素早く回すためには、都度エンジニアなどに依頼するのではなく、社員全員で生の数値を分析できるようになることが一番の近道になるはずです。そこで、社内に声をかけてみたところ、多くのメンバーが学んでみたいと思っていることが分かりました。
社内向けの分析勉強会を行うにあたり準備したことと、そこからの学びについて詳しくお伝えします。
目指すゴール、目指さないことを明確にした
メンバーはみな通常の業務を抱えているため、分析に関わるあらゆる物事を1から学ぶ時間は到底ありません。そこで、分析勉強会で目指すこと・目指さないことを以下のように決めました。
目指すゴール
・SQLを操り、BigQueryに保存された生の数値を、自分でリアルタイムに分析できるようになること
・自分で学び続けられるようになること(リファレンスが読めるようになる)
・困ったときにエンジニアとスムーズに相談できるようになること(共通言語で話せるようになる)
目指さないこと
・数値を収集、保管、成形して保存する部分の理解
今回は非エンジニアも含む全員が対象だったため、分析の前段として必要である、数値の収集や保管の仕組みや改善についての理解については完全に省くことにしました。その上で、すでに保存されている様々な数値を適切に組み合わせることで、知りたいと思う事柄を自分の手で抽出できるようになることを目指しました。
neuetではBigQueryに分析用のデータを格納しているのですが、SQLの文法や関数すべてを解説することは短時間では不可能です。そこで、公式リファレンスの読み方を理解してもらい、困った時に自力で解決できる可能性を高められるように意識しました。
さらに、もし自力で解決できない問題が起きたときにも、データの中身やSQLという共通言語を用いて、エンジニアとスムーズに相談できるようになることを狙いました。
ステップバイステップでの説明資料を用意した
エンジニアとして普段の分析に使っていたクエリを眺めてみると、実は膨大な前提知識が必要であることが分かりました。
必要となる知識を再帰的に分解していき、Level0〜Level4として5段階のレベルに分け、スライド資料を作成しました。
特に、クエリについては最初からすべて手で書かせるのではなく、まずはコピペして動作させてみるようにしました。その上で課題を提示して、自分で考えながらクエリの一部を修正して動かしてみる、、というステップを繰り返しました。
これにより、細かい文法エラーなどで1つ1つのステップが進まなくなることを防ぎ、どんどん手を動かして試してみる回数を増やすことができました。
スライド内容は社内情報が多分に含まれているため公開できないのですが、以下にて作成したスライドの項目をリストアップしました。
Level0 (前提知識)
・なぜ分析が必要なのか
・チャリチャリのサービスが動いている仕組み
・サーバとクライアント
・データベース、データウェアハウスの違い
・SQLの役割
まずは導入と、必要最低限のコンピュータ知識についてをまとめました。
Level1
・BigQueryへのアクセス方法
・データベースの基本概念(テーブル、レコード、カラム)
・よく使うデータ型
・チャリチャリのサービスにおける主要なテーブル定義
・SELECT文の基本
・1つのカラムを抽出する
・複数のカラムを抽出する
・LIMIT句で件数を制限する
・ORDER BY句でレコードを並び替える
・WHERE句で条件を絞り込む
・BigQuery UI上でクエリを整形する方法
・BigQueryの課金体系について
ここまでの知識により、
SELECT文を用いて、1つのテーブルから任意のカラムを抽出し、WHERE句でレコードを絞り込み、ORDER BYで並び替えを行い、LIMITで表示件数を絞ることができるようになりました。
Level2
・関数とは(引数、変換、出力)
・BigQueryの代表的な関数
・カラムの型と変換方法
・日付と時刻
・UTCとタイムゾーン
・TIMESTAMP型
・DATETIME型
・DATE型
・日付と時刻の演算
・集約関数
・COUNT
・SUM
・AVG
・MIN
・MAX
・GROUP BYによる集約
・HAVING句による集約結果の絞り込み
・Redashによる可視化
・Queryの作成
・Visualizationの作成
これで、
関数によるカラムの型変換や、集約関数でデータをまとめることで、分析のためのクエリが書けるようになりました。
ここまでの資料を作ったところで、所要時間が2時間を越えそうだったので、まずはLevel2までの内容で実際に勉強会を行うことにしました。
1つのテーブルからデータを集約することができるようになれば、最低限でもある程度の事柄は分析できるようになるため、初回としては必要十分だろうと想定しました。
なお、今後の内容として、Level3・Level4としては以下のような項目を挙げておきました。
ここまで来るとかなり高度な分析にも対応できるようになってくるかと思います。
Level3
・JOIN句による複数テーブルの結合
・INNER JOIN
・LEFT OUTER JOIN
・CROSS JOIN
・サブクエリ
・サブクエリとのJOIN
・WITH句
Level4
・分析関数(ウィンドウ関数)による集約
・RANK、SUM、COUNT、LAG
・縦持ちと横持ちデータの変換
実際にやってみてどうだったか
今回は、参加メンバーが多かったため2回に分けて実施しました。
1回目: 六本木オフィス
・参加者
・ビジネス職、エンジニア職の計9名
・hirutas+参加メンバーは会議室で実施
2回目: 福岡オフィス
・参加者
・ビジネス職、CS職の計5名
・hirutasはリモートで繋ぎながら、現地5名はオフィスで参加
1回目はオフィスで顔を突き合わせながら行いました。途中で詰まってしまっている人に対してはサポートメンバーのエンジニアが直接画面を覗きながら対応し、無難に進行することが出来ました。
一方、2回目はリモートで繋ぎながらの開催だっだため、どのように進行すればよいかは不安がありました。現地にはエンジニアがおらず、全て遠隔でサポートする必要があるためです。
しかし、いざやってみると意外とスムーズに進めることが出来ました。BigQueryのWebコンソールでは、クエリ履歴という画面から、誰がどんなクエリを実行しているかをリアルタイムに見ることができるため、参加者が詰まっている点が手にとるように分かったのです。
クエリがエラーになっている場合は、私の手元でも同じクエリを開いて確認し、どのあたりに問題があるのかを特定します。間違えやすいポイントを把握し、ヒントを逐一出しながら参加者がちょうど良く学んでいけるように工夫していきました。
終了後は、参加者全員にアンケートを取って効果を検証しました。ここでは一部を抜粋してご紹介します。
参加前の知識レベルはバラバラでしたが、満足度は11段階のうち平均9を越えており、非常に高い結果になりました。
また、今回の勉強会を受けて、多くの人が自分でも分析してみたいと答えました。手を動かして数値を触ってみる体験によって、スキルと意欲のどちらも高まったと言えます。
実際に、その後は社内のRedashで多くのクエリやダッシュボードが作成されるようになり、SQLの書き方の相談も以前より多く受けるようになりました。全社的にデータ分析・可視化のレベルを上げてゆくいいきっかけになったと感じています。
まとめ
少人数のスタートアップにおいて、社員一丸となってデータ分析に取り組んでいくための取り組みについてご紹介しました。
社内におけるデータ分析のレベルを上げたいと悩んでいる方は、このような勉強会を行うことで意識を変えていくことができるかもしれないので、ぜひ試してみてはいかがでしょうか。準備のしかたや当日の進め方など、参考になる部分があれば幸いです。
また、数値を意識しながら一緒にサービスを成長させていく仲間も大募集しています!
https://www.wantedly.com/companies/company_9706302/projects