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

What's the recommended Flutter architecture

Avatar for AAkira AAkira
November 13, 2025

What's the recommended Flutter architecture

今新規で作るならFlutterの
アーキテクチャってなんなの?MVVMなの?
Findy Job Lunch Talk
【Flutter特集】Flutter開発の裏側 ~各社が向き合う課題と挑戦~

https://findy.connpass.com/event/370621/

Avatar for AAkira

AAkira

November 13, 2025
Tweet

More Decks by AAkira

Other Decks in Technology

Transcript

  1. % About me 2 https://aakira.app https://aakira.studio 🐕 ✈ 📷 🎾

    🤸 🚁🏠⊿ aakira.studio AAkira _a_akira M3, Inc. Akira Aratani
  2. % About me 3 https://aakira.app https://aakira.studio 🐕 ✈ 📷 🎾

    🤸 🚁🏠⊿ aakira.studio AAkira _a_akira M3, Inc. Akira Aratani まとめ 最近の取り組み WHITE JACKの例 デジスマの例 M3の紹介 Findy Job Lunch Talk
  3. % • 偉い人 < やっちゃいましょう! みんな < やっていき! • 組織階層がほぼない

    (役員 → チームリーダー → メンバー) • チームごとに技術選定可能 • バックエンド構成はSlackの #architect で相談 • モバイルはマルチデバイスチーム(アプリ開発横断チーム)と連携して相談 • 全員フルスタックエンジニア 7 エンジニアチームのカルチャー
  4. % 8

  5. % エムスリーのFlutterアプリ 10 Ask Doctors 医師が直接回答す 200万件以上の過 WHITE JACK 福利厚生サービス

    医師や看護師にセカンドオピニオンができる デジスマ診療 予約,問診,支払い等をサポートするサービス 患者,クリニック双方に大きなメリットがある
  6. % 13 予約・問診 通知/チャット チェックイン 診察 診察後すぐ帰宅 薬局に処方箋送付 オンライン診察 薬を自宅に配送

    4.6 App Store review(7.2万件) 8分 平均院内滞在時間 28分 まとめ 最近の取り組み WHITE JACKの例 デジスマの例 M3の紹介 Findy Job Lunch Talk
  7. % • 開発スタートは2020年12月, 初期リリースは4月を目標 • 最初期のエンジニアは3名 バックエンド1名, Web1名, アプリ1名 途中から1名(バックエンド)追加されてリリース時は4名

    • 決済, 認証, QRコード/クレカ読み取りなどのコア機能の技術検証 • アプリ開発者は一旦1人になりそう Android/iOSを出す必要があったため、ネイティブのみでは作らない判断 KMP(Kotlin Multiplatform)も検討 14 デジスマアプリの技術選定
  8. % • 2020年当時の流行り BLoC, Redux, GetX, Provider(Riverpod), MVVM • これといったデファクトスタンダードは存在していない時代

    • Riverpodを使ったMVVMを採用 17 デジスマアプリの設計 まとめ 最近の取り組み WHITE JACKの例 デジスマの例 M3の紹介 Findy Job Lunch Talk
  9. % • 開発スタートは2025年1月, 初期リリースは2月を目標 • 最初期のエンジニアは2名 バックエンド1名, アプリ1名 レ ビ

    ューなどのアドバイスに1名 • 不安材料は認証などの技術検証のみだったので、Flutterを選択 18 WHITE JACKアプリの技術選定
  10. % • 画面間での共通の処理を書きやすい - onResume/onPause - ログ - Error handling

    • 画面ごとに捉えるので、 1画面を前提とした モバイルアプリとの相性がいい • サンプルが多い 20 MVVMのメリデメ • 管理するプロパティが増えるごとに Stateが肥大化 - Loadingなどの状態管理が苦手 • 宣言的UIとの相性が良くない • Riverpodの思想とは異なる - StateNoti fi erがv2で非推奨に メリット デ メリット
  11. % • 宣言的UIとの相性が良い UI = f(state) • 最小コン ポ ーネントごとに

    状態を管理しやすい(再利用性UP) • Stateごとに単一管理になるので 処理が明確 21 Riverpodアーキテクチャのメリデメ • 画面ごとの処理は工夫が必要 • Ephemeral stateに使うと 冗長になりやすい • 1度だけの処理等が難しい • Unit testが若干複雑 • DIと状態管理の機能が混 ざ りがち メリット デ メリット ※ 設計とライブラリとしてのデメリットが混在しています
  12. % • Ephemeral(local) stateを fl utter_hooksで管理 • App(global) stateをriverpodで管理 •

    WHITE JACKアプリでは fl utter_hooks + riverpod を採用 23 新規アプリで採用した設計
  13. % • 宣言的UIとの相性が良い UI = f(state) • 最小コン ポ ーネントごとに

    状態を管理しやすい(再利用性UP) • State呼び出しのロジックを 共通化できる 24 hooks + riverpodのメリデメ • 画面ごとの処理は工夫が必要 • (現状)ネットにあまり情報がない • hooksにロジックが入ると テストが難しい メリット デ メリット
  14. % • Riverpod v3からmutationなどが追加され、よりTanstack Query Likeに • Ephemeral stateにriverpodを使うのはToo muchだったので

    hooksにしていたが、riverpodに統一し直すのはアリ • 画面間の共通処理の最適解がまだ思い浮かんでいない 27 改善点
  15. % • Riverpod v3からmutationなどが追加され、よりTanstack Query Likeに • Ephemeral stateにriverpodを使うのはToo muchだったので

    hooksにしていたが、riverpodに統一し直すのはアリ • 画面間の共通処理の最適解がまだ思い浮かんでいない 28 改善点 まとめ 最近の取り組み WHITE JACKの例 デジスマの例 M3の紹介 Findy Job Lunch Talk
  16. % • E2Eテスト(Maestro)をフルで導入 → 少人数チームでもQAコストを大幅削減 • Unit test & E2E

    test & AI code review → いつでもデグレに気がつける状態に • Figma MCP & AI coding → Figmaのコン ポ ーネント定義を、 コード上のコン ポ ーネント定義と合わせる 29 最近の取り組み
  17. % • E2Eテスト(Maestro)をフルで導入 → 少人数チームでもQAコストを大幅削減 • Unit test & E2E

    test & AI code review → いつでもデグレに気がつける状態に • Figma MCP & AI coding → Figmaのコン ポ ーネント定義を、 コード上のコン ポ ーネント定義と合わせる 30 最近の取り組み まとめ 最近の取り組み WHITE JACKの例 デジスマの例 M3の紹介 Findy Job Lunch Talk
  18. % • 2025年から新規で作るなら、(個人的には) hooks + riverpod • 2026年春くらい? = Riverpod

    v3が成熟してくなら 全部Riverpodに寄せるのは(個人的には)アリかも • MVVMも(個人的には) 悪くはないと思っている ※ Riverpodを使って実現するなら注意が必要 • 結局はUDF(Unidirectional Data Flow:単方向データフロー)に なってさえいればいい → Riverpodを使わずに、Providerだけでも全然アリ 31 まとめ
  19. % • 2025年から新規で作るなら、(個人的には) hooks + riverpod • 2026年春くらい? = Riverpod

    v3が成熟してくなら 全部Riverpodに寄せるのは(個人的には)アリかも • MVVMも(個人的には) 悪くはないと思っている ※ Riverpodを使って実現するなら注意が必要 • 結局はUDF(Unidirectional Data Flow:単方向データフロー)に なってさえいればいい → Riverpodを使わずに、Providerだけでも全然アリ 32 まとめ 設計は宗教 設計はプロダクトの状況、環境によって 最適解が変わるもの。 MVVMだから絶対ダメなどはない。 理解した