Elixir入門 01: コードを書いて試してみる
Tags: elixir, webdev, tutorial, programming
Published: 2018-10-02 07:41:47

---
title: Elixir入門 01: コードを書いて試してみる
published: true
description: Elixirは動的な関数型のプログラミング言語です。拡張性が高く、メンテナンスしやすいアプリケーションが開発できます。Erlangの仮想マシン (BEAM) 上で動き、分散システム、耐障害性、ソフトリアルタイムシステムなどの機能が備わっています。まずはElixirのコードを書いて試してみます。
tags: #elixir, #webdev, #tutorial, #programming
---

[Elixir](https://elixir-lang.org/)は動的な関数型のプログラミング言語です。拡張性が高く、メンテナンスしやすいアプリケーションが開発できます。[Erlang](http://www.erlang.org/)の仮想マシン (BEAM) 上で動き、分散システム、耐障害性、ソフトリアルタイムシステムなどの機能が備わっています。本稿はElixir公式サイトの許諾を得て「[Introduction](https://elixir-lang.org/getting-started/introduction.html)」の解説にもとづき、まずはElixirのコードを書いて試してみます。

[![elixir_logo.png](https://thepracticaldev.s3.amazonaws.com/i/057beh87vjaz37ui9hg4.png)](https://elixir-lang.org/)

# Elixirのインストール
Elixirのインストールについては、公式サイトの「[Installing Elixir](https://elixir-lang.org/install.html)」にプラットフォームごとに説明されています。英語ですが、いずれも作業は数行のステップです。

# インタラクティブモードで試す
Elixirはコマンドラインツールでインタラクティブに試せます。起ち上げのコマンドは`iex`(Interactive Elixirの意)です。つぎのような表示になるでしょう(細かいところは環境によって異なります)。Elixirのインタラクティブモードを抜けるには、[Ctrl]/[control] + [C]のキーを2回押してください。

```
Erlang/OTP 20 [erts-9.3.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Interactive Elixir (1.6.5) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
```

四則演算は他の言語と変わりません。`iex`では結果がつぎの行に示されます。

```elixir
iex(1)> (1 + 2) / 3 + 4 * 5
21.0
```

文字列はダブルクォーテーション(`"`)でかこみ、つなぐときは演算子`<>`を用います(`ies`の表示のあとのかっこ内()の数字はカウントアップされます)。

```elixir
iex(2)> "hello" <> " " <> "world"
"hello world"
```

# ファイルに書いたコードを動かす
コードをテキストファイルに書いて動かすこともできます。何行かのプログラムを書いていろいろ試したいときは、こちらの方が便利でしょう。ただし、結果を見るには[`IO.puts`関数](https://hexdocs.pm/elixir/IO.html#puts/2)で出力しなければなりません。たとえば、つぎのElixirのコードをファイルsample.exsとして保存します。

```elixir
IO.puts "hello" <> " " <> "world"
```

すると、コマンドラインツール(`iex`ではありません)から、つぎのように実行できます。

```terminal
$ elixir sample.exs
hello world
```

# Elixirについての質問
Elixirについて質問できる場としては、つぎのサイトがあります。いずれも英語が基本です。それでも、できるだけ簡潔にしたコードを示し、やろうとしたことと意図に沿わない結果あるいはエラーを説明すればよいでしょう。なお、環境の情報は忘れずに添えてください。

- [Elixir Forum](http://elixirforum.com/)
- [StackOverflow](https://stackoverflow.com/questions/tagged/elixir) (elixir)


#### Elixir入門もくじ
- Elixir入門 01: コードを書いて試してみる
- [Elixir入門 02: 型の基本](https://dev.to/gumi/elixir-02--30n1)
- [Elixir入門 03: 演算子の基本](https://dev.to/gumi/elixir-03--33im)
- [Elixir入門 04: パターンマッチング](https://dev.to/gumi/elixir-04--1346)
- [Elixir入門 05: 条件 - case/cond/if](https://dev.to/gumi/elixir-05----casecondif-60o)
- [Elixir入門 06: バイナリと文字列および文字リスト](https://dev.to/gumi/elixir-06--35na)
- [Elixir入門 07: キーワードリストとマップ](https://dev.to/gumi/elixir-07--39hi)
- [Elixir入門 08: モジュールと関数](https://dev.to/gumi/elixir-08--1c4c)
- [Elixir入門 09: 再帰](https://dev.to/gumi/elixir-09--1a0p)
- [Elixir入門 10: EnumとStream](https://dev.to/gumi/elixir-10-enumstream-4fpb)
- [Elixir入門 11: プロセス](https://dev.to/gumi/elixir-11--2mia)
- [Elixir入門 12: 入出力とファイルシステム](https://dev.to/gumi/elixir-12--4og6)
- [Elixir入門 13: aliasとrequireおよびimport](https://dev.to/gumi/elixir-13-aliasrequireimport-55c1)
- [Elixir入門 14: モジュールの属性](https://dev.to/gumi/elixir-14--3511)
- [Elixir入門 15: 構造体](https://dev.to/gumi/elixir-15--4f43)
- [Elixir入門 16: プロトコル](https://dev.to/gumi/elixir-16--lif)
- [Elixir入門 17: 内包表記](https://dev.to/gumi/elixir-17--5gci)
- [Elixir入門 18: シギル](https://dev.to/gumi/elixir-18--5791)
- [Elixir入門 19: tryとcatchおよびrescue](https://dev.to/gumi/elixir-19-trycatchrescue-50i8)
- [Elixir入門 20: 型の仕様とビヘイビア](https://dev.to/gumi/elixir-20--j50)
- [Elixir入門 21: デバッグ](https://dev.to/gumi/elixir-21--21a1)
- [Elixir入門 22: Erlangライブラリ](https://dev.to/gumi/elixir-22-erlang-2492)
- [Elixir入門 23: つぎのステップ](https://dev.to/gumi/elixir-23--50ik)

##### 番外
- [Elixir入門: Plugを使うには](https://dev.to/gumi/elixir-plug-40lb)