WEB+DB PRESS Elixir第1章やってみた

はじめまして、Elixir教育事業部のこーへーです٩(ˊᗜˋ*)و

みなさん、Elixirという言語はご存知でしょうか？そういう僕も、2年前までは、知りませんでした。
というか、現在33歳なのですが、プログラミングをはじめたのも31歳とだいぶスタートが遅いです。そんな、31歳の時に奇跡的に出会った言語がElixirです。

Elixirに出会ったのかなどの経緯はいつか説明するとして、結論、Elixirはゲームみたいな感覚で超楽しい言語です。
お世辞にも僕は、プログラミングが得意ではありませんが、それでも楽しいと感じさせてくれるElixirはまさに女神。

### プログラミングをはじめるのに遅いとか無い
と言うことで、30代からプログラミングをはじめても全く遅くないわけです。いや、なんなら80歳からはじめてシニア向けのアプリを独自開発したおばあちゃんがいるくらいです。何歳からチャレンジしても遅いなんてことはないわけです。


### Elixir学習のすすめ
はい、ということで前置きはこれくらいにして、本題に入っていこうと思います。

実は、Elixir言語は海外では人気No.1,2に浮上しています。日本は海外の流れを必ずと言っていいほど受けるので、いずれ日本でElixirが隆盛をなすときもそう遠くはないはずです。

しかも、Elixirはいわゆるオブジェクト指向型言語より勉強コストが低いと言われているので現代最速で学べる言語と言っても過言ではないです。

さて、みなさん、準備はととのいましたか？
これからやっていくのはプログラムの基礎中の基礎をElixirで試してみるということです。

注意点は、なぜそうなるのか？というのは、マジで初学者の段階で深ぼってしまうとドツボにはまるので、今はこのプログラムを実行すると、こういう結果が返ってくるのね。ふむふむ。ぐらいの感じがいいかと思います٩(ˊᗜˋ*)و

今回使用する教科書は、WEB+DB PRESSのElixir特集第1章です。
こちら、一昨年の11月に発売されたのですが、下記リンクから購入も可能です。

https://honto.jp/netstore/pd-book_31925749.html

#### 整数1+1を実行
```
iex(1)> 1 + 1
2
```

#### List.to_tupleでリストをタプルに変換
```
iex(2)> List.to_tuple([1, 2, 3])
{1, 2, 3}
```

#### h関数でIOの使い方を表示
```
iex(3)> h(IO)
・
・
・
省略
```

#### _(アンダーバー)で桁を区切ることが可能、計算も可能
```
iex(4)> 1_000_000 + 1
1000001
```

#### 16進数と10進数の計算が可能(全ての進数どうし計算可能)
```
iex(5)> 0.314e1 - 0.01
3.1300000000000003
```

#### 整数2×3を実行
```
iex(6)> 2 * 3
6
```

#### 整数10÷2を実行
```
iex(7)> 10 / 2
5.0
```

#### div関数(除算)を使い、10÷2を実行
```
iex(8)> div(10, 2)
5
```

#### rem関数(剰余)を使い、10÷3を実行、余りを出力
```
iex(9)> rem(10, 3)
1
```

#### 論理演算trueを実行
```
iex(10)> true
true
```

#### 論理演算falseとtrueを比較演算を用いて、比較
```
iex(11)> false == true
false
```

#### :をつけるとアトムと呼ばれる値になる。?は末尾にしかつけれられない制約がある
```
iex(12)> :how?
:how?
```

#### 同じアトムの比較は常にtrueになる
```
iex(13)> :ok == :ok
true
```

#### 文字列の表示
```
iex(14)> "Hello"
"Hello"
```

#### 文字列どうしの連結
```
iex(15)> "Hello" <> "World"
"HelloWorld"
```

#### 文字列補間を使った計算
```
iex(16)> "1 + 1 =#{1 + 1}"
"1 + 1 =2"
```

#### Elixirは文字のコードポイントを見るのに?を使う
```
iex(17)> ?あ
12354
```

#### 同じ型のタプルの作成
```
iex(18)> {1, 2}
{1, 2}
```

#### 違う方がのタプルの作成
```
iex(19)> {:ok, "OK"}
{:ok, "OK"}
```

#### 同じ型のリストの作成
```
iex(20)> [1, 2]
[1, 2]
```

#### 空のリスト作成
```
iex(21)> []
[]
```

#### リストを|で区切ることでheadとtailで区切ることができる。headに文字列のa、tailに空のリストを作成
```
iex(22)> ["a" | [] ]
["a"]
```

#### リストの中にリストを作り、それぞれをheadとtailで区切った実行結果
```
iex(23)> [1 | [2 | []] ]
[1, 2]
```

#### リスト連結の実行結果
```
iex(24)> [1, 2, 3] ++ [4, 5, 6]
[1, 2, 3, 4, 5, 6]
```

#### リストから指定した値を減算
```
iex(25)> [1, 2, 3] -- [2]
[1, 3]
```
#### in演算子を使い、1がリストに含まれているかをチェック
```
iex(26)> 1 in [1, 2, 3]
true
```

#### headに文字列型の値を既存のリストに追加
```
iex(27)> ["新規追加" | [1, 2] ]
["新規追加", 1, 2]
```

#### キーワードリストをタプルで作成
```
iex(28)> [{:a, 1}, {:b, "b"}] 
[a: 1, b: "b"]
```

#### キーワードリストの省略形。
```
iex(29)> [c: "22", b: "33"]
[c: "22", b: "33"]
```

#### マップの作成。同じマップ内に同じkeyを作ることはできない。
```
iex(30)> %{"key" => "value", :key => :value}
%{:key => :value, "key" => "value"}
```

#### マップの省略形
```
iex(31)> %{key: "value"} 
%{key: "value"}
```

#### colorにマップを束縛
```
iex(32)> color = %{:red => 0xff0000, blue: 0x0000ff}
%{red: 16711680, blue: 255}
```

#### colorから指定したkey:redのvalueを取得
```
iex(33)> color[:red]
16711680
```

#### colorから指定したkey:blueのvalueを取得
```
iex(34)> color.blue
255
```

## まとめ
いかがでしたでしょうか？初学者の方は、このレベルでも何をやっているかわからないということもあると思います。
もちろんElixirを実行するための環境もPCにないといけませんし、その他にもいくつかソフトウェアを使うので、現段階でご自身のPCで試すのは難しいという方もいるかと思います。

ただ、安心してください。このシリーズでは、さらにレベルを落として解説する記事も作成していきます。さらに、無料のイベントも開催していく予定です。ちなみに第一回目は4/25(木)19:00~開催予定ですので、下記リンクからドシドシお申し込みください。

【参加条件】
・30歳以上
・プログラミングで稼いでいきたい意欲のある方

http://ptix.at/5xWr2a