マイクロフロントエンドとは何か?歴史と普及の背景、そしてReact入門ガイド

はじめに

いまWebアプリ開発は「分割の時代」。
昔みたいに、ひとつのでっかいシステムをみんなで抱えてウンウン言うやり方、限界きてます。

そこで登場したのが、
マイクロフロントエンドっちゅう新しい戦い方や。

要するに、
「フロントエンドも機能ごとにちょん切って、別チームでガンガン回していこうぜ!」
って話。

この記事では、

  • マイクロフロントエンドとは何か

  • なぜ生まれ、広がったのか

  • そしてReactでの超簡単な始め方
    までを、十円玉流でわかりやすくまとめてくで!

初めて聞く人でもダイジョーブや!
今日からReact、触りたくなるかもしれへんで??


マイクロフロントエンドとは?

定義

マイクロフロントエンド、それは──
「フロントエンド機能ごとに、アプリを小分けにして開発する」こと。

たとえば、

  • ログイン

  • 商品一覧

  • カート

  • マイページ

みたいな単位でアプリそのものを分けるイメージやな。

見た目はひとつのサイトやけど、
裏側ではチームごとに分業してサクサク動かしてる、って感じや。

バックエンドとの違い

「マイクロサービス」っちゅう言葉もあるけど、あれは**サーバー(裏側)**の話。
マイクロフロントエンドは、**画面(表側)**の話や。

つまり、
表も裏も、小さくまとめて最速で動こうぜ!!
って流れやな!


歴史と普及の流れ

誕生の背景

2016年ごろから、SPA(Single Page Application)が流行しまくってた。
AngularとかReactで、全部JavaScriptでゴリゴリ作るスタイルな。

最初は速かった。めちゃくちゃ楽しかった。
でもだんだん、

  • 全部ビルドにクソ時間かかる

  • ちょっとしたバグ修正すら超リスク

  • チームがでかくなってカオス

こんな状態になってもうたんや。

「これ、アカンわ……機能ごとに分けるべきやろ……」
ってなって、マイクロフロントエンド爆誕!

大企業による採用例

最初に本気で導入したのは、

  • Amazon

  • Spotify

  • Zalando(ドイツのECモンスター)

こういう巨大サービスたちやった。
もうこの規模やと「分けな死ぬ」ってレベルやったんやな。

技術的ブレイクスルー

ただ、最初は「うまく組み合わせる方法」があんまりなかった。

そこで登場したんが、
Webpack 5のModule Federation

これによって、
別アプリ同士が、リアルタイムで部品を貸し借りできるようになった!

これが革命やった。
「無理なく自然にマイクロフロントエンド」ができる時代になったんやで。


なぜマイクロフロントエンドが必要とされたのか?

チームごとの独立性

機能ごとに完全に別チームで開発できる。
「Aチームがバグ出したからBチームのリリース止まった!」みたいな地獄がなくなるんや。

技術選択の自由度

チームごとにReactでもVueでも好きなもん使える。
(ただ実際は、全体で足並み揃えたほうがええ場合もあるけどなw)

リリースサイクルの高速化

機能ごとに単体リリースできる。
最悪、片方だけバグっても他は無事、みたいな運用が可能や!


マイクロフロントエンドを支える主要技術

  • Web Components:ブラウザ標準のコンポーネント仕組み

  • iFrameアーキテクチャ:古き良き分離技術。今でも使う場面あるで

  • Module Federation:Webpack5以降の最強兵器

  • single-spa:複数SPAをまとめるためのライブラリ

このへんが主力や。
特にModule Federationはマジで革命やから、React触るなら絶対知っとこな!


なぜReactが人気なのか?

コンポーネント指向と親和性

Reactはもともと「UIを小さな部品にわけて作る」思想がめちゃ強い。
これ、マイクロフロントエンドとバッチリかみ合うんや。

豊富なライブラリとコミュニティ

何か詰まっても、
ネット探したら絶対誰かが記事書いとる。
心強すぎるやろw

柔軟な設計思想

小規模から大規模まで、きれいにスケールできる。
Reactなら、ちっこいアプリからスタートして、後で育てるのも余裕や。


【超入門】Reactではじめるマイクロフロントエンド

まず環境をつくろう

まずはViteで爆速環境を作る。

bash
npm create vite@latest
# テンプレートは「React」を選ぶ
cd プロジェクト名
npm install
npm run dev

たったこれだけ!
(もしnpmなかったら、Node.jsを入れといてな!)

2つの小さなReactアプリをつくる

例)header-appとmain-appを用意しよう。

まずheader-app側。

jsx
// src/Header.jsx
export default function Header() {
return (
<header style={{ background: "#333", color: "#fff", padding: "10px" }}>
<h1>十円玉ドットコム Headerやで</h1>
</header>
);
}

そしてmain-app側。

jsx
// src/App.jsx
import Header from 'header-app/Header'; // Module Federationで呼び出すイメージ
function App() {
return (
<div>
<Header />
<main style={{ padding:20px” }}>
<p>ここがメインコンテンツや!!</p>
</main>
</div>
);
}

export default App;

本物のマイクロフロントエンドでは、
Webpack Module Federationでこの2アプリをつないでいくけど、
最初はこうやって部品を意識して作る練習からスタートするのがベストや!


参考リンクまとめ(さらに詳しく知りたい人向け)


実際に運用するには?注意点まとめ

  • チーム間で「仕様書」共有は超大事

  • 依存ライブラリのバージョンは合わせた方が無難

  • モノリシック(全部まとめる)のメリットも忘れずにな!

「なんでも分割すればいい」って話ちゃうで。
バランス感覚が大事や。


まとめ

マイクロフロントエンドは、
でかすぎるモノリシックアプリに悩まされてきたエンジニアたちの、
新たなる解法や!

最初からガチガチに難しいことせんでも、
小さなReactアプリをちょっと組み合わせるだけでも十分スタートできる。

今からちょっと触ってみよか!
未来の大規模開発に向けて、
あんたのReact力を育てていこうやないか!!!

コメント

タイトルとURLをコピーしました
~