# 本記事の位置づけ 下記を実現するための手順書。 - roswell(lisp実行環境構築ツール)を導入する - slimv(VimにおけるSLIME)を導入する - roswellとslimvでcommon lispをコーディング、実行するための設定をする # 手順一覧 下記の順番に環境構築する。 1. roswellを導入する 1. slimvを導入する # 1. roswellを導入する ## roswellとは?(require, ASDF, Quicklispとの違い) [roswell](https://github.com/roswell/roswell)とは、Common Lispの実行環境を構築するためのユーティリティ。 内部ではquicklispを使っており、そのquicklispの内部ではASDFを使っている。 これらは混同されがちなので、下記にこれらについて他サイト様の説明を引用しながら軽く説明する。 ### provide, require(非推奨) すでに使うべきではない機能であり、大体のプロジェクトではASDFを使用している。 > ANSI Common Lispに存在するライブラリ管理システムです。 > `(require :hoge)`でファイルを読み込み、そのファイルで`(provide :hoge)`されていれば、2回目以降の`(require :hoge)`では何も行われません。 > > これは無駄なロードを防ぐための仕組みです。 > しかし、REQUIREがどこのファイルを読みにいくかは処理系の実装に依存しています。 > 処理系ポータブルなコードを書くには非常に不便です。 ### ASDF : Another System Definition Facility ASDFは、Common Lispのソースコードをsystemとしてまとめ、ビルドし、ロードするための「モジュール管理プログラム」。 > ASDFは,ローカルに存在するライブラリを,依存関係に基づいてロードします. > 実際には,ロードする前にコンパイルまで行ってくれます. > 依存関係を定義するファイルは.asdファイルで,通常プロジェクトトップに置かれます. > > Lisp標準のrequire関数で外部ファイルをロードする際,ほとんどの処理系がASDFを用いてファイルをロードするため,ASDF自体はLisp標準規格に含まれませんが,処理系と共に予めインストールされていることが多いです. ### Quicklisp Quicklispは依存しているライブラリをウェブ上のリポジトリからダウンロード・インストールしてくれるツール。 > Roswellは何かと言うと,Quicklispのようなインストーラです. > Quicklispとの違いは,ライブラリだけでなくLisp処理系のインストールもできる点です. > RoswellでインストールされたLisp処理系を使うと,Roswellでインストールしたライブラリを何の設定もなしにrequireでロードできます. > したがって,RoswellさえあればQuicklispは必要ありません. > また,Roswellでインストールした処理系とライブラリは,単一のディレクトリ以下に配置されるので,既存の開発環境と共存できます. ただし、RoswellをインストールしたらQuicklispもインストールされるため、不要と言うのは少し違う。 RoswellがQuicklispを隠蔽する感じだと思う。 ### 上記説明へのリンク 上記の説明の引用先を下記に示す。 - [Common Lispのライブラリ事情](http://takoeight0821.hatenablog.jp/entry/2017/01/29/141315) - [Lispのパッケージ管理入門.Quicklisp,ASDF,Roswellの違いなど](http://diary.wshito.com/comp/lisp/lisp-pm/) - [require, ASDF, quicklispを正しく使う](http://keens.github.io/blog/2014/11/30/quicklisp/) - [独学Common Lisp 第24章「システムの構築(ASDF)」](http://lisp.satoshiweb.net/2018/01/asdf.html) ## roswellを導入する手順 [Common Lispとリアル・ワールドを繋ぐ「Roswell」の紹介](http://blog.8arrow.org/entry/2015/06/11/101511)に導入手順の分かりやすい説明がある。 ### 1. roswell自体をインストールする 基本的にはroswellの[gitwiki](https://github.com/roswell/roswell/wiki)を参照しながら導入できる。 これによると、Macの場合はHomebrewを使用すれば簡単に導入できる。 roswellをインストールすると、バイナリ版SBCLとQuicklispがインストールされる。 ```bash $ brew install roswell # ターミナルを開き直す $ ros setup $ ls -a ~/.roswell . archives env impls lisp src .. config helper.el lib local-projects tmp ``` roswellでインストールしたlisp実行環境を確認するには下記コマンドを実行。 ```bash $ ros list installed Installed implementations: Installed versions of clisp: clisp/2.49 Installed versions of sbcl-bin: sbcl-bin/1.4.4 ``` インストールされた処理系、バージョンは切替ができ、rosで起動されるCommon Lispを変更できる。 ```bash # デフォルトで使用する処理系を確認する(ハイフン--は誤記ではない) $ ros run -- --version SBCL 1.2.12 # デフォルトで使用する処理系を変更する $ ros use sbcl/1.1.8 # デフォルトで使用する処理系が変更された $ ros run -- --version SBCL 1.1.8 ``` ### 2. roswellでslimeをインストールする slimvで使用するため、インストールする。 ```bash $ ros install slime ``` # 2. slimvを導入する ## slimvとは? [slimv](https://github.com/kovisoft/slimv)は、lisp記述・実行を支援してくれるvimプラグイン。 [チュートリアル](https://kovisoft.bitbucket.io/tutorial.html)がそこそこ整っているので、最初に一通り実施してショートカットなどを覚えた方が良い。 ここで、slimvの仕組み(イメージ)について把握したほうが良い。 slimvの仕組みは、(多分)下記のとおり。 ``` ユーザ --> slimv --> swank --> roswell(lisp実行環境) ``` ユーザがファイルやインタプリタ画面に対して操作したら、それをslimvがswankサーバに送り、lisp実行環境で処理される、といった具合だと思う。 ## slimvを導入する手順 ### 1. slimvプラグインをインストールする vimプラグインなので、インストール方法は色々あるが、ここではVundleを使用する。 Vundleの使い方は、また別の記事で説明する(多分)。 ```vim " これを.vimrcに記述して保存する Plugin 'kovisoft/slimv' ``` ```vim " vimを開いて下記コマンドを実行してプラグインをインストールする :VundleInstall ``` ### 2. slimv用の設定を.vimrcに記載する .vimrcを設定する。(macの場合なので、linuxなどの場合は適宜修正が必要。) 自分の場合はプラグインごとに設定ファイルを分けているので、その設定ファイル`08slimv.vim`を別に示す。 また、タグファイルの格納場所として、`$HOME`直下に`.tags`ディレクトリを作成する。 **補足** brew などでインストールした素のclispを使用する場合は、(多分)`slimv_swank_cmd`を設定する必要はない。 roswellを使用する場合はswankサーバをroswellのものにするため、`slimv_swank_cmd`の設定が必要となる。