Flutterで中〜大規模アプリを開発していると、機能モジュールやライブラリの再利用、複数人での効率的なコラボレーションなどを考える必要が出てきます。
そんなときに活躍するのが モノレポ(monorepo)管理ツール —— それが Melos です。
この記事では、Flutterエンジニア向けに Melos の導入方法と活用例をわかりやすく解説します。
Melosとは?
Melos(メロス)は、複数の Dart/Flutter パッケージをまとめて管理・運用できるツールです。
特に以下のような課題を抱えているプロジェクトに最適です:
-
path: 依存の管理が面倒
-
パッケージごとに flutter pub get や test を毎回手動実行している
-
各モジュールのバージョン管理がバラバラ
-
自動CIやリリース作業が複雑
Melosを使えば、これらを統一的かつ効率的に管理できます。
インストール方法
まず、Dart SDK(Flutterに含まれる)を導入済みであることを確認してください。
dart pub global activate melos
その後、PATH に以下を追加:
export PATH="$PATH":"$HOME/.pub-cache/bin"
バージョン確認:
melos --version
モノレポ構成の例
以下のように、packages/ フォルダ配下に複数の Dart/Flutter パッケージを配置します。
my_project/
├── melos.yaml
├── packages/
│ ├── core/
│ ├── ui_components/
│ ├── feature_home/
│ └── feature_profile/
各パッケージは pubspec.yaml を持つ通常の Dart/Flutter package です。
melos.yaml の記述例
name: my_flutter_app
packages:
- packages/**
scripts:
analyze: dart analyze .
format: dart format .
test: |
melos exec --dir-exists="test" -- \
flutter test
ポイント:
-
packages/** でサブパッケージを自動検出
-
scripts で複数の共通コマンドを定義可能(melos run test など)
よく使うMelosコマンド
コマンド | 説明 |
---|---|
melos bootstrap |
path: 依存を自動でリンク& pub get
|
melos run <script> |
melos.yaml に定義したスクリプトを実行 |
melos exec <cmd> |
各パッケージで同じコマンドを実行 |
melos list |
管理されている全パッケージを表示 |
melos clean |
.dart_tool などのキャッシュを一括削除 |
実践例:すべてのパッケージでテストを実行
scripts:
test: |
melos exec --dir-exists="test" -- \
flutter test
melos run test
→ 各モジュールに test/ ディレクトリがあれば、flutter test を実行。
パッケージ間の依存リンク
たとえば feature_home パッケージが core パッケージに依存している場合:
dependencies:
core:
path: ../core
これを明示しておくだけで、melos bootstrap により自動的にリンクされます。
flutter pub get を一つずつ叩く必要はありません!
バージョン管理・自動リリース
Melos には melos version や melos publish もあり、Git 連携や pub.dev への自動公開が可能です。
melos version
melos publish
各パッケージの CHANGELOG.md をもとに、自動的にバージョンアップ&タグ作成ができます(Lerna風)。
Melosが活躍するシーン
利用シーン | Melosのメリット |
---|---|
大規模アプリの機能分割 | 各機能を独立したパッケージとして分離管理 |
UIコンポーネントライブラリ | 再利用可能なWidget群を1パッケージずつ管理&公開 |
複数プラットフォームの共通ロジック |
shared , network , auth などの共通ロジックを統合 |
自社Flutter SDKの構築 | モジュールごとに開発&バージョン管理しやすい |
まとめ
MelosはFlutterエコシステムに最適化された、モノレポ管理のための強力なツールです。
ローカル依存の自動リンク
複数パッケージへのコマンド一括実行
スクリプトによるCI/CD効率化
バージョン&リリース管理の自動化
Flutterプロジェクトをモジュール化・整理したいなら、今すぐMelosを導入する価値があります!