N予備校のデータ分析基盤構築に向けた取り組み

はじめに

昨今Webに限らずあらゆる事業領域において、蓄積されたデータの活用は必要不可欠、やっていて当たり前なものになってきているかと思います。これまでこのブログではあまりそういう話題に触れてこなかったこともあり、本稿では改めてドワンゴ教育サービスにおけるデータの活用に関する取り組みについて、概要レベルにはなりますがご紹介したいと思います。

N予備校における従来のデータの取り扱い

まず従来から行われているN予備校におけるデータ活用の取り組みについて紹介します。現状としては、個々の業務を担当する人や部署がデータ活用のためのシステムやインフラを整えています。

少し例を挙げると、開発サイドではアクセスログをFluentd+Elasticsearchで貯めています。このデータは問い合わせや障害対応等に役立てられています。他にも比較的汎用的なデータの口として、N予備校の管理者ツールとしてデータのcsv出力機能があります。本来想定された使い方ではないと思うのですが、ここから定期的に落としてきたデータを用いて可視化ツールやslack botを社内の方が作っていたりもします。

このような草の根的なデータ活用の推進は、エンジニアらしいといえばエンジニアらしいのですが、特に後者の例についてデータの管理体制等の観点でリスクを感じるなんて方もいるのではないかと思います。一般論でいえばそのような状態はあまり良くないだろうとなるのですが、N予備校特有の事情として、

  • もともと機能ごとに開発チームが別だったこと*1
  • N高校の教育システムとしての対応が最優先の開発項目であったこと

あたりを鑑みると、限られたリソースの中で草の根的にデータ分析が行われてきたこと自体は、決して悪手では無かったのではないかとも思います。

とはいえN予備校はサービス開始から既に6年が経過しており、会員数もありがたいことに順調に増えています。内部でも立上げ段階からより良いものを提供していく段階にフェーズが変わったという認識はあり、よりよいサービスをN予備校で提供していくために統合的な分析基盤を構築していこうという動きになってきています。以降、そんな分析基盤構築に向けた取り組みについて紹介をしていきます。

現在の取り組み

現在の主な取り組みとしては、具体的な利用ケースとして企画開発チーム*2の実データを用いた概念検証のための環境として、データウェアハウスを構築するというところをスタートとしています。

  • 実際にデータ分析を行える基盤を確立すること
  • 前述の課題感から分析基盤の管理体制を整えること

この二つが具体的に推進していきたいことになります。とはいえ基盤の実態がある程度明確にならないと管理体制も検討しづらいですし、一方でそういった体制がないままデータ分析基盤の活用を広く推し進めるのも危うそうです。なのでまず概念検証という比較的他業務への影響が小さい利用ケースのためのデータ分析基盤構築からスタート、その活動を通じて管理の体制の方向性を洗い出していくという考え方で進めています。

以下簡単ですが、本番データの移行とその活用について少し紹介します。

本番環境のデータのBigQueryへの蓄積

本番環境からBigQueryへの流し込みの概要。
本番環境のデータは一旦Amazon S3に蓄積されてからBigQueryに流し込んでいます。

データウェアハウスとしては、コスト感や新機能開発が継続的かつ活発に行われていることも鑑みてGoogle BigQueryを採用しています。現在はAWS上で動いている本番環境に影響がないように、S3に蓄積されたスナップショットやログデータを入力として、本番環境のRDBとアクセスログのデータをBigQueryのData Transfer Service (DTS)で流し込んでいます。

基本的にはDTSさまさまなのですが、そこに至るまでに細かな試行錯誤がありました。

  • データ入力の手段がDTS以外にもいくつかありどれにするか悩む
  • アクセスログ (jsonl形式) のキーがBigQueryのカラム名に使えない文字を含んでいて、そのまま書き込めない
  • アクセスログの中身のがレコードによって大きく異なり、BigQueryのカラムや型の推論でカバー仕切れない*3

などなど。そんな過程を経てとりあえずBigQueryにデータを流し込めましたという感じです。

データ活用のプロトタイピング

Google Data  Portal等を用いたグラフ。お見せできないものが多いのでぼかしています。
Google Data Portal等のグラフ、詳細お見せできないものが多くぼかし付き。

前述のBigQueryに蓄積されたデータを用いて、企画開発チームにおける特に実データが必要な概念検証に活用しています。実データが必要な概念検証としては、

  • 実データを使って具体的な指標の試算すること
  • 試算した指標を実担当者に見せる / 継続的にモニタリングすること
  • 特定の機能実現にあたって今あるデータで足りてるかの検証すること

などが該当すると考えています。

実際に指標を可視化したグラフ等の描画にはGoogle Data Portalを使うことが多いです。結構クセはあるものの、社用メールアドレスと紐づいたGoogleアカウントを通じて権限管理できるため、適切な権限管理のもと簡単に見せられるのがポイントとして大きいです。とはいえやはりクセが強いのでデータの中身の精査やデータの加工作業は各々がよく使う言語、例えばPythonでゴリゴリ書いて納得してから共有用にGoogle Data Portalというフローになりがちです。

そのほかのデータ活用に関連する取り組みや展望

ここまでBigQuery周りのデータの蓄積・使われ方の話だったので、それ以外の観点のデータ活用に関わる活動についても少し紹介します。

N予備校のアーキテクチャ・パイプラインの検討

データ分析基盤と連携することを前提としたN予備校のシステム自体のデータの持ち方について、N予備校のバックエンドの方々も巻き込み議論させていただいています。基盤構築やデータ活用の活動を踏まえて、バックエンドとしてのよりよいアーキテクチャや、分析基盤とのデータのやり取りの方法、カラム変更など大きな変更があった時の対応等について継続的に議論しています。

分析対象のデータ拡充

既にN予備校において蓄積しているデータだけでなく、より幅広いデータの活用を模索しています。例えばフロントエンドの方々を中心にGoogle AnalyticsやMicrosoftのClarityなどを試行的に導入していたり、またN予備校ではVRを用いた教育コンテンツも提供しており、VR教育周りのデータ活用も推し進めていきたい項目のひとつです。

データの管理体制

前述した通り、基盤の構築・活用を通じてこの辺りも明確にしていきたいと考えています。もともと草の根的な取り組みだったデータ分析を集約することで不便になってしまうことは避けつつ、適切に権限管理された上で快適に使える基盤になるよう、SREの方々と連携して体制等含め継続的に議論しています。

機械学習技術等の活用

機械学習技術の活用については、実際の活用シーンや得られる価値を鑑みて、注力すべき機能は何かといった観点も含め検討を進めています。

具体的な機械学習技術の活用例として「ユーザが関心を持ちそうな教材のレコメンド」などが考えられると思います。レコメンド機能を通じて、様々な教材にアクセスしてもらいたいというのはWebサービス運営側として自然な発想だと思います。一方、教育サービスという観点から、多くの教材に取り組むことよりむしろ、一つ一つの教材をじっくり最後まで取り組んでもらういたいという考え方もあり得ます。後者に重きを置くとしたら、一口にレコメンドと言っても、最初に取り組むべきは「ユーザが関心を持ちそうな教材のレコメンド」ではないかもしれません。

このようにサービスとして大事にしている点や得られる価値を鑑みて、企画の方々も巻き込み、実施の優先順位含め注力すべき機能を検討しています。

おわりに

N予備校のデータ活用のための取り組みについて、データ分析基盤やその周辺の話題、具体的には本番環境との連携や、分析対象の拡充、データの管理体制、機械学習技術の活用などについて紹介しました。

よりよいサービスを提供していくため、バックエンド、フロントエンド、SRE、企画など、多くのセクションの力を借りながらデータ分析基盤の構築に向けた活動を進めています。

データ分析基盤を、N/S高の生徒さんを含むユーザ、N/S高校の先生方、そしてサービス運営、コンテンツ制作に携わる方々、N予備校にかかわる全ての人にとっての価値の源泉にしていけるよう、今後もこのような取り組みを継続していきたいと考えています。

We are hiring!

株式会社ドワンゴの教育事業では、一緒に未来の当たり前の教育をつくるメンバーを募集しています。 カジュアル面談も行っています。 お気軽にご連絡ください!

カジュアル面談応募フォームはこちら

www.nnn.ed.nico

開発チームの取り組み、教育事業の今後については、他の記事や採用資料をご覧ください。

speakerdeck.com

*1:N予備校のマイクロサービス より。

*2: エンジニアが企画開発をやってみた より。当プロジェクトは今年度から発足した企画開発チーム中心で動いています。

*3:そんな試行錯誤をしていたらBigQueryの公開プレビュー版ではjsonネイティブ対応してると聞こえてきて目移りしたり。