How to teach Clojure for beginner

どうやって Clojure を初心者に教えるのかについて少しだけ考えてみた。というか、つい先日半日かけて友達に教えたのでそれを元にまとめてみる。

僕みたいな中途半端な Clojure プログラマが他人に教えるというのが少しアレなんだけど、

Clojure は凄く簡単で教えることはめちゃくちゃ少なくて済む [1] 。 例えば前置記法であるということや、一般的に演算子と認識されているものも関数であるということ、あとはだいたいデータ構造のリテラルに変数の束縛の仕方だけ教えればだいたい ok だと思う。 勿論、これだけを教えたところでまともにコードは書けないので、関数の定義の仕方や関数の呼び出し方も少し教えてあげる必要がある。さらに、 REPL の使い方を多少教えてあげて、ドキュメントの引き方も教えておけば何も言うことはないだろう。

実用的に Clojure を使うのであれば Var とか Macro とかちゃんと教える必要があると思うんだけど、とりあえず初心者には上記程度を教えておけばいいと思っている。

あとは clojure-koans を一緒にやっていくと良いと思う。僕も先日一緒にやっていたけど、なかなか少しずつステップアップしていく感じで楽しかった。 github から clone して lein koans run としておいてエディタでソースを開いて該当箇所をどんどん修正していくと、問題が徐々に進んでいくので大変良い。ただ、都合 REPL を別で起動する必要がある [2] のでマシンパワー足りないとつらいかも。

たぶんある程度プログラミングしたことがある人ならこのくらいでいいんじゃないかなと思った。あとはもう何処に進むか次第で教えないといけないこととか知りたいこととか変わってくる。

ただ、ひとつだけ問題があるのが「開発環境どうしよう」というところで、元々 Emacs ユーザーだったにしても Vim ユーザーだったにしても Clojure 書いてエディタ上から REPL 起動して評価出来るようにするのがかなり手間です。 一番楽なのは普段から IDE 使ってて、特に IntelliJ IDEA 使ってる人に教えることですね。 Cursive 入れてもらえばだいたい終わったも同然なので。

この前、僕は Vim ユーザーに対して Emacs からインストールさせましたけどね…。 もし Emacs を使っても良いと思っているなら、ここの設定をそのまま使うのが早そう。

Vim ユーザーに教えるのが Emacs ユーザーとしては一番つらいんだけど NeoBundle が使える前提なら vim-fireplacevim-clojure-static をインストールしてもらって、頑張るしかなさそう。

SublimeText2 は既に死に体なので使わない方が無難です。少なくとも Leiningen 2 以降で起動する nREPL に接続出来ない時点でつらい。 Clojure Koans のためにだけ使うならともかく、まともに REPL とコミュニケート出来ないのはちょっと…。

結局開発環境で詰まるんだよな、というのに最近気付いた。もし、 Clojure のワークショップみたいなのやるとしたら Cursive インストールしてもらうのが better way かなぁ。

頑張って入門系の記事書いてみるか。

[1]というのが僕の認識だけど、人によっては感覚が違うかもしれない
[2]lein koans run している方は REPL 使えないので/実際にはなくてもいいけどドキュメント引いたりとか実行してみたりとか出来ないのは不便