asdfって知ってる?色んな言語のバージョン管理が出来ます!
この記事は Wondershake Advent Calendar 2016 13日目の記事です。
ワンダーシェイクのバックエンドエンジニアの@dykstraです。
今回はasdf version managerを紹介したいと思います。
asdfとは?
asdfはバージョン管理ツールです。RubyとElixirのコミュニティーでオープンソースに貢献している@HashNukeさんが作りました。 Rubyの rvm
や rbenv
のようなツールで、非常に導入しやすいツールなので、色んな言語にasdfを使えます!
なぜ他のバージョン管理ツールよりasdf使う?
使い方は本当にシンプルです。色んな言語で使えるので、他のバージョン管理ツールのようにそれぞれの言語管理ツールを使うのが通常ですが、asdfなコマンドが同じなので、asdfだけですべての言語のバージョン管理をすることができます。Toolingがいい言語(例えば、Ruby)だけ使ってたら、asdfに乗り換える必要がないと思いますが、tooling良くない言語使っていたり、同じサーバーに色んな言語を使っている場合は、asdf使えば、言語アップグレードする時にとても便利になります。この記事書いてる時点で、既に以下の20の言語がasdfでバージョン管理出来ます。
- Clojure
- Elixir
- Elm
- Erlang
- Go
- Idris
- Julia
- LFE
- Lua
- OpenResty
- MongoDB
- Node.js
- PHP
- Postgres
- Python
- Redis
- Riak
- Ruby
- Rust
- Terraform
簡単に、どうやって使う?
- asdfインストールして、設定します。 https://github.com/asdf-vm/asdf
asdf plugin-add <言語名> <git-url>
(git_urlはここで見つけれます)- インストールしたいバージョンを探します。
asdf list-all <言語名>
- そのバージョンをインストールします。
asdf install <言語名> <バージョン>
- グローバルでバージョンを設定します。
asdf global <言語名> <バージョン>
- プロジェクトのバージョンを設定します。(ホームディレクトリからこのコマンドやったほうがいいです)
asdf local <言語名> <バージョン>
(なかったら、$PWD/.tool-versions作ります)
すごく簡単ですね!もし操作がわからなくなっても、 asdf -h
をすれば、コマンドの説明が詳しく表示されます。
僕の好きな言語のプラグインはない!どうする?
新しい言語を導入したい場合は、asdfのplugin APIで作ればすぐ使えます。
まとめ
開発に専念するためには、バージョン管理のことで時間を使いたくないですよね。asdfなら一つのツールで全部の言語のバージョン管理が出来るので時間の節約になり、エンジニア間のミスコミュニケーションもふせぐことができます。是非、asdfを使ってみてください!
明日はインフラのエンジニアつかださん書きます!ネタはまだ秘密なんですけど、楽しみにしてます!