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

実践!Micro Frontends!~ kintone の共通ヘッダーは独立したデプロイの夢...

Atsusuke
January 20, 2024

実践!Micro Frontends!~ kintone の共通ヘッダーは独立したデプロイの夢を見るか? ~

BuriKaigi2024 での発表資料です。異なるフレームワークが共存する画面を Micro Frontends のアプローチを用いて部分刷新した事例についてご紹介します

Outline/Structure of the Talk
1. Micro Frontends の概要
2. kintone の全画面のヘッダーを刷新するときに生じた問題
3. 選択した結合方法とその理由
4. 得られた効果
5. 刷新した共通ヘッダーの今

Learning Outcome
* 大規模なソフトウェアの分割方法・組織アプローチ
* Client Side Composition のパターンとそれぞれのメリデメ

Target Audience
* 大規模なソフトウェアの分割方法・組織アプローチに興味のある方
* Micro Frontends の実践事例を知りたい方

Atsusuke

January 20, 2024
Tweet

More Decks by Atsusuke

Other Decks in Programming

Transcript

  1. 分割した機能を結合するパターン Client Side Composition iframe による結合 JavaScript によるランタイム結合 Web Components

    によるランタイム結合 Server Side Composition Build Time Composition Edge Side Composition
  2. 参考資料 Micro Frontends - extending the microservice idea to frontend development

    https://micro-frontends.org/ Micro Frontends https://martinfowler.com/articles/micro-frontends.html Micro Frontends In Action https://livebook.manning.com/book/micro-frontends-in-action
  3. 提供先の画面に合わせてリリース フローを選択する必要が出てきた Closure Tools では Closure Compiler という独自のコンパイラ を用いて配布用の JavaScript

    を生 成するため、npm で配布されたパ ッケージとビルド時に結合するこ とが困難 npm パッケージとして配布する場 合、デプロイがパッケージを取り 込む側のタイミングに依存する 2段階目に差し掛かったタイミングで問題発生! npm package として配布
  4. Web Components を採用しなかった理由 共通ヘッダーを Web Componens 化 したときに、Shadow DOM の外側に

    ある要素を参照しているロジックが動 かなくなる。style も適用されない。 (例: body 直下にマウントされる Dialog コンポーネント) コンポーネントのカプセル化は魅力的 だが、既存実装を変更してまで実現し たいものではない ❌