八発白中

はてなブログに引越しました。

Lispライブラリのドキュメント集約サイト「Quickdocs.org」を作りました

Quicklispに登録されているCommon Lispライブラリの情報をWebで見られるサイト「Quickdocs.org」を作りました。

さくらVPS 1Gで動いてます。この2日で突貫で作ったみたいな感じなのであまりいじめないでください。

機能

とてもシンプルなので、見ていただいたほうがわかりやすいかもしれません。

たとえばClackのプロジェクトページは以下です。

右上にはWebサイトやリポジトリへのリンクを置きました*1

本文にはREADMEを表示しています。最近はGitHubにホストされているライブラリが多いので見慣れていると思いますけどね。

下のほうには.asdに記述されている情報を表示しています。Author, Maintainer と License、および依存ライブラリです。

また、一番下にはAPIリファレンスへのリンクを置きました。

APIリファレンス

Quickdocsで特筆したいところとしてはAPIリファレンスの自動生成機能があることです。

APIリファレンスというのは、プロジェクトに含まれるパッケージやその変数・関数・マクロやクラスなどを一覧で表示するものです。

例としてAlexandriaを挙げます。

シンボル名や関数の引数の表示、およびdocstringがあればそれも表示しています。今はexportされているシンボルのみ表示しています。

気づく方もおられるかもしれませんが、その表示順序にもこだわりがあります。

Common Lispのドキュメント生成ライブラリの気に入らないところは、どれもこれも、パッケージのシンボルを全部一緒くたにしてアルファベット順に並べていることです。確かに、リファレンスとしてはアルファベットのほうが引きやすいかもしれませんが、ざっくりライブラリの概要を見るには向きません。

QuickdocsのAPIリファレンスは、実際にソースコードをパースしているので、ソースコードで定義されている順番にシンボルを表示しています。非常にリーズナブルです。

欠点としては、表示がちょっと遅いことでしょうか。大きめのライブラリになると返ってくるのに5秒くらいかかることもあります。じきに改善します。

Quicklisp登録のライブラリのメンテナの方はぜひご自分のライブラリのページを確認してみてください。

おわりに

Pythonを学んでアプリケーションを作ってみる過程で、Common Lispにはまだまだ足りないものが非常に多いなぁという実感があります。

特に、Pythonのコミュニティはドキュメントを書くことを推奨しており、多くのライブラリを、実際にインストールする前にWeb上で概要を知ることができます。

Common Lispで何かをやるライブラリを探したいとき、とりあえずql:system-aproposしてみて、それっぽいライブラリがなければググってみて、出て来なかったらCLiki.netで検索してみて、なかったらGitHubで検索してみて、なかったらPerlで書くみたいなことを繰り返して来ました。今後はQuickdocsでの検索で完結できることを目指します。

たとえCommon Lispのライブラリが見つかったとしても、まともな情報がWebになく、とりあえずインストールしてみたけどどう使ったらいいかわからないからソース読む、みたいなことも多々ありました。今後はQuickdocsのAPIリファレンスが助けになりそうです。

Common Lisperの方はぜひ使ってみてメールなどでフィードバックをいただけるとありがたいです。

*1:現在、Webサイト情報の表示はGitHub、BitBucketでホストされているライブラリのみ対応しています