不確定特異点

広く深く、ところどころ超深く

Common Lisp 処理系と開発環境のインストール (2)

前回に続いて Quicklisp をインストールします。Quicklisp とは Common Lisp で広く使われているライブラリ管理ソフトウェアです。ライブラリのダウンロードからインストールまで自動的に行い、ライブラリ間の依存関係も自動的に解決してくれる便利な仕組みを備えてます。

Quicklisp のインストール

Quicklisp のサイトの説明通り、以下の手順でインストールできます。

$ curl -O https://beta.quicklisp.org/quicklisp.lisp
$ sbcl --load quicklisp.lisp
This is SBCL 1.2.12, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.

  ==== quicklisp quickstart 2015-01-28 loaded ====

    To continue with installation, evaluate: (quicklisp-quickstart:install)

    For installation options, evaluate: (quicklisp-quickstart:help)

* (quicklisp-quickstart:install)

最後に .sbclrc に設定を追加してもよいか聞かれますので、そのまま Enter を押して .sbclrc に Quicklisp をロードする設定が追加されることを確認します。

ネットワークの環境によっては proxy サーバを経由しなければならない場合があります。その場合は、以下のように指定可能です。(詳細は Quicklisp の FAQ に記載されてます。)

* (quicklisp-quickstart:install :proxy "http://myproxy.site.com:8080/")

Quicklisp を使ったライブラリのインストール例

デファクトスタンダードなユーティリティ Alexandria を Quicklisp でインストールしてみます。REPL から以下を実行するだけでインストール完了です。

* (ql:quickload "alexandria")

基本的には REPL を起動するたびに quickload する必要があるのですが、$HOME/.sbclrc に

 (ql:quickload "alexandria" :silent t)

と書いておくと自動的にロードしてくれます。:silent tを指定することでロード時のメッセージを抑制可能です。ただし、前回少し触れたように、スクリプト実行しようと SBCL--scriptで起動してしまうと、--no-userinitが指定されて $HOME/.sbclrc が無視され、Quicklisp やライブラリが設定されなくなってしまうため注意が必要です。(そのため--scriptによるスクリプト実行は避けました。)

SLIME のインストール

SLIME という Emacs Lisp で実装された Common Lisp 開発環境をインストールします。Emacs Lispソースコードをダウンロードしてきて自力で設定してもいいのですが、先ほどインストールした Quicklisp にも SLIME が登録されているので、さっそく Quicklisp を使ってインストールしてみます。(少しややこしいのですが、Quicklisp は Common Lisp ライブラリの管理がメインなのですが、Emacs Lisp である SLIME も管理されてます。)

* (ql:quickload "quicklisp-slime-helper")
To load "quicklisp-slime-helper":
  Load 1 ASDF system:
    quicklisp-slime-helper
; Loading "quicklisp-slime-helper"
.
slime-helper.el installed in "/Users/tanaka/quicklisp/slime-helper.el"

To use, add this to your ~/.emacs:

  (load (expand-file-name "~/quicklisp/slime-helper.el"))
  ;; Replace "sbcl" with the path to your implementation
  (setq inferior-lisp-program "sbcl")


(:QUICKLISP-SLIME-HELPER)

これで ~/quicklisp 以下に SLIME がインストールされるので、.emacs.d/init.el に以下の設定を追加します。

(load (expand-file-name "~/quicklisp/slime-helper.el"))
(setq inferior-lisp-program "/usr/local/bin/sbcl")

Emacs 上で M-x slime を実行すると SLIME が起動するようになります。以上で作業は終わりです。

自分の中ではミニマムだと大体このような手順に落ち着いてます。最近では Roswell というプロダクトが盛んに開発されおり、処理系のインストールやスクリプト実行がより簡単にできるようです。詳しくは Common Lispとリアル・ワールドを繋ぐ「Roswell」の紹介 で解説されてます。