課題
後で書くかも?
Added in version 2025.8.10.
個人的なaqua利用時のメモ。
asdfやmiseあたりと同じく、ツールチェイン類を「横断的に保管して」「プロジェクト単位で細かくバージョン調整できる」のが便利。 それに加えて、「レジストリにないCLIの管理」も比較的容易なのがありがたかった。 [1] [2]
Renovateのカスタムマネージャーも提供してくれているので、トータルでの導入も容易と考えている。
なお、使ってみた感じでは「CLIツール自体の管理」に役割を限定させている。 そのため、「uv自体の管理」はするが「uvの内部とのシームレスな連携」は管轄外となっている。 Pythonツールチェインはuvがかなり支配的になっているため困ることはあまりないのだが、 Node系だとどうするかが悩みどころとなる(特にpnpmを使用しているケース)。 [3]
とはいえ、条件が成立する範囲においてはカバー可能な領域はかなり広いので、次のような使いわけをしておくと良さそうではある。
プロジェクト内の採用言語を前提とするツール群は、各パッケージマネージャーで管理する。
Lefthookやuvのような「プロジェクトの進行に必要なもの」は、プロジェクトのaqua.yamlで管理する。
GitHub CLIやghqのような「プロジェクトを横断的に管理するもの」や、NeoVimのような「プロジェクトの直接的に関わらないもの」は、 グローバルなaqua.yamlで管理する。
Git自体のようなCLIとはいえそれ自体で完結しないものは、OSのパッケージマネージャーで管理する。
ローカルマシンへのインストールは、基本的にドキュメントに従うだけでよい。 OSに合わせたインストール手続きを取れば、割とあっさり使用可能になる。
https://aquaproj.github.io/docs/install
特にLinux環境下の場合、環境変数の調整が必要になるためログインシェル向けの調整は忘れないでおきたい。
ユーザーのホームディレクトリに aqua.yaml があればそれを参照してくれるようにはなっている。
ただし、自分の場合は dotfiles を利用して、こちらをグローバル設定として管理している。
メリットは「カスタムレジストリ周りの管理も比較的楽」「 git pull からの aqua i で最新化がすぐ可能」といったあたり。
ここから先は ローカルマシンへのインストール が終わっていることが前提のため、普通に aqua コマンドを使っていく形となる。
プロジェクトは、GitHubリポジトリ上に「GitHub Actionsによるワークフロー実行」「Renovateによる適宜更新」の導入を前提としている。
aqua g -i などを使って普通に編集する。
オフィシャルのレジストリにないツールをどうしても使いたい場合は、ちょっと頑張ってカスタムレジストリを用意しておくと良い。
オフィシャルでカスタムマネージャーを提供してくているので、有効化してしまったほうが良い。 これを導入すると「aqua.yaml内で管理しているツールのバージョン」はRenovateが適宜追いかけてくれるようになる。
ただし、ツール数が増えれば増えるほどPR数が増えてくるので、可能な限り automerge は全体で true にしておくことが望ましい。
なお、 "automerge": true にするといくつかの条件下で不都合が起こるので、適宜 packageRules で無効化してやるとよい。
自分の場合だと、Pythonライブラリの開発をすることが多いので、サポート下限値で設定している .python-version [4] はモニタリング自体をさせていない。
大雑把に書くと、 actions/checkout のuses直後に aquaproj/aqua-installer をusesするだけ。
下記が例となる。
jobs:
a-job:
steps:
- uses: actions/checkout@v4
- uses: aquaproj/aqua-installer@d1fe50798dbadd4eb5b98957290ca175f6b4870f # v4.0.2
with:
aqua_version: v2.51.2
aquaはCLIの遅延インストールができるので、この設定にしておけば 「aqua本体をとりあえずセットアップして、後続ステップで必要な時にダウンロードする」が簡単に実現できる。
なお、aquaのバージョンやアクションのハッシュはRenovateによって適当に管理してもらえばよい。
注記
https://github.com/attakei/dotfiles 参照。個人利用しているNim製CLIを、作成しているレジストリファイル経由でインストールしている。
miseを使いこなし切る前に切り替えたため実際は不明だが、少なくともaquaはかなり楽だった。
Volta経由である程度コントロールができるのだが、voltaとpnpmの相性がちょっと良くない。
uv等でローカルvenvを構築する際のPythonバージョンを管理するファイル。 ここをロックさせることで「ライブラリのサポートバージョン」を意識した開発環境構築ができる。