Clojure/ClojureScript関連リンク集

Clojure/ClojureScript入門者の方の学習の参考に(もしくは布教のために)、開発環境からコミュニティまでの基本的な情報をまとめてみました。

「参考」として挙げているのは個人的にオススメのブログ記事/スライドなどです。

随時更新していますが、コメントや編集リクエスト、[Twitter](https://twitter.com/lagenorhynque)などで良さそうな情報源を教えていただければ反映していきます。

# Clojure公式

- [Clojure](https://clojure.org/)
    - 日本語版: [clojure-site-ja](https://japan-clojurians.github.io/clojure-site-ja/)
    - [GitHub](https://github.com/clojure/clojure)
    - 参考
        - [Rich Already Answered That!](https://gist.github.com/reborg/dc8b0c96c397a56668905e2767fd697f): Clojureの設計判断についてのRich Hickeyの発言まとめ
        - [matthiasn/talk-transcripts: Transcripts of Clojure-related talks](https://github.com/matthiasn/talk-transcripts): Clojure関連の有名な発表のトランスクリプト
        - ["Simple Made Easy" Made Easy | ドクセル](https://www.docswell.com/s/lagenorhynque/57VRMG-simple-made-easy-made-easy)
            - ["simple"と"easy"はどう違う？　Simple Made Easyを解説 Part1 - ログミーTech](https://logmi.jp/tech/articles/321962)
            - [Clojureの設計に見る"simple"という考え方　Simple Made Easyを解説 Part2 - ログミーTech](https://logmi.jp/tech/articles/321965)
        - [Clojureと「Simple Made Easy」 - 紙箱](https://boxofpapers.hatenablog.com/entry/simple_made_easy)
        - [シンプルさの必要性 | eed3si9n](http://eed3si9n.com/ja/simplicity-matters): "Simple Made Easy"と同様の趣旨の発表"Simplicity Matters"の日本語訳
        - [Clojureの世界観 - 紙箱](https://boxofpapers.hatenablog.com/entry/2017/04/10/154333)
        - [キメるClojure高速開発 - Qiita](https://qiita.com/223kazuki/items/afb6341cf73a9173fda0)
        - [Clojureの世界と実際のWeb開発](https://www.slideshare.net/tsutomuyano/clojureweb)
        - [『データ指向プログラミング』](https://www.shoeisha.co.jp/book/detail/9784798179797): Clojure言語/コミュニティでの基本的な考え方を「データ指向プログラミング」(data-oriented programming)としてClojure言語を用いずJavaScriptコードとともに解説している書籍
            - [新刊『データ指向プログラミング』から「はじめに」を公開！　オブジェクト指向との対比も語られる|CodeZine（コードジン）](https://codezine.jp/article/detail/17502)
    - cf. [ClojureCLR](https://github.com/clojure/clojure-clr)
- [ClojureScript](https://clojurescript.org/)
    - [GitHub](https://github.com/clojure/clojurescript)
    - 参考
        - [入門ClojureScript](https://www.slideshare.net/sohta/clojurescript-49261407)
        - [ClojureScript: The Good Parts | ドクセル](https://www.docswell.com/s/lagenorhynque/56YV4L-clojurescript-the-good-parts)

# 開発環境

## ビルドツール

- [Leiningen](https://leiningen.org/) (`lein` コマンド): 定番のビルドツール(デファクトスタンダード)
- [Boot](https://boot-clj.github.io/) (`boot` コマンド): 後発のビルドツール(特にClojureScript開発で使われることがある)
- [Clojure CLI](https://clojure.org/guides/deps_and_cli) (`clj` & `clojure` コマンド): 公式提供のCLIツール([関連ライブラリ](https://github.com/clojure/tools.deps.alpha/wiki/Tools)を組み合わせることでビルドツールとしても利用可能)
    - [Clojure - Deps and CLI](https://clojure.org/reference/deps_and_cli)
    - 参考
        - [いまどきのClojureのはじめかた - 紙箱](https://boxofpapers.hatenablog.com/entry/2018/10/06/210602)
        - [clojure CLI (tools.deps)を使いやすくするためのTips - Qiita](https://qiita.com/k2nakamura/items/03eed17a06a4b963dac5)
- cf. [rebel-readline](https://github.com/bhauman/rebel-readline): Leiningen, Boot, Clojure CLIから利用可能なREPL機能強化ツール
    - 参考
        - [Boost your productivity with Clojure REPL | ドクセル](https://www.docswell.com/s/lagenorhynque/KNR13G-boost-your-productivity-with-clojure-repl)
- ClojureScriptビルド/ホットリロードライブラリ
    - [shadow-cljs](https://github.com/thheller/shadow-cljs)
    - [Figwheel](https://github.com/bhauman/lein-figwheel)
    - [Figwheel Main](https://github.com/bhauman/figwheel-main): Figwheelの後継ツール
- セルフホスト/スタンドアローンClojureScript REPL
    - [Planck](https://github.com/planck-repl/planck)
    - [Calvin](https://github.com/eginez/calvin): Lumo, Planckと連携するJVM非依存のビルドツール
- Clojureのサブセットに対するスクリプト実行環境(起動が極めて高速)
    - [babashka](https://github.com/babashka/babashka)
        - [sci](https://github.com/babashka/sci)
        - cf. [nbb](https://github.com/babashka/nbb)
    - [Joker](https://github.com/candid82/joker)
    - 参考
        - [Clojure Start Time in 2019](https://stuartsierra.com/2019/12/21/clojure-start-time-in-2019)

## エディタプラグイン

### Clojure開発全般

- [Clojure開発環境での基本操作まとめ: Spacemacs, IntelliJ IDEA (Cursive), VS Code (Calva), Vim (vim-iced), rebel-readline - Qiita](https://qiita.com/lagenorhynque/items/0b52575e90bad563e4bd)

- [Clojure開発環境でのリンターclj-kondo, Joker設定まとめ: Spacemacs, IntelliJ IDEA (Cursive), VS Code (Calva), Vim (vim-iced) - Qiita](https://qiita.com/lagenorhynque/items/dd9d6a1d97cbea738bc0)

- [Clojure開発環境でのフォーマッターcljstyle設定まとめ: Spacemacs, IntelliJ IDEA (Cursive), VS Code (Calva), Vim (vim-iced) - Qiita](https://qiita.com/lagenorhynque/items/a5d83b4a36a1cf1cacbe)

- [clojure-lsp](https://clojure-lsp.io/): [LSP](https://microsoft.github.io/language-server-protocol/)に対応している任意のエディタで利用可能なClojureのlanguage server
    - [GitHub](https://github.com/clojure-lsp/clojure-lsp)

- Emacs/Spacemacs
    - [CIDER](https://github.com/clojure-emacs/cider)
    - [clojure-mode](https://github.com/clojure-emacs/clojure-mode)
    - [clj-refactor.el](https://github.com/clojure-emacs/clj-refactor.el)
    - 参考
        - [Clojure 初心者のための Emacs 設定作りました - Qiita](https://qiita.com/ayato_p/items/10f61995cdc21c2d1927)
        - [新: Emacs を使うモダンな Clojure 開発環境 - Qiita](https://qiita.com/ayato_p/items/8bac8229cf8de93df887)
    - [Spacemacs](http://spacemacs.org): 便利にカスタマイズされたEmacs。デフォルトで[Evil](https://github.com/emacs-evil/evil)によるVimキーバインドサポートも手厚く、各種言語向けの設定一式を"layer"として追加することで素早く開発を始められる
        - [Clojure layer (developブランチ)](https://github.com/syl20bnr/spacemacs/tree/develop/layers/+lang/clojure) cf. [masterブランチ](https://github.com/syl20bnr/spacemacs/tree/master/layers/+lang/clojure)
        - 参考
            - [Clojure development with Spacemacs & Cider](https://practicalli.github.io/spacemacs/)
            - [Spacemacs入門 - 二畳半堂](https://blog.nijohando.jp/post/beginning-spacemacs/)
            - [SpacemacsでClojure(基本編) - 二畳半堂](https://blog.nijohando.jp/post/spacemacs-clojure/)
            - [SpacemacsでClojureを書くために僕が行った設定 - ayato-p](https://scrapbox.io/ayato-p/Spacemacs%E3%81%A7Clojure%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AB%E5%83%95%E3%81%8C%E8%A1%8C%E3%81%A3%E3%81%9F%E8%A8%AD%E5%AE%9A)

- IntelliJ IDEA
    - [Cursive](https://cursive-ide.com/)
    - 参考
        - [IntelliJ IDEA と Cursive で始める — Clojure の日本語ガイド](https://ayato-p.github.io/clojure-beginner/getting_started/intellij_with_cursive.html)

- Visual Studio Code
    - [Calva: Clojure & Clojurescript Interactive Programming](https://marketplace.visualstudio.com/items?itemName=betterthantomorrow.calva)
        - 参考
            - [VSCodeの拡張：CalvaでClojureの開発環境を整える - Qiita](https://qiita.com/frost_star/items/4475acaeff84badbf3f7)

- Vim
    - [vim-iced](https://github.com/liquidz/vim-iced)
        - 参考
            - [Vim で始める Clojure 開発 - TOYOKUMO Tech Blog](https://tech.toyokumo.co.jp/entry/vim-clojure-development)
    - [fireplace.vim](https://github.com/tpope/vim-fireplace)
    - [acid.nvim](https://github.com/clojure-vim/acid.nvim)

### Lisp編集支援

Common Lisp, Scheme, Clojure, Emacs LispなどLisp共通で利用可能なLisp (S式)編集支援ツール。

Emacsを使う大多数のLisperは以下のどれかのプラグインを利用していると思われる。

#### [ParEdit](https://www.emacswiki.org/emacs/ParEdit)

括弧とインデントを半自動で調整する、最も有名なプラグイン。

キーバインドを覚えるまで操作が難しいため初期の学習コストは高めだが、慣れると非常に効率良くS式を編集できる。

Emacs以外の主要なエディタでもプラグインが提供されていることがある。

- 参考
    - [Lispってどう書くの? - Qiita](http://qiita.com/xorphitus/items/64f739e2594caba6eb4d): ParEditによるLispの書き方紹介
    - [ParEdit チュートリアル](http://www.daregada.sakuraweb.com/paredit_tutorial_ja.html): 最低限覚えておきたい操作のチュートリアル
    - [The Animated Guide to Paredit](http://danmidwood.com/content/2014/11/21/animated-paredit.html): アニメーション付きの操作ガイド
    - [Paredit Cheatsheet](https://www.emacswiki.org/emacs/PareditCheatsheet): チートシート
    - [Practical REPL-driven Development with Clojure | ドクセル (pp. 44-60)](https://www.docswell.com/s/lagenorhynque/Z98VYY-practical-repl-driven-development-with-clojure#p44): ParEditの操作イメージ(Spacemacsの例)

#### [Parinfer](http://shaunlebron.github.io/parinfer/)

インデント編集時(*Indent* mode)には括弧を、括弧編集時(*Paren* mode)にはインデントを自動調整する、比較的新しいプラグイン。

インデントがズレると対応する括弧の数も変わってしまうため独特の操作感に慣れる必要はあるが、操作自体は非常にシンプルなので学習コストは低い。

Emacs以外の主要なエディタでもプラグインが提供されていることが多い。

- 参考
    - [Practical REPL-driven Development with Clojure | ドクセル (pp. 27-43)](https://www.docswell.com/s/lagenorhynque/Z98VYY-practical-repl-driven-development-with-clojure#p27): Parinferの操作イメージ(Atomの例)

#### [Smartparens](https://github.com/Fuco1/smartparens)

ParEditに代わる新しい括弧編集支援プラグイン。

ParEdit互換のキーバインドに設定することもできる。

### その他のプラグイン

#### [rainbow-delimiters](https://www.emacswiki.org/emacs/RainbowDelimiters)

ネストした括弧を対応するもの同士同じ色で順に色を変えて虹のように表示してくれるプラグイン。

稀に括弧の対応関係を目視する必要がある場合(※普段は上述のLisp編集支援プラグインに任せておけばそれほど困らない)に視覚的なヒントになるため便利。

Emacs以外の主要なエディタでも同種のプラグインが提供されていることがある。

#### [aggressive-indent-mode](https://github.com/Malabarba/aggressive-indent-mode)

Emacsで利用可能な、インデントの自動調整機能を強化するプラグイン。

## REPL駆動開発

Clojure/Lispの力を最大限に引き出すために、Clojurian/LisperはエディタとREPLをシームレスに連携させて高速にフィードバックを得ながら開発を進める「REPL駆動開発」(REPL-driven development)という開発スタイルを実践している。

- 参考
    - [REPL Driven Programming - tyano's Tech Log](http://tyano.shelfinc.com/post/48110396231/repl-driven-programming)
    - [Re:REPL-Driven Development // Speaker Deck](https://speakerdeck.com/ayato0211/re-repl-driven-development)
    - [ClojureでREPL駆動開発を始めよう - Qiita](https://qiita.com/lagenorhynque/items/d68934546fa7283bad9d)
    - [ClojureでRDDとTDDのハイブリッドな開発スタイルを実践しよう](https://zenn.dev/lagenorhynque/articles/742cf1a0b0a850)
        - [TDD with RDD: Clojure/LispのREPLで変わる開発体験 | ドクセル](https://www.docswell.com/s/lagenorhynque/KWWL71-tdd-with-rdd-changed-developer-experience-through-clojure-lisp-repls)
    - [The Ultimate Guide To Clojure REPLs](https://lambdaisland.com/guides/clojure-repls): ClojureのREPLについての詳細な解説
    - [Val on Programming: What makes a good REPL?](http://vvvvalvalval.github.io/posts/what-makes-a-good-repl.html)
        - cf. [Clojure REPL: The Good Parts | ドクセル](https://www.docswell.com/s/lagenorhynque/ZQ8RJR-clojure-repl-the-good-parts)

# 学習案内

## 書籍

- [Clojure - Books](https://clojure.org/community/books)

### 入門者向け

- [*Living Clojure*](https://www.oreilly.com/library/view/living-clojure/9781491909270/): 少ないページ数で簡潔にまとまった入門書
- [*Programming Clojure, Third Edition*](https://pragprog.com/titles/shcloj3/programming-clojure-third-edition/): Clojure 1.9の内容をカバーした最新の定番入門書
- *Programming Clojure (2nd edition)*: Clojure 1.3の内容をカバーした定番入門書(最近までに追加された機能transducers, clojure.specなどについては別途補う必要があるが内容は古くなっていない)
    - 日本語版: [『プログラミングClojure 第2版』](https://www.ohmsha.co.jp/book/9784274069130/)
    - [孔雀本で情報が止まっている人のためのバージョンアップ情報まとめ - ayato-p](https://scrapbox.io/ayato-p/%E5%AD%94%E9%9B%80%E6%9C%AC%E3%81%A7%E6%83%85%E5%A0%B1%E3%81%8C%E6%AD%A2%E3%81%BE%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E4%BA%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97%E6%83%85%E5%A0%B1%E3%81%BE%E3%81%A8%E3%82%81)
- [*Getting Clojure*](https://pragprog.com/titles/roclojure/getting-clojure/): Clojureの基本を背景となる設計思想や実際の利用例とともに丁寧に学べる、新しい入門書
- [*Clojure for the Brave and True*](https://www.braveclojure.com/clojure-for-the-brave-and-true/): コミカルなイラストとくだけた文体を楽しみつつじっくり学べる、評価の高い入門書([*Learn You a Haskell for Great Good!*](http://learnyouahaskell.com/) /『すごいHaskellたのしく学ぼう!』に近い趣?)
- [*Functional Design: Principles, Patterns, and Practices, 1st edition*](https://www.pearson.com/en-us/subject-catalog/p/functional-design-principles-patterns-and-practices/P200000010857/9780138176396): 関数型言語としてのClojureとオブジェクト指向言語としてのJavaを対比しながら関数型の設計について解説している
    - 日本語版: [『関数型デザイン 原則、パターン、実践』](https://www.kadokawa.co.jp/product/302404003071/)
- [*Functional Programming Patterns in Scala and Clojure*](https://pragprog.com/titles/mbfpp/functional-programming-patterns-in-scala-and-clojure/): ScalaとClojureによる関数型プログラミングの典型的なパターンがまとまった本
- [*Seven Languages in Seven Weeks*](https://pragprog.com/titles/btlang/seven-languages-in-seven-weeks/): Clojureのほかパラダイムや設計思想の異なる7種類の言語の世界に触れることができる良書
    - 日本語版: [『7つの言語 7つの世界』](https://www.ohmsha.co.jp/book/9784274068577/)
- [『3つのLisp 3つの世界』](https://paren-holic.booth.pm/items/1317263): 『7つの言語 7つの世界』にインスパイアされたLisp入門者向け同人誌(Clojure編ではClojureの基本から本格的なREST API開発まで簡単に学べる)
- [『Clojureに入門したら知っておきたい5つのこと』](https://paren-holic.booth.pm/items/1575586): Clojure入門後に早めに知っておきたい言語本体と標準ライブラリについての基礎知識をまとめた同人誌
- [*ClojureScript Unraveled*](https://funcool.github.io/clojurescript-unraveled/): ClojureScriptのよくまとまった貴重な入門書

### 中級者向け

- [*Clojure Applied*](https://pragprog.com/titles/vmclojeco/clojure-applied/): Clojureの各種機能の実践的な活用方法が学べる良書
- [*The Joy of Clojure, Second Edition*](https://www.manning.com/books/the-joy-of-clojure-second-edition): Clojure言語について詳しく解説された良書
- [*Clojure: The Essential Reference*](https://www.manning.com/books/clojure-the-essential-reference): Clojure標準ライブラリの解説書
- [*Professional Clojure*](https://www.wiley.com/en-jp/Professional+Clojure-p-9781119267294): Webアプリ開発を中心にClojure/ClojureScriptの実用について
- [*Microservices with Clojure*](https://www.packtpub.com/product/microservices-with-clojure/9781788622240): [Pedestal](http://pedestal.io/)を活用したマイクロサービス開発についての本
- [*Clojure High Performance Programming, Second Edition*](https://www.packtpub.com/product/clojure-high-performance-programming-second-edition-second-edition/9781785283642): ClojureやJVMのパフォーマンス周りについて
- [*Seven Concurrency Models in Seven Weeks*](https://pragprog.com/titles/pb7con/seven-concurrency-models-in-seven-weeks/): 様々な並行/並列プログラミングモデルに触れることができる良書(Clojureでの関数型プログラミングと並行プログラミングについても簡単に学べる)
- [*Clojure Reactive Programming*](https://www.packtpub.com/product/clojure-reactive-programming/9781783986668): RxJava/RxJSやcore.asyncなどClojure/ClojureScriptでの並行/非同期プログラミングについて
    - [*Hands-On Reactive Programming with Clojure - Second Edition*](https://www.packtpub.com/product/hands-on-reactive-programming-with-clojure-second-edition/9781789346138): 書名が変更された第2版
- [*DSLs in Action*](https://www.manning.com/books/dsls-in-action): DSL (domain-specific language)の設計/実装について(ClojureでのDSL構築手法についても簡単に学べる)
    - 日本語版: [『実践プログラミングDSL』](https://www.shoeisha.co.jp/book/detail/9784798125398)
- [*Mastering Clojure Macros*](https://pragprog.com/titles/cjclojure/mastering-clojure-macros/): Clojureのマクロについて

## チュートリアル

- [Clojure - Learn Clojure](https://clojure.org/guides/learn/syntax): Clojure公式ドキュメントのチュートリアル
    - 日本語版: [Clojure - Clojureを学ぼう](https://japan-clojurians.github.io/clojure-site-ja/guides/learn/syntax)
- [Clojure - Programming at the REPL](https://clojure.org/guides/repl/introduction): Clojure公式ドキュメントのREPLガイド
    - 日本語版: [Clojure - REPLでのプログラミング](https://japan-clojurians.github.io/clojure-site-ja/guides/repl/introduction)
- [Clojure記事まとめ - Toyokumo Tech Blog](https://tech.toyokumo.co.jp/entry/list-of-clojure-articles): トヨクモ社によるClojure関連記事
- [Practicalli](https://practical.li/): Clojure入門者向けの学習リソースが集まったサイト
- [Clojure Koans](http://clojurekoans.com/): 禅の公案問答になぞらえて穴埋め問題に取り組む易しいチュートリアル
    - cf. [ClojureScript Koans](http://clojurescriptkoans.com/)
- [4clojure 4ever](https://4clojure.oxal.org/): 提示された振る舞いをするような関数を実装する問題集
- [Clojure の日本語ガイド](https://ayato-p.github.io/clojure-beginner/): ClojureのWeb開発チュートリアルなど入門者向けガイド
- [ミニマリストのためのClojure REST API開発入門 - Qiita](https://qiita.com/lagenorhynque/items/b15689e5432e0170b172): 最小構成で実用的なREST APIをClojureで開発するためのチュートリアル
    - [ミニマリストのためのClojure REST API開発入門2 〜リファクタリング編〜 - Qiita](https://qiita.com/lagenorhynque/items/f1e3c75439c1625756f3)
- [ClojureのDuctとClojureScriptのre-frameによるREST API + SPA開発入門 - Qiita](https://qiita.com/lagenorhynque/items/38537fa91300e0ac0070)
- [ScalaプログラマのためのClojure入門 - lagénorhynque](https://scrapbox.io/lagenorhynque/Scala%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEClojure%E5%85%A5%E9%96%80): ドワンゴ社の[Scala研修テキスト](http://dwango.github.io/scala_text/)でScalaに入門済みのプログラマ向け(?)のチュートリアル
- [Clojureに入門したら知っておきたいN個のこと - lagénorhynque](https://scrapbox.io/lagenorhynque/Clojure%E3%81%AB%E5%85%A5%E9%96%80%E3%81%97%E3%81%9F%E3%82%89%E7%9F%A5%E3%81%A3%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84N%E5%80%8B%E3%81%AE%E3%81%93%E3%81%A8): Clojure入門者が早めに知っておくと良いかもしれない+αの知識についてのまとめ

# スタイルガイド

- [bbatsov/clojure-style-guide](https://github.com/bbatsov/clojure-style-guide)
    - Webサイト: [The Clojure Style Guide](https://guide.clojure.style/)
    - 日本語版: [totakke/clojure-style-guide: コミュニティベースのClojureスタイルガイド（bbatsov/clojure-style-guideの日本語訳）](https://github.com/totakke/clojure-style-guide)
        - Webサイト: [Clojureスタイルガイド](https://totakke.github.io/clojure-style-guide/)

# ライブラリ

## 検索

- [cljdoc - documentation for Clojure/Script libraries](https://cljdoc.org/)
- [The Clojure Toolbox](https://www.clojure-toolbox.com/)
- [ClojureWerkz](http://clojurewerkz.org/)
- [razum2um/awesome-clojure: A curated list of awesome Clojure libraries and resources. Inspired by awesome-... stuff](https://github.com/razum2um/awesome-clojure)
- [hantuzun/awesome-clojurescript: A community driven list of ClojureScript frameworks, libraries and wrappers.](https://github.com/hantuzun/awesome-clojurescript)

## リポジトリ

- [Clojars](https://clojars.org/)
- [Maven Repository: Search/Browse/Explore](http://mvnrepository.com/)

## 標準ライブラリ

- [ClojureDocs](https://clojuredocs.org/)
- [Clojure API documentation](https://clojure.github.io/clojure/)
- [Clojure - Cheatsheet](https://clojure.org/api/cheatsheet)
- [Clojure Java API](https://clojure.github.io/clojure/javadoc/)
- [CLJS API](https://cljs.github.io/api/)
- [ClojureScript Cheatsheet](https://cljs.info/cheatsheet/)
- [Closure Generated API Docs (Google Closure Library)](https://google.github.io/closure-library/api/)
- [deftype, defrecord and reify](https://clojure.org/reference/datatypes) cf. [日本語版](https://japan-clojurians.github.io/clojure-site-ja/reference/datatypes)
    - 参考
        - [Flowchart for choosing the right Clojure type definition form - Chas Emerick](https://cemerick.com/blog/2011/07/05/flowchart-for-choosing-the-right-clojure-type-definition-form.html)
- [transducers](https://clojure.org/reference/transducers) cf. [日本語版](https://japan-clojurians.github.io/clojure-site-ja/reference/transducers)
    - 参考
        - [入門Transducers](https://www.slideshare.net/sohta/transducer-49916070)
        - [Clojure transducers from the ground-up: the essence. - Reblog](https://reborg.net/post/621211973722472448/clojure-transducers-from-the-ground-up-the)
        - [Clojure transducers from the ground up: the practice - Reblog](https://reborg.net/post/621473763865821184/clojure-transducers-from-the-ground-up-the)
- [clojure.spec](https://clojure.org/guides/spec) cf. [日本語版](https://japan-clojurians.github.io/clojure-site-ja/guides/spec)
    - [Clojure - clojure.spec - Rationale and Overview](https://clojure.org/about/spec) cf. [日本語版](https://japan-clojurians.github.io/clojure-site-ja/about/spec)
    - [spec.alpha](https://github.com/clojure/spec.alpha)
        - cf. [spec-alpha2 (alpha.spec)](https://github.com/clojure/spec-alpha2)
    - [core.specs.alpha](https://github.com/clojure/core.specs.alpha)
    - 関連サードパーティライブラリ
        - [Orchestra](https://github.com/jeaye/orchestra)
        - [Expound](https://github.com/bhb/expound)
        - [speculative](https://github.com/borkdude/speculative)
        - [spectrum](https://github.com/arohner/spectrum)
    - 参考
        - [clojure.specの話 // Speaker Deck](https://speakerdeck.com/athos/clojure-dot-specfalsehua-1)
        - [やってみる！clojure.spec](https://speakerdeck.com/athos/yatutemiru-clojure-dot-spec)
        - [Spectacular Future with clojure.spec | ドクセル](https://www.docswell.com/s/lagenorhynque/5LL12P-spectacular-future-with-clojure-spec)
        - [Clojureのマクロとclojure.specのある未来 - Qiita](https://qiita.com/lagenorhynque/items/41b8ea18ccaee8a0a5db)
        - [Everyday Life with clojure.spec | ドクセル](https://www.docswell.com/s/lagenorhynque/5242G9-everyday-life-with-clojure-spec)
        - [Clojure.spec Beginner's FAQ](https://blog.taylorwood.io/2018/10/15/clojure-spec-faq.html)
        - [Clojure Spec Tips](https://conan.is/blogging/clojure-spec-tips.html)

## 準標準ライブラリ

Clojure本体には組み込まれていない標準ライブラリ(Clojure contrib)。

- [Clojure - Contrib Libraries](https://clojure.org/dev/contrib_libs)
- [Clojure - Contrib History](https://clojure.org/community/contrib_history): かつて `clojure.contrib.*` という名前空間にまとまっていたモノリシックなライブラリ群の分割後のリポジトリ案内
- [core.async](https://github.com/clojure/core.async): Go言語のgoroutineとchannelに近い機構を提供する並行/非同期プログラミングライブラリ
    - 参考
        - [入門core.async](https://www.slideshare.net/sohta/coreasync)
        - [Clojure + core.async による非同期＆並列プロセスの世界 - 紙箱](https://boxofpapers.hatenablog.com/entry/core_async)
        - [ふつうのcore.async](https://www.slideshare.net/tsutomuyano/coreasync-100376704)
- [core.match](https://github.com/clojure/core.match): パターンマッチライブラリ
- [test.check](https://github.com/clojure/test.check): HaskellのQuickCheckの影響を受けたプロパティベーステストライブラリ
- [tools.namespace](https://github.com/clojure/tools.namespace): 名前空間の依存関係に基づいたリロードなどを可能にするライブラリ

## 状態/ライフサイクル管理ライブラリ

状態を持つ(stateful)もののライフサイクルを管理し、リロード可能なREPL開発環境("reloaded workflow"; cf. [Clojure Workflow Reloaded](https://cognitect.com/blog/2013/06/04/clojure-workflow-reloaded))を実現するためのライブラリ(一種のDI機構ともいえる)。

- [Component](https://github.com/stuartsierra/component)
- [mount](https://github.com/tolitius/mount)
- [Integrant](https://github.com/weavejester/integrant)
    - 参考
        - [Integrant入門(1) - Integrantの基本 - ayato-p](https://scrapbox.io/ayato-p/Integrant%E5%85%A5%E9%96%80(1)_-_Integrant%E3%81%AE%E5%9F%BA%E6%9C%AC)
        - [ClojureScriptの状態管理にIntegrantを使う - ayato-p](https://scrapbox.io/ayato-p/ClojureScript%E3%81%AE%E7%8A%B6%E6%85%8B%E7%AE%A1%E7%90%86%E3%81%ABIntegrant%E3%82%92%E4%BD%BF%E3%81%86)
- [Clip](https://github.com/juxt/clip)
- [Context](https://github.com/redstarssystems/context)
- [systemic](https://github.com/teknql/systemic)
- etc.
- 参考
    - [REPLライフをもっと快適に](https://www.slideshare.net/sohta/repl-40110261)
    - [Clojureで快適なREPL駆動開発のために"reloaded workflow"を実践しよう - Qiita](https://qiita.com/lagenorhynque/items/a752ffae490e83ebe70d)

## 静的解析ツール

- [cljstyle](https://github.com/greglook/cljstyle): フォーマッター
- [cljfmt](https://github.com/weavejester/cljfmt): フォーマッター
- [clj-kondo](https://github.com/clj-kondo/clj-kondo): リンター
- [Joker](https://github.com/candid82/joker): リンター
- [eastwood](https://github.com/jonase/eastwood): リンター
- [lein-bikeshed](https://github.com/dakrone/lein-bikeshed): リンター(Leiningenプラグイン)
- [kibit](https://github.com/jonase/kibit): イディオムのチェック(Leiningenプラグイン)
- [antq](https://github.com/liquidz/antq): ライブラリ更新のチェック
- [lein-ancient](https://github.com/xsc/lein-ancient): ライブラリ更新のチェック(Leiningenプラグイン)
- [carve](https://github.com/borkdude/carve): デッドコード解析
- [Yagni](https://github.com/venantius/yagni): デッドコード解析(Leiningenプラグイン)
- [nvd-clojure](https://github.com/rm-hull/nvd-clojure): ライブラリの脆弱性チェック
- [cloverage](https://github.com/cloverage/cloverage): テストカバレッジの計測
- 参考
    - [Clojure Linters | ドクセル](https://www.docswell.com/s/lagenorhynque/51JR8E-clojure-linters)
    - [Clojureのフォーマッターcljstyleの使い方 - TOYOKUMO Tech Blog](https://tech.toyokumo.co.jp/entry/format-clojure-code-using-cljstyle)

## (マイクロ)フレームワーク

正確にはフレームワークというよりもライブラリ(Clojureのエコシステムにおいてフルスタックフレームワークのようなものはほとんど存在しない)。

### Webサーバサイド (Clojure)

- [Ring](https://github.com/ring-clojure/ring): HTTPサーバ抽象と関連ユーティリティ
    - [ring-clojure/ring Wiki](https://github.com/ring-clojure/ring/wiki)
        - [Concepts](https://github.com/ring-clojure/ring/wiki/Concepts): Ringの基本概念について
    - [ring/SPEC.md](https://github.com/ring-clojure/ring/blob/master/SPEC.md): Ringの仕様について
- [Duct](https://github.com/duct-framework/duct): [Integrant](https://github.com/weavejester/integrant)を基礎としたマイクロフレームワーク
    - [duct-framework/duct Wiki](https://github.com/duct-framework/duct/wiki)
    - [duct-framework/docs: Documentation for Duct](https://github.com/duct-framework/docs)
    - 構成要素: コア + 標準モジュール
        - [duct-framework/core: The core library of the Duct framework](https://github.com/duct-framework/core)
        - [duct-framework/module.web: Duct module for running web applications](https://github.com/duct-framework/module.web)
        - [duct-framework/module.ataraxy: Duct module and router for the Ataraxy routing library](https://github.com/duct-framework/module.ataraxy)
        - [duct-framework/module.sql: Duct module for working with a SQL database](https://github.com/duct-framework/module.sql)
        - [duct-framework/module.cljs: Duct module for developing and compiling ClojureScript](https://github.com/duct-framework/module.cljs)
        - [duct-framework/module.logging: Logging module for Duct](https://github.com/duct-framework/module.logging)
    - サードパーティモジュール
        - [Modules · duct-framework/duct Wiki](https://github.com/duct-framework/duct/wiki/Modules)
        - [duct.module.pedestal](https://github.com/lagenorhynque/duct.module.pedestal): [Pedestal](http://pedestal.io/)を組み込むDuctモジュール
        - [duct.module.cambium](https://github.com/lagenorhynque/duct.module.cambium): [Cambium](https://cambium-clojure.github.io/)を組み込むDuctモジュール
    - [Boolean Knot - Advancing Duct](https://www.booleanknot.com/blog/2017/05/09/advancing-duct.html)
    - [Boolean Knot - Building Web Services with Duct](https://www.booleanknot.com/blog/2017/05/29/building-web-services-with-duct.html)
    - 参考
        - [ClojureのDuctでWeb API開発してみた - Qiita](https://qiita.com/lagenorhynque/items/57d5aa086c4a080a1c54)
        - [ClojureサーバサイドフレームワークDuctガイド - Qiita](https://qiita.com/lagenorhynque/items/8201c116c87b40eb9c22)
        - [Ductモジュール入門 | ドクセル](https://www.docswell.com/s/lagenorhynque/538GQ8-duct-module-getting-started)
        - [はじめてのDuct - UZABASE Tech Blog](http://tech.uzabase.com/entry/2018/04/03/115236)
        - [Build a Clojure web app using Duct - CircleCI](https://circleci.com/blog/build-a-clojure-web-app-using-duct/)
- [Pedestal](http://pedestal.io/): [Ring](https://github.com/ring-clojure/ring)の"middleware"とは異なるアーキテクチャ"interceptor"を採用したAPI/サービス開発ライブラリ
    - [GitHub](https://github.com/pedestal/pedestal)
    - [com.cognitect/pedestal.vase](https://github.com/cognitect-labs/vase): Pedestal + [Datomic](https://www.datomic.com/)によるマイクロサービス開発ライブラリ
    - [pedestal-api](https://github.com/oliyh/pedestal-api): [prismatic/schema](https://github.com/plumatic/schema)による仕様記述でPedestalのAPIエンドポイントのSwagger仕様を生成可能にするライブラリ
    - 参考
        - [Interceptors: Into the Core of Pedestal | ドクセル](https://www.docswell.com/s/lagenorhynque/5YWDR9-interceptors-into-the-core-of-pedestal)
        - [Why interceptors? - quanttype](https://quanttype.net/posts/2018-08-03-why-interceptors.html)
        - [Clojureサービス開発ライブラリPedestal入門 - Qiita](https://qiita.com/lagenorhynque/items/fbd66ebaa0352ec4253d)
- [Lacinia](https://github.com/walmartlabs/lacinia): ClojureによるGraphQL実装のひとつ
    - [ドキュメント](https://lacinia.readthedocs.io/en/latest/)
        - [Tutorial](https://lacinia.readthedocs.io/en/latest/tutorial/index.html)
    - [Lacinia-Pedestal](https://github.com/walmartlabs/lacinia-pedestal)
        - [ドキュメント](https://lacinia-pedestal.readthedocs.io/en/latest/)
    - 参考
        - [ClojureでGraphQLサーバを立てる - Qiita](https://qiita.com/223kazuki/items/ba4ba84e2da1daea3b52)
        - [ClojureのLaciniaでGraphQL API開発してみた - Qiita](https://qiita.com/lagenorhynque/items/eebb9a36859789520dbf)
        - [Lacinia アプリ開発 Tips - Qiita](https://qiita.com/223kazuki/items/50e5f62f19fed751ba40)
        - [GraphQL API in Clojure | ドクセル](https://www.docswell.com/s/lagenorhynque/ZM1X86-graphql-api-in-clojure)
- [Protojure](https://github.com/protojure/lib): Protocol BuffersとgRPCをサポートするライブラリ
    - [ドキュメント](https://protojure.readthedocs.io/en/latest/)
    - [protojure/protoc-plugin](https://github.com/protojure/protoc-plugin): protocのClojureプラグイン
    - [protojure/google.protobuf](https://github.com/protojure/google.protobuf): Protocol Buffersの型の実装
    - [protojure/lein-template](https://github.com/protojure/lein-template): Leiningenテンプレート
    - 参考
        - [ClojureのProtojureでgRPC API開発してみた - Qiita](https://qiita.com/lagenorhynque/items/f285c7e44a7dd72fb2be)
- [Luminus](https://luminusweb.com/): 定番ライブラリを便利に組み合わせて提供してくれるプロジェクトテンプレート(標準で組み込まれている[mount](https://github.com/tolitius/mount)は好みが分かれるところ)
- [Arachne](https://github.com/arachne-framework)

### Webフロントエンド (ClojureScript)

- [Reagent](https://reagent-project.github.io/): シンプルで人気のReactラッパーライブラリ
    - 参考
        - [ClojureScript & ReagentでReact入門してみた - Qiita](https://qiita.com/lagenorhynque/items/7c049f3c3b967ee777ac)
        - [ClojureScript + Reagent Tutorial with Code Examples](https://ericnormand.me/guide/reagent)
    - [re-frame](https://day8.github.io/re-frame/): Reactに対するReduxに相当するReagentの状態管理ライブラリ
        - [re-frame-template](https://github.com/day8/re-frame-template): Leiningenテンプレート
        - [re-frame-test](https://github.com/day8/re-frame-test): re-frameアプリのテスト支援ライブラリ
        - [re-frame-10x](https://github.com/day8/re-frame-10x): re-frameアプリのデバッグ支援ライブラリ
        - 参考
            - [Re−frame 入門 - Qiita](https://qiita.com/snufkon/items/1d409c984faaa3c390a1)
            - [re-frame à la spec | ドクセル](https://www.docswell.com/s/lagenorhynque/5VV1N2-re-frame-a-la-spec)
            - [ClojureScript/re-frame開発における思考フロー - Qiita](https://qiita.com/lagenorhynque/items/3770e520bee0007e417c)
            - [Re-frame Tutorial with Code Examples](https://ericnormand.me/guide/re-frame-building-blocks)
            - [re-frame Subscriptions Got Even Better](https://lambdaisland.com/blog/11-02-2017-re-frame-form-1-subscriptions)
- [Rum](https://github.com/tonsky/rum): 新興のReactラッパーライブラリ
- [Om](https://github.com/omcljs/om): 最初期に登場したReactラッパーライブラリ(後継の"Om Next"が開発中)

### React Native (ClojureScript)

- [re-natal](https://github.com/drapanjanas/re-natal)

### Node.js (ClojureScript)

- [Macchiato](https://macchiato-framework.github.io/)
    - [GitHub](https://github.com/macchiato-framework)

# コミュニティ

## Twitter

`#clojure`, `#clojurescript` などを付けてtweetすると、仕事や趣味でClojure/ClojureScriptを利用しているClojurianたちが素早く疑問や質問にも答えてくれる(はず)。

- https://twitter.com/search?q=clojure
- https://twitter.com/search?q=clojurescript

## 勉強会

- [Shibuya.lisp - connpass](https://lisp.connpass.com/): lispmeetup, lispteatime
- [コワーキングスペースHaLake - connpass (Laketown.clj)](https://halake.connpass.com/): Clojureもくもく会
- [clj-ebisu - connpass](https://clj-ebisu.connpass.com/)
- [clj-nakano - connpass](https://clj-nakano.connpass.com/)
- [Clojure Tokyo | Meetup](https://www.meetup.com/ja-JP/clojure-tokyo/)

## Qiita Advent Calendar

- [Clojure Advent Calendar 2023](https://qiita.com/advent-calendar/2023/clojure)
- [Clojure Advent Calendar 2022](https://qiita.com/advent-calendar/2022/clojure)
- [Clojure Advent Calendar 2021](https://qiita.com/advent-calendar/2021/clojure)
- [Clojure Advent Calendar 2020](https://qiita.com/advent-calendar/2020/clojure)
- [Clojure Advent Calendar 2019](https://qiita.com/advent-calendar/2019/clojure)
- [Clojure Advent Calendar 2018](https://qiita.com/advent-calendar/2018/clojure)
- [Clojure Advent Calendar 2017](https://qiita.com/advent-calendar/2017/clojure)
- [Clojure Advent Calendar 2016](https://qiita.com/advent-calendar/2016/clojure)
- [Clojure Advent Calendar 2015](https://qiita.com/advent-calendar/2015/clojure)
- [Clojure Advent Calendar 2014](https://qiita.com/advent-calendar/2014/clojure)
- [Clojure Advent Calendar 2013](https://qiita.com/advent-calendar/2013/clojure)

## カンファレンス/イベント

- [Clojure - Upcoming Clojure Events](https://clojure.org/community/events)

## Slack

- [clojurians](http://clojurians.net/): 国内コミュニティでは最近ほとんど利用されていなさそう(英語で質問するならこちらかも?)
- [shibuya-lisp](https://join.slack.com/t/shibuya-lisp/shared_invite/zt-a5skvfkm-Hx3YbwuS7d1hqU_Ebs1h3g): 国内最大のLisp系言語コミュニティShibuya.lispの公式Slack

## メーリングリスト

- [Clojure - Google グループ](https://groups.google.com/g/clojure)
- [ClojureScript - Google グループ](https://groups.google.com/g/clojurescript)

## ポッドキャスト

- [Cognicast](https://cognitect.com/cognicast/)
- [defn](https://soundcloud.com/defn-771544745)
- [(dosync radio)](https://podcasters.spotify.com/pod/show/dosync-radio): 日本のClojuriansによるもの

## その他の情報源

- [Clojure Q&A](https://ask.clojure.org/)
- [ClojureVerse](https://clojureverse.org/)
- [Clojure - Reddit](https://www.reddit.com/r/Clojure/)
- [Clojurescript - Reddit](https://www.reddit.com/r/Clojurescript/)
- [Planet Clojure](https://planet.clojure.in/)
- [Cognitect Blog](https://cognitect.com/blog/)

## ファンド

- [Clojurists Together](https://www.clojuriststogether.org/)

## ドキュメント翻訳

- [japan-clojurians/clojure-site-ja](https://github.com/japan-clojurians/clojure-site-ja)

## 利用企業

- [Clojure - Companies](https://clojure.org/community/companies)
- [ClojureScript - Companies](https://clojurescript.org/community/companies)
- [日本で Clojure/ClojureScript を利用している会社一覧](https://github.com/athos/japanese-clojure-companies)
    - [Clojure界隈マップ](https://www.google.com/maps/d/viewer?mid=1rgidGPtbKvv2vD7ZWoU22TXutUC5x_c6)