前回の記事では、Leiningenの紹介とインストールの仕方について説明しました。今回は、Leiningenの基本的な使い方について説明します。
Leiningenを使うときはlein
コマンドを実行します。
lein
コマンドからは種々のタスクを呼び出すことができます。そのうち、今回説明するのは以下のタスクです。
lein new
: 新規プロジェクトの作成lein deps
: 依存ライブラリの取得lein repl
: REPLの起動lein run
: プロジェクトの実行lein test
: テストの実行
また、プラグインを導入することにより、Leiningenにタスクとして組み込まれている以外の機能をタスクとして呼び出せるようになります。
それでは、それぞれのタスクについて見ていきましょう。
プロジェクトを新規に作成する場合は、lein new
を実行します。
$ lein new <プロジェクト名>
lein new
を実行すると、<プロジェクト名>
の名前のついたディレクトリの下に以下のようなファイルとディレクトリが生成されます。
project.clj
: Leiningenの設定ファイル(これについては、別の回に説明します)。src
: プロジェクトのソースコードを置くためのディレクトリ。test
: プロジェクトのテストコードを置くためのディレクトリ。resources
: プロジェクトで使用するリソースを置くためのディレクトリ。
他にもいくつかファイルやディレクトリが生成されますが、Clojureプロジェクトを扱ううえで重要になるのは上の4つです。
また、特定の用途向けのディレクトリ構成でプロジェクトを作成したい場合には、以下のようにテンプレートを指定します。
$ lein new <テンプレート名> <プロジェクト名>
先ほど説明した、テンプレートを指定せずにlein new
を実行する方法では、default
テンプレートが適用されます。default
テンプレート以外では、Leiningenに組み込まれた標準的なテンプレートとしては以下のようなものがあります。
app
: アプリケーション用テンプレートplugin
: Leiningenプラグイン用テンプレートtemplate
: Leiningenテンプレート用テンプレート
さらに、Leiningen標準のテンプレート以外にもサードパーティ製のテンプレートがあり、Webアプリケーションフレームワーク等ではそのフレームワークでプロジェクトを始めやすいように独自のテンプレートを用意しているものもあります。
しかし、簡単なライブラリやアプリケーションを作成する場合には、default
テンプレートでプロジェクトを作成しても特に問題はありません。
lein new
で生成されたproject.clj
に依存ライブラリを追加した場合、以下のコマンドを実行することで、追加した依存ライブラリを、ライブラリ自身が依存しているライブラリも含めて自動的に取得してくれます。
$ lein deps
ただし、最近のLeiningen(バージョン2.x)では、依存ライブラリの取得は他のタスク実行時にも自動的に実行されるため、このコマンドを明示的に実行する必要はありません。
Leiningen経由でClojureのREPLを起動することができます。
$ lein repl
このコマンドを実行すると、取得したすべての依存ライブラリをクラスパスに追加した状態でREPLが起動されます。つまり、依存ライブラリをREPLから直接呼び出して使うことができます。
また、lein repl
で起動したREPLでは、入力補完や入力履歴をたどれる機能があるため、Clojure標準のREPLより便利です。lein repl
はプロジェクトを作成しなくても実行できるため、環境にLeiningenをインストールしておけば、どこでもREPLを起動することができます。
プロジェクトを実行する際には、以下のようにlein run
を実行します。
$ lein run -m <main関数のある名前空間名>
main関数のある名前空間をproject.clj
に指定することで、-m <main関数のある名前空間名>
を省略することもできます。詳しくは次回以降に説明します。
Leiningenからテストを実行することもできます。テストを実行するには以下のコマンドを実行します。
$ lein test
これにより、プロジェクト作成時に生成されたtest
ディレクトリ下にあるテストが実行されます。
今回はLeiningenの基本的な使い方として、new
/deps
/repl
/run
/test
の5つのタスクについて説明しました。
次回は今回の内容を踏まえて簡単なプロジェクトの作成方法について見てみましょう。