0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Flutter開発でMelosを導入しよう:Dartモノレポ管理のベストプラクティス

Posted at

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を導入する価値があります!

リンク集

Melos公式ドキュメント

GitHubリポジトリ

Flutter公式モノレポ管理ガイド

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?