こんにちは、エムスリーエンジニアリンググループ/ BIR(Business Intelligence and Research) チーム の遠藤(@en_ken)です。
BIRはアンケートシステムをはじめとするリサーチプロダクトを開発しているチームです。チームの詳しい紹介は次の資料を読んでいただければと思います。
ここ1年ほどでチームの様相は様変わりしました。 一時期エンジニア3,4名ほどしかいなかったチーム状況から現在はエンジニアだけでも9名まで増え、PdMが2名参画したことで開発状況もこれまで以上に活況になってきています。開発スタイルも個人開発に近かったものからチーム開発にシフトしました。
チームの状況だけではなく、我々の開発運用しているアンケートシステムについてもリアーキテクトの方向性を明確にしたことで、チーム全体でそこに向けて開発を進めています。今回の記事では、BIRのここ最近のアンケートシステム開発の概要を紹介させていただきます。
アンケートシステムのアーキテクチャと課題
冒頭で紹介した通り、BIRは主要プロダクトとしてアンケートシステムの開発を行っています。 2024年初時点で、BIRで管理していたアンケートシステムのアーキテクチャ概要は次のようになっていました。
アンケートを回収するには、会員の方に「アンケートの存在を認知してもらいアクセスしてもらう」こと、そして実際に「アンケートに回答してもらう」ことが必要になりますが、このアーキテクチャではその役割を明確に分離しています。 すなわち、アンケートの配信管理を行うシステム(Dolphin)が会員のアクセスを集めることに責任を持ち、集めたアクセスは各アンケートシステムにリダイレクトし、個別のアンケートの回答処理は各アンケートシステムが受け持つという構造です。(詳しくは前TLの滝安さんの発表資料を参照のこと)
アンケートの督促や流入のコントロールをDolphinに集約するこの構造自体は非常に機能しています。一方で、各アンケートシステム側は問題点を抱えていました。
- 機能の重複
- システムのレガシー化
の2点です。
歴史的な経緯で旧来のアンケートシステムを整理統合しないまま、新たなアンケートシステムが立ち上げられてきた結果、年初の時点で計5つのアンケートシステムが運用され、4つのシステムがそれぞれにアンケート回答画面を保有していました。 このことは、例えば、回答画面UIを画一的に刷新したい場合、システム数分だけ工数が膨れ上がることを意味しています。
また、年初時点で10年近く運用されているシステムも存在していました。ここまで10年選手でサービスを支えてくれたという意味では非常に優秀なシステムではありますが、 近年は継続的なメンテナンスがされてこなかった背景もあり、今後のアップデートが難しい状態にありました。
こうした状況は、ビジネスの要求にアジリティ高く応えていく上で足かせとなっていました。
リアーキテクチャの方針
こうした状況を打破するため、チームでは次の様なリアーキテクチャの方針をもとに整理を進めています。
- アンケート回答機能は1つのシステムに集約する。
- アンケート配信形式のユースケースによる複雑さは、各アンケート管理側のシステムが吸収する。
エムスリーのアンケートには用途に応じて、単発のアンケートの他に、数ヶ月に1回など定期的に収集する形式、常時回答できる形式などのアンケート配信形式があります。既存のアンケートシステムを整理していくと、設問形式などアンケート内容自体の特殊性というよりも、この配信形式のバリエーションに対応するために立ち上げられてきた側面が強いという結論に至りました。したがって、配信形式の複雑さを分離できれば、理想的には柔軟性の高い1つの回答システムと3つ程度の管理システムに整理統合できるという仮説を持って開発を進めていくことにしました。
これまでの開発とこれから
現在はこのゴールを目指して開発を進めており、11月には新アーキテクチャの方針に沿った常設型アンケートシステムの1つ(MedicalChannelMix)のリプレースが完了しました。
このリプレースのため、汎用的なアンケート回答システムであるLion、常設型アンケート管理システムZebraというシステムを新たにリリースしました。
BIRはサーバーサイドの言語はGoをファーストチョイスとするチームですが、Lionはフロントエンド側の複雑なアンケート定義型の扱いやすさを鑑みてチーム初のサーバーサイドTypeScriptを採用しています。
また、上記の図の外にはなりますが、アンケート回答データをMedicalChannelMixのデータプロダクトとして提供するためのETLパイプライン Rhinoも同時期にリリースしています。こちらもDataformをチームで初めて採用するなど、新しい技術へのトライも行っています。
現時点では、まだ1システムのリプレースのみであるため、機能重複の解消には至っていませんが、10年もののレガシーシステムの整理はこれで完了しました。
今後は、常設型の他のアンケートをLionとZebraに整理統合していくことが直近のミッションになり、その後他のシステムも整理していく予定です。
まとめ
我々のチームの直近の開発をかいつまんで駆け足で紹介しました。
上記では「汎用的なアンケート回答システム」とサラッと書いていますが、実際にはアンケートの定義をどう汎化していくか、アンケート回答システム側に配信方式の複雑さをいかに持ち込ませないかなど設計課題は多く、日々新たな知見が得られています。
また、Lionはあまり世の中に知見が少ないと思われるサーバーサイドTypeScript x Cloud Spannerの組み合わせで利用しており、こうした開発の詳細についてもまた別の機会に紹介できればと思います。
We are hiring!!
エムスリーエンジニアリンググループでは、一緒に働く仲間を募集しています!
BIRの開発に少しでも興味を持った方は、まずはカジュアル面談から、以下URLよりご応募をお待ちしています。