Micro-Frontendの概念とトレードオフ
チームがmicro-frontendsを採用する理由と、runtime方式とbuild-time方式の分割アプローチを理解します。
「Micro-Frontendの概念とトレードオフ」はCoddyKit上の無料React Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReact Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 React Academyコースには全4レッスンが含まれています。
マイクロフロントエンドとは
マイクロフロントエンドは、マイクロサービスの考え方をUI層に拡張したものです。1つのWebアプリケーションを、別々のチームがそれぞれ所有、開発、デプロイする、独立したフロントエンドの単位に分割します。
統合戦略
主な統合戦略は3つあります。ビルド時(npmパッケージ)、サーバーサイド(エッジでの合成)、実行時(Module Federation、iframe、Web Components)です。
ビルド時の統合
共有コンポーネントをnpmパッケージとして公開します。シンプルですが、変更のたびにすべての利用側を再リリース、再デプロイする必要があり、真に独立したデプロイとはいえません。
// Team A publishes:
npm publish @company/design-system
// Team B installs:
npm install @company/design-system
import { Button } from '@company/design-system';
// Deployed together — not independentModule Federationによる実行時の統合
Webpack 5のModule Federationを使うと、1つのアプリ(ホスト)が別のアプリ(リモート)から実行時にコンポーネントを読み込めます。これにより、真に独立したデプロイが可能になります。
iframeによる統合
最大限の分離を実現するには、マイクロフロントエンドをiframeに埋め込みます。利点はCSS/JSの競合がゼロになることです。欠点は、スクロール、フォーカス、サイズ調整などのUXが悪いこと、状態の共有が難しいこと、SEOに不向きなことです。
Web Components
各マイクロフロントエンドをカスタム要素でラップします。どのフレームワークでも動作し、ネイティブな分離を提供しますが、コンテキスト共有などのReact固有の機能は利用できません。
// Remote team builds:
customElements.define('product-detail', ProductDetailElement);
// Host team embeds:
<product-detail product-id="123" />トレードオフ:利点
独立したデプロイ(他チームに影響を与えずに、1チームのUIだけをデプロイできます)、チームの自律性(各チームが独自の技術スタックと依存関係を選べます)、スケーラビリティ(コードの競合なしにチームが並行して作業できます)があります。
トレードオフ:コスト
運用の複雑さ(リポジトリ、CIパイプライン、デプロイの増加)、バンドルの重複(共有しないとReactが複数回読み込まれます)、パフォーマンスへのオーバーヘッド、境界をまたぐデバッグの難しさが生じます。
マイクロフロントエンドを選ぶ場面
マイクロフロントエンドは、同じプロダクトに複数の大規模チームが取り組む場合、セクションごとに異なる技術スタックが必要な場合、または各セクションを完全に独立してデプロイする必要がある場合に、特に効果を発揮します。
マイクロフロントエンドを選ばない場面
小規模なチーム(オーバーヘッドが利点を上回ります)、単純なアプリケーション、またはフロントエンド全体を完全に管理できる場合は避けてください。その場合は、Nx/Turborepoを使ったモノレポで通常は十分です。
共有デザインシステム
統合戦略にかかわらず、共有デザインシステム(パッケージとして公開するか、Module Federation経由で公開します)によって、マイクロフロントエンド間の見た目の一貫性を保てます。
クイックチェック
実行時にマイクロフロントエンドを真に独立してデプロイできる統合方式はどれですか?
まとめ
マイクロフロントエンドは、チームの自律性と独立したデプロイを実現するためにUIを分割します。統合方法には、npmパッケージ(シンプルですが独立していません)からModule Federation(実行時に統合され、真に独立しています)までがあります。運用コストを考慮してください。マイクロフロントエンドは大規模で複数チームが関わるプロダクトに適していますが、小規模なプロジェクトには複雑さが加わります。
よくある質問
「Micro-Frontendの概念とトレードオフ」レッスンは無料ですか?
はい。「Micro-Frontendの概念とトレードオフ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、React Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 React Academyコースには全4レッスンが含まれています。
「Micro-Frontendの概念とトレードオフ」で何を学びますか?
チームがmicro-frontendsを採用する理由と、runtime方式とbuild-time方式の分割アプローチを理解します。 ブラウザで直接実行するハンズオンコードでReact Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
React Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのReact Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Micro-Frontendの概念とトレードオフ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このReact Academyレッスンでコードを書いて実行できますか?
はい。すべてのReact Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Micro-Frontendの概念とトレードオフ
- Webpack 5によるModule Federation
- MFE間の共有StateとRouting
- MFEの独立デプロイとCI Pipeline