資料はこちら
後藤氏:
本日は、『小さいチームでもコードのアップデートと新規開発を止めない!』というテーマで発表させていただきます。
さて、初めに弊社、株式会社hokanの組織について簡単にご紹介させていただきます。現在、私たちの会社には6名のソフトウェアエンジニアが在籍しており、このうち4名は保険業界専用のCRMサービス「hokan」の開発に携わっています。
![[株式会社hokan 後藤氏]小さいチームでも コードのアップデートと 新規開発を止めない! #Webフロントエンドリプレイス](https://images.microcms-assets.io/assets/0424eb4d08074d81bfa98eb3dc10071c/67f987b41ca84b9e8d8b60e0ab8766d7/report_webfrontendreplace_maki_goto.png?w=3840&q=75&fm=webp)
資料はこちら
後藤氏:
本日は、『小さいチームでもコードのアップデートと新規開発を止めない!』というテーマで発表させていただきます。
さて、初めに弊社、株式会社hokanの組織について簡単にご紹介させていただきます。現在、私たちの会社には6名のソフトウェアエンジニアが在籍しており、このうち4名は保険業界専用のCRMサービス「hokan」の開発に携わっています。
株式会社hokan エンジニア
後藤 麻希2018年に広告メディア系企業に新卒入社し、インハウスWebデザイナーとして勤務。ポイントメディア・不動産メディアのクリエイティブ業務を担当し、2020年にリードデザイナーとして金融系新規事業の立ち上げを経験。 2022年3月に株式会社hokanにエンジニアとして入社。hokan CRMの機能開発業務を担う。 自身の人生経験から「複雑なものを分かりやすく変えていく」をモットーに日々仕事と向き合う。
株式会社overflow 共同創業者CTO
大谷 旅人経路探索エンジンの研究開発後、2010年に株式会社サイバーエージェント入社。Ameba事業本部でシステム開発・運用責任者、事業部ボードとして組織運営などを務める。2013年株式会社メタップス入社、決済、AI分析プラットフォームの基盤開発やシステム開発責任者として従事、2015年に上場を経験。株式会社overflowの共同創業者CTOで設立に参画。

hokanのフロントエンドチームは、過去1年間でいくつかの大きな変更を経験しました。4人から成る私たちのチームは、本来の機能開発を行いつつ、フロントエンドの改善にも同時に取り組んできました。
今回は、このフロントエンドの歴史の中で比較的大きなことを短期間で行っていく「短期集中型リプレース」、細かい変更を長い時間をかけてじわじわ行っていく「長期じわじわ型リプレース」についてお話させていただきます。
「短期集中型リプレース」のアプローチの一環として、私たちはビルドツールをcreate-react-appからViteへと移行しました。
この変更の主な動機は、開発体験の向上です。以前のビルドツールは起動に時間がかかり、ホットリロードが遅いという問題がありました。そのため、よりスムーズな開発環境を求めてViteへの移行を決定し、実際に開発体験が改善されました。

ただ、弊社はある程度歴史のあるプロダクトのため、Viteを導入する過程でいくつかの障壁に直面しました。とりわけ、500以上のメンテナンスされていないJavaScriptファイルを全てTypeScriptに変換する作業は、非常に困難でした。そのため、各ファイルを個別に確認し処理する代わりに、ts-migrateを活用して一括での置き換えを敢行しました。
Viteと互換性のないライブラリも存在したため、手動でパッチを適用する作業も必要でした。
このプロジェクトには、中心となる担当者を1名アサインし、通常業務と並行して進めました。コードのレビューと動作確認は、チーム全員が分担して担当しました。
顧客一覧を含むhokanにあるページをNotionに洗い出し、細かい機能ごとに担当者を割り振り、動作確認を実施しました。問題が発生した際は、Notionにリストとして記載し、チーム内で共有しました。
プロジェクトは段階を踏んでリリースされ、開始から3ヶ月後には開発環境に適用されました。その後、他のプロジェクトと並行しつつ、本番環境への反映作業を進め、最終的に1月に全ての作業が完了しました。
次に、ServiceWorkerの移行についてです。
現在、フロントエンドのバージョン管理にはServiceWorkerが主流ですが、特定の問題点がありました。たとえば、緊急のバグ修正リリースをリアルタイムでユーザーに反映させたい場合、ServiceWorkerのバージョン管理が更新されないことがしばしばありました。多くのユーザーが古いバージョンに留まってしまう事態が散見されたのです。これを受けて、私たちはServiceWorkerの使用を廃止するという決定をしました。

私たちは、最新のフロントエンドバージョンの更新を確認するために、Firestoreを利用する方法を採用しました。
ビルド時に環境変数にバージョン番号を埋め込みます。そして、リリース時にはFirestoreにも手動でバージョン番号を入力して更新するのです。
Firestoreに記載されている「currentVersion」というデータは、信頼できる最新バージョン番号として機能します。サービスがロードされる際に、コードに埋め込まれたバージョン番号とFirestoreから取得した最新バージョン番号を比較します。もし差異がある場合は、更新を促すダイアログを表示することで、ユーザーに確実に更新させる手法を採っています。
このリプレースプロジェクトでは、中心となる担当者1名をアサインし、通常の機能開発と平行して進めました。これが私たちの短期集中型リプレースのプロセスです。
このアプローチのメリットは、専任の担当者がいるため、チームメンバー全員が自分の担当する機能開発とリプレース作業に集中できる点です。
同じ期間で比較した際に、チーム全体の機能開発のアウトプットが減少してしまう可能性はあると思います。しかし、リプレースによって得られるメリットも大きいため、全体として失うものはないと考えています。また、リリースタイミングの調整など、ビジネスサイドとのコミュニケーションも、専門の窓口を設けることでスムーズに行えるようになるという利点があります。
一方で、デメリットとしては、集中しすぎることで担当者が限定されがちになり、知識の共有が進まない点が挙げられます。これに対する対処法としては、二つのアプローチが考えられます。一つ目は、全員がレビューや動作チェックを行い、変更内容を共有することで理解を深めるという方法です。ただし、変更点が複雑である場合、レビューだけでは理解が追いつかないことも想定されます。その場合の二つ目の方法は、担当者による共有会の開催や、ドキュメントの作成を通じて情報を共有することです。
最後に、現在も一部が進行中である長期的なリプレース作業についてお話ししたいと思います。
私たちがmoment.jsからdate-fnsへの移行を検討し始めた主な動機は、moment.jsの開発チームが新しいプロジェクトでの使用を推奨しないと公式にアナウンスしたことにあります。これを受けて、他のライブラリに切り替えるべきだという流れが生まれました。
この移行プロセスを進めるために行った主な活動は二つあります。一つは計画と進捗状況を可視化すること、もう一つはチーム全体でフレキシブルに取り組むことです。
計画と進捗の可視化のために、まずmoment.jsを使用しているファイルをすべて特定し、それらをNotionのプロジェクト管理ツールを用いてタスクリストとして整理しました。これにより、どのファイルが移行の対象となっているのかを明確にしました。そして、これらのタスクに対しては特定の担当者を割り当てず、スプリントの期間中に時間があるエンジニアが自由にタスクを選んで取り組む方式を採用しています。

現在、上図のような2週間のスプリントを採用しており、ステージング期間の後半には、手が空くメンバーが出ることがあります。
そのため、空いたメンバーは自分の興味のあるタスクを選んで取り組むようにしています。この方法は集中型ではなく、スプリントによっては対応できないこともありますが、タスクの進捗を可視化しているため、できなかったタスクについてはすぐに振り返りを行うことができます。
また、チーム全員がタスクに取り組むことで、特定の人だけがライブラリーに詳しくなることを避け、知識をチーム全体で共有しています。これが良い効果をもたらしていると感じています。
さらに、私たちは現在、Material-UIからMUIへの移行も進めています。この移行の主な動機は、ライブラリーのバージョンを更新したいということです。
このリプレース作業では、ファイルごとにタスクを割り当てるのではなく、開発の流れの中で少しずつ対応しており、声かけ運動を行うスタイルで進めています。
私たちは、コンポーネントに個別のスタイルを適用しているため、一気に置き換えるとデザインが崩れるリスクがあります。
そのため、全体を一度に置き換えるのではなく、新しい機能開発や既存機能の改修を行う際に、それを担当するエンジニアがMaterial-UIのコンポーネントを使用しているファイルに遭遇した場合に、都度MUIに置き換えるという運用をしています。
もし、Material-UIを使用しているファイルを手がけていても変更が見過ごされていた場合には、コードレビュー時に指摘し、その場で修正を促すようにしています。これが、私たちが取り組んでいる長期的で徐々に進めるタイプのリプレース戦略です。
このアプローチの利点としては、まず、タスクを細分化して独立させることで、開発作業と平行して進めることが可能になる点が挙げられます。
タスクを小さく区切ることで、15分程度の空き時間にも取り組むことができ、ビジネスサイドとのやり取りで待ち時間が発生した際には、取り組むのにちょうど良いサイズです。
二つ目のメリットは、全員が取り組むことで知識が共有しやすくなるという点です。
プロジェクトの概要を共有する初期段階の説明会を開催し、その後はメンバーが各自のペースで作業を進めながら、自発的に知識共有を行うので、知識をチーム全体で共有するハードルが大きく下がります。
反対に、デメリットとしてはプロジェクトが長期化するため、終わりをどう定義するかが不明瞭になりがちです。これに対する対策としては、プロジェクト開始時にゴールラインを明確にし、必要なタスクを洗い出し、チーム全員がそれを理解することが重要だと考えています。さらに、長期的にじわじわと進めるリプレースは、通常の機能開発と平行して行われるため、スプリントによっては進捗がない時期もあります。そうした際は機能開発を優先し、進捗がないことを割り切るようにしています。
hokanでは、短期集中型と長期じわじわ型のリプレースの2種類があり、それぞれに適した対処法が存在します。メリットとデメリットはありますが、どのリプレースを行いたいかによって最も適した方法を選ぶことが重要です。そして、新たなリプレースを進める過程で、より良いパターンや方法を発見する可能性もあります。
\株式会社hokanでは、積極的に採用中📣/
株式会社hokanの中途採用・転職・求人情報|Offers Jobs
福利厚生も充実しており、リモートワークやフレックスタイム制度はもちろん、技術向上や開発効率を支援するために年間12万円を受け取れるテックブースト制度など、魅力的な福利厚生があります。ご興味をお持ちでしたら、カジュアル面談も大歓迎ですので、ぜひお話ししましょう。ご清聴ありがとうございました。
AI 時代のエンジニア転職は Offers で
あなたのキャリアに合った求人やスカウトが届く、エンジニア向け転職サービスです。
無料ではじめる正社員の求人を探す
Offers Jobs で正社員の求人を探せます。
求人を見る![[株式会社ventus 加古氏]エクスペリエンスを損なわないフロントエンドの改善 #Webフロントエンドリプレイス](https://images.microcms-assets.io/assets/0424eb4d08074d81bfa98eb3dc10071c/e605484866b54716a63717423244df03/report_webfrontendreplace_ryotaro_kago_rei_tokami.png?w=3840&q=75&fm=webp)
加古氏: 早速ですが、私たちのサービス「ORICAL」を紹介させていただきます。
株式会社ventus フロントエンド プロジェクトリード
加古 遼太郎 他2名
![[Mosh株式会社 村井氏]Angularと斬新的なリプレイス #Webフロントエンドリプレイス](https://images.microcms-assets.io/assets/0424eb4d08074d81bfa98eb3dc10071c/6608b2a24bd14c47a4c63d44ad601e44/report_webfrontendreplace_ryosuke_murai.png?w=3840&q=75&fm=webp)
資料はこちら 村井氏: 改めて自己紹介をさせていただきます。Mos
Mosh株式会社 CTO
村井 亮介 他1名

AIに画面を作らせても、人のレビューは要るのか。デザインハーネスを提唱するこぎそ様が、4層モデルとデモ、レビューコメントから判断基準を育てる実践、人が判断を残すべき領域を語りました
株式会社Lumilinks 代表取締役 / デザイナー
こぎそ 他1名

設計・実装がAIに移った今、人間に残る要求・要件定義をどう考えるか。『良いコード/悪いコードで学ぶ設計入門』著者のミノ駆動様が、文脈・未知の未知・アウトカム・仮説推論の4つの思考と、現場の問いへの答えを語りました
合同会社DMM.com
ミノ駆動 他1名

#GTMLab主宰のなかむらまこと氏とLayerXの飯沼広基氏が登壇。GTMエンジニアは何をエンジニアリングするのか、なぜエンジニア出身が向いているのかを、効率化ではなく売上を伸ばす開発の実践とともに語りました。
#GTMLab 主宰
なかむら まこと 他2名

AIがコードを書く時代にORMをどう選ぶか。KyselyとD1でDBを2回吹き飛ばした溝口浩二(coji)様と、DrizzleとAtlasでスキーマだけを見るKenn Ejima様が、型・マイグレーション・DB選定で人が担う判断を語りました
Dot Product AI, Inc. Founder
Kenn Ejima 他2名