Micro FrontendsについてAWS Dev Day Tokyo 2018で登壇しました

こんにちは。エンジニアの澤井( Nobuhiko Sawai, twitter) です。
今回、AWS Dev Day Tokyo 2018 にて登壇させていただきました。

AWS Dev Day Tokyo 2018について

AWS Dev Day Tokyo 2018 は、2018/10/29(月)から11/2(金)まで1週間にわたり開催されたイベントで、アプリケーションデベロッパーのために世界主要都市で開催される、テクノロジーカンファレンスです。クラウド上でのアプリ開発における最新のテクノロジーとトレンドを、40 本のテクニカルセッション、10 コース以上のテクニカルハンズオンや、そのほかの様々な企画を通じてキャッチアップできるラーニングイベントです。

今回は最終日の11/2(金)に行われたMicroservicesに関するテクニカルセッションの1コマとして “Micro Frontends” をテーマに登壇させて頂きました。

登壇について

発表については当日の資料を公開しているので以下から御覧ください。

Micro Frontendsによって解決しようとしている課題、実際にチャレンジしてみて直面した課題とその解決方法についてまとめています。

発表中のtwitterの様子は以下にまとまっています。

Ask the Speakerブースにて

登壇後には、日本Node.jsユーザグループ代表古川さんの以下のツイートに対して、弊社のqsona ( qsona)が反応したところ、Ask the Speakerブースまで来て頂きました。

ブースでは上記のStoreの話をしつつMicro Frontendsに関して色々な話ができた(多くは一方的に聞いていた)ので少し紹介したいと思います 。

まずStoreについてですが、これは94枚目のスライドで統合レイヤー側にしかStoreを書いていないせいでわかりにくくなっていますが、統合レイヤー側にReduxみたいな概念を導入してそこで中央集権的にStoreを管理するということではありません。各Micro Frontendsがそれぞれ状態を持ちつつ、一方で認証やユーザー情報など、どうしても共有情報として取り扱いたい情報に関してのみ、イベントを送受信することで協調しあうのが良いと思っていて、その際のイベントのフローについてはFluxの類似パターンとして実現できるのではないかという話でした。

上記に関連して中央集権的な状態管理のパターンは今後どうなってくのかという話になり、最近発表されたReactのHooks APIもある程度Micro Frontends的な流れを意識したAPIなのではないかという話をして頂きました。Hooks APIを使うとReduxなどの中央集権的な状態管理とStatelessなコンポーネントという関係ではなく、(どこに書くかという問題はありつつも)切り出された状態変更ロジックとそれを内包するコンポーネントという関係に変わっていくので、コンポーネントはstateに応じた見た目だけを担当するものから、必要なロジックを持つものへと変わっていくはずで、そこはまさにMicro Frontends的なサービスドメインごとのコンポーネントという潮流への意識があるのではないかという話でした。

最後にMicro Frontendsをどこまで取り入れるかについて話しました。結局アーキテクチャは組織に従う(コンウェイの法則)ので、Micro Frontendsを導入するかどうかは組織にかなり依存するであろうという話をして頂きました。たとえば、チームもサービスも小さく分かれていて、かつ各チームが独立した別のサービスを提供しているような場合、分割するべきコンポーネントが数個しかないとするとほとんど導入するメリットは無いのではないかという話をして頂きました。これは本当にその通りだと感じていて、サービスもユーザーベースも分かれている場合、Micro Frontendsを導入するメリットが得られないケースは往々にしてあると思います。(弊社で開催したMicroservices Meetup Vol.7でもそうした話がディスカッションの中で登場しました)一方で、FiNCだと発表で話したように共通の画面に表示したいが、チームが分かれているパターンがあったり、サーバーサイドでもReactを書くエンジニアがいたりという背景があるので、Micro Frontendsという設計は組織的にマッチしているのではないかと感じています。

その他にもいろいろな話で盛り上がりました。古川さんありがとうございました。今後も実践を通じてより知見をためて行ければと思っています。

エンジニア募集中!

最後になりましたが、株式会社FiNC Technologiesではエンジニアを募集しています。フロントエンドの方はもちろん、Micro Frontendsにとりあえず興味あるという方も是非お話したいので、ご応募 or 気軽に僕にDMいただければと思います。