新卒2年目が「社内データのドメイン知識が超属人化し、データ人材のリソースが枯渇する」危機に生成AIで立ち向かった話
こんにちは。株式会社マイベスト新卒2年目の諸田温人です。
現在、弊社に今年8月に新設されたデータサイエンスチームに所属し、主に分析で扱うデータの整備や活用に至るまで社内のデータに関わることに幅広く携わっています。
タイトルにもある通り、今回は、新卒2年目にして「データのドメイン知識が超属人化し、データ人材のリソースが事業成長に活かせない」という、どの会社もあるあるな組織のデータ活用課題に直面した自分が、解決を目指して様々な施策に取り組む奮闘記を書いていこうと思います。
1. 背景と課題
自分は、遡ること2年半前の大学4年生の4月に内定者インターンとしてマイベストに参画しました。その当時、社内ではデータ活用のニーズがどんどん高まってきている一方で、多様なデータの管理・運用の舵を取る人材がいないという状況でした。そんな中、インターン生にも関わらず、いきなり全社のデータ基盤整備を自分1人に任されることになりました。データエンジニアやサイエンティストといったデータを専任にしている人材は社内に1人もおらず、自分自身も「BigQueryって何?」という知識レベルだったので、まさに0からのスタートでした。
そこから1年半ほどの時間を要したものの、様々な紆余曲折を経て、最終的に社内のデータがスムーズに取得できる状態までなんとか整えることができました(この泥臭い過程は後日noteに投稿します)。
ところが、ここで新たな課題に直面しました。それは、データ基盤の整備が進んだ結果、運用面での負担が急増したことです(今思えば至極当然のことなのですが、当時の自分は基盤を整備することがゴールだと思っていて、その先の保守運用のことは全く考えていませんでした)。
整備されたデータをガンガン活用して自らも成果を上げていきたいと思っていた矢先、データに関する問い合わせやSQLのクエリ作成依頼が自分に一極集中する状態となりました。当時はクエリをレビューしたり出力結果をテストしたりする仕組みがなかったため、問い合わせの内容をすり合わせ、その定義を元にSQLを作成し、最後にSQLのクエリ確認と出力結果のチェックを人力で行うところまでを1人でやり切る必要がありました。そのため、自分の工数の半分ほどはデータの問い合わせを捌くことに割かれる日々が続きました。
このような状況を、次の2つの組織にとって超重要課題として捉えました。
社内のデータ人材のリソースが十分ではない中で、データ取得の問い合わせ対応にかなりの工数割合を割いてしまっている
社内データに関する知識が超属人化しており、自分1人が会社を辞めたら誰もデータが見れなくなる
2. やったこと
上のような背景から、社内の分析用データに関する問い合わせに対して、自動で適切なテーブルを探し出し、適切なSQLクエリを生成するSlackBotを開発しました。
他社事例などの調査を踏まえ、実装・運用・クイックな改善にかかる工数が最も小さく、何より社内に馴染みやすい仕組みになると判断したため、この手法を採用しました。
実装したSlack Botの仕組みは以下の図のようになります。
ベースはSlack CLIを活用し、データの問い合わせメンションに反応して、テーブルやカラムの情報が集約されているメタデータ情報を参照したうえで回答を生成し、Slackで返答するようになっています(GPT-4o APIを用いたSlack Botの実装はこちらのサイトを参考にさせていただきました)。
このBotの工夫ポイントは以下の4点です。
① メタデータをスプシで管理する
社内で使われているデータテーブルの名称、カラム名、格納されているデータの概要などをメタデータとしてスプレッドシートにまとめました。
スプレッドシートで管理する理由としては、「メタデータは会社全体で育てていくもの」という思想のもとで、データチーム以外でも手軽にメタデータを入力・編集できるようにするためで、社内全体が積極的に情報を拡充&継続的なアップデートが実現できる体制としています。
② 回答内容と順序を事前に指定する
弊社のデータに関する問い合わせは、主に「どのテーブルを見ればよいかわからない」「どんなクエリを書けばよいかわからない」「クエリの意味がわからない」の3つに集約できるため、そのため、これらをすべて1度の回答でカバーし、網羅的かつ順序立った解説になるように指示しています。
③ 社内で使われる用語を事前に学習させる
弊社では、社内特有のディメンションやファクトの用語がいくつかあり、どの軸で集計するかの要素はほぼ決まっています。そのため、これらの用語を事前に学習させることで、社内の自然な問い合わせに対して迅速かつ正確に回答できるプロンプトに設定しています。
④ 社内のSQL記法ルールに基づいた出力に指定する
弊社ではSQLコードの可読性や書きやすさを重視した記法ルール(すべて小文字で書く、CTEごとに処理内容をコメントに残す、など)を設けており、Botの回答でもこのルールに従ってSQLを生成するようにしています。
これにより、実際の現場利用に馴染みやすいクエリを得ることができます。
上記のような工夫により、高精度かつ現場メンバーが利用しやすい返答の生成を実現しています。
Botは「ナイチンゲール先生」と名付けました。統計の母とされ、様々なデータの収集、分析、可視化を行い、それらを要人に提言することでいくつもの改革を推し進めた彼女の姿が、まさに今後データの力を存分に活かして事業成長に貢献していくデータサイエンスチームに重なったため、リスペクトを込めて命名しました。
3. 使用例
ここでは、実際に「ナイチンゲール先生」がどのように動作するのか、具体的な例をいくつか紹介します。
ex1. 月次で集計した指標の取得
弊社では、月次で特定の指標を集計したいシーンがよくあります。しかし、データマート上では日次でデータを保持していることが多く、group byを使ったSQLを書く必要があったり、SQLを書かない場合も膨大なデータを手元のスプレッドシートで集計しなければならなかったりと何かと手間がかかる作業でした。
そこで、以下のように月次で集計した指標が取得できないか「ナイチンゲール先生」に問い合わせてみます。
すると、次のような返答が返ってきます。
上記のように、回答内では参照できるテーブルだけでなく、月単位でgroup by処理を行うクエリまできちんと記載されており、このSQLをコピペして実行するだけで必要なデータを得ることができます。これにより、SQLに不慣れな現場メンバーも、手元での煩雑な集計をすることなく、必要なデータをクエリから一発で取得することが出来ます。
ex2. 昨日1番PV数が多かったページ
弊社では、特定の指標を定期的にウォッチしておきたいニーズもあります。その一例として、昨日1番PV数が多かったページをモニタリングできるクエリを問い合わせてみます。
すると、次のような返答が返ってきます。
こちらの回答では、date_subという初学者にはやや馴染みの薄いクエリが登場しますが、補足の部分で処理の説明がきちんとなされており、現場メンバーの解釈性が高い回答になっています。
このように、生成AIの技術を駆使することで、社内データの問い合わせの一次回答を自動化することに成功しました。メタデータ管理やプロンプトを工夫したことも相まって、かなりラフな問い合わせに対しても体感8割くらいの精度で返答を返してくれてるため、改めて生成AIの威力を実感しています。
4. リリース後の所感
実際にリリース後に使用状況をモニタリングしたところ、残念ながら当初の期待値よりも使われていない、という結果になりました。
使われない理由として、1つは、現場のメンバーにとってデータチームに直接依頼して完成形のデータを待つ方が工数的に効率が良く、かつ取得したデータに対する責任を自分で負わなくて済むため、直接の問い合わせに圧倒的優位性がある点が考えられます。
また、現場のデータ活用はまだまだ受動的であり、BigQueryやSQLといった馴染のないツールの利用に対する心理的なハードルも高いため、Botの導入から一足飛びに活用の動きには繋がらないことも要因になっていると思います。
今回の取り組みを通じて、次のことを痛感しました。
「便利ツールを導入する程度では、データ活用に対する意識や現場メンバーの行動は上向かない。データ民主化という壮大な夢を実現するためには、データの利用が定着するまでの粘り強いサポートと継続的な改善が必要である。」
どんなに最新の技術を駆使し、どんなに魔法のような実装を施したとしても、泥臭くデータの課題に向き合い、粘り強く現場メンバーに寄り添い続けなければ、組織におけるデータ活用の民主化は達成されないということを肌で感じる貴重な機会となりました。
この経験を活かし、この先もマイベストでのデータ活用の民主化を達成するために、泥臭く、魂を燃やして突き進んで行きたいと思います。
以上が、今回の取り組みの奮闘記になります。今後もデータチームの挑戦は続きますが、近い将来データの力を駆使してマイベストの事業を爆発的に成長させることをここに誓います。
最後まで読んでいただきありがとうございます!
マイベストではデータサイエンスチームのメンバーを絶賛採用強化中です。新しく「みんサポ」というサービスが始まり、データ人材にとっても、今後ますますユーザーデータの活用が活発化していく非常に熱いフェーズを迎えています。少しでも興味をお持ちいただけましたら、ぜひ弊社の採用ページを覗いてみてください!
この記事が気に入ったらサポートをしてみませんか?