SpacemacsでClojure入門する（Windows10）

#はじめに  
関数型言語を勉強してみたいと思ったのでClojureを触ってみることにした。
emacsは使ったことないが、Spacemacsはvimモードも選べるらしいので開発環境はSpacemacs。
OSはLinuxがいいらしいが、Windows10（64bit）でやってみる。
※JDKとgitはインストール済み。
※java 11.0.1
#emacsのインストール

「GNU Emacs」の公式ダウンロードページからダウンロードする。
[https://www.gnu.org/software/emacs/download.html#windows](https://www.gnu.org/software/emacs/download.html#windows)
<img width="700" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577016/9b047752-3b3c-2ec1-fadd-cbb494197753.png">
Windows版の最新バージョンを選択する。
<img width="700" alt="2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577016/872fc19b-1888-96de-8b0f-b676b559bb99.png">
・Windows版（64bit）のzipファイル「emacs-27.1-x86_64.zip」をダウンロードする。
<img width="700" alt="3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577016/7408ef70-cce3-192d-0d2a-64b510c50a71.png">
・解凍したフォルダを任意の場所に配置し、binフォルダにパスを通しておく。
・今回は（C:\）にemacsというフォルダを作成して解凍した中身を配置した。

・環境変数「HOME」にホームディレクトリを設定しておく
※emacsの設定ファイルである「.emacs.d」の場所をホームディレクトリにするため
※HOMEを設定せずにemacsを起動すると"C:\Users\ユーザ名\AppData\Roaming"に.emacs.dが作成され、ここのファイルを読み込む設定になる。


#Spacemacsのインストール

・ホームディレクトリに移動し、[Spacemacsの公式サイト](https://www.spacemacs.org/)に記載のGitコマンドを実行する。

```
C:\>cd C:\Users\(ユーザ名)
C:\Users\(ユーザ名)>git clone https://github.com/syl20bnr/spacemacs .emacs.d
```

・emacsを起動する。

```
C:\Users\(ユーザ名)>emacs
```

・起動後すると「vimスタイルかemacsスタイルか」、「ディストリビューションはスタンダードかミニマルか」聞かれるので、vimスタイル、スタンダードを選択（エンターキーをそのまま2回押すだけ）
・選択が終わると必要なパッケージのインストールが開始される（数分かかる）
※一度エラーが出たけど再起動したらエラーは出なくなった。

#Leiningenのインストール

Clojureのビルドツールである「Leiningen」を公式ダウンロードページからダウンロードする。
[https://leiningen.org/](https://leiningen.org/)

・ページ内のlein.batを右クリック→名前を付けて保存 で任意の場所に保存。

<img width="700" alt="6.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577016/31aca7c0-e024-909b-1865-dc5fde7fe3db.png">

・「C:\leiningen\bin」フォルダを作成して、lein.batを移動する。
・「C:\leiningen\bin」フォルダにパスを通しておく。
・インストールコマンドを実行

```
C:\leiningen\bin>lein.bat self-install
```

・ダウンロードが完了したら確認
・versionが表示されればインストール完了

```
C:\leiningen\bin>lein version
```
・spacemacsでnREPLを利用するために、「C:\Users\(ユーザ名)\.lein\profiles.clj」 を作成し、CIDER用のnReplミドルウェアのプラグイン定義を設定する。

```clojure:profiles.clj
{:repl {:plugins [[cider/cider-nrepl "0.25.8"]]}}
```
・replを起動して確認
・user=> と表示されればOK

```
C:\leiningen\bin>lein repl
```

#設定ファイルの編集

・インストールが完了したら、設定ファイルの編集をする。
・Spaceキー（SPC） f e d で設定ファイルを開いてdotspacemacs-configuration-layersリストにclojureを追加する。
<img width="700" alt="4.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577016/f04eace4-66e7-6bf1-e39a-8f07efc02c46.png">

・以下は任意で追加
・Ctrl-h がバックスペースになるようにする。
・cider-jack-inでウィンドウ分割とREPLバッファ への切り替えを行う

```clojure:.spacemacs
(keyboard-translate ?\C-h ?\C-?)

(defun dotspacemacs/user-config ()
  (setq cider-repl-pop-to-buffer-on-connect t))

```
・追加して設定ファイルを保存したら、SPC f e R で設定を反映する。（パッケージのインストールが行われる）

#動作確認

・動作確認用にspacemacsで「Test.clj」ファイルを作成する。
・SPC m s i → cider-jack-in-clj を選択してエンター → y or n を聞かれるので yを押下する
<img width="700" alt="5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577016/675c6694-238f-2726-b490-91d52ffde4f2.png">

・replが起動されたら、コードを書いて動作確認する。
・「Test.clj」に関数定義を書いて、ロードして実行してみる。
<img width="700" alt="7.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577016/e5abb93e-6f6c-ab6b-1326-21204353d7a3.png">
・動作確認できたので、簡単なアプリ等を作成して勉強しようと思う。