Next: クイックスタートガイド, Previous: Top, Up: Top [Contents][Index]
ASDF (Another System Definition Facility) はビルドシステムです。ASDFは、システムがどのようなコンポーネント(=サブシステムとファイル)を含んでいるか、それらにどの順序でどういう操作をすれば良いか記述するためのツールであり、Common Lispソフトウェアのコンパイル・ロード・テストなどを支援します。ASDFを使ったことがない方は、クイックスタートガイドを読むと良いでしょう。
このマニュアルは3つのケースを想定して書かれています: 1つ目は、ユーザーとして他人のコードを使いたい場合であり、2つ目は、開発者としてシステムをビルドする手順を記述したい場合です。そして3つ目は、(ASDFのような)Common Lisp拡張の実装者として、ビルドシステムそのものに関わりたい場合です。より具体的には、ASDFを使うにシステムをロードする方法が、defsystemでシステムを定義するにシステムを定義する方法が、ASDFのオブジェクトモデルにASDFの内部仕様と拡張方法が書かれています。
ASDFはライブラリやシステムをインストールするためのツールではありません。ASDFの役割は言うなればmake
やant
のようなものであり、パッケージマネージャとしての機能は持ちません。特に、QuicklispやASDF-InstallのようにASDFシステムを探してダウンロードするツールと、ASDFそのものとを混同しないようにしましょう。ASDF-Installは、その名に反してASDFの一部ではなく独立したソフトウェアであり、また、ずっと前からメンテナンスされておらず、使われてもいません。我々は代わりにQuicklispを推奨します。Quicklispは優秀なパッケージマネージャであり、現在もメンテナンスが続いています。もしあなたが、自分でコードを修正できるように、tarアーカイブではなくバージョン管理システムのリポジトリからソフトウェアを手に入れたい場合は、clbuildを使うと良いでしょう。
ソフトウェアをインストールする場所としては~/common-lisp/を推奨します。ASDF 3.1.2 (2014)からは、このディレクトリはソースレジストリの既定のパスに含まれています。1
なお、このマニュアルは未完成です。基本事項はすべて網羅されていますが、多くの発展的な話題についてはわずかに触れているのみですし、例もあまり多くはありません。最終的な情報源はソースコードであり、使用例についてはQuicklispに登録されているフリーソフトウェアを参照するのがベストでしょう。また、助言を得る場所としては、メーリングリストが良いでしょう。
[訳注] Quicklispがインストールされている場合、手動でソフトウェアを置く場所としてはql:*local-project-directories*
(~/quicklisp/local-projects/など)も使えます。同名のシステムがある場合、ローカルプロジェクトのものがQuicklisp配布のバージョンに優先します。Quicklispはこれらのパスを(少なくとも、(ql:register-local-projects)
を実行すれば)ASDFからも使えるように自動設定しているはずです。
また、すべてをRoswellで管理するという方法もあるでしょう。Roswellは、処理系マネージャとしての機能を中心にした高機能なコマンドラインツールです。Roswellから処理系を起動している場合は~/.roswell/local-projects/が同じように使えます。
clbuild(とその後継のclbuild2)は2018年現在ではメンテナンスされておらず、やや古いツールと思われます。