💧

なぜ aqua を使うのか

2021/12/22に公開

CLI ツールを YAML でバージョン管理できるツール aqua を開発しています。

https://aquaproj.github.io/

demo と katacoda シナリオもあります。

asciicast

https://www.katacoda.com/szksh/scenarios/aqua-quick-start

※ 執筆時点での最新バージョンは aqua v0.8.6 (Standard Registry v0.12.1) です。

これまでも aqua に関する記事は幾つか書いていますが、比較する際はなるべく aqua を推しすぎないように配慮をしながら書いたのもあり、
結局 aqua の良さが伝わりにくい面もあったかなと反省しています。

https://zenn.dev/shunsuke_suzuki/articles/what-is-aqua

https://zenn.dev/shunsuke_suzuki/articles/compare-aqua-with-asdf

https://zenn.dev/shunsuke_suzuki/articles/create-asdf-plugin-to-compare-aqua

なので、なぜ自分が aqua を使うのか端的に箇条書きしてみました。

なぜ aqua を使うのか

  • ツールのバージョンをチーム及び CI で揃えるため
  • プロジェクトに必要なツール及びバージョンをコードで宣言的に管理し、統一的な install 方法 (aqua i) を提供するため
  • CI でツールをインストールするシェルスクリプトや GitHub Actions を書きたくないため
  • Renovate で簡単に update するため
    • update するためのコードを極力書きたくないし、漏れなく update したい
  • private repository のツールを簡単にインストールするため

asdf では駄目なのか

https://asdf-vm.com/

  • asdf の plugin が提供されていないツールもある
  • asdf と比べて使うのが楽
    • plugin を install しなくて良い(asdf だと asdf install の前に態々 plugin をインストールする必要がある)
    • 設定ファイルが更新されたら自動で install される(asdf だとコマンドが失敗する)
  • aqua g によるツールの検索が便利
  • asdf と違って、 aqua を使っているプロジェクト外で aqua による管理を強制しない(他のツールと共存できる)
  • asdf と比べて新しいツールへの対応が楽
    • asdf の plugin 作るより aqua-registry に PR 投げるほうがずっと楽
  • 使うのが楽だし、他のツールと共存できるので、チームやプロジェクトに導入しやすい
  • Renovate による update が aqua だと楽
  • aqua は設定ファイルの分割もサポートしているので、 CI で特定のツールがアップデートされた場合のみ特定の build を実行するのが楽

Discussion