Upgrade to Pro — share decks privately, control downloads, hide ads and more …

爆速でプロダクトをリリースしようと思ったらマイクロフロントエンドを選んでいた

Avatar for KAKEHASHI KAKEHASHI PRO
September 21, 2025

 爆速でプロダクトをリリースしようと思ったらマイクロフロントエンドを選んでいた

フロントエンドカンファレンス東京 2025
https://fec-tokyo.connpass.com/event/352581/
での登壇資料です

Avatar for KAKEHASHI

KAKEHASHI PRO

September 21, 2025
Tweet

More Decks by KAKEHASHI

Other Decks in Technology

Transcript

  1. ©KAKEHASHI inc. 自己紹介 2 Nokogiri(@nkgrnkgr) X | Bluesky | Github

    株式会社カケハシ(ヘルステックスタートアップ) 生成AI研究開発チーム ソフトウェアエンジニア React / TypeScript / フロントエンド大好き! 二児の父👶 ポケモン対戦大好き!
  2. ©KAKEHASHI inc. 1.マイクロフロントエンドとは 4 ”An architectural style where independently deliverable

    frontend applications are composed into a greater whole” 「独立してリリース可能なフロントエンドアプリケーションを より大きな全体に構成するアーキテクチャスタイル」 引用:https://martinfowler.com/articles/micro-frontends.html
  3. ©KAKEHASHI inc. 2. なぜ自分たちのプロダクトでマイクロフロントエンドを採用したか • 薬局の業務を支えている ◦ ミッションクリティカル ◦ 高い品質が求められる

    • プロダクトの安定性が重要 ◦ 丁寧な検証 ◦ 月次の計画的なリリースサイクル Musubiの特徴 8 薬局業務システムとしての安定性が重要
  4. ©KAKEHASHI inc. 2. なぜ自分たちのプロダクトでマイクロフロントエンドを採用したか 13 選択した戦略・アーキテクチャ 戦略 内容 体制 Musubiと生成AI機能は開発チームを別にする

    デリバリー リリースをMusubiと別にし、生成AI機能単体でリリース可能 UI Musubi非依存のUIとし開発し影響を受けにくくする 実装 Angularではなく、Reactに⻑けたメンバーがReactで開発する チーム・アーキテクチャの独立性を重視した結果
  5. ©KAKEHASHI inc. 3. 設計編:マイクロフロントエンドを支える技術 Vite でビルドした Reactアプリの JS と CSS

    を 事前にホスティング Angular アプリにあらかじめ <div id="react-component" /> を用意し、JS、CSS ファイルをロード divタグに対してReactのJSがレンダリングするこ とでAngularとReactを共存させている AngularとReactアプリを共存させるアーキテクチャ 16
  6. ©KAKEHASHI inc. 3. 設計編:マイクロフロントエンドを支える技術 アプリケーション間通信 18 CustomEventを使った通信 • Angular,Reactに依存しないWeb標準 の技術

    • アプリケーション固有のイベントを定義し て情報のやりとりができる • 直接的な依存関係がなくともやりとりが できるので疎結合にできる
  7. ©KAKEHASHI inc. 4. 実践編:導入して見えた課題と工夫 ”CustomEventを受領できたか”を確認したい 22 CustomEventは基本「投げっぱなし」。 しかし送信側が「受信側が受け付けたか」 を知りたい場面がある 送信側:

    一意なid付きでEventを発火 受信側:イベントを受け取り、結果作成 受信側: 同じidを含む応答イベント(受領 通知)を musubi_ack_${id} で返す 送信側: ackを待ち受け、結果を受け取っ てUIやログに反映
  8. ©KAKEHASHI inc. 4. 実践編:導入して見えた課題と工夫 ローカル開発環境:読み込むJS/CSSを差し替え 26 AngularがReactのJSとCSSを動的に読み込む仕組みにしているため、 URLを切り替えることで任意の環境の組み合わせができる chrome.declarativeNetRequest というAPIを使い、Angularが

    読み込むJS/CSSファイルのURLをランタイムで動的に差し替える Chrome拡張機能 を作成 例えば Angularはデプロイされた検証環境、ReactはLocal開発環境という組 み合わせで動かすことができる
  9. ©KAKEHASHI inc. 5. 総括 おわりに 30 マイクロフロントエンドを選んだ結果: • 多くの苦労はあったものの、開発着手から4か月でリリースできた •

    ユーザーからのフィードバックを受け、毎週リリースして素早く改善している • 1つのアプリケーションにAngularアプリとReactアプリの共存ができた • 異なるミッションを持ったチームが、独立して開発を継続できる体制が整った 伝えたいこと: • まずビジネスとして達成したいゴールを定め、そこからアーキテクチャ・戦略を選ぶことも大切 • ビジネスの要求に応えるために、このような選択肢もあることを知っておいてほしい