Marmaladeはお手軽感が素敵なEmacs Lispのリポジトリサイト

長ーい歴史をもつEmacsでも、いまだ解決できてない問題はいろいろあるわけで、その一つにパッケージ管理があると思います。
これには、すでにいろいろな試みがあります。
EmacsWiki: ELPA
auto-install.elでEmacsLispパッケージを自動インストール→anything.el関連を一括インストール – (rubikitch loves (Emacs Ruby CUI Books))
el-get.elでEmacs Lispパッケージをインストール・アップグレードする – (rubikitch loves (Emacs Ruby CUI Books))
他のプログラミング言語やLinuxディストロに目を向けてみますと、それぞれ独自のパッケージ管理方法があるわけですがCRAN、CPAN、PyPIのようなELPAに当たるサイトで集約的に管理されているものがほとんどです。
EmacsでもELPAのようなサイトで集約的にパッケージが管理されていると良いのですが、残念なことにELPAに登録されているパッケージはごくわずかで、現状のEmacs Lispの頒布形態はカオスとしか言いようがありません。
auto-install.elやel-get.elは、そういった現状を改善するとても有用な方法ではありますが、他のパッケージ管理の分野にはあまりいないかなり特殊な存在で、どうしてもユーザがわに負担、というかめんどくささがあります。
そんな中、Emacs24にELPAからインストールするためのEmacs Lisp、package.elがマージされたというのがemacs-develに流れました。
Emacsのパッケージ管理に関して大きな変化ですが、依然ELPAは貧弱です。ELPA側の問題が解決しないと現状は恐らく何も変わらないのですが、Marmaladeはその問題をさらっと解決してしまいそうな雰囲気です。
Marmaladeとは
Marmaladeとは、Emacs Lispのパッケージをアーカイブするサイトで、Emacs24に標準で搭載される予定のpackage.elに対応しています。つまり、package.elでELPAからも、Marmaladeからもインストールすることができるようになります。UbuntuでいうところのPPAみたいなものです。
作者は、Googleにお勤めのNathan Weizenbaumさん。offline Gmailの担当をなされているそうです。
その魅力ですが、「お手軽」の一言につきます。ELPAのサイトを見ますと、登録は簡単と書いておきながら、登録にはメール送ってねーとか、その時点で敷居が高すぎます。 その点、Marmaladeは規定のフォーマットでヘッダー部分を書けば、後はアップロードするだけというお手軽さ。実際、サイトが開設されたのが去年の末頃だったようですが、すでに70以上のパッケージがアーカイブされていて、ELPAのそれに迫る勢いです。
また、親切な方がMarmaladeが解釈できるelispを登録していただいているようで、拙作のanything-R.elもいつの間にか登録されていました。このように作者以外が登録できる(ヘッダーのフォーマットがあえば)というのも、登録数を伸ばしている理由の一つかもしれません。
Marmaladeからインストールするための準備
すでに書いたとおり、Marmaladeからのインストールにはpackage.elが使われます。Emacs24であればすでに入っているのですが、余程の先端好きな方でないとEmacs24を使っていないはずですので、package.elまではマニュアルでインストールする必要があります。以下のサイトから落としてきます。
package.elをロードパスが通ったところに置き、以下のようなものを.emacsあたりに書いておきます。
(require 'package) ;;リポジトリにMarmaladeを追加 (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) ;;インストールするディレクトリを指定 (setq package-user-dir (concat user-emacs-directory "vendor/elpa")) ;;インストールしたパッケージにロードパスを通してロードする (package-initialize)
Marmaladeからダウンロードしてインストールする
早速、Marmaladeからダウンロードしてインストールしてみます。まずは、Marmalade.elをインストールです。
M-x list-packageとすると次のような感じでパッケージのリストがでてきます。
ここから、Marmalade.elを選択。iキーを押すとマークがつきます。さらにxキーを押すとインストールが始まります。他のキー操作については、hキーを押すと詳しい説明がエコーエリアに出てきます。diredのキーバインドだと思っておけば良いかもしれません。
この時点でインストールしたパッケージの中で;;;###autoloadによって自動ロード対象の関数が明示されているものは、インストール完了です。ただ、パッケージによっては、;;;###autoloadによって指定されていないものもあります。Marmalade.elもその一つです。そういうものはrequireなり、loadで読みこんでやる必要があります。
今回の場合はMarmalade.elを(load “/hoge/fuga/Marmalade.el”)のようにして読みこませて、インストール完了です。
Marmaladeにパッケージを登録する。
登録作業は、とても簡単です。まず、Marmaladeのサイトでsign upします。その後はsing inしてパッケージをアップロードするだけです。他には先ほどインストールしたMarmalade.elを使ってアップロードする方法もありますので、こちらの方法も試してみます。
まず、登録するサーバを選択します。今のところ選択肢はMarmaladeしかありませんので、(setq marmalade-server “http://marmalade-repo.org/“)を.emacsあたりに書いておきます。次はM-x marmalade-login とするとログイン名とパスワードを尋ねられますので、先程登録した内容を入力します。その際”Save Marmalade username and auth token? “と尋ねられますが、ここでyesを選択するとtokenなどの情報が保存されるため、これ移行loginをする必要がなくなります。後は登録したいelispを開いて、M-x marmalade-upload-buffer とすれば登録完了です。
Emacs Lispの頒布形態が変わるかも
ひとしきり使ってみて、アップロードしたファイルが削除できない、とかファイルの内容を編集する手段がバージョンをあげるしかない、など荒削りなところもいろいろありますが、かなり有望ではないかなと感じました。
開発者側の視点から見ると、公開するまでの手数が少なくてすみます。ヘッダーのコメントを規定のフォーマットで書く必要がありますが、ELPAのそれとほとんど変わらないためにほとんど編集せずにすみます。
ユーザの視点で見ると、言わずもがなインストール作業がとっても楽チンです。autoloadが明記されていれば、ユーザは.emacsを開く必要すらありません。
残念なことにデフォルトのEmacsは非常に使い勝手が悪いので、効率よく作業しようと思うと外部パッケージのインストールが欠かせません。しかし、カオスな頒布形態とインストールの面倒さで、これまでEmacsは憂き目を見てきたわけです。
逆にインストールがしやすくなれば、便利なパッケージを手軽に使えることでEmacsの良さが理解してもらいやすくなるんではないかなー、と思います。
というわけで、多くのEmacs LispがMarmaladeに登録されて、たくさんの人にEmacsの便利さが伝わればいいなー、と感じました。
-
前の記事
Gmailのアドレス帳をbbdbにインポート 2011.06.14
-
次の記事
gravatar.elをbbdbでも使いたい 2011.06.20