Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
爆速でプロダクトをリリースしようと思ったらマイクロフロントエンドを選んでいた
Search
KAKEHASHI
PRO
September 21, 2025
Technology
2
160
爆速でプロダクトをリリースしようと思ったらマイクロフロントエンドを選んでいた
フロントエンドカンファレンス東京 2025
https://fec-tokyo.connpass.com/event/352581/
での登壇資料です
KAKEHASHI
PRO
September 21, 2025
Tweet
Share
More Decks by KAKEHASHI
See All by KAKEHASHI
生成AI時代に必要な価値ある意思決定を育てる「開発プロセス定義」を用いた中期戦略
kakehashi
PRO
1
360
プロダクトの成長に合わせたアーキテクチャの段階的進化と成長痛、そして、ユニットエコノミクスの最適化
kakehashi
PRO
1
160
ユーザー課題を愛し抜く――AI時代のPdM価値
kakehashi
PRO
1
260
「AIと一緒にやる」が当たり前になるまでの奮闘記
kakehashi
PRO
3
290
みんなのSRE 〜チーム全員でのSRE活動にするための4つの取り組み〜
kakehashi
PRO
2
230
医療系のプロダクト開発における生産性向上と高信頼性を両立させる生成AI活用
kakehashi
PRO
1
170
完璧を目指さない小さく始める信頼性向上
kakehashi
PRO
0
270
ユーザー理解の爆速化とPdMの価値
kakehashi
PRO
1
230
スプリントゴール未達症候群に送る処方箋
kakehashi
PRO
2
900
Other Decks in Technology
See All in Technology
メルカリIBISの紹介
0gm
1
1.1k
スタートアップこそ全員で Platform Engineering スピードと持続性を両立する文化の作り方
anizozina
2
620
Snowflake×dbtを用いたテレシーのデータ基盤のこれまでとこれから
sagara
0
190
iOSDC2025 みてねiOSアプリにおける バックグラウンドアップロード継続の挑戦
hikarusato
1
320
Wantedlyの開発組織における生成AIの浸透プロジェクトについて
kotominaga
2
170
IoT x エッジAI - リアルタイ ムAI活用のPoCを今すぐ始め る方法 -
niizawat
0
160
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
300
はじめてのOSS開発からみえたGo言語の強み
shibukazu
4
1.1k
Create Ruby native extension gem with Go
sue445
0
200
20250910_障害注入から効率的復旧へ_カオスエンジニアリング_生成AIで考えるAWS障害対応.pdf
sh_fk2
3
290
Webアプリケーションにオブザーバビリティを実装するRust入門ガイド
nwiizo
8
950
AIの最新技術&テーマをつまんで紹介&フリートークするシリーズ:はじめてのローカルLLM
stanaka26
0
130
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
KATA
mclloyd
32
14k
Statistics for Hackers
jakevdp
799
220k
Agile that works and the tools we love
rasmusluckow
330
21k
The World Runs on Bad Software
bkeepers
PRO
71
11k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Building an army of robots
kneath
306
46k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
540
Facilitating Awesome Meetings
lara
55
6.5k
Transcript
©KAKEHASHI inc. 爆速でプロダクトをリリースしようと思ったら マイクロフロントエンドを選んでいた 2025/09/21 Nokogiri@株式会社カケハシ フロントエンドカンファレンス東京
©KAKEHASHI inc. 自己紹介 2 Nokogiri(@nkgrnkgr) X | Bluesky | Github
株式会社カケハシ(ヘルステックスタートアップ) 生成AI研究開発チーム ソフトウェアエンジニア React / TypeScript / フロントエンド大好き! 二児の父👶 ポケモン対戦大好き!
©KAKEHASHI inc. マイクロフロントエンドとは 1 3
©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
©KAKEHASHI inc. 2. なぜ自分たちのプロダクトでマイクロフロントエンドを採用したか 5 独立して開発、デプロイ、テスト、保守できる アーキテクチャ・組織戦略 として解釈
©KAKEHASHI inc. なぜ自分たちのプロダクトで マイクロフロントエンドを採用したか 2 6
©KAKEHASHI inc. 2. なぜ自分たちのプロダクトでマイクロフロントエンドを採用したか • クラウド型電子薬歴システム • リリースして約10年 • 全国の薬局の約20%で利用
Musubiの紹介 7
©KAKEHASHI inc. 2. なぜ自分たちのプロダクトでマイクロフロントエンドを採用したか • 薬局の業務を支えている ◦ ミッションクリティカル ◦ 高い品質が求められる
• プロダクトの安定性が重要 ◦ 丁寧な検証 ◦ 月次の計画的なリリースサイクル Musubiの特徴 8 薬局業務システムとしての安定性が重要
©KAKEHASHI inc. 2. なぜ自分たちのプロダクトでマイクロフロントエンドを採用したか 9 そんなMusubiにも 生成AIを搭載した 新機能を作りたい!!
©KAKEHASHI inc. 2. なぜ自分たちのプロダクトでマイクロフロントエンドを採用したか • ユーザーの価値検証をすばやく繰り返したい • 技術的な不確実性が高い • 必要なスキルセットが既存と大きく異なる
→ 生成AI用の専門チームを組成 今回開発する生成AI機能は 10 小さく試して小さく失敗するトライを繰り返したい
©KAKEHASHI inc. 2. なぜ自分たちのプロダクトでマイクロフロントエンドを採用したか 11 安定性を重視するMusubiに 試行錯誤をしたい生成AI機能を 搭載するには?
©KAKEHASHI inc. 2. なぜ自分たちのプロダクトでマイクロフロントエンドを採用したか 12 両者を 独立して開発、デプロイ、テスト、保守できる アーキテクチャ・組織戦略が必要
©KAKEHASHI inc. 2. なぜ自分たちのプロダクトでマイクロフロントエンドを採用したか 13 選択した戦略・アーキテクチャ 戦略 内容 体制 Musubiと生成AI機能は開発チームを別にする
デリバリー リリースをMusubiと別にし、生成AI機能単体でリリース可能 UI Musubi非依存のUIとし開発し影響を受けにくくする 実装 Angularではなく、Reactに⻑けたメンバーがReactで開発する チーム・アーキテクチャの独立性を重視した結果
© KAKEHASHI Inc. All Rights Reserved. 小休止
©KAKEHASHI inc. 設計編:マイクロフロントエンドを支える技術 Angular×Reactの共存 / Musubi非依存UI / アプリ間通信 3 15
©KAKEHASHI inc. 3. 設計編:マイクロフロントエンドを支える技術 Vite でビルドした Reactアプリの JS と CSS
を 事前にホスティング Angular アプリにあらかじめ <div id="react-component" /> を用意し、JS、CSS ファイルをロード divタグに対してReactのJSがレンダリングするこ とでAngularとReactを共存させている AngularとReactアプリを共存させるアーキテクチャ 16
©KAKEHASHI inc. 3. 設計編:マイクロフロントエンドを支える技術 MusubiのUIの中に組み込むのではなく、”上” に配置して動作するアプリをめざす Musubi非依存UI 17
©KAKEHASHI inc. 3. 設計編:マイクロフロントエンドを支える技術 アプリケーション間通信 18 CustomEventを使った通信 • Angular,Reactに依存しないWeb標準 の技術
• アプリケーション固有のイベントを定義し て情報のやりとりができる • 直接的な依存関係がなくともやりとりが できるので疎結合にできる
©KAKEHASHI inc. 実践編:導入して見えた課題と工夫 マイクロフロントエンドで出てきた課題や、泥臭い対応などを紹介 4 19
©KAKEHASHI inc. CustomEventのキーとペイロードの組 み合わせを定義 Mapped Type を使って型安全に管理 定義内容をチーム間で合意 4. 実践編:導入して見えた課題と工夫
型定義で通信仕様を固める 20
©KAKEHASHI inc. 4. 実践編:導入して見えた課題と工夫 アプリ間のページ遷移の同期 21 Angular(メイン)とReact(サブ)のアプリの両方にページ概念がある 例)メインで患者Aのページを表示するときは、サブも患者Aの情報を出す 必要がある 基本的メインのページ遷移時にサブが追従するルールにしているが、
サブがメインにページ遷移を要求したい場合もある 両方がページ遷移を要求しあっても上手く制御できる機構が必要
©KAKEHASHI inc. 4. 実践編:導入して見えた課題と工夫 ”CustomEventを受領できたか”を確認したい 22 CustomEventは基本「投げっぱなし」。 しかし送信側が「受信側が受け付けたか」 を知りたい場面がある 送信側:
一意なid付きでEventを発火 受信側:イベントを受け取り、結果作成 受信側: 同じidを含む応答イベント(受領 通知)を musubi_ack_${id} で返す 送信側: ackを待ち受け、結果を受け取っ てUIやログに反映
©KAKEHASHI inc. 4. 実践編:導入して見えた課題と工夫 ”CustomEventを受領できたか”を確認したい 23 送信側
©KAKEHASHI inc. 4. 実践編:導入して見えた課題と工夫 ”CustomEventを受領できたか”を確認したい 24 受信側
©KAKEHASHI inc. 4. 実践編:導入して見えた課題と工夫 CustomEventのデバッグ 25 CustomEventのやり取りは、どんなイベントが発生したかを確認しづらい。 流れを可視化する Chrome拡張機能 を作成して、イベントの流れを見える化した。
©KAKEHASHI inc. 4. 実践編:導入して見えた課題と工夫 ローカル開発環境:読み込むJS/CSSを差し替え 26 AngularがReactのJSとCSSを動的に読み込む仕組みにしているため、 URLを切り替えることで任意の環境の組み合わせができる chrome.declarativeNetRequest というAPIを使い、Angularが
読み込むJS/CSSファイルのURLをランタイムで動的に差し替える Chrome拡張機能 を作成 例えば Angularはデプロイされた検証環境、ReactはLocal開発環境という組 み合わせで動かすことができる
©KAKEHASHI inc. 4. 実践編:導入して見えた課題と工夫 その他の泥臭い工夫 27 • 一部でネットワーク通信のような振る舞いが必要 • 生成AI機能チームが自らMusubi側のコードを修正し、PRを投げる
• グローバルCSSの影響の影響で意図せずレイアウトが崩れる • z-index の管理が煩雑
©KAKEHASHI inc. 4. 実践編:導入して見えた課題と工夫 さらに詳しく知りたい方へ 28 CustomEventやローカル開発環境の詳細は、以下のブログにも詳しく記載しています。 併せてご確認ください。 型とテストで守るカスタムイベント通信 -
実プロダクトでの実装事例 生成AIで内部ツール開発のジレンマを解決する
©KAKEHASHI inc. 総括 5 29
©KAKEHASHI inc. 5. 総括 おわりに 30 マイクロフロントエンドを選んだ結果: • 多くの苦労はあったものの、開発着手から4か月でリリースできた •
ユーザーからのフィードバックを受け、毎週リリースして素早く改善している • 1つのアプリケーションにAngularアプリとReactアプリの共存ができた • 異なるミッションを持ったチームが、独立して開発を継続できる体制が整った 伝えたいこと: • まずビジネスとして達成したいゴールを定め、そこからアーキテクチャ・戦略を選ぶことも大切 • ビジネスの要求に応えるために、このような選択肢もあることを知っておいてほしい
© KAKEHASHI Inc. All Rights Reserved. We Are Hiring!!! PM
EM エンジニア積極採用中