ざる魂

真似ぶ魂、学ぶの本質。知られざる我が魂

Caskの導入と設定ファイルの棚卸し

はじめに

最近Caskが流行り始めてますね。標準のパッケージシステムであるpackage.elがあるのにどうよ? って最初は否定的だったのですが、その機能が自分が求めてたものだったので導入しました。 ClojureのLeiningenみたいに設定ファイルを記述してコマンド叩けば自動でライブラリを落としてくれます。 良いです。

そしてCask導入ついでに、設定ファイルたちの見直しを実施しました。 これって部屋の掃除と同じで、なかなか気がすすまない作業ですよね。 毎日すこしずつ掃除してればちょっとの手間ですむけど溜め込むと大変。 自分は後者でした。ここでは、Caskの導入方法と、自分の設定ファイルの解説をしたいと思います。

Caskの導入

インストールは非常に簡単です。

公式にあるとおり下記コマンドを実施するだけです。

$ curl -fsSkL https://raw.github.com/cask/cask/master/go | python

すると、 ~/.cask にcask自身がインストールされます。 あとは、PATHに下記を追加しておきます。

export PATH=$PATH:~/.cask/bin

これで準備オッケーです。

Caskファイルを編集して自分の欲しいパッケージを羅列してきます。

$ vim ~/.emacs.d/Cask

で、最後に下記コマンドを実行すれば、あとはツラツラと必要なパッケージが ~/.emacs.d/.cask というディレクトリに保存されていきます。

$ cd ~/.emacs.d
$ cask

簡単ですなー。

そしてこれらを利用するにはロードパスを通しておきます。

(require 'cask "~/.cask/cask.el")
(cask-initialize)

あとはいつもどおりの自分の設定を書けばオッケー。

ちなみにWindowsでは導入できないとの情報を見ましたが 自分の環境では問題ありませんでした。環境は下記のとおりです。

# PC
Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz 2.50GHz
RAM 4.00 GB

# Windows
Windows7 Professional
Service Pack 1
32bit

# emacs
GNU Emacs 24.3.1 (i386-mingw-nt6.1.7601) of 2013-03-18 on MARVIN

# Cygwin
$ uname -r
1.7.30(0.272/5/3)

Emacs設定ファイルの書き方

.emacsの整理にあたっては、下記の方やりかたを全面採用しました。

このやり方を採用すれば

$ emacs -q -l init.el

とするだけで自分の環境が閉じた状態で簡単に再現できます。 設定ファイルを公開している方は、みんなこの方法を採用したほうがいいんじゃないかなーと思います。

ちなみに、初期化ファイルは、init-loaderを使用するのが定番のようですが、 自分には合いませんでした。ファイル名をいじって読み込む順番や読み込みの有無を指定するのが苦手で。 それよりはコードを直接いじったりコメントアウトするほうが楽でした。

私の.emacsのインストール方法

私のemacs環境は下記の方法でどなたでも試すことができます(ただしまだテストしてません)。

$ cd ~
$ git clone https://github.com/mikio/.emacs.d.git
$ cd .emacs.d
$ cask
$ emacs -q -l init.el

ちなみに、手動インストールが必要なddskkやJDEEなどはインストールできません(当然)。

やりかたを公開しているのは別にオレオレemacsをみんなに使って欲しいのではなくて 自分がどこでも環境を再構築できるようにしたいためです。念の為。

私の.emacsのディレクトリ配置

ディレクトリ構成は下記のようになってます。

$HOME
  + Dropbox/site-lisp/ # 手動でインストールしたlisp
  + .cask/             # Cask自身のインストール場所
  + .skk/ # ddskkのプライベート辞書の場所
      + jisyo
  + .emacs.d/
      init.el # ブート的な起動ファイル
      .cask/  # Caskによりインストールされたパッケージ群の保存場所
      conf/  # 各パッケージの初期化ファイル群

私の.emacsの分割のポリシー

最後に設定ファイル分割のポリシーをメモしておきます。

  • requireが必要ない設定(キーバインドとか、単純な設定など)

    • conf/init.elにまとめる
  • 標準取り込み済みだけどrequireが必要な設定

    • conf/extend.elにまとめる
  • caskで取り込んだ外部パッケージ

    • 適当な単位で処理を分ける
  • 完全に手でインストールしなければならないもの

    • JDEE
    • ddskk
    • sdic
    • w3m
    • navi2ch
    • これらは、個別に設定ファイルを準備
  • 全体として、elispが存在しなければ無視するように気を使う