7月10日、JVM環境向けの新世代ビルドツール「Mill」のバージョン1.0.0が公開され、大きな話題となっている。Millは高速・高機能なビルド体験を提供するのが特徴で、その特徴と活用方法についてその概要を紹介する。
Millとは何か
Millは従来のMavenやGradleに代わるビルドツールであり、積極的なキャッシュと並列実行によって同一プロジェクトを既存ツールに比べ3〜6倍高速にビルドできる。プラグインに頼らずとも開発に必要な機能を標準搭載し、IDEからビルド構成を容易に探索できる点が特長だ。オブジェクト指向のビルド定義により学習コストも低減している。
主な特徴(抜粋)
- パフォーマンス ─ タスク・テストのキャッシュ/並列化、インクリメンタルなJar組み立て、選択的テスト実行によりローカル開発とCIを高速化
- 組み込みタスク ─ コンパイル/テストだけでなく、JVMバージョン管理、Lint、アセンブリ生成、GraalVMネイティブバイナリ、インストーラ作成などを標準サポート
- メンテナンス性 ─ Scalaで型安全に記述するモジュールツリーとタスクグラフにより設定エラーを早期検出し、IntelliJやVS Codeがビルドを正確に理解
- 柔軟性 ─ 既存JVMライブラリの取り込みやサードパーティプラグイン、独自プラグイン開発まで幅広く対応
- スケーラビリティ ─ 数百モジュール規模のモノレポや多言語ビルドを高パフォーマンスで処理
はじめての導入・移行ガイド
既存のMaven/Gradle/sbtプロジェクトをMillへ移行する際は、公式ドキュメントが用意した導入ページを参照するとよい。
さらに、言語別の入門ガイドも提供されている。
豊富なツール・フレームワーク統合
Millは主要JVMワークフローを標準装備しているため、サードパーティプラグインに頼らずに多くの開発タスクを賄える。以下は公式ドキュメントで例示される統合の一部だ。
分類 | 代表的なサポート |
---|---|
言語 | Java / Kotlin / Scala |
依存関係の管理 | Ivy 依存追加、BOM管理、非管理Jar、JVMバージョン |
テスティング | JUnit4/5, TestNG, ScalaTest, Specs2, Munit ほか |
パッケージング | Assembly Jar, GraalVM Native Image, JLink, JPackage, Docker |
Webフレームワーク | Spring Boot, Micronaut, Ktor, Http4s など |
MillはMaven・Gradle・Bazel・sbtの長所を学びつつ弱点を補完し、JVM開発を高速かつ扱いやすくすることを目指している。大規模モノレポから小規模サービスまで、ビルド時間短縮と構成の簡潔化を狙う開発者にとって有力な選択肢となるだろう。
詳細はMill: A Better Build Tool for Java, Scala, & Kotlin :: The Mill Build Toolを参照していただきたい。