Text
Page: 1
Elixir 触ってみた
@ Ruby札幌28
ヽ(´・⾁・`)ノ
Page: 2
本⼈いわく
http://elixir-lang.org/
に書いてある Elixir による自⼰紹
介
Page: 4
全部が式(2)
module は沢⼭の式からなりた
っている.
module の内容をプログラムで
書ける
メタプログラミングできる
Page: 5
メタプログラミングとDSL
DSL を簡単に作れる(ExUnitの例)
Page: 6
protocol によるポリモーフ
ィズム
ファイルにも配列にも使えるEnum
モジュール
Page: 7
protocol によるポリモーフ
ィズム(2)
自作モジュールでも Enum を使
いたい
Enum は Enumerable という
protocol があれば使える
MyModule 向けに
Enumerable を実装する
Page: 8
protocol によるポリモーフ
ィズム(3)
Page: 9
⼀級市⺠としてのドキュメン
ト
⾔語レベルでドキュメント化を
サポートしている.
⾊んなツールで簡単にドキュメントを
使える.
マークアップ記法として
Markdown を使える.
Page: 10
⼀級市⺠としてのドキュメン
ト(2)
Page: 11
⼀級市⺠としてのドキュメン
ト(3)
Page: 12
パターンマッチング
まとまっているものをバラバラに
して扱いやすくする
Page: 13
パターンマッチング(2)
ガード節 (when) と混ぜると意図
が伝わりやすくなる
Page: 14
隅から隅まで Erlang
バイトコードレベルで互換
変換が容易
Elixir から Erlang の関数はコス
ト 0 で実⾏できる
Page: 15
本⼈いわく,のまとめ
全部が式
メタプログラミングとDSL
protocol によるポリモーフィズ
ム
⼀級市⺠としてのドキュメント
パターンマッチ
隅から隅まで Erlang
Page: 16
触ってみたくなった?
インストール⽅法は
http://elixir-lang.org/
getting̲started/1.html
の 1.1 Installation に書いてある.
Erlang R16B 以降
Elixir
が必要.
Page: 17
触ってみたくなった?(Mac)
で両⽅インストールできる.
Page: 18
触ってみたくなった?
(Windows)
Erlang: http://
www.erlang.org/
download.html
Elixir: https://github.com/
elixir-lang/elixir/releases/
それぞれのコンパイル済 zip をダ
ウンロードして解凍して使うのが
簡単でおすすめ ( らしい )
Page: 19
モダンなプログラミング⾔語
最近のプログラミング⾔語が備え
ている特徴
Elixir も備えている
Page: 20
パッケージ管理
mix :: Ruby の Rake と Bundler
を合わせたようなもの
mix new: プロジェクトを作る
mix test: テストを実⾏する
mix compile: コンパイルする
mix –help で詳しくみられる
Page: 21
ライブラリ管理 (みあたらず)
rubygems を操作する gem の
ようなコマンドはまだ⾒つけら
れない
rubygems 相当のライブラリ置
き場は http://expm.co という
のがある
Page: 22
REPL
iex :: Ruby の irb のようなもの
Page: 23
ユニットテスト
ExUnit :: Ruby の Test::Unit みた
いなもの
Page: 24
モダンなプログラミング環境
のまとめ
パッケージ管理
ライブラリ管理(みあたらず)
REPL
ユニットテスト
Page: 25
Elixir らしそうなところ
個⼈的におおっ!
となったところ
Page: 26
マクロ
Elixir の内容は全て 3 要素のタプ
ルで表されている
atom か,同じ形式のタプル
メタデータのリスト.ノードの
番号とか⾏番号などを保持する
呼び出す関数の引数のリストか
atom
ほとんどの構⽂がマクロで作られ
Page: 29
並列
並列があたりまえ.
簡単に作れるようになっている.
spawn : 違うプロセスを作る
x <- y : プロセス x に y という
内容を送る
receive : 送られた内容を取得す
る
Page: 31
並列(3)
https://gist.github.com/
niku/7301933
普通の MacBook で 100 万プロ
セス⽣成 16 秒で動くんだぜー
Page: 32
OTP
OTPとは何か?
http://www.ymotongpoo.com/
works/lyse-ja/
ja/16̲what̲is̲otp.html
大抵のプロセスでは,共通の処
理がある
パターンを⾒極めて,共通ライ
ブラリにまとめたもの
Page: 33
OTP(2)
OTP の便利なところ(⼀部)
ワーカープロセスの監視/再起動
が 組み込まれている
ダウンタイム ゼロ のリリース,
デプロイ
Page: 34
Elixir らしそうなところのま
とめ
マクロ (Elixirすごい)
並列 (Elixirが使っている
ErlangVMすごい)
OTP (Elixirが使っているErlang
のライブラリすごい)
Page: 35
思考の転換
プログラマの思考はプログラ
ミング⾔語に影響される
http://gihyo.jp/news/
report/01/rubykaigi2013/0001
“まつもとゆきひろさん,Rubyに
影響を与えた⾔語とRuby開発初期
を語る。 〜 RubyKaigi 2013 基
調講演 1⽇目”
Page: 36
想像してみてほしい
もし並列処理が簡単に書けるな
ら
もし無制限に並列処理できるな
ら
どんな考え⽅をするだろう?
Elixir を使って試してみようぜ.
Page: 37
参考にしている本/サイト
http://elixir-lang.org/
getting̲started/
http://
www.ymotongpoo.com/
works/lyse-ja/index.html
http://pragprog.com/book/
elixir/programming-elixir