八発白中

はてなブログに引越しました。

Sublime Text 2でCommon Lispを書くための環境設定

仕事を成し遂げるのに必要な労力が大きいほど、その仕事をうまく成し遂げられる可能性は低い。
Design Rule Index[第2版]― デザイン、新・25+100の法則

最近、妻にちまちまJavaScriptを教えるということをやっています。

妻はプログラミングができません。プログラムには何ができて何ができないのかや、それぞれの言語の違いもわかりません。ターミナルも使ったことがない。

こういう人にプログラミングを教えようとすると、普段プログラマが何気なくやっていることでも多様な知識が必要なのだな、と思います。

こういった状態の人に最初から多くのことを教えようとすると、学習の労力が増え、肝心の「プログラムができるようになる」という目的を成し遂げられる可能性が低くなります。なので、本質的でないところはまず後回しにしたい。

たとえばプログラムを書くのに必要なものの一つに「エディタ」というものがあります。僕はEmacsを使っているのでEmacsなら使い方を教えられるのですが、Emacsの使い方を妻が一から覚えるのはかなりの苦難になります。C-x C-sでファイル保存かーとか言いながら、配列の添字の最初はゼロだ、とか関連性のない複雑なことを同時に覚えられる人はそう多くないと思います。

そこで妻にはEmacsではなく、Sublime Textを使わせることにしました。

Sublime TextはMacにも似合うおしゃれUIで、最近使っている人もよく見ます。女性にRuby on Railsを教える「Rails Girls」でもSublime Textを推奨しているようです。

使ってもらうならば僕自身もSublime Textをある程度使えないとまずいだろうと思い、自分のMacにもSublime Textをインストールして一通りの開発環境を整えてみたりしました。

そのときついでにCommon Lispの開発環境を整えてみたので、設定方法をまとめておこうと思います。それほど長くありません。EmacsでSLIME環境を整えるよりは簡単な気はします。

Common Lispの開発環境を整える

Sublime Text 2のインストール

以下のページからSublime Text 2をダウンロードします。自分のOSのリンクをクリックしてインストールしてください。

Package Controlをインストール

Package ControlはSublime Textに簡単に拡張をインストール/アンインストールできるようにする拡張です。Lispに限らず必要になるのでインストールしておくことを強くおすすめします。

Sublime Text で Ctrl + `を押すとコンソールが出てくるので、ページ左下のPythonコードをコピペしてEnterキーを押し、実行してください。

必要なパッケージをインストール

Common Lispの開発に必要なパッケージをインストールします。僕は以下の3つをインストールしました。

  • lispindent (必須)
    • Lispコードを適切にインデントするための拡張。
  • SublimeREPL (推奨)
    • Sublime Text上でREPLを実行するための拡張。
  • paredit (任意)
    • 閉じカッコの自動挿入など、Lispでのプログラムを簡単にする拡張。好き嫌いがあるので任意でインストールしてください。

どれもPackage Controlでインストールできます。Preferences > Package Control で、Install Packageを選択し、出てくる一覧から上の3つをインストールします。

ただし、SublimeREPLは最新のものを使うことを推奨します。理由はCommon Lisp複数処理系の対応が入っているからです (現行版はGNU Clispにしか対応していません)。

Preferences > Package Control で、Add Repositoryを選択し、「 https://github.com/wuub/SublimeREPL 」を入力します。これだけで最新のSublimeREPLをインストールできるようになります。

※追記 (2015/01/24): SublimeREPLはほとんどメンテナンスされずに放棄されています。一年前に投げたPull Requestもマージされていません。

Common LispのREPLの挙動に関するいくつかの変更を加えたものが僕のforkにあるので、そちらを使うことを推奨します。

Preferences > Package Control で、Add Repositoryを選択し、「 https://github.com/fukamachi/SublimeREPL 」を入力します。これだけで最新のSublimeREPLをインストールできるようになります。

その後、通常通りInstall PackageでSublimeREPLをインストールしてください。

その他設定

Sublime Textではデフォルトで、開き括弧や引用符の自動補完機能があります。これにより、開き括弧を入力するとカーソルの後ろに閉じ括弧が自動で挿入されます。

これは便利ではあるのですが、一つイケてないのは、シングルクォート (') を入力したときも引用符として対応するシングルクォートがもう一つ入力されてしまうことです。Lispでクォートは引用符ではなく (つまり2つセットではなく) 1つだけで使うものなので、この自動挿入機能は煩わしいだけです。

このシングルクォートの自動補完機能だけを無効にする、ということはできないので、無理やりキーバインドを上書きします。

Preferences > Key Bindings - User

[
  { "keys": ["'"], "command": "insert", "args": {"characters": "'"} }
]

のように記述しておけば、シングルクォートはただの文字として扱われ、自動補完は行われなくなります。

もしくは、Preferences > Settings - More > Syntax Specific - User

{
  "auto_match_enabled": false
}

と書けば、Lispのときだけ自動補完機能が全部オフになります。pareditをインストールした人は自動挿入機能がついているため、こちらの設定のほうがいいかもしれません。

おわりに

Sublime Text上でREPLを動かせ、S式を送ることもできるのでSLIMEっぽい開発スタイルをそのまま実現できます。普通に使っている分にはそれほど悪くないので、十分おすすめできるものでした。

Common Lispを始めてみよう、と思ったとき、一番情報が多いのはEmacsでSLIMEを使うものです。事実、SLIMEほどよく出来た開発環境は無いと思います。けれど、普段からEmacsは使ってない、という人にはそれだけでもハードルが高い。

妻にプログラミングを教えるという経験で、こういうハードルを地道に取り除いていくというのも、なかなか手が回りづらい部分ではあるけれど、コミュニティとして大事なことだよね、と思ったりしました。

Design Rule Index[第2版]― デザイン、新・25+100の法則

Design Rule Index[第2版]― デザイン、新・25+100の法則