共通のLisp開発ツール

2026/03/22 5:04

共通のLisp開発ツール

RSS: https://news.ycombinator.com/rss

要約

日本語訳:

記事では、Common Lisp の開発が七層のスタックに整理されていることを説明し、それぞれの層が特定の課題に対処しています。

  1. レイヤー0 – OS/ハードウェア:OS の選択はインストールパス(例:macOS での Homebrew と Linux では異なる)に影響します。
  2. レイヤー1 – コンパイラ/ランタイム:SBCL が最も人気のあるオープンソースコンパイラです。代替としては CCL、ECL、ABCL、CLISP があり、商用版には LispWorks と Allegro CL があります。
  3. レイヤー2 – ビルドシステム:ASDF(SBCL に同梱)はプロジェクトファイルの順序と依存関係を管理します。
  4. レイヤー3 – パッケージリポジトリ:Quicklisp は毎月キュレーションされたリリースを提供し、Ultralisp と ocicl はプロジェクトごとの隔離もサポートする代替手段です。
  5. レイヤー4 – プロジェクト単位の隔離:Qlot、CLPM、ocicl などのツールは各プロジェクトに対して隔離された環境を提供します。
  6. レイヤー5 – Swank ワイヤープロトコル:サーバ側(SWANK または SLYNK)とクライアント側エディタが連携します—Emacs では SLIME/SLY、Vim/Neovim では Vlime/SLIMV/Nvlime、VSCode では Alive、Pulsar では SLIMA、Lem の組み込みクライアント。
  7. レイヤー6 – エディタ統合:ターミナル REPL(rlwrap SBCL、ICL、cl-repl)と上記クライアントを介したフル IDE 統合です。

記事は、層分けがコンパイラ選択、ビルド順序、依存管理、隔離、生の対話性、エディタ統合という異なる課題を解決することを強調し、初心者はどの層でも失敗に直面することが多いと述べています。実際の設定オプションとして、OS パッケージマネージャー経由で Quicklisp とエディタをインストールする方法、Docker コンテナを利用する方法、mise や Roswell のようなバージョンマネージャーを使う方法(後者は SBCL、ASDF、Quicklisp、Qlot を統括し、SWANK/SLYNK 経由でエディタを起動します)があります。商用 CL 環境は多くの層を一つの製品にまとめますが、本稿では焦点として扱いません。結びとして各ツールの実践的注意点を示し、読者にスタックを習得してデバッグとツール選択を明確化するよう促しています。

本文

はじめに

Common Lisp 開発環境の多層構造を初心者目線で探る。

「始め方」ガイドは、何をインストールするかという具体的な手順へ直行しがちです。
それ自体は悪くありませんが、各要素が存在する理由や解決すべき課題、そして全体のスタックにどうフィットしているかを理解しておくと、Lisp 開発環境構築という大きな障壁を乗り越えやすくなります。
多くの人は「Lisp への飛び込み」時に環境設定で立ち止まることがあります。何かが壊れた際には、デバッグするためのメンタルモデル(レイヤー構造)が無いと対処できません。

本記事の目的は、基礎的な問題点から始まり、各スタック層を順に解説し、最終的にすべてを結びつけるエディタまで、下位から上位へ理解を深めるマップを作成することです。
各レイヤーで利用可能な選択肢と注意点も併せて紹介します。

  • これは初心者向けの内容ですが、Lisp の熟練者や開発者の方々からいただいた貴重なフィードバックを反映させた結果です。
  • Opus 4.6, GPT 5.4, Gemini 3.1 を利用して調査・編集しました。
  • Lisp‑Stat の Steven1799 さん、@vindarel への感謝の意を表します。

基礎的な問題 ― 「タートルが無限に続く」状態

コードは孤立して存在しません。プログラムは他のプログラム(そしてそれらもさらに別のプログラム)に依存し、これらの依存関係には時間とともに変化するバージョンがあります。
開発環境の歴史は、この問題を管理するための試行錯誤が重なってきたものです。

Python・JavaScript・Rust のような言語から来る人なら、既知のツール(コンパイラ/インタプリタ、パッケージマネージャ、エディタ)と同一視できるレイヤーが多くあるでしょう。Common Lisp は「対話型開発モデル」を前提に設計されているため、いくつかのレイヤーは見慣れないものです。

以下では Common Lisp の開発モデルと各レイヤーが何を担当し、どのように連携するかを整理します。
理解すれば「どのツールを選べばよいか」「設定ミスの原因はどの層にあるか」が明確になります。


「マップ」 ― 開発環境のレイヤー

レイヤー役割主なツール
6エディタEmacs (SLIME / SLY)、Vim/Neovim (SLIMV、Vlime、Nvlime)、VSCode (Alive)、Pulsar (SLIMA)、Lem(組み込み)
5aSwank Wire Protocol – サーバ側SWANK(または SLYNK for SLY)
5bSwank Wire Protocol – クライアント側SLIME、SLY、SLIMV、Vlime、Nvlime、Alive、SLIMA、Lem(組み込み)
4プロジェクト単位の隔離 (任意)Qlot(または CLPM, ocicl)
3パッケージリポジトリQuicklisp(または ocicl, Ultralisp)
2ビルドシステムASDF(コンパイラに同梱)
1コンパイラ/ランタイムSBCL(または CCL、ECL、ABCL、LispWorks、Allegro CL)
0マシンmacOS / Linux / Windows

熟練者は「各レイヤーの出力が次へ流れる一連のパイプライン」と捉えます。
初心者は「6 層のツールと設定を管理する必要がある」ため、エラー発生時にどの層で失敗したかを特定することが重要です。


レイヤー 0:マシン

  • CPU アーキテクチャ(コンパイラバイナリの互換性)
  • OS(ツールのインストール場所、パス解決)
  • デフォルト CLI のフレーバー(GNU か BSD か)

例:

OSHomebrew ディレクトリ
Apple Silicon Mac
/opt/homebrew/
Intel Mac
/usr/local/
Linux (Homebrew)
~/.linuxbrew
または
/home/linuxbrew/.linuxbrew
Arch Linux
/usr/bin
(Pacman から)
WindowsSBCL は Program Files にインストール、MSYS2 パッケージは POSIX スタイルのパス

マシン環境を正しく把握しておくと、以降のレイヤーで「ファイルが見つからない」等の問題に対処しやすくなります。


レイヤー 1:コンパイラ/ランタイム ― SBCL

SBCL(Steel Bank Common Lisp)は最も広く使われているオープンソース実装です。

  • ソースをネイティブコードへコンパイルし、REPL を提供します。
  • 性能・メンテナンス性・エコシステム互換性のバランスが優れています。

他に CCL、ECL、ABCL、CLISP 等がありますが、SBCL が最も安定しています。
共同開発や本格プロジェクトでは 特定バージョンを固定(例:

sbcl 2.4.9
)すると一貫性が保てます。

商用実装(LispWorks, Allegro CL)はコンパイラ、IDE、デバッガーを統合しています。
本記事では主に無料/オープンソースの道筋を解説します。

重要な境界

Common Lisp のコードとコンパイラは境界が曖昧です。

  • マクロ はコンパイル時に実行され、結果として新たなコードが生成されます。
  • 条件/リスタートシステム により、デバッガー停止中でも関数を修正し、失敗点から再開できます。

つまり「書く・コンパイルする・実行する・修正する」が同一プロセス内で連続して起こります。


レイヤー 2:ビルドシステム ― ASDF

ASDF(Another System Definition Facility)は Common Lisp のビルドツールです。

  • .asd
    ファイルでソースファイル、ロード順序、依存関係を宣言します。
  • SBCL に同梱されており、ほとんどの場合手動インストールは不要。

ASDF は 全プロジェクトをグローバルに可視化 するため、プロジェクト単位の隔離(レイヤー 4)が必要になります。

  • ASDF の検索ディレクトリ:
    ~/.local/share/common-lisp/source/
    (XDG 標準)、
    ~/common-lisp/
    (ASDF 3.1.2 以降に追加)など。
  • Roswell を使用している場合は
    ~/.roswell/local-projects/
    が追加されます。

レイヤー 3:パッケージリポジトリ

Quicklisp

Common Lisp の中央リポジトリです。

  • ランタイムで
    (ql:quickload :alexandria)
    と呼ぶと、Quicklisp がライブラリをダウンロードし、ASDF が参照できる場所に配置してロードします。
  • Quicklisp は月次リリースで全パッケージが相互にビルド可能か検証しています。

使い方

  1. Roswell を使っている場合はセットアップ時に自動構成。
  2. SBCL を直接インストールした場合は Quicklisp のインストーラを手動で実行し、
    .sbclrc
    にロード行を追加。

注意点

  • グローバル性:全プロジェクトが同じライブラリバージョンを共有します。
  • Lisp 内部のツール:CLI ではなく REPL から呼び出す形です。
  • 月次更新:直近の修正は次回リリースまで反映されません。

Ultralisp / ocicl

  • Ultralisp は Quicklisp より頻繁に更新し、未収録ライブラリも含む。
  • ocicl は OCI 互換のアーティファクトを提供し、同時にパッケージ取得とプロジェクト隔離(レイヤー 4)を一括で行います。

レイヤー 4:プロジェクト単位の隔離 (任意)

グローバルな依存関係は再現性を損ねるため、プロジェクトごとにライブラリを分離します。
主なツール:

ツール特徴
Qlot
qlfile
で必要パッケージを列挙し、
.qlot/
ディレクトリにインストール。
qlot exec sbcl
でプロジェクト専用 Lisp を起動。
ociclレイヤー 3 と同時に隔離も提供。
CLPMリゾルバとランタイムを分離し、環境変数で連携。更新頻度は低いが構造はクリーン。

注意点

  • ASDF のデフォルト「全て可視」は、隔離ツールに対して制限をかける必要があります。
  • エディタの REPL 接続(レイヤー 5)は隔離ツール経由で起動する必要があります。

レイヤー 5:Swank Wire Protocol ― 「生きている」状態を扱う

Common Lisp は ファイルベース の開発ではなく、イメージベース(実行中の Lisp プロセス)で進めます。
Swank Wire Protocol がエディタと実行中プロセス間の双方向通信を可能にします。

サイド内容
サーバ側SWANK(または SLYNK)が Lisp イメージ内で動き、デバッガー・インスペクター・シンボル補完などを提供。
クライアント側エディタに組み込まれたプラグインが SWANK に接続し、ユーザーインターフェースを実装。

代表的なクライアント

  • Emacs: SLIME / SLY
  • Vim/Neovim: SLIMV, Vlime, Nvlime
  • VSCode: Alive
  • Pulsar: SLIMA
  • Lem: ネイティブに SWANK を組み込む

Swank とクライアントはペアで選択します。エディタ(レイヤー 6)を決めれば、プロトコルクライアントも自動的に選ばれます。


レイヤー 6:エディタ

Common Lisp の開発体験はエディタの選択に大きく左右されます。

  • Emacs + SLIME は「Gold Standard」。REPL、評価・コンパイル、デバッガー、ジャンプ・定義などが統合されています。
    • 学習曲線が高い点を除けば強力です。
  • Emacs + SLY は SLIME のフォークで、モダン化された UI と安定性を提供。
  • Vim/Neovim 用プラグイン(SLIMV, Vlime, Nvlime)は Swank への接続を可能にしますが、Emacs より深い統合は期待できません。
  • VSCode + Alive は LSP ベースで手軽ですが、デバッグ機能はまだ発展途上です。
  • Lem は Common Lisp で書かれたエディタで、Emacs に似たインターフェースを持ちますがコミュニティ規模は小さいです。
  • Pulsar + SLIMA は Atom の後継として、SLIME 互換の Swank クライアントを提供します。

エディタ選択時のポイント

  1. 学習曲線:Emacs を既に使っているなら SLIME/SLY が最適。
  2. 機能性:デバッグ・補完・インスペクションが重要なら Emacs / Vim 系統を検討。
  3. 統合度:Lisp だけでなく他言語も扱うなら VSCode + Alive、あるいは Lem。

なぜ複雑なのか ― そして「簡略化できるのか」

レイヤー構造はそれぞれ実際に解決した問題の結果です。

レイヤー解決する課題
1 SBCLLisp コードを実行可能にする
2 ASDFソースファイルのロード順序管理
3 Quicklispライブラリの自動取得・管理
4 Qlot / CLPMプロジェクト単位での依存隔離
5 Swank実行中プロセスとエディタ間の双方向通信
6 エディタユーザーインターフェースとしてのコード編集・デバッグ

DockerRoswell はこの複雑さを「一時停止」しますが、根本的な問題は残ります。

  • Docker は「状態を凍結」し、環境構築の壁を下げますが、自分でレイヤーを学ぶ機会を奪います。
  • Roswell は複数実装とパッケージ管理を統合しますが、エディタとの連携は別途設定が必要です。

まとめ

  • すべてのレイヤーを理解すると、何か問題が起きた時に「どこで失敗したのか」が直感的に分かります。
  • 実際に使うツールは選択肢が多いですが、基礎的な概念(レイヤー構造)を押さえておけば、初心者でもスムーズに環境構築できます。

インストールオプション(概要)

1. OS パッケージ + Quicklisp + エディタ

# macOS
brew install sbcl
  • Roswell が無い場合は Quicklisp を手動でセットアップ。
  • Emacs (SLIME/SLY) の設定例を Doom Emacs などに組み込むと即座に開発環境が整います。

2. Docker

docker run -it --rm sbcl:latest
  • コンテナ内で SBCL + Quicklisp + SLIME が事前構築。
  • 環境を学ぶ前段階として有効ですが、実際のプロジェクトではレイヤー構造を理解する機会が減ります。

3. 既存バージョンマネージャ(mise 等)

mise add sbcl 2.4.9
  • 複数言語の環境管理を統一できます。
  • SBCL のビルドに時間がかかる点は留意。

4. Roswell

ros install sbcl-bin/2.4.9
ros use sbcl-bin/2.4.9
ros run
  • Quicklisp、ASDF、ツールチェーンを自動構成。
  • ~/.roswell
    内にすべてが集約されます。

まとめ

Common Lisp の開発環境は多層で複雑ですが、それぞれのレイヤーが解決する課題を理解すれば、設定ミスやデバッグ時の混乱を最小限に抑えられます。
エディタ選択から Swank プロトコル、パッケージ管理まで「何を」「どこで」行うかを把握することで、初心者でも安心して Lisp を学び始めることができます。

ご質問や追加のフィードバックはお気軽にどうぞ。
Happy coding!

同じ日のほかのニュース

一覧に戻る →

2026/03/22 5:32

子ども保護をインターネットアクセス制御に変えるな。

## Japanese Translation: ** ``` ## Summary この記事は、年齢確認が成人向けコンテンツサイトを越えて、ヨーロッパ・米国・英国・オーストラリアなどの主流サービス(ソーシャルメディア、ゲーム、検索等)へと拡大していることを論じている。 規制当局は、OS が永続的に「年齢ステータス」を保持し、システムレベルのインターフェースで公開するよう求めており、これによりすべてのデバイスに適用される一般的なアイデンティティ層が作られる。Linux の systemd は既に年齢保証法への対応としてオプションの `birthDate` フィールドを追加していることから、OS 変更は規制によって駆動されていることが示されている。 成人サイトでの過去の施行は、ユーザーが VPN、借用アカウント、偽データでチェックを回避できたため失敗した。提案された OS レベルのアプローチは、コンテンツモデレーションと保護者責任を混同し、有害なコンテンツ問題を純粋に技術的なものとして扱うリスクがある。一度確立されれば、このアイデンティティ層は位置情報や国籍など他の属性へ拡張でき、規制当局が将来の恐慌時に再利用するゲートとなる可能性がある。 ユーザーにとって、新しいインフラストラクチャはアイデンティティチェック、メタデータログ、ベンダー間での摩擦を追加し、信頼できるデバイスや書類を持たない人々には特に厳しくなる。企業側では、子ども保護の責任がプラットフォーム・ブラウザ・アプリストア・OS ベンダー・アイデンティティ仲介者へと移転し、現地の親や教育者の判断力を侵食する。 著者は、コンテンツモデレーションはローカル(ブラウザ/デバイス/学校ネットワーク)に留め、保護者・教師との監督を維持し、OS はポリシー表面としてのみ使用すべきであり、普遍的な年齢放送層とならないようにすることを訴えている。規制は推奨システム、ダークパターン、依存性メトリクス、拡大を報酬化するビジネスモデルに焦点を当て、全体的なアイデンティティチェックの実施ではなく、これらを対象とすべきだ。 ```

2026/03/22 5:08

TinyBox – オフライン AI デバイス(120 B パラメータ)

## Japanese Translation: Tinycorpのフラッグシッププロジェクトは **Tinygrad** で、エレメントワイズ演算(Unary、Binary、Ternaryを含む)、ReduceOps、および MovementOps の3つのコア操作タイプを中心に構築された軽量ニューラルネットワークフレームワークです。SQRT、LOG2、ADD、MUL、WHERE、SUM、MAX、RESHAPE、PERMUTE、EXPAND などの一般的な数学関数をサポートし、コード内で畳み込みと行列乗算が隠れています。Tinygrad は既に Snapdragon 845 GPU 上で Openpilot モデルを実行するために使用されており、従来の SNPE スタックを置き換えるとともに ONNX サポート、トレーニング機能、注意メカニズム、および推論と逆伝搬の完全な自動微分を追加しています。 同社のフラッグシップハードウェア **Tinybox** は、赤・緑・黒・(近日発売予定)エクサの複数構成で提供されています。主要スペックは以下の通りです:FP16/FP32 加速 FLOPS が 778 TFLOPS / 3 086 TFLOPS(約 1 EXAFLOP)、最大 25 920 GB GPU RAM、GPU 帯域幅 1 244 TB/s、PCIe 5.0 x16 ファブリック、32 コア AMD EPYC/GENOA CPU、最大 23 040 GB システム RAM、480 TB RAID ディスク、53.2 TB/s スケールアウトネットワーク、電力オプションは 1.6 kW〜600 kW、Ubuntu 24.04 OS、12U または独立型ラックマウント フォームファクター。 価格は赤/緑モデルが $12 000、黒/ウェレックスボックスが $65 000 で、エクサモデルは 2027 年頃に約 $10 百万で発売予定です。Tinybox はディープラーニング分野で最高のパフォーマンス/ドル比を実現すると市場にアピールしており、MLPerf Training 4.0 ベンチマークでは価格が 10 倍高いシステムを上回っています。 注文は同社ウェブサイトから行い、支払後 1 週間以内に発送(サンディエゴでの受け取りまたは世界配送)が可能です。支払いは銀行振込のみで、W‑9 フォームはリクエスト時に提供できますが、購入後のカスタマイズは許可されていません。 Tinygrad は現在アルファ版ですが、来年第2四半期までに単一 NVIDIA GPU および Apple の M1 を上回ることを目指しており、推論とトレーニングの両方のワークロードに対して高性能で軽量な代替案としての可能性を示しています。

2026/03/22 9:30

**コメントをもとにしたハッカーニュース利用者のプロファイリング**

## Japanese Translation: Simon Willison(Django、Datasetteの共同開発者であり、Python Software Foundationボードに在籍する独立系ソフトウェア開発者)は、AlgoliaのHacker News APIとClaude大規模言語モデルを使用して自身のコメント履歴を収集・分析し、詳細な個人プロフィールを生成する方法を示しています。APIはCORSを有効にした状態で日付順にコメントをリストアップします。カスタムツール(2023年8月に構築)は最新の最大1,000件のコメントを取得し、Claudeで洗練されたコピー・トゥー・クリップボードボタンを提供します。ダンプデータをClaude Opus 4.6へ貼り付けると、モデルはオンライン活動の包括的なプロファイルを作成します。 Willisonのより広範なワークフロー―「エージェント工学」に根ざしたもの―では、iPhoneでClaude Codeを使用してウェブタスクをコーディングしながら通勤中に2〜3つの並列エージェントセッションを$200/月のClaude Maxプランで実行し、テスト駆動開発(`uv run pytest`)でそれらを安定化させています。彼はサンドボックス/セキュリティ(WebAssembly、Pyodide、Firecracker)、SQLite、uv & PyPIトリック、ブラウザ内のブラウザテスト(`v86`、WASM Linux)、ローカルLLM推論、およびコーディングエージェントを通じてGoを学習する実験に積極的です。彼は「プロンプトインジェクション」という概念を創出し、半年以内にヘッドラインを揺さぶる攻撃の可能性を警告するとともに、OpenClaw/Clawdbotに関するリスクも指摘しています。 Willisonはsimonwillison.net/guidesでエージェント工学に関するガイドを公開予定であり、自身の手法がLLMをプログラマの代替ではなく補完として活用し、将来の開発者ワークフローやAI支援コーディングのセキュリティ実践、責任あるAIに関する議論を形成できることを示すことを期待しています。個人的なタッチとしては、彼のエネルギッシュで対立的なスタイル、透明性の高いバイアス、そして自虐的な「ペリカンベンチマーク」SVGテストがあり、ニッチな博物館、新西蘭のカカポオウム、外国料理、そしてカリフォルニア州ハーフムーン・ベイでの園芸を楽しんでいます。

共通のLisp開発ツール | そっか~ニュース