Think Twice
IT技術メモ | Clojureのメモ
Created: 2023-04-27 / Updated: 2023-04-28

Windows環境にClojure CLIをインストールする


こちらはWindows環境にClojure CLI(Clojure Command Line Interface)をインストールする際の手順のメモになります。

目次


Windows用のインストーラーを取得

まず、Windows用のインストーラーを取得します。PowerShellにて以下を実行します。

Copy
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://download.clojure.org/install/win-install-1.11.1.1165.ps1')
実行結果1
Copy
Downloading Clojure tools
警告: Clojure will install as a module in your PowerShell module path.

Possible install locations:
  1) C:\Users\fumo\Documents\WindowsPowerShell\Modules
  2) C:\Program Files\WindowsPowerShell\Modules
  3) C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
Enter number of preferred install location:
お好きな番号を入力してください。例: 1

実行結果2
Copy
Enter number of preferred install location: 1

Installing PowerShell module
Removing download
Clojure now installed. Use "clj -h" for help.
これでインストールは完了です。

動作確認(直接実行)

ファイル構成

以下のような構成でディレクトリとファイルを作成していきます。

Copy
プロジェクトのルートディレクトリ/
├──deps.edn
└──src/
    └──test/
        └──script.clj

deps.ednの作成

まず、deps.ednを作成します。deps.ednはファイルはプロジェクトの依存関係と設定を管理するための簡易的な構成管理ファイルです。

deps.edn
Copy
{:paths ["src"]}

スクリプトファイルの作成

ここではフィアル名をscript.cljとしてスクリプトファイルを作成します。

script.clj
Copy
(ns test.script)

(defn -main [& args]
  (println "Hello, Clojure!"))

スクリプトの実行

cljコマンドを、deps.ednファイルが存在するディレクトリ(プロジェクトのルートディレクトリ)で実行します。
コマンドは以下のようになります、

Copy
clj -M -m <ネームスペース>

実行結果
Copy
> clj -M -m test.script
Hello, Clojure!

動作確認(コマンドエイリアスを使って実行)

ファイル構成

例として、ファイル構成は以下のようにします。

Copy
プロジェクトのルートディレクトリ/
├── deps.edn
└── src/
    ├── script2.clj
    └── test/
        └── script.clj

deps.ednファイルの編集

deps.ednにコマンドのエイリアスを指定しておき、そのエイリアスを使ってコマンドを実行することができます。
以下では例としてrunrun2というエイリアスを指定しています。

Copy
{:paths ["src"]
 :aliases {:run {:exec-fn test.script/-main
                 :exec-args {}}
           :run2 {:exec-fn script2/-main
                 :exec-args {}} }}

スクリプトファイルの作成

こんな感じで作成します。

script.clj
Copy
(ns test.script)

(defn -main [& args]
  (println "Hello, Clojure!"))

script2.clj
Copy
(ns script2)

(defn -main [& args]
  (println "Hello, Clojure! 2"))

スクリプトの実行

-Xオプションに続けて、エイリアス名を指定して実行します。

Copy
clj -X:エイリアス名

実行結果
Copy
> clj -X:run
Hello, Clojure!
> clj -X:run2
Hello, Clojure! 2

このように、エイリアスとしてコマンドを定義しておくと、簡単にコマンドを呼び出すことができます。


参考

参照

Special thanks