#はじめに
みなさん、ごきげんよう。今回はasdfファイルのロードやり方を説明するよ。最近、railsやら、c++やらに手を出してcommonlispにさっぱりさわっていなかった。
だが、今度試しにrailsで作ってみたサイトで「あれ、これ言語何でもありなんじゃないのかな?」と思い、久々にcommonlispをしてみた。だが、一向に趣味として領域を脱しない。だから、今回はライブラリを作るためにはasdfをやったほうがいいだろうと思い、今回筆を執った。これからやる人も、初心者の人もこれを機にcommonlispを触っていただけると幸いだ。
ちなみに、以前の記事でも言ったが、lispはロボットでも使われている。もしかしたら、未来はlispエイリアンが世界を征服しているかもしれないぞ!
というわけで、解説に入ろう。
#まず、どうやってライブラリを作る?
初心者でも玄人でも、一からライブラリの雛形を作るのは困難を極める。いちいちどの構成で、どうやって作るかを考えるのは日が暮れる。そこで現れるのは、深町さんの解説でもあった、「cl-project」だ。これを使えば、rubyのgemみたいに一発でライブラリの雛形を作ることができる。
やり方は、至ってシンプル
(cl-project:make-project #p"~/clisp/test"
:author "hogehoge"
:email "hogehoge"
:license "MIT"
)
と打つ。#pのところは予め自分で作ったディレクトリを作っておいてそこにパスを打ち込めばいい。例えば*~/clisp/test*といった具合に。これで、雛形は完成だ。
#それでは、ライブラリの構築を開始だ。
ここまでできたら、あとはasdfをロードするだけだ。試しに、自分が作ったライブラリのディレクトリに入ってasdfをロードしてみてくれ。ディレクトリはさっきの*~/clisp/test*のディレクトリだ。
そこで
と起動して、commonlispを開く。
そして、
(asdf:load-system :test)
と打つ。そうするとtestがロードされ、testのモジュールが使えるようになる。
あと、asdfファイルに
そして、srcのファイルにtest.lispというやつがあるから、それを編集して末尾に
``(defun test()
(princ 'helloworld))
``
と追加してみてくれ。そうするとまたasdfをロードして
```(test:test)```
と打つと
```HELLOWORLD
TEST::HELLOWORLD
```:depends-on ("bordeaux-threads"
"cl-annot"
"clack")
と出てくる。
あとは好きなように付け加えればいい。
quicklisp上のライブラリを使いたい場合はasdfファイルの
depends-onに好きなライブラリを追加すればいい。そうすれば、すぐにライブラリを使えるようになる。
#最後に
ここまで来るのに実に私は2年もかけた。というのも、commonlispはライブラリがほとんど英語でその英語もハイレベルなものが多い。英文学科にいたから初頭の英語は読めるのだが、外国の大学レベルの英語は骨が折れる。だから、これを読んで、一人でも多くハードルを下がってくれると筆者としても助かる。書いたかいがあったというものだ。
それでは次回までごきげんよう
#参考
http://modern-cl.blogspot.jp/
https://common-lisp.net/project/asdf/asdf/