Clojure公式ドキュメンタリー
(clojure.org)- Clojureがグローバルなフィンテック企業のインフラ言語へと成長した過程を扱う、1時間の公式ドキュメンタリー映像を公開
- Clojureの独特な起源、価値中心のコミュニティ、ソフトウェアの考え方に与えた影響をたどって紹介
- YouTubeリンク: あるプログラマのペットプロジェクトが、ソフトウェアに対する私たちの考え方をどのように変えたのか
- ショーノートには、Clojureの基盤となった中核論文、書籍、講演、企業事例が整理されている
- Clojure、ClojureScript、ClojureCLRなどのランタイムと、Babashka、Jank、ClojureDartのような拡張プロジェクトもあわせて紹介
- 公式ページは、AIツール、データサイエンス、エディタ統合、コミュニティチャネルまで含むClojureエコシステムの総合ハブとして機能
ドキュメンタリー概要
- Clojureドキュメンタリーは、Rich Hickeyの2年間のサバティカルと、ひとつの頑固なアイデアから始まり、世界最大級のフィンテック企業のひとつのエンジニアリングスタックを支えるまでに至った過程を扱う
- Rich Hickey、Alex Miller、Stuart Hallowayら主要人物が登場し、Clojureの非伝統的な起源、価値中心のコミュニティ、そしてソフトウェアの考え方に与えた影響を探る
- ドキュメンタリーはNubankの支援で制作された
ショーノート
-
基礎研究論文
- Out of the Tarpit (2006) — Ben Moseley & Peter Marks、ソフトウェアにおける可変状態が偶発的複雑性の主因であると指摘
- Ideal Hash Trees — Phil Bagwell、Hash Array Mapped Tries (HAMTs)の研究により、Clojureの永続データ構造へ直接的な着想を提供
- Composable Memory Transactions (2005) — Tim Harris ほか、**ソフトウェアトランザクショナルメモリ(STM)**の概念を提示し、Clojureの並行性モデルに影響
- Paper Bibliography — Rich HickeyがClojure開発時に参考にした論文一覧。Michael Fogusが整理
-
影響力のある書籍
- On Lisp — Paul Graham、先進的なLisp技法を扱う代表的著作で、オンラインで無料提供
- Programming Clojure (4th ed.) — Alex Miller、Stuart Halloway、Aaron Bedraの共著。初版はClojure 1.0とともに刊行
- The Joy of Clojure — Michael Fogus & Chris Houser 著
-
Rich Hickeyの主要講演
- Simple Made Easy (2011) — "simple"と"easy"の違いを定義した代表的講演
- Clojure at LispNYC (2007) — Clojureの最初の公開発表
- Are We There Yet? (2009) — Clojureの状態モデルと、プログラミングにおける時間の概念を分析
- Hammock Driven Development (2010) — コードを書く前に問題を深く考えるアプローチを強調
- The Value of Values (2012) — **不変値(immutable values)**の重要性を強調
- Writing Datomic in Clojure (2012) — DatomicをClojureで書いた理由を説明
- Effective Programs - 10 Years of Clojure (2017) — Clojureの10年間の発展と、実問題の解決を中心にした機能優先順位を振り返る
- Talk Transcripts — Rich Hickeyとコミュニティ講演の記録アーカイブ
- Rich Hickey Talks — Richの講演動画をまとめた再生リスト
-
Paul Grahamのエッセイ
- Beating the Averages、Revenge of the Nerds、その他のエッセイ集
-
主要企業とプロジェクト
- Cognitect — 長年にわたりClojureを管理してきたコンサルティング会社
- Nubank — 世界最大の独立系デジタル銀行で、ClojureとDatomicにより中核インフラを運用。2020年にCognitectを買収後、Clojure開発を主導
- Datomic — **不変の事実(immutable facts)**に基づく分散データベース。Rich HickeyとCognitectが設計
-
コミュニティとアーカイブ資料
- Java.next Blog Series (2008) — JVM言語の動向を扱うStuart Hallowayのブログシリーズ
- Clojure IRC Log Archive — 初期Clojure IRCチャンネルの保存記録
- Clojure Etiquette — Richのメーリングリスト投稿に由来するコミュニティ礼儀ガイドライン
Clojureの方言とランタイム
-
中核
- Clojure — JVM上で動作。公式スタートガイドと無料入門書 Brave Clojure を提供
- ClojureScript — JavaScriptへコンパイルされ、Reagent、Re-frameなどのフロントエンドライブラリをサポート
- ClojureCLR — .NET CLR上で動作するClojure
-
拡張
- Babashka — JVM起動時間なしの高速スクリプティングをサポート
- Jank — LLVMを対象とするネイティブコンパイラ
- ClojureDart — Flutterベースのモバイルアプリ開発向け
- Squint / Cherry — ESモジュールへコンパイルされるClojureScript派生
- Other Clojure-like projects — その他の類似プロジェクト一覧を提供
-
データサイエンス
- libpython-clj — ClojureからNumPy、pandas、scikit-learnなどのPythonライブラリを直接呼び出し
- Noj — SciClojが開発したClojureネイティブのデータサイエンスツールキット。データフレーム、可視化、機械学習を統合
- Tablecloth — Python連携とClojureデータフレームを組み合わせる
-
ClojureとAI
- ECA (Editor Code Assistant) — コード編集支援ツール
- Backseat Driver — Copilot向けClojureツール
- ClojureMCP — Claude、Codex、GeminiなどのAIアシスタントとREPLを接続するMCPサーバー
- MCP-nREPL — Babashkaベースの最小MCPサーバーで、コーディングエージェントにnREPLアクセスを提供
- clojure-mcp-light — LLMコーディングアシスタント向け軽量CLIツール
- #ai-assisted-coding (Clojurians Slack) — AIとClojure開発に関する活発なコミュニティチャネル
はじめ方
- 全体を体験 — macOS、Linux、Windows向けのインストール動画を含む公式ガイドを提供。VS CodeではCalvaを使用
- 最短ルート — Babashkaをインストールすれば即座にスクリプティング可能。JVM設定は不要
- Web/フロントエンド — ClojureScript + Shadow CLJSで開始
- モバイルアプリ — ClojureDartでFlutterアプリを開発
- Pythonユーザー — libpython-cljでPythonライブラリを直接呼び出し
- エディタ — CalvaはVS CodeでREPL、構造的編集、**AI統合(Backseat Driver)**をサポート。エディタガイドを参照
用語集
- Lisp — 括弧で囲まれた入れ子リストの形でコードを表現する言語系統で、ClojureはLispの方言
- REPL — Read-Eval-Print Loop。式を読み、評価し、結果を出力する対話型セッション
- 関数型プログラミング — 可変状態と副作用を最小化し、関数中心で構成するプログラミング手法
- 値(Value) — 生成後に変更されないデータ。Clojureは基本的に不変値を使う
- 永続データ構造(Persistent Data Structure) — 変更時に以前のバージョンを保持するコレクション。ここでの"persistent"はバージョン保持の意味
- 偶発的複雑性(Accidental Complexity) — 問題そのものではなく、ツールや設計選択によって生じる複雑さ
- STM (Software Transactional Memory) — ロックの代わりにトランザクションで共有状態の変更を調整する並行性モデル
- ホスト型言語(Hosted Language) — 独自ランタイムではなく既存プラットフォーム上で動作する言語。ClojureはJVM、ClojureScriptはJS、ClojureCLRは.NET上で動く
Clojureのフォローとコミュニティ
- YouTube、Reddit、Slack、LinkedInなどの公式チャネルを運営
- Clojure/Conj Conference 2026 — 2026年9月30日から10月2日まで、米国ノースカロライナ州シャーロットで開催予定
6件のコメント
Clojureが登場してからかなり長い年月が経っていますが、ここにきてまたClojureの話題が出てくるのはなぜなのか、気になります。
Clojureが出た初期に、ある本をレビューしたことがあります。その後、それを使おうと試みた企業をいくつか見ましたが、企業で使うには簡単ではない、というのが結論でした。そしてこのまま埋もれていくのかと思っていましたが、また話題になる理由は何なのだろうと思います。
私はJavaを初期から長年使ってきましたが、JVMはいまでも、大企業ですでに開発された多くのソフトウェアがJavaであること、(アメリカの場合)インド系の人材の多くがJavaを扱うこと、高校から大学までJavaを教えていることなどの理由で、依然として広く使われています。ただ、私見では今の時代にはもはや合っていないと思います。Lispは好きですが、かなりマイナーな言語であり、しかも衰えつつあるJVM方式が、いまのAI時代に再び取り上げられるにあたって、どの点が利点として再評価されているのか、上の記事からは見いだせませんでした。
関数型プログラミング言語をきちんと学んだことがないので、Clojureから始めてみようかと思っているのですが、どのように学習していけばよいでしょうか? 開発者の皆さんのアドバイスをぜひお願いします。
私の経験や多くの人の結論では、関数型言語は純粋関数型言語で学ぶべきだ、というのが定石でした。
関数型言語が注目され始めた当時や、大きな関心を集めていた時期に語られていた話で、私も共感していました。私は Erlang が出た初期にそれで学びましたが、当時はかなり衝撃的で驚くような体験でした。
では、純粋関数型プログラミング言語はどのように学習されましたか? 私はこれまでプログラミング言語(C、Go、Python など)を技術書+サイドプロジェクトで学習してきたのですが、関数型プログラミング言語もこのような学習方針で進めて問題ないでしょうか?
人それぞれだとは思いますが、コンピュータ関連の学習はおっしゃるような方法で進めることが多いのではないでしょうか。最近は動画で学ぶという選択肢もありますし、自分に合った学習方法でやるべきでしょう。
Hacker News の意見
Clojure は自分のキャリアで起きた最高の出来事だった
この言語のおかげで年収が2倍になり、より安定した業界へ転職できた
Heart of Clojure カンファレンスの包摂的な雰囲気は本当に驚くほどだった。今もコミュニティは活発で、特に低レベル作業向けの Clojure 方言を作っているJank コミュニティの情熱が印象的だ
問題は、ほとんどの企業が言語の安定性や本質よりも開発者の入れ替えやすさを重視していることだ。結局は品質が落ち、AI に置き換えようとして自ら会社を壊していく悪循環を生む
商用で Clojure を使っていて驚いたのは、多くの開発者が言語の哲学や Rich Hickey の講演、REPL の使い方すら知らないことだった。それでも彼らが Clojure のコードベースを管理する立場にいるのは疑問だった
自分が Clojure に移った理由はまさに短いフィードバックループだったので、それを活用しないならなぜこの言語を使うのか分からない
Clojure のおかげで、この10年間一人創業者として持続可能なビジネスを運営できた
クライアントとサーバーがビジネスロジックの大半を共有するので、複雑なコードベースも管理しやすかった
何より言語と環境が安定性重視なので、他の言語のように数年ごとに足元が揺らぐことがなかった
Clojure は新しくも派手でもないが、長期的に信頼できる伴走者だ
昔は毎日 Clojure でコードを書いていて、Clojure/Conj で Rich Hickey と夕食を共にしたこともある
最初のスタートアップもすべて Clojure で作り、AWS にまだサービスがほとんどなかった時代に Clojure を JS にコンパイルして Lambda で動かしていた初期の実験者だった
今でも関連動画を見るのが楽しみだ
2013年から Clojure を使っていて、自分の人生に非常に良い影響を与えてくれた言語だ
自分はやや非典型的なユーザーで、芸術作品の大半を Clojure で作ってきた
スタートアップを運営していたときも、Clojure のおかげでバーンアウトを避けられた
コミュニティ活動も大きな喜びで、多くの人たちの献身に感謝している
Clojure は素晴らしい言語でありエコシステムだ
初期には Rich のプロジェクトに寄付もしたし、数年間は Clojure 開発で収入を得ていた
今は以前ほど頻繁には使わないが、2時間前にも昔の Clojure 本のサンプルを更新しながら楽しんでいた
また、Clojure はML/AI アプリケーションに向いていると思うか、Python との interop も良いのになぜもっと広く使われないのか気になる
JVM 上では、Clojure は自分が最も好きな代替言語だ
Lisp の伝統を受け継ぎつつ、JVM を作り直すといった大げさな話ではなく、ホストプラットフォームを受け入れる哲学が魅力的だ
Zig も似たアプローチを取っていて、こうした統合の哲学こそが採用率と実用性を高める重要なポイントだと感じる
本当に素晴らしい。ただ、borkdude が含まれていないのは残念だ
jwr の「stable long-term companion」という表現が心に残った
自分が働いた会社のうち新しさばかり追いかけていたところは、結局マイグレーションにより多くの時間を費やしていた
安定性は退屈に聞こえるかもしれないが、小さなチームが長く生き残るための唯一の方法だ
Clojure は好んで使っていたが、自分の仕事の大半はC 言語との相互運用を必要とするので、メイン言語にするのは難しかった
Datomic が今やライセンス無料だとは知らなかった。以前はコストが高すぎて使わなかったが、興味深い
例: Datalevin, Datahike, Asami
XTDB もあるが、Datalog を捨てて別の方向へ進んでいる
比較サイトもある: Clojurelog(少し古い)