💡 こちらは株式会社ヘンリー Advent Calendar 2023の第1日目の記事です。
ヘンリーエンジニアブログ初回の記事がリリースされて300日余り経ち、この間計18エントリーが公開されました。数はそれほど多くないですが、年初公言していた「蓄積してきた失敗談や技術ノウハウのシェア」はある程度行えたのではないかと思われます。そして、この12月、さらにシェアを増やすべく、有志の企画によりヘンリー史上初のアドベントカレンダーを行うことになりました。僭越ながら今回は引き続き私、VPoEのshenyu_cyanよりトップバッターを務めさせていただきます。
年初の記事では開発者体験、ユーザー体験とスケールアウトの3側面から展望を述べさせていただきましたので、今回はこの3側面から振り返らせていただきます。
スケールアウト
初めからはわかりやすいスケールアウトの話よりスタートします。スケールアウトの観点で考えるとき、人数と事業の二角度が視点に含まれていると思われます。事業の成長によって人数を増やす判断につながり、人数の増加によって事業の可能性が広がる為、両者は切っても切り離せない相互依存の関係だと考えられます。
まず人数の増加によるスケールアウトの施策が実施されました。イメージしていただくために最も集計しやすい客観的データを上げますと、ヘンリーの正社員数は2022年12月31日時点27名でしたが、2024年1月1日には50名以上になる見込みです。プロダウト開発のメンバーに絞ってみても17名から30名になるので傾向が同じく、ほぼ倍増として捉えられます。
そういう背景の中で、チーム構成とアプリケーションアーキテクチャの再編が不可欠になり、プロダクトチームに関する大きな再編が計2回行われました。開発時にますます痛感する認知過負荷を解消するために、4月に開発チームの分界点を見直し、コンプリケイテッド・サブシステムを解除した上ストリームアラインドチームを2つ立ち上げることにしました。また、8月にプロダクト組織内の役割分担を見直し、それぞれのロールを再調整しました。例えば、より抽象的な課題に取り組むCTO室の新設やカスタマーサクセス関係の開発機能の分割はまさにその時から始めました。その中、VPoEの業務範囲を合わせて広げるようにし、開発組織の価値を引き上げ続けるロールと仕組みの展開にフォーカスするロールへ分けました。
アプリケーションアーキテクチャの再編は4月のチーム再編と同時に行われていたため、解きたい課題がつながっていました。正確な分界点をより簡単に探り出せ、効率的に試行錯誤を繰り返せるようにしたく、マルチリポからモノリポへの移行を実施しました。技術面でのしっかりとした準備のおかげでスムーズな移行が達成できました。
組織とアーキテクチャの再編について、正解がわかっているわけでなく、みんなで一緒に手探りしながら実施している中で、来年以降振り返ってみたら微妙だったという所感が全然あり得ます。それでもバリューの「ドオープン」の元で、ADR(Architecture Decision Records)の役割と同じようにブログや社内Notionにちゃんと記録を残し、苦労の実体験を今後のヒントに繋げていけたらと考えます。
ユーザー体験
ヘンリーではUI/UXのガイドラインと製品コンセプトを掲げた上プロダクトの開発を進め、ユーザー体験の一貫性を保ちながらプロダクトの進化を目指しています。ユーザー体験を追求する中、今社内で最もよく使われている言葉はジョブ理論の「ジョブ」です。聞き慣れていない方も多いと思いますが、我々の中では達成したいこと(WillとWant)と解釈しています。
院長や看護師長、医事課長の方々にご協力を仰ぎ、医療機関の各ロールがやっていることと実現したいことを整理し、各ジョブの落とし込みを行いました。それらの実用化はまだこれからですが、プロダクト作りにきちんと反映していけたらと考えています。
また、実践面でも多くの工夫を重ねてきました。例えば、ヘンリーのプロダクトはもともと純React SPAでしたが、利用時の待ち時間によるストレスを解消すべく、Next.jsの導入に至りました。アーキテクチャも変わった大きめの変更でしたが、事前検証と同時期に導入され始めたMablのおかげで大きな不具合が現れませんでした。さらにフロントエンドのルーター部分に関して、React Suspenseを利用することになり、遷移体験が向上しました。
上記のようなわかりやすいユーザ体験向上と別に、常にヘンリーを満足して利用いただくために、適切なサポートが不可欠です。お客様からの問い合わせが来た場合、状況を迅速に理解するために、2つの側面から工夫を行いました。まず、サービス上の画面操作を記録するブラウザ拡張機能を提供し、お客様端末側の事象を特定しやすくしました(技術詳細については後日のAdvent Calendarにて公開予定)。同時に、プロダクトの可観測性向上を繰り返して行い、裏側の改善もしっかりと進めました。とはいえ、改善余地はまだたくさん残っていると考えています。これからはより手を広げ、可観測性関連ツールの活用を検討していく予定です。
開発者体験
開発者体験に関して、引き続き重要視しながら技術選定をしていると感じます。年初以降の技術スタック変化に関して、速度向上とDoppelgangers問題解消のためにpnpmの導入を実施したり、コンポーネントテスト作成の省力化を実現するためにChromaticを導入したことはまさに好例だと考えます。上記のNext.jsの導入の場合でも、開発者体験の向上を一要因として上げていました。
多くの改善のうち、ChatOpsの推進によってもたらされた開発者体験の向上は、触れなければいけないと考えます。例えば、ヘンリーではセキュリティ担保のためにGoogle CloudPlatform周りのスーパーユーザ権限を付与しない運用になっています。そのため、インフラに関する一時的な変更などを行いたい場合、専用リポジトリに対してPull Requestを送り、権限をもらう必要があります。そういった権限申請をSlackで半自動的に実施可能になったおかげで、わざわざGitHub上からPull Requestを作成する手間が減り、レコードも取りやすくなりました。
それに、ツールによる開発者体験の向上はもちろん大事ですが、人数が増えてきている中、技術トピックに関する交流の促進はもう一つ大事なテーマになってきます。ありがたいことに、有志による社内技術勉強会が企画され、コンテンツが多種多様で、私を含む多くの方にとって毎週の楽しみになっています。
加えて輪読会も継続的に開催され、「オブザーバビリティ・エンジニアリング」や「ソフトウェア見積り」のような名作が続々と今年の輪読会にて読破されました。輪読会形式なので、本の内容より行われた議論は最も多くの収穫につながったと感じますので、そのメリットをちゃんと享受できるようにしていきたいと思います。
振り返ってみて
2023年はまだ残り1ヶ月ではありますが、振り返ってみたら私個人にとっても、ヘンリーの組織にとっても変化の激しく、学びの多い一年になっていると考えます。
まず私の仕事の幅が大きく広がったため、これまで触れようと思わなかった知識や経験にたっぷり触れるきっかけが多く生まれました。私は元々技術畑の人間であり、ヘンリーに参画して以来は主に開発組織のチーム作りを行ってきました。しかし今は開発組織のみならず、全社範囲の組織作りに携わっています。職種とメンバー構成の違いによって、必要になってくる設計思想が異なります。手探りをしながら、実践と学習のループを回しています。
組織の角度から考えた場合、新しい仲間の参画によりもたらされた変化が最も学びのきっかけになっていたと感じます。前述のように、人員拡大によって組織の再構築およびチューニングの繰り返しが必然となり、そのプロセスからたくさんの経験が生まれました。特に今の主力製品である中小病院様向けのHenryが今年の年初にリリースされたばかりと考えたら変化の目紛しさが非常に印象的で、感慨無量と言えます。
また、新しい仲間の加入は新しい考え方をもたらしてくれました。ヘンリーに入社する方にはミッションである「社会課題を解決し続け、より良い世界をつくる」とバリューの「理想駆動・爆速アウトプット・ドオープン」への共感を求めていますが、みなさんの人生経験やこれまで歩んできたキャリアがそれぞれなので、性格がもちろん多種多様です。そこで異なる思想の交流による考え方の火花が生まれ、数多くの創意工夫や変則的な思考に繋がりました。今日から25日までの記事はある意味その体現だと考えています。ぜひ毎日の記事をチェックして頂き、交流を深められたら幸いです。