Help us understand the problem. What is going on with this article?

Enjoy Elixir #001 -- mix new, iex -S mix, mix format

Enjoy Elixir #001 -- mix new, iex -S mix, mix format

by torifukukaiou
1 / 13

はじめに

  • KFIEという近畿大学産業理工学部の情報系コミュニティがあります
  • 最近は、毎週火曜日にLT会をやっているそうです
  • 私が学生だったのはもうずいぶん昔のことなのですが、参加させてもらっています
  • 毎週、5分間時間をもらって、Elixirいいよ! を伝えていきたいとおもいます
  • 今日は以下を学びます
    • iex
    • mix new
    • mix test
    • mix format
    • iex -S mix
  • A journey of a thousand miles begins with a single step.
  • この記事はElixirを触るのがはじめてという方に向けて書いています

もくじ

001 mix new, iex -S mix, mix format
|> 002 型
|> 003 Pattern matching
|> 004 Modules and functions
|> 005 Pipe operator and Enum module
|> 006 HTTP GET!
|> 007 Flow
|> 008 AtCoderを解いてみる
|> 999 Where to go next


0. インストール

  • まずはElixirをインストールしましょう
  • Windowsの方は
    • 公式 のインストーラーがあります
  • macOSの方は
  • Linuxの方は、asdf-vmがよいとおもいます
  • エディタはVSCodeがオススメです
  • 私は普段よくmacOSを使っておりまして、macOSでしか動作確認しておりません
  • Windows, Linuxについては事情を把握できていない場合がありますのであしからずご了承ください

1. iex

$ iex
Erlang/OTP 23 [erts-11.0.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

Interactive Elixir (1.10.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> 40 + 2
42
iex(2)> "hello" <> " world"
"hello world"
iex(3)> h System.halt
...
  • Windowsの場合は、iex.bat です
  • iexコマンドで少しずつ実行しては結果を試しながら実行できます
  • hで関数のドキュメントを参照できます
  • 全部打ち込まなくてもタブで補完してくれます
  • 終了するときは、System.halt で終わらせましょう

2. プロジェクトの作成(mix new)

$ mix new hello
  • mix newで以下のプロジェクト構造が作られます
hello
├── README.md
├── lib
│   └── hello.ex
├── mix.exs
└── test
    ├── hello_test.exs
    └── test_helper.exs
  • プログラムをファイルに書きたい場合は、プロジェクトを作ることをオススメします
    • $ mix testですぐに実行できるテストの雛形が手に入る
    • $ mix formatでフォーマットができる
    • そのうち本格的なプログラムを作る際にはmix newするようになるので最初からそれに慣れておく

テストの実行

  • テストの雛形が含まれています
  • テストを実行してみましょう
$ cd hello
$ mix test

自動的に作られた.exをよくみてみる

  • mix newで以下のコードが自動的につくられています
  • Hello.hello/0が定義されています
    • /の後ろの数字の意味は引数の個数です
    • この場合は引数なし(0個)
lib/hello.ex
defmodule Hello do
  @moduledoc """
  Documentation for `Hello`.
  """

  @doc """
  Hello world.

  ## Examples

      iex> Hello.hello()
      :world

  """
  def hello do
    :world
  end
end
  • ## Examplesのところは、Doctestsと呼ばれる部分です
  • 結果の:worldをたとえば:helloに書き換えて $ mix testを実行するとテストが失敗します
  • ExDocというツールでドキュメントを生成することができます
    • 生成されるドキュメントの例はたとえば、Enum.map/2 です
      • Enum.map/2はこれから接する機会が多い関数の一つです
    • Elixirのドキュメントはライブラリもたいていこの形式で書かれていて統一されているのがいいです
    • コメントで書いたところがテストされているので、ドキュメントのコード例が正確です!
    • 自分のプロジェクトのドキュメントを生成する方法はまたいつか別の機会に説明をします

実行

$ iex -S mix

iex> Hello.hello
:world

コードフォーマット

  • mix newで作ったプロジェクト配下では、下記のコマンドでソースコードのフォーマットを行ってくれます
$ mix format

探検

  • mixコマンドのtask一覧は下記で確認できます
$ mix help
mix                   # Runs the default task (current: "mix run")
...
mix new               # Creates a new Elixir project
...
iex -S mix            # Starts IEx and runs the default task
  • さらにtaskの詳細を知りたい場合には以下のようにします(以下newの例)
$ mix help new

3. Wrapping Up

  • iex, mix new, mix test, iex -S mix, mix formatを学びました
  • 次回はについて説明しようとおもいます
  • We are the Alchemists, my friends!
  • Enjoy!!!

参考

fukuokaex
エンジニア/企業向けにElixirプロダクト開発・SI案件開発を支援する福岡のコミュニティ
https://fukuokaex.fun/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away