Text
Page: 2
ヽ(´・⾁・`)ノ
にくです
農業とITをつなぐベンチャーで
働いています
コンサドーレ札幌が好きです
Page: 3
発表の目的
必要なときに ErlangVM を思い出
して
選択肢として含められるようにす
ること
Page: 4
サッポロビームの⽅から
ErlangVMに載っている⾔語に関す
る話題やそうでない話題でわいわ
いやる集まりです.
だいたい毎週⽊曜⽇にやっていま
す.
このまえ 80 回目でした
Page: 5
ビーム(Beam)
はBogdan/Björnさんの
Erlang抽象マシン(Bogdan/
Björnʼs Erlang Abstract
Machine)を表しています。この
名前はVM自⾝の名前です。
Page: 6
ErlangVM
そもそもは Erlang という⾔語のた
めに作られ,育てられた VM
Page: 7
Erlang
そもそもは ERICSSON という会
社で作られた⾔語
Page: 8
ERICSSON
スウェーデンにある通信機器メー
カー
Page: 9
通信機器ソフトに求められる
処理を並⾏してたくさん⾏う
障害をのりきって動く
バージョンアップ中にも動く
それなりに速く動作する
Page: 10
ErlangVM もまた
処理を並⾏してたくさん⾏う
障害をのりきって動く
バージョンアップ中にも動く
それなりに速く動作する
Page: 11
⽇本だと
ドワンゴさんのニコニコ⽣放送は
Erlang で運用されているみたい
Page: 12
(`・⾁・)<よさそう
フフ,そうでしょうとも.
Page: 13
(´・⾁・)<知らないなあ
アッ……ハイ
すごくよく話題に登るわけではな
い
Page: 14
出自が異なる
Python は C 由来(たぶん?)
Erlang は Prolog 由来
C で⾒慣れた構⽂とは少し違う
Page: 15
Erlang コードの例
運転免許の例
慣れると特に困らない(みたい
Page: 16
Elixir コードの例
ErlangVM で使える⾔語 Elixir
速度ペナルティはない
多少みたことある感じ
Page: 17
今回は Elixir で説明します
僕が慣れているため
当然 Erlang でも同じことができ
ます
Page: 18
処理を並⾏してたくさん⾏う
好きな⾔語で実装してみよう
Page: 21
処理を並⾏してたくさん⾏う
実⾏する
Page: 23
障害をのりきって動く
好きな⾔語で実装してみよう
Page: 24
障害をのりきって動く
Erlangの⼀般的なポリシーをお教
えします:「クラッシュするなら
させておけ」です。(略)
下にネットが敷いてある綱渡りの
ようなものです。
Page: 25
障害をのりきって動く
Let it crash
(クラッシュするならさせておけ)
(`・⾁・)< 信じて作る
Page: 28
障害をのりきって動く
(´・⾁・)< 障害のりきれなかた
Page: 30
障害をのりきって動く
Erlangの⼀般的なポリシーをお教
えします:「クラッシュするなら
させておけ」です。(略)
下にネットが敷いてある綱渡りの
ようなものです。
(´・⾁・)<ネット敷いてなかた
Page: 31
障害をのりきって動く
ErlangVM においてのネット
それは Supervisor (監視者)
Worker が綱から落ちたら再挑戦
させてくれる
Page: 34
障害をのりきって動く
(`・⾁・)< 障害のりきれた!
Page: 35
バージョンアップ中にも動く
好きな⾔語で実装してみよう
Page: 39
それなりに速く動作する
Erlang だとプロセスの分離
spawn を多用する
Python だとだいたい Thread
といえるかな……
多用する spawn はどのくらい速い
のか
Page: 42
それなりに速く動作する
Python 100 万個のスレッドを
作るのに 84.5 秒.
ErlangVM 100 万個のプロセス
( スレッドのようなもの ) を作る
のに 9.13 秒
10 倍くらい速いみたい
Page: 43
それなりに速く動作する
注意: ErlangVMは普通のCPU処
理は遅いみたいです