サマリー
Clojureを始める為の開発環境の立ち上げについて述べる。
JVMの準備
ClojureはJVM上で動くのでJVMを立ち上げる必要がある。
(1)PCにJAVAが入っているかどうか?入っていればそのバージョンを確認する。
macの場合、ターミナルで「java –version」を入力、
「java 11.0.1 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)」のようなメッセージが入っていればJAVAが入っている。この場合バージョンは11.0(FESSではJAVA11を推奨)
(2) JAVAが入っていない場合(あるいはバージョンが古い場合)、JAVAをインストールする。
homebrewとtextエディター(spacemacs)の準備
次にエディターを準備する。簡単に動かす場合はLightTableがお勧めだが、本格的な利用を考えるとemacsが便利だ。emacsは様々な設定が可能な拡張性の高いエディターだが、逆に言うとそれらを全て設定するのはかなりの習熟度が要求される。それら設定が全て揃っている楽チンなモジュールがspacemacsになる。spacemacsの立ち上げは公式ページに詳しく掲載されているが、ここに記載しておく。まずmacの場合はhomebrewをインストールする。公式ページに行き、
書かれてある通り、以下のコードをターミナルで実行する。
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
インストールが完了したかどうかは、ターミナルで「brew -v」を入力してバージョンが表示されればOK。
次にそのbrewを使ってemacs-plusをインストール
brew tap d12frosted/emacs-plus
# to install Emacs 26
brew install emacs-plus
# or to install Emacs 27
brew install emacs-plus@27 --with-spacemacs-icon
# or to install Emacs 28
brew install emacs-plus@28 --with-spacemacs-icon
brew link emacs-plus
次にGitHub から、spacemacs をクローンして ~/.emacs.d
として配置する。(ここでgitコマンドが動かなかったら、あらかじめ「brew install git」でインストールしておく)
git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
コマンドラインで「emacs」を入力すると以下の画面が出てくれば完了する。
初期起動時には、いくつかの基本設定をどうするか聞いてくる。まずはキー操作モード:「What is your preferred editing style?」vimにするか?emacsにするか?でvimの特殊なキー操作に慣れていなければemacsに設定したした方が無難だが、今後の説明では私がvimモードを使っているのでvimでのものとなる。
次にspacemacsの構成「What distribution of spacemacs would you like to start with?」こちらは標準構成であるspacemacsに設定すれば良い。
次に補完フレームワークの選択「What type of completion framework do you want?」こちらも標準のhelmを選択すればよい。
spacemacsは便利なキーバインドが多々ある。それらについては例えば@my4さんのページとか二畳半堂さんのページにコンパクトにまとめられている。(vimのキーバインド)
spacemacsを立ち上げてまず最初にするのが、ドットファイルのコンフィギュレーション設定だ。.spacemacsファイルに記述されており「SPC」「f」「e」「d」の順に押す(「SPC」はスペースバー)と以下のようなコンフィギュレーションのページへのショートカットができる。
clojureを使う場合は、上記でも見える「dotspacemacs-configuration-layersの中でClojureを設定する(コメントアウト「;;」されているので消す)と使用できるようになる。設定が終われば一旦閉じる(「SPC」「q」「q」の順に押す)。
Clojureを動作させる為のツールとして、「Leiningen」を導入する必要がある。leiningenはClojureのビルドツールで他の手段もいくつか存在するが、最もメジャーに使われているものであり、まず最初に導入するものとしては適切なものとなる。macの場合は、前述のhomebrewを使って「brew install leiningen」一発で、windowの場合は、self-installを通した少し手間がかかるものとなっている。
leiningenの立ち上げ
leiningenをインストールできるとClojureを構築できる環境が整う。まず任意のフォルダの下に、ターミナルを用いて「lein new app my-app(新規のアプリ名)」を入力すると、Clojureのtemplateが以下の構成で生成される。
├── CHANGELOG.md
├── LICENSE
├── README.md
├── doc
│ └── intro.md
├── project.clj
├── resources
├── src
│ └── my_app
│ └── core.clj
└── test
└── my_app
└── core_test.clj
この内project.cljはアプリのコンフィギュレーションファイルに当たり、以下のような記述のあるファイルになる。
(defproject my-app "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
:url "https://www.eclipse.org/legal/epl-2.0/"}
:dependencies [[org.clojure/clojure "1.10.1"]]
:main ^:skip-aot my-app.core
:target-path "target/%s"
:profiles {:uberjar {:aot :all
:jvm-opts ["-Dclojure.compiler.direct-linking=true"]}})
この中で、最初に変更する部分が
:dependencies [[org.clojure/clojure "1.10.1"]]
の部分になる。ここに利用するライブラリを追加していくこととなる。
ソースコードを記入するのはsrc/my-app/core.cljのファイルとなる。デフォルトの記述は以下となる。
(ns my-app.core
(:gen-class))
(defn -main
"I don't do a whole lot … yet."
[& args]
(println "Hello, World!"))
上記のように、Clojureのコードは括弧()で囲まれた構文(S式と呼ばれる)となっている。括弧の中の構文としては、まず最初に関数が来て、その後ろに関数に代入する変数を並べる形となる(前置記法(ポーランド法))。例えば、加算(+)の関数で1+1を表すもの(中置記法)をClojure (LISP)の構文では(+ 1 1)と表現する。templateコードの中で現れる(ns 〜)はそのファイルの名前空間を(defn-main 〜)の関数はメイン関数を表す。
このファイルを実行するには、ターミナルを使ってmy-appフォルダのトップで、「lein run」を実行するとmain関数が実行されて”Hello, World!”が表示される。またjava環境での実行ファイル(jarファイル)が「lein uberjar」により生成される。
次回は、spacemacsを用いた実際のrepl開発について述べる。
コメント
[…] 前回までで、Clojureの環境設定からtemplateファイルの生成までを述べた。今回は、Clojureの特徴の一つであるreplとimmutableなデータについて述べる。 […]
[…] 次回はClojure環境の立ち上げと、実際のコーディングについて述べつる。 […]
[…] SpaceEmacsの立ち上げ […]
[…] まずhomebrew環境の立ち上げから、詳細は”Clojureを始めよう(1)環境の立ち上げ(spacemacsとleiningen)“を参照のこと。pythonは3.10が必要となる。puthonのversionを整備するにはpyenvを用いる。py […]