LoginSignup
10
10

More than 5 years have passed since last update.

2018年度版のcommonlispのライブラリ開発の方法

Last updated at Posted at 2018-02-16

はじめに

みなさん、ごきげんよう。今回は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のディレクトリだ。
そこで
ros run

と起動して、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/

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10