38
erlaNg and eLixir 2016/04/16 NLNagoya 2016/04/19 tokyo.ex

Erlang and Elixir

Embed Size (px)

Citation preview

Page 1: Erlang and Elixir

erlaNg and eLixir2016/04/16 NLNagoya 2016/04/19 tokyo.ex

Page 2: Erlang and Elixir

自己紹介name = ハヤブサ|> TwitterID = hayabusa333|> heart = [ カーネル , GC, Erlang, Elixir]|> jobs = 派遣ウェッブプログラマ|> position = [Joel 教 , 翔鶴瑞鶴仲良し姉妹同盟 , 社畜系 Alchemist]

Page 3: Erlang and Elixir

Elixir と Phoenix の薄い本を出しました(ページ数:240 )電子書籍版を BOOTH で販売中https://hayabusa333.booth.pm/items/186705

自己紹介 ( 宣伝 )

Page 4: Erlang and Elixir

Elixir とはErlangVM(BEAM) にて動くプログラム言語Erlang を今風の言語っぽくかけるようにした言語

Page 5: Erlang and Elixir

Erlang とは小さな子プロセスを大量に作成し、管理することによって平行性・耐障害性に強い関数型言語

Page 6: Erlang and Elixir

Elixir をやりたいならElixir は ( それなりに ) ドキュメントが ( たぶん ) しっかりしているので、ドキュメント読めばよい

Page 7: Erlang and Elixir

なので Elixir のドキュメントに書いてない箇所を話します。

Page 8: Erlang and Elixir

なにを話せば良いかなっと考えて (Elixir には N の文字がないし )

Page 9: Erlang and Elixir

Elixir は ErlangVM 上で動くし、 Erlang に近い部分を話せば良いかと考えた

Page 10: Erlang and Elixir

過去に Elixir の起動時の話をして内部実装について話していてhttp://www.slideshare.net/hayabusa333/iex

Page 11: Erlang and Elixir

その時気づいたことhttp://d.hatena.ne.jp/hayabusa333/20160113/1452686320

Page 12: Erlang and Elixir

Elixir には 4 つのコマンドがあるelixirelixirciexmix

Page 13: Erlang and Elixir

Elixir のコマンド自体を確認してみるhttps://github.com/elixir-lang/elixir/blob/master/bin/elixir

Page 14: Erlang and Elixir
Page 15: Erlang and Elixir

あっ、これシェルスクリプトだ

Page 16: Erlang and Elixir

elixir コマンドの最終行を確認

Page 17: Erlang and Elixir
Page 18: Erlang and Elixir

最終的にコードをErlang 側に渡しているだけでしたー

Page 19: Erlang and Elixir
Page 20: Erlang and Elixir

ま、まあ Elixir をやっていたらErlang をやるのは当たり前だし

( 震え声

Page 21: Erlang and Elixir

/lib/*/ebin のファイルはどうやってできるのか

Page 22: Erlang and Elixir

Elixir のビルドはMakefile でビルドするので Makefile を見ていけばわかる

Page 23: Erlang and Elixir
Page 24: Erlang and Elixir

make したらデフォルトはcompile のためErlang で書かれた Elixir のコードを compile しているだけ

Page 25: Erlang and Elixir

rebar は Erlang のcompile やテストやリリースを行うための統合ビルドツール

Page 26: Erlang and Elixir
Page 27: Erlang and Elixir

elixir.app.src ではErlang でビルドするための情報が記載されている

Page 28: Erlang and Elixir
Page 29: Erlang and Elixir

make install でcompile でできた beam ファイルを指定のディレクトリに配置!

Page 30: Erlang and Elixir

Erlang 以外の何物でもないな!

Page 31: Erlang and Elixir

Elixir が作られた理由はErlang の文法でアプリケーションを書くのが苦痛だったため(出典不明)

Page 32: Erlang and Elixir

しかし Elixir の内部はErlang

Page 33: Erlang and Elixir
Page 34: Erlang and Elixir

Elixir は Erlang を抽象化できるほどには育っていない(そもそも全て抽象化しきるつもりもない…はず?)

Page 35: Erlang and Elixir

漏れのある抽象化の法則抽象化は失敗する。あるときは小さく、あるときは大きく、漏れがあるのだ。物事は悪くなるものだ。この漏れは抽象化が行われているあらゆる場所で起こる。

Page 36: Erlang and Elixir

そもそも Elixir を書くときの考え方は Erlangの思想が必要

Page 37: Erlang and Elixir

Elixir をやるならErlang は切っても切れない関係

Page 38: Erlang and Elixir

ご静聴ありがとうございました