ezoeコマンドをElixirで実装して分かったことまとめ

ezoeというのが何か知りませんが、
世間でezoeコマンドというものを作るのが流行ってると聞いたので、Elixirで作ってみました。
名づけてEzoelixirです。github.com

2015/06/21現在、質問機能が未実装なので、
質問ではない。
を直接もらえないというissue?がありますが。また今度実装しますw

さて今回の本題、
Elixirでコマンドラインツールを作るためのノウハウが少しだけ分かったので、まとめ。
(おそらくElixirに詳しい人にとっては当たり前のことだと思いますが)

依存パッケージの管理やビルドはmixでやる

`$ mix new myproject ` でプロジェクトを作成できる

自動でmix.exsやREADME.mdを作成してくれます。githubにpushする準備もできて超べんり。

`$ mix deps.get ` で依存パッケージをインストールできる

mix.exsに

  defp deps do
    [
      {:feeder_ex, git: "https://github.com/manukall/feeder_ex.git"},
      {:httpoison, "~> 0.7"}
    ]
  end

のようにして、使いたいパッケージ(依存パッケージ)を記入してから`mix deps.get `を実行すると、パッケージをインストールしてくれます。

コマンドラインツールを作成するときは、main関数を作成して、mix.exsに設定を追記する

実装はlibフォルダ内のmyproject.exに行います。
その中にmain関数を作っておいて、mix.exsに
`escript: [ main_module: Myproject ],`
を追記します。

def project do
    [app: :ezoelixir,
     version: "0.0.1",
     elixir: "~> 1.0",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     escript: [ main_module: Ezoelixir ],
     deps: deps]
  end

その後、
`$ mix escript.build ` を実行すると、コマンドラインツールとしてビルドされます。

iex内でモジュールの関数を実行できる

`$ iex -S mix `
と実行すると、iexに作成したモジュールがロードされて、関数を実行できます。
今回は作りながら試すのにこの方法を用いました。割りとやりやすかったです。

今回はこんなもんですかね。書き忘れがあったら追記します。
mix testとかもやってみたいですね。
作成にあたっては「Elixir in Action」が大変参考になりました↓

Elixir in Action

Elixir in Action

6/21追記: nikuさんのスライドにまとめられている内容も大変参考になります。
Techmix Hokkaido 2014 Elixir - niku - Rabbit Slide Show
Elixirなかなかいいですね。関数型の利点を活かしつつ手続き型の書き方もできますし。
何より文法がわかりやすくていい感じです。
それでは、お疲れ様でした。ごきげんよう。