22
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Elixir初心者がmix使う時に最低限必要そうなコマンド自分まとめ

Last updated at Posted at 2018-10-22

mixがんばる

ElixirでプログラミングをすすめるにあたってElixirのプロジェクト管理ツールのmixは避けて通れないと思ってきたので「これはいるやろ」ってコマンドをまとめてみました。

環境

OS: macOS High Sierra 10.13.6
Elixir: % brew install elixirでインストール

% iex --version
Erlang/OTP 21 [erts-10.1.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] [dtrace]

IEx 1.7.3 (compiled with Erlang/OTP 21)

概要

今のところ(2018.10.22時点)、mixのコマンドはコレだけでなんとかなりそうな予感。

  • mix new <プロジェクト名>
  • mix deps.get
  • mix escript.build or iex -S mix

そのうち必要になるやろうねぇってのがmix test

  • mix test

mix new <プロジェクト名>

実際には<プロジェクト名>PATHらしいけどmixで新しいプロジェクトを作成する時に実行するコマンドはmix new <プロジェクト名>。カレントディレクトリに<プロジェクト名>のディレクトリが作成されるので、cd <プロジェクト名>して作業をすすめる。

プログラムファイルはlibディレクトリに置く。

ヘルプを参照する時はmix helpmix help TASKコマンドを実行するとOK。


% mix new <プロジェクト名>

% mix help
% mix help TASK

mix deps.get

依存関係の解消を含めてライブラリの管理をしてくれるコマンド。プロジェクトディレクトリ内のmix.exsファイルに必要な内容を記載した後、コマンドを実行する。基本的にはhex.pmからライブラリを取得してくれるみたいやけど、きちんと書けばGitからも取得できる。


依存関係を確認する
% mix deps

依存関係を解消(解決)する
% mix deps.get

ヘルプ
% mix help deps
% mix help deps.get

mix escript.build or iex -S mix

mixで作成したプログラムをどうやって実行するかによってどちらを使うか決める。

mix escript.buildの場合

escriptって仕組みを使って実行ファイルをビルドすると、実行ファイルが出来上がる。本番環境にデプロイする時はこっちかなぁ〜。

iex -S mixの場合

開発、テストしゆ時はこっちかなぁ〜。でも、エディタの機能でなんとかなりそうかなぁ〜。

実践

コマンドに引数となるテキストを渡すと末尾に「ぜよ!」を付けて返すバイナリファイルを作ってみます。

まずmix_testというmixプロジェクトを作って、お約束のテストを実行。

% mix new mix_test

* creating README.md
* creating .formatter.exs
* creating .gitignore
* creating mix.exs
* creating config
* creating config/config.exs
* creating lib
* creating lib/mix_test.ex
* creating test
* creating test/test_helper.exs
* creating test/mix_test_test.exs

Your Mix project was created successfully.
You can use "mix" to compile it, test it, and more:

    cd mix_test
    mix test

Run "mix help" for more commands.



% cd mix_test



% mix test
Compiling 1 file (.ex)
Generated mix_test app
..

Finished in 0.07 seconds
1 doctest, 1 test, 0 failures

Randomized with seed 571241

次に、末尾に「ぜよ!」を付けて返すプログラムをエラー処理とか引数いろいろあった場合は考慮せず作ります。
escript.buildしてプログラムを実行する時はmain/1関数が必要なので作っておきます。ついでに引数のデフォルトを""にします。

lib/zeyo.ex
defmodule Zeyo do

  def main(args \\ "") do
    args
    |> addTail
  end

  defp addTail(text) do
    IO.puts("#{text}ぜよ!")
  end

end

んで、mix.exsファイルにescript.buildするための設定行を追記します。Zeyoモジュールにmain/1があるのでmain_moduleでZeyoを呼びます。

mix.exs
defmodule MixTest.MixProject do
  use Mix.Project

  def project do
    [
      app: :mix_test,
      version: "0.1.0",
      elixir: "~> 1.7",
      escript: [main_module: Zeyo],    # ←この行を追記
      start_permanent: Mix.env() == :prod,
      deps: deps()
    ]
  end

  # Run "mix help compile.app" to learn about applications.
  def application do
    [
      extra_applications: [:logger]
    ]
  end

  # Run "mix help deps" to learn about dependencies.
  defp deps do
    [
      # {:dep_from_hexpm, "~> 0.3.0"},
      # {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"},
    ]
  end
end

いよいよビルド。

% mix escript.build
Compiling 2 files (.ex)
Generated mix_test app
Generated escript mix_test with MIX_ENV=dev

おっ。ちゃんとバイナリファイル「mix_test」ができちゅう。

% ls
README.md  _build/    config/    lib/       mix.exs    mix_test*  test/

最後にコマンドを実行して遊んでみた。

引数がない場合
% ./mix_test
ぜよ!

引数がある場合
% ./mix_test mix
mixぜよ!

引数が2バイト文字の比較
% ./mix_test はろーわーるど
はろーわーるどぜよ!
% ./mix_test "はろーわーるど"
はろーわーるどぜよ!

まとめ

mixを使うにあたって現時点で最低限必要そうなコマンドをまとめて作ってみました。もっと増やせるようにしたいな。
mix deps.getするのを忘れちょったき、次はmix deps.getすることを考えます。

参考サイト

22
13
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?