TL;DR
2007 年に Rich Hickey が開発した、動的型付けの関数型プログラミング言語。Lisp の方言であり、JVM 上で動く。
なぜ必要か
関数型言語でありながら、Java や JavaScript の資産をそのまま利用できる。並行処理のために設計されており、Web 開発に必要なライブラリも一通りそろっている。
仕組み
Clojure 本体は JVM 上で動き、ClojureScript を使えば JavaScript 環境でも動く。.NET 上で動かす ClojureCLR も公式に提供されている。
プロジェクトの構築には、Leiningen か Clojure CLI を使う。最近は Clojure CLI が使われることが多い。cli-new を使うと、Leiningen のテンプレートから Clojure CLI のプロジェクトを作成できる。
例
日本でも複数の会社が採用している(採用企業の一覧)。たとえばトヨクモでは、めだかのclojure.core学校を執筆したエンジニアが働いている。
自分の理解
Common Lisp なども触ったが、Clojure が一番好きである。関数型であること、let や関数の引数の書き方など可読性が高いこと、Java や JavaScript の偉大な資産の恩恵を受けられることが理由である。
Web 開発に必要なライブラリが一通りそろっていることは、学習のモチベーションを上げる上で大事である。マイグレーションまわりも言語レベルで統一したいので、Flyway は使いたくない。