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
iex内でモジュールの関数を実行できる
`$ iex -S mix `
と実行すると、iexに作成したモジュールがロードされて、関数を実行できます。
今回は作りながら試すのにこの方法を用いました。割りとやりやすかったです。
今回はこんなもんですかね。書き忘れがあったら追記します。
mix testとかもやってみたいですね。
作成にあたっては「Elixir in Action」が大変参考になりました↓

- 作者: Sasa Juric
- 出版社/メーカー: Manning Pubns Co
- 発売日: 2015/07
- メディア: ペーパーバック
- この商品を含むブログを見る
Techmix Hokkaido 2014 Elixir - niku - Rabbit Slide Show
Elixirなかなかいいですね。関数型の利点を活かしつつ手続き型の書き方もできますし。
何より文法がわかりやすくていい感じです。
それでは、お疲れ様でした。ごきげんよう。