Clojure
ClojureScript

陳腐化しない Clojure の情報を書くために気をつけるべきこと/あるいは情報が陳腐化していることに気付くために知っておきたいこと

More than 3 years have passed since last update.

Clojure を始めたばかりの人が躓くポイントのひとつが日本語の情報が少なく、情報があっても古いため現在のバージョンとは勝手が違い役に立たない事が沢山あることだと思います。

具体的には Luminus というテンプレートがありますが、これを使った例をブログ記事などで書くときに以下のように書いてあることが多々あります。

$ lein new luminus myapp

そして、これを読んで一年後に同じように実行した人は全く違うテンプレートが展開されてしまい( Luminus の場合、 1 年違えば使用されているライブラリがかなり変わります)困り果ててしまいます。何故か。それは Leiningen の new タスクは特に指定がない場合、最新のテンプレートを自動的に clojars からダウンロードしてきて使うためです。

なので、何かしらのテンプレートを使った記事を書く人は次のように書くことを心がけるといいと思います。

$ lein new luminus myapp --template-version 2.9.8.81

こうすることによって特定のバージョンを明示的に指すことができ、後からブログなどの記事を読んだ人も全く同じように再現させることが出来ます。またこのようにテンプレートのバージョンを指定していない記事を見かけた場合は、今と違う可能性があるということを念頭に置いて読むと躓くことがなくなると思います。

またどのバージョンを使ったのか確認したい場合はローカルの Maven リポジトリを確認すると良いでしょう。

$ ls -l ~/.m2/repository/luminus/lein-template  

total 40
drwxr-xr-x 7 ayato_p staff 238 1 11 13:26 2.9.8.81
drwxr-xr-x 7 ayato_p staff 238 1 11 13:26 2.9.8.85
-rw-r--r-- 1 ayato_p staff 10367 1 11 13:26 maven-metadata-clojars.xml
-rw-r--r-- 1 ayato_p staff 40 1 11 13:26 maven-metadata-clojars.xml.sha1
-rw-r--r-- 1 ayato_p staff 266 1 11 13:26 resolver-status.properties

こうすることで現在ダウンロードされているテンプレートのバージョンが分かるはずです(テンプレートを使って雛形を作ったあとに、そのプロジェクトがどのテンプレートとバージョンを使って作られたのか知る術はありませんが、このようにすれば最新のバージョンが使われているので推測は可能です)。

あるいは現在の最新のテンプレートのバージョンを知りたい場合は Clojars を見ると良いでしょう。

例えば、 Luminus のテンプレートであれば次の URI で表示出来ます。

https://clojars.org/luminus/lein-template

また、バージョン情報はテンプレート以外でも大事ですが、ほとんどの場合ライブラリのバージョンは綺麗に書いてあるケースが多いと思うのでこれについてはあまり気にする必要はないかもしれません。ただ、ライブラリのバージョンが明記されてない場合は、あまり信用して読まない方がいいでしょう。


まとめ


  • テンプレートを使った情報を書く場合はテンプレートのバージョンを明記しよう。

  • テンプレートに限らずライブラリなどのバージョンも明記しよう。

  • テンプレート/ライブラリの README やドキュメントなどをちゃんと読もう。