トップ OSS紹介 Clojure

Clojure

NRIのOpenStandiaが提供するClojure最新情報

バージョンアップ情報

Clojure情報

Clojureとは

Clojure(クロージャ)は「関数型プログラミング言語」であるLisp(リスプ)の方言の一つの汎用プログラミング言語です。2007年に開発者であるRich Hickey氏により公開され、2009年5月4日にバージョン1.0がリリースされました。

「関数型プログラミング言語」とは、関数をオブジェクトのように扱える「第一級関数」、そして、その関数を引数や戻り値のように扱える「高階関数」をサポートするプログラミング言語です。

Rich Hickey 氏によると、Clojureを作成した理由は、Lispであり、関数型プログラミング言語であり、一般的なプラットフォームに対応し、かつ並行処理が得意な言語を探したが見つからなかったためで、Clojure という名前は、他に同じものが無く、C#の「C」、Lispの「L」、Javaの「J」を使えないか考えていたところ、Googleスペースのあまりにも広大な空間の逆の意味を持つ「閉鎖」を意味する Closure という言葉を思いつき、それをもじって Clojure としたそうです。発音はClosure と同じクロージャとされています。

主な特徴

関数型プログラミング言語

ClojureはLispを源泉とした「関数型プログラミング言語」の一つです。Lisp同様「S式」と呼ばれる()を多用する書式で記述し、数式は「ポーランド記法」と呼ばれる書式で記述します。

JavaVM言語

ClojureはJava仮想マシン(JavaVM)上で動作するJavaVM言語の一つであり、Clojureの本体はjarファイルです。JavaVM言語であることの利点としてJavaのクラスを使うこともできます。

豊富なデータ構造

何も無いことを表すnilを始め、数値、文字列、キャラ、キーワード、シンボル、コレクション、リスト、ベクター、マップなどの豊富なデータ型が用意されています。なお、Clojureでは変数の値は不変なものとして扱います。

REPL

REPL(Read-Eval-Print-Loop)と呼ばれる対話型形式で、コードをインタラクティブの作成することが可能です。

コードはデータ

コードをデータとして扱います。コードはデータ、データはコードという考え方で、ホモコニック言語とも呼ばれる思想で設計されています。

マクロ

Lispから引き継いだ強力なマクロ機能を持っています。

マルチスレッド

ソフトウェアトランザクションメモリシステム(SMT)、及びリアクティブエージェントシステムによるクリーンなマルチスレッドを保証します。

遅延シーケンス

データが必要になった時に評価を行う遅延シーケンスが使えます。この機能により無限に続くデータも扱えます。

ビルドツール

Leiningenというビルドやパッケージ管理が出来るツールが用意されています。

豊富なライブラリ

コミュニティリポジトリClojars.orgには豊富なライブラリが公開されています。

Java以外の実装

ClojureはJavaVM言語ですが、JavaScript に変換して動作する ClojureScript、.NET Frameworkのネイティブ実装である、ClojureCLR も派生プロダクトとして存在しています。

Clojureに関連するプログラミング言語

  • ClojureScript
  • ClojureCLR
  • Lisp
  • Scheme
  • Haskell
  • Scala

動作環境

基本的にJavaVM上で動作するので、Mac、Linux、Windows で利用可能です。
コマンドラインツール clj のWindows版は現状ではまだα版ですが、本体はJavaのjar 形式ファイルなのでjavaコマンドで直接起動することも可能です。
現在、Java TLS リリースであるJava 8、11、17に正式に対応しています(バージョン1.11.1現在)

Clojureのライセンス

Clojureのライセンスは、Eclipse Public License 1.0で提供されています。
Eclipse Public License(EPL)はオープンソースのライセンスの1つで、EPLライセンスされたプログラムの受領者は、使用・修正・コピーや、修正したバージョンの配布が可能です。 しかし、修正したバージョンを配布する場合はソースコードの入手方法を示すなどの義務が生じます。

製品ダウンロード

入手方法およびインストール方法は下記を参照して下さい。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • OpenJDK
    サポート対象

    OpenJDK

    オープンジェイディーケー。JavaSE(Java Platform, Standard Edition)のオープンソースのリファレンス実装で、Oracle Java SE と同等の機能を持っています。

  • Java

    Java

    ジャバ。サンマイクロシステムズ社(2010年にオラクル社に吸収合併)により開発されたプログラミング言語、及びその動作環境である Java VM(ジャバ仮想マシン) です。

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。