経緯
Cask は今まで Emacs Lisp を TravisCI でテストする用にしか使っていなかったのですが
最近では普段の開発環境で用いるパッケージの管理にも使われる事例を目にするようになったので、便乗して私も乗り換えてみました。
とりあえず私の Emacs の環境です
Cask 導入して変わったこと
1. package.el や el-get のインストールコードが消えた
https://github.com/gongo/elfactory/commit/191eea76d42b889aa045ea51d095ebaf3a11d553#diff-5
これまでは ↑ のようなコードを準備しておいて
$ make install-elisp
を実行するとパッケージがインストールされる、といった運用をしていました。 今となっては
$ cask
一発でインストールできるようになったので身軽になりました。
2. el-get の独自レシピが要らなくなった
el-get 使わなくなったので関連するやつ削除 · 191eea7 · gongo/elfactory
- melpa や Marmalade に登録されてない
- el-get 本家の recipe にも登録されていない
- だけど自分のリポジトリ化に置くのも気がすすまない(最新版との同期がめんどい)
- git submodule するほどでもない
みたいな時はよく自分で el-get 用の recipe ファイルを作っていたのですが、Cask では
(depends-on "ecukes") (depends-on "magit" "0.8.1") (depends-on "magit" :git "https://github.com/magit/magit.git") (depends-on "magit" :git "https://github.com/magit/magit.git" :ref "7j3bj4d") (depends-on "magit" :git "https://github.com/magit/magit.git" :branch "next") (depends-on "magit" :git "https://github.com/magit/magit.git" :files ("*.el" (:exclude "magit-svn.el")))
といったように (参考) git リポジトリ(加えてブランチやコミット)の指定も可能なので、これも不要となりました。
「git clone したあとに何かしらのコマンドを実行する (こういうやつ)」とかまでやりたい場合は el-get の方がいいと思いますが、今のところ私の中でそういう需要が無かったので問題ありませんでした。
Pallet との組合せ
Pallet は「Cask の機能を用いたパッケージ管理ツール」ということで、例えば
M-x pallet-init
- 既に package.el でインストール済みの elisp を Cask ファイルに書き出す
M-x pallet-install
cask install
と同様
といった機能があるらしいです。が、私としては下記の機能がとても便利に感じました。
Pallet's main job, though, is to add and delete package references from your Cask file as you install and delete them using the built-in Emacs package management system. It does this automatically and silently.
つまり M-x package-install
や M-x list-packages
からパッケージの install or uninstall を行うと 自動的に Cask ファイルに反映してくれる ということです。
よくあったのが
「家にあるマシンで package-install したあのパッケージ、Cask ファイルに書き忘れてた…」 「もう要らないから消したのに、Cask ファイルに残りっぱなしだったからインストールしやがった」
みたいな状況です。pallet を使うとそこらへんをよしなに同期とってくれるので Cask ファイルにまで気を使う必要が無くなりました。
まとめ
Cask、最初は Carton って名前だったのに Perl の Carton と名前被って紛らわしい!!って話になって 投票の結果 Cask って名前にしたのに、今度は homebrew-cask と被ってしまったがもういいわ みたいな感じで大変そうですが、これからも応援しています。
続き → Emacs 環境の管理を Cask + Pallet から Cask だけにした - Thanks Driven Life