Flutterでのアプリ開発においては、状態管理、ディレクトリ構成、ウィジェット等の構成が、プロダクトや組織の特性に合わせてカスタマイズされています。 これらを最適化していくことは保守性や可読性を高め、アプリの品質にも大きく影響します。
本イベントは、Flutterアプリのアーキテクチャ設計に焦点を当て、2024年10月8日に開催。各サービスでの具体的な実装例とあわせて、そのプロジェクトにおける課題と解決策、得られた知見について共有いただきました。
- 「4年間変わらなかった YOUTRUSTのアーキテクチャ」(ashdikさん)
- 「メルカリ ハロ アプリの技術スタックの紹介」(atsumoさん)
- 「スタサプ ForSCHOOLアプリのシンプルな設計」(koji-1009さん)
- 「Riverpod 移行を支えた LivMap のアーキテクチャ」(ちゅーやん(中條 剛)さん)
「4年間変わらなかった YOUTRUSTのアーキテクチャ」(ashdikさん)
YOUTRUSTのアプリ開発チーム リードエンジニア ashdikさんによる、3年前の発表内容をアップデートした、アーキテクチャの解説。
「開発効率と保守性を両立させる」という観点から、ディレクトリ構成とアーキテクチャについて紹介いただきました。 特にFeature-first構成については、開発への集中度、柔軟性、責任範囲の明確化という3つの利点を挙げ、実際のディレクトリ構成例を交えてお話しいただきました。
- Feature-first
- ディレクトリ構成
- アーキテクチャ
- Facade
- ViewModel
「メルカリ ハロ アプリの技術スタックの紹介」(atsumoさん)
今年の3月にリリースされた、メルカリ ハロ アプリの技術スタックに関する発表。
「デザインとコードの一貫性を保ちながら、効率的な開発を実現する」という方針のもと、モノレポによるコード管理、GraphQLを中心とした状態管理、そして独自デザインシステムという3つの柱について紹介されました。
特にデザインシステムについては、Figmaのコンポーネントプロパティを活用しWidgetbookでカタログ化することで、開発効率を向上させた事例をお話しいただきました。
- GraphQL
- モノレポ
- FlutterBloc/Cubits
- デザインシステム
- UIカタログ
- Widgetbook
「スタサプ ForSCHOOLアプリのシンプルな設計」(koji-1009さん)
Android・iOSのネイティブアプリとしてリリースされた『スタディサプリ for SCHOOL』アプリを、Flutterでリプレースした事例の発表。
シンプルな設計、「書きやすく、レビューしやすい」構造、「Flutter + Riverpodを信じる」という方針―――リプレース成功の鍵として3つの要因が挙げられました。特に"シンプルな設計"を採用し、条件分岐を考慮するべき箇所を削減できた点について、具体的に解説いただきました。
- Riverpod
- シンプルな設計
- 単方向データフロー
- アプリケーション状態とローカル状態の分離
「Riverpod 移行を支えた LivMap のアーキテクチャ」(ちゅーやん(中條 剛)さん)
LivMapアプリで、Riverpodへの移行を円滑に進めるため設計されたアーキテクチャについての発表。
アーキテクチャ設計の際に「課題から考えた」というちゅーやんさん―――プロジェクト固有の課題を考慮し、それらに合わせた設計を重要視されたとのことです。 また、状態管理パッケージへの依存を最小限に抑える構造が採用され、プロジェクトの成長に応じてアーキテクチャを変化させる重要性についても触れられました。
- Riverpod
- 状態管理パッケージ
- 依存関係の整理
- プロジェクト特有の課題