ハクソク

世界を動かす技術を、日本語で。

公式Clojureドキュメンタリーページ - 動画、ショーノート、リンク付き

概要

ClojureやLispに関する主要な用語とその定義を簡潔に解説。
プログラミングスタイルやデータ構造、開発ツールについて説明。
Clojure特有の概念や利点に着目。
用語ごとに短く分かりやすく要点を整理。
初心者にも理解しやすい構成。

ClojureとLisp関連用語解説

  • Lisp

    • プログラミング言語ファミリー
    • コードを入れ子のリスト(括弧で囲む)で表現
    • ClojureはLispの方言
  • REPL (Read-Eval-Print Loop)

    • 式を読み取り・評価・結果出力を繰り返す対話型セッション
    • Clojure開発者がプログラム構築・テストに活用
  • 関数型プログラミング

    • 関数中心のプログラミングスタイル
    • 受け取った値を返し、可変状態や副作用を最小化
  • 値 (Value)

    • 作成後に変化しないデータ(数値・文字列・永続コレクションなど)
    • Clojureは値がデフォルト、必要な場合のみ明示的に可変状態を選択
  • 永続データ構造 (Persistent data structure)

    • 変更時に前バージョンを保持するコレクション
    • 要素追加で新しいコレクションを返し、元は不変
    • 「永続」はバージョン保持の意味(ディスク保存ではない)
  • 偶発的複雑性 (Accidental complexity)

    • ツールや設計選択によるソフトウェアの難しさ
    • 問題自体の本質的複雑性(essential/incidental complexity)と対比
  • STM (Software Transactional Memory)

    • トランザクションで共有状態変更を調整する並行処理モデル
    • ロックの代わりにトランザクションを利用
  • ホステッド言語 (Hosted language)

    • 既存プラットフォーム上で動作する言語
    • ClojureはJVM上、ClojureScriptはJavaScriptにコンパイル、ClojureCLRは**.NET CLR**をターゲット

Hackerたちの意見

前の人生では、毎日Clojureを書いていて、Clojure/Conjに参加したことや、ディナーでRich Hickeyや他のClojureの偉人たちと隣に座ったことを懐かしく思い出します。最初のスタートアップは全部Clojureでした。AWSにはまだ十数個の製品しかなくて、私たちがClojureをJSにコンパイルして、Lambdaで本番運用した最初のチームだったと思います(当時の唯一のランタイムはNode.js 0.10でした)。とにかく、これを見るのが待ちきれません!
今はどう感じてる?全体的に見て。
今は何を使ってるの?Clojureについてはどう思ってる?
エージェント的なコーディングの現実が、ほぼすべての難解な言語をみんなに開放した今、Clojureはまだ relevan tなのかな?昔はフィンテックアプリを書くのにClojureを使ってたけど、今でも他の言語と比べて使い道があるのかはわからないな。
Clojureはおそらく、最も難解ではない言語だと思う。関数を呼び出して、値を得るだけ。
Clojureは不変性とREPLのおかげで、エージェント的なコーディングの後でもますます relevan tだと思う。エージェント的なコーディングの2つの大きな問題は、コンテキストが無限に成長することと、エージェントが自分のやっていることについて迅速にフィードバックを得られないことだ。メインストリームの言語はどちらも失敗しているけど、Clojureはエージェントを軌道に乗せるのにぴったりだった。もっと詳しく書いたので、興味があればこちらを見てね:https://yogthos.net/posts/2026-02-25-ai-at-scale.html
モデルコーディングに関して私が抱えている主な問題の一つは、フィードバックループが生成からかなり遅れていること。Pythonではフックが動いている時にコミットの境界で出てくるか、モデルがPRをプッシュしたいと思う時点で出てくる。REPLは生成中にそれを可能にして、他の安全対策も大いに役立つ。不変データ、STM、Clojureの開発者にスーパーパワーを与えたすべての機能が、今ではモデルにも同じことをしているんだ。
Clojureのエラーメッセージはひどいけど、エージェントがそれをうまく処理してくれるんだ。Clojureは、今まで見た中で最も濃密なコードを生成できるから、手動のコードレビューはボトルネックになりがち。レベルアップが目的じゃない限りね。
実際、AIツールを書くのに最適な基盤だと思ってる。俺のカスタムMCPは全部Clojure(bb)で書いてるんだ。エージェントをREPLに接続して、自由にさせると、いいものができるよ。それに、Clojureはトークン効率が非常に良いプログラミング言語の一つだね。
nREPL機能とAIエージェントが接続できるようになったことで、Clojureはこのユースケースに最も適した言語かもしれないね。
すごい!NuBankが最初にDatomicを発見したなんて知らなかったし、それがClojureに導いたんだね。1億人以上の顧客を持って、最終的にはCognitectを買収したんだ。デイビッド・ノーレン(通称「swanodette」)がドキュメンタリーにも出ているのを見るのは嬉しいね。おまけに、デイビッド・ノーレンがClojure/ClojureScriptとReactの代わりにDOMモーフィングを使うことについての最近のトークもあるよ。全部見るのは大変なら、23分15秒から25分15秒までの2分だけでも見てみて。ブラウザのCPUとRAMリソースを全部吸い取る巨大なものと、13KbのJavaScript + WebコンポーネントとDOMモーフィングを比較しているよ:https://youtu.be/BeE00vGC36E 彼のトークはEmacsから発表されてて、それもいいね。
今もそうかはわからないけど、昔のClojureのカンファレンスやミートアップ、職場ではEmacsが前提条件で、みんな使ってた(しかも楽しかった)。
Emacsはその歴史から、Lispコミュニティと密接な関係があるから、自然と多くの人が使ってるね。でも、LispworksやAllegro、Racketを使いたい俺としては、IntelliJの上にCursiveもあるよ。ただ、XEmacsは俺の最初のUNIXの10年間、適切な代替がなかったからIDEの代わりに使ってたから、Emacsやその派生物が何ができるかは知ってるよ。だから、「でも」とかの返事は必要ないよ。
Datomicが理由で、2014年にClojureをメインの言語に切り替えたんだ。賭けだったけど、結局は成功したよ。nREPLを使った超高速なイテレーションとClojureのトークン効率のおかげで、ClojureはAIファーストの言語として最高だと思ってる。
Datomicがライセンス料がかからないなんて知らなかった!昔はコストが高すぎて使えなかったから、興味深いね。
素晴らしい!ただ、追加してほしかったのはborkdudeかな。
そうだね、ヨーロッパの存在感がないのは残念(誰か見逃したかな)。あっちにはClojureがたくさんあるよ。Metosin、Juxt、Borkent、Gaiwan(Arne)、Flexiana、Peter Strömberg(Calva)、Dustin Getz(hyperfiddle/electric)、Christophe Grand(ClojureDart)、Bojidar(CIDER)、Renzo、他にもたくさん。
ClojureはJVM上での俺のお気に入りの代替言語だよ。Lispが何十年も提供してきたものを超えて、ホストプラットフォームを受け入れる哲学があるから、次のJVMがそれで書き直されるなんて話をする他の言語とは違って、Clojureの人たちといるのがもっと魅力的なんだ。
若い頃はこれがちょっとイライラしてたんだ。どっちも知らなかったから、負担に感じてた。ツールも今ほど良くなかったしね。でも、これがClojureがニッチな言語として重要で広く使われるようになった主な理由の一つだってことは間違いないよ。シームレスな統合(あるいはさらに改善された統合)はすごく役立つ。これと同じアプローチを取ってる言語はZigもあるね。私の直感では、ここでもユニークなセールスポイントになって、採用や日常的な使いやすさに役立つと思う。
2013年からClojureを使ってるけど、私の人生にとってすごくポジティブな影響を与えてくれたよ。私はかなり型破りな使い方をしていて、ほとんどのアート作品は何らかの形でClojureを使って作ってる。でも、業界でも働いてたことがあって、そこでClojureのおかげで何度も燃え尽きずに済んだと思う。特に、半分Clojureで作ったスタートアップを運営してる時はね :) コミュニティに参加できたのも特権だったよ。Clojure westからConj、オンラインのディスカッションまで。何十年もこれを可能にしてくれたみんなに大感謝だね。