LoginSignup
0

More than 3 years have passed since last update.

Elixir入門の入門(インストール→「Hello, World!」を表示)

Last updated at Posted at 2018-12-19

最近、Elixirが気になっているので、Elixirのインストールと「Hello, World!」を表示するスクリプトを書いてみました。

Elixirをインストールする

まず、Elixirを利用するための環境を整備したいと思います。
Elixirのインストールは、公式サイトに記載されています。
https://elixir-lang.org/install.html

私は、Macを利用しているので、 brew コマンドで簡単にインストールすることができます。

$ brew install elixir

「Hello, World!」を実行してみる

とりあえず、「Hello, World!」を実行してみます。
iex コマンドを利用すると、インタラクティブにコードを実行することができます。

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

Interactive Elixir (1.7.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> IO.puts "Hello, World!"
Hello, World!
:ok

せっかくなので、新規に helloworld.ex というファイルを作成し、コンパイルして実行してみます。
ちなみに、私は開発にVisual Studio Code(以下、VS Code)を利用しているので、 vscode-elixir というプラグインを使っています。シンタックスハイライトなども行ってくれるので、とても便利です。
https://marketplace.visualstudio.com/items?itemName=mjmcloug.vscode-elixir

helloworld.ex
defmodule Helloworld do
    def helloworld do
        IO.puts "Hello, World!"
    end
end

Helloworld.helloworld

コンパイル方法は、下記の通りです。

% elixirc helloworld.ex
Hello, World!

コンパイルの実行が終わると、 Elixir.Helloworld.beam というファイルが生成されます。

% ls
Elixir.Helloworld.beam  helloworld.ex

コンパイルされたファイルを実行するには、 elixir -e コマンドを実行します。

% elixir -e Helloworld.helloworld
Hello, World!

ソートプラグラムを作ってみる

「Hello, World!」だけではつまらないので、ソートプラグラムを作ってみたいと思います。
作るとは言っても、既に Enum.sort というメソッドが用意されているので、そのメソッドを利用してみたいと思います。

Enum.sortのドキュメントは下記URLを参照ください。
https://hexdocs.pm/elixir/Enum.html#sort/2

数値配列を降順ソートする実行結果は下記の通りとなります。
とても簡単です。

iex(1)> list = [1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
iex(2)> Enum.sort(list, &(&1 >= &2))
[5, 4, 3, 2, 1]

また、文字列配列をバイト数が大きい順に並べるには、下記コマンドを実行します。

iex(1)> list = ["a", "ab", "abc", "abcd", "abcde"]
["a", "ab", "abc", "abcd", "abcde"]
iex(2)> Enum.sort(list, &(byte_size(&1) > byte_size(&2)))
["abcde", "abcd", "abc", "ab", "a"]

とても便利。以上です。

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
What you can do with signing up
0