【むーん】

Moon(モノレポツール) とは?

公開:
💡 モノレポの「どのタスクを・どの順番で・どこまで速く」を解くエンジン
📌 このページのポイント
Moon:モノレポのタスク並列実行 monorepo/ frontend/ backend/ shared-lib/ 型チェック(並列) ビルド(依存後) テスト(並列) Moon(リモートキャッシュ付き)
Moonはモノレポのタスク依存グラフを解析して並列実行する
ひよこ ひよこ
ペンギン先生、Moonってどんなツールなの?モノレポって単語が出てくるけど。
ペンギン先生 ペンギン先生
モノレポは複数のプロジェクト(フロントエンド・バックエンド・ライブラリなど)を1つのリポジトリにまとめる手法だよ。Moonはそのモノレポで「どのタスクを実行するか」「どの順番で実行するか」を管理してくれるツールなんだ。
ひよこ ひよこ
NxTurborepoと何が違うの?
ペンギン先生 ペンギン先生
一番の違いはRustで書かれていることだよ。Node.jsベースのNxTurborepoより処理が速いことが多いんだ。あとMoonはJavaScript以外のプロジェクト(Rustのcrateや、Goのモジュールなど)にも対応していて、多言語モノレポに強いんだよ。
ひよこ ひよこ
タスク依存グラフの解析って何をするの?
ペンギン先生 ペンギン先生
たとえば「テストを実行する前にビルドが必要」「ビルドの前に型チェックが必要」みたいな依存関係を定義しておくと、Moonが自動でグラフを作って、依存がないタスクは並列で走らせてくれるんだよ。手動でタスク順序を管理しなくていいんだ。
ひよこ ひよこ
リモートキャッシュって何を保存してるの?
ペンギン先生 ペンギン先生
ビルド成果物やテスト結果を保存しておいて、入力ファイルが変わっていなければ実行を省略できるんだよ。チームで共有すれば「自分のマシンでビルド済みのコードはCIでもキャッシュから取得」できて、CIが格段に速くなるんだね。
ひよこ ひよこ
設定はどこに書くの?
ペンギン先生 ペンギン先生
ワークスペースのルートに `.moon/workspace.yml` を置いて、各プロジェクトの直下に `moon.yml` でタスクを定義するんだよ。タスクには入力ファイルのパターン・出力ディレクトリ・依存タスクが書けるんだ。nx.jsonやturbo.jsonと似た感覚で使えるよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Moon」って出てきたら「Rustで速いモノレポのタスク実行ツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Moon」 = 月
💬 ロゴやコンセプトに宇宙・天体のモチーフを使うツールが多いOSSの命名文化からきているよ。NxやTurborepoと同じモノレポ管理の「銀河系」の仲間として月を選んだんだよ。
← 用語集にもどる