KAKEHASHI Tech Blog

カケハシのEngineer Teamによるブログです。

Musubi Insightの1年間の振り返り:ダッシュボードと患者リストの開発紹介

カケハシPart1 Advent Calendar 2023の23日目の記事になります。 カケハシPart2 Advent Calendar 2023も読んでいただけたら嬉しいです。

はじめに

私はカケハシのMusubi Insightというサービスのエンジニアリングマネージャーをしている伊豆本です。
Musubi Insightはダッシュボードと患者リストという2つのプロダクトを開発しています。

・ダッシュボード:薬局の経営者や現場の薬剤師が、日々の業務、収益、患者関係性を確認できるBIサービス
・患者リスト:薬局が患者の一覧を確認したり、患者を検索し、服薬期間中の患者をフォローするためのサービス

Musubi Insightを開発している2チームのエンジニア・ディレクターがAdvent Calendarに登録してくれたため、この記事では、Musubi Insightの1年間を振り返りながら、ダッシュボードと患者リストの開発について紹介します。

想定している読者

  • Musubi Insightダッシュボード・患者リストに興味がある方

Musubi Insightの開発体制

ダッシュボードチーム

ダッシュボードチームは正社員のエンジニア3名が中心で、バックエンド・インフラ・データ基盤を主に担当しています。フロントエンドエンジニアは業務委託で補強し、プロダクトマネージャー・デザイナーがそれぞれ1名ずついます。エンジニアはMusubi Insightダッシュボードの開発経験2年以上の経験を持ち、開発において豊富な経験があります。

患者リストチーム

患者リストチームは2023年3月時点で正社員エンジニア2名、プロダクトマネージャー1名、私がディレクターを兼任していました。新たなメンバー(エンジニア2名、ディレクター、デザイナー)が増え、新たなチーム体制といった状態です。

ダッシュボードの開発

ダッシュボードは2020年に正式版をローンチして以来、機能追加を中心に開発してきました。
増加する契約法人と店舗に伴い、データ基盤側で捌くデータ量も多くなりました。夜間にデータの加工やデータの集計を行っているのですが、時間内にバッチ処理やインスタンスのスペックが不足しており、2022年には障害が多く発生している状況に陥りました。

障害が発生してから、復旧するためにロジックを変更するプログラミング修正を行ったり、サーバーを増強するというような後追いの対応が多くなっており、データ基盤の安定化が急務となっていました。またサーバーの増強を繰り返したことでAWSコストも肥大化していたのですが、利用店舗数・データ量が増えると比例してAWSコストが増えるようなロジックになっていました。これを受け、2023年上半期ではAWSコストの最適化を中心に取り組みました。

AWSのコスト最適化ではMusubi Insightチームだけではなく全社横断データ基盤チームやSREチームに相談しながら進めました。
ログレベルを設定しGlueSparkJobのログにかかるコストを98%削減するなどさまざまな施策を実施した結果、期初と上半期末で1店舗当たりのAWSコストを50%削減できました。
また、AWSのコストを下げるためにチューニングを実施したため、バッチで集計にかかる時間が短縮できデータ基盤に関わる障害を減らすことにも成功しました。

2023年の上半期では、AWSのコスト最適化だけではなく、フロントエンドのフレームワークをAngularからReactに置き換えるプロジェクトも進行しました。
カケハシのメインプロダクトであるMusubiがAngularであり、技術の知見共有やエンジニアの人材流動性の観点からMusubi InsightでもAngularを採用しました。一方、後続のプロダクトは技術選定としてReactを採用していたり、Angularの人気が下がっているためMusubi Insightのエンジニアを採用する上で魅力を下げる要因の1つになっていました。また、チーム内のエンジニアも人気が下がっているAngularのスキルを身につけていくことにwillを感じられず、Reactのスキルであれば身につけたいという状況でした。

2022年からReact勉強会を開始し、エンジニアはReactの基礎学習を始め2023年上半期にReact移行プロジェクトを進めることになります。
React移行は2023年の上半期後半から下半期前半にかけて移行プロジェクトを進めましたが、詳細についてはエンジニアがReact移行に関するブログ AngularのプロダクトをReact(Next.js)にリプレイスしました! を記載していますので、ご覧いただければと思います。

2023年下半期では、React移行を継続的に実施するとともに、上半期で50%削減に成功したAWSのコスト最適化をさらに進めること、現在手動で運用しているオペレーションを自動化するプロジェクトを計画しています。下半期で実施しているプロジェクトは現在進行中なため割愛します。

12月にはダッシュボードチームでオフサイトを実施しました。カケハシではオフィスを移転するため、旧オフィスの最終日に会議室を借り、オフサイトを実施することとしました。
コンテンツとしてはいつもチームビルディングとワークショップを実施しています。
いつもはチームビルディングでは価値観ゲームやドラッカー風エクササイズ、デリゲーションポーカーなどを実施しますが、ダッシュボードチームは在籍期間が長めで、短い方でも1年半在籍しており一定お互いを理解した間柄なので、今回はゲーミフィケーションとしてストロータワーを実施しました。
今年カケハシ社内ではAIガイドラインを策定し、ChatGPTやGitHub Copilotの利用が可能になりました。そこで、ワークショップではChatGPTを利用したチャットAIアプリを作成しました。ワークショップの詳細についてはオフサイトミーティングでLLMのハッカソンをやってみたをご覧ください。

患者リストの開発

2022年に患者リストは検索した条件に当てはまる患者に対してSMSを送信する機能を実装しましたが、薬局・薬剤師にとって患者リストを活用しSMSを送信する業務は、普段の業務に加えて追加で発生する業務となるため利活用が進んでいませんでした。
2023年は新たな契約プランに基づく機能を策定し、さまざまな状況に合わせ自動SMS配信する機能を実装し、患者リストの利活用を促進しています。

また、患者リスト開発チームはこれまで少人数で開発していましたが、今年エンジニア・ディレクター・デザイナーが増え、チームとして生産性を上げるための取り組みが必要となりました。
まずプロジェクト管理ツールですが、患者リスト開発チームは(ダッシュボード側も同様に)Trelloを使用してスクラムにおけるバックログやカンバン(スプリントバックログ)を管理していました。その後、GitHub Projectに移行しましたが、今年JIRAに移行しました。(Github ProjectからJIRAに移行して幸せになったのか?

患者リスト開発チームは少人数だったため機能をスケールする開発を優先していたため、技術負債やトイルの改善が進んでいない状況でした。開発ディレクター(スクラムマスター)がチームに参画し、チーム改善が進みました。
以下は1例になります。
カケハシはスクラム開発を採用しており、患者リスト開発チームも1スプリント2週間の周期で開発しています。スプリント終了2日前を技術負債解消日として設定していましたが、技術負債を解消する作業ではなく、機能開発の残ったスプリントバックログを優先して対応している状況でした。技術負債解消日を設定していた状態からスプリントバックログに技術負債タスクを組み込むことで技術負債の解消が進みました。(患者リスト開発チームでの技術負債解消の取り組みについて

プロダクト開発する上では、技術負債の解消は必要ですが、新しい技術のキャッチアップや導入に対するチャレンジを積極的に実施する文化があります。たとえば、All TypeScriptのMonorepoのlinterをESLintからbiomeにしたらlintが25倍速くなったフロントエンド技術選定のヒント 【令和五年度版】のような動きもエンジニアが主体的に行動をとっています。

まとめ

Musubi Insightの開発チームや実施している施策や雰囲気、文化などについて紹介しましたがいかがでしたか。
Musubi Insightのエンジニア、ディレクター全員がテックブログの執筆に手を上げてくれたことを感激し、今回の記事を執筆させていただきました。
全員のブログの紹介を組み込むように記載したので、文章としては読みにくい形になってしまったかもしれませんが、一読していただけたのであれば非常に嬉しく思います。
他のプロダクトメンバーやプラットフォームのメンバーなど異なる環境ではあるものの、素晴らしいメンバーが揃っていますので、テックブログを通して少しでもカケハシに興味を持っていただければ幸いです。