Text
Page: 1
蛇とビーム
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: 19
処理を並⾏してたくさん⾏う
Page: 20
処理を並⾏してたくさん⾏う
Page: 21
処理を並⾏してたくさん⾏う
実⾏する
Page: 22
処理を並⾏してたくさん⾏う
Page: 23
障害をのりきって動く
好きな⾔語で実装してみよう
Page: 24
障害をのりきって動く
Erlangの⼀般的なポリシーをお教
えします:「クラッシュするなら
させておけ」です。(略)
下にネットが敷いてある綱渡りの
ようなものです。
Page: 25
障害をのりきって動く Let it crash (クラッシュするならさせておけ) (`・⾁・)< 信じて作る
Page: 26
障害をのりきって動く
Page: 27
障害をのりきって動く
Page: 28
障害をのりきって動く (´・⾁・)< 障害のりきれなかた
Page: 29
障害をのりきって動く
Page: 30
障害をのりきって動く
Erlangの⼀般的なポリシーをお教
えします:「クラッシュするなら
させておけ」です。(略)
下にネットが敷いてある綱渡りの
ようなものです。
(´・⾁・)<ネット敷いてなかた
Page: 31
障害をのりきって動く ErlangVM においてのネット それは Supervisor (監視者) Worker が綱から落ちたら再挑戦 させてくれる
Page: 32
障害をのりきって動く
Page: 33
障害をのりきって動く
Page: 34
障害をのりきって動く
(`・⾁・)< 障害のりきれた!
Page: 35
バージョンアップ中にも動く
好きな⾔語で実装してみよう
Page: 36
バージョンアップ中にも動く
Page: 37
バージョンアップ中にも動く
Page: 38
バージョンアップ中にも動く
Page: 39
それなりに速く動作する Erlang だとプロセスの分離 spawn を多用する Python だとだいたい Thread といえるかな…… 多用する spawn はどのくらい速い のか
Page: 40
それなりに速く動作する
Page: 41
それなりに速く動作する
Page: 42
それなりに速く動作する Python 100 万個のスレッドを 作るのに 84.5 秒. ErlangVM 100 万個のプロセス ( スレッドのようなもの ) を作る のに 9.13 秒 10 倍くらい速いみたい
Page: 43
それなりに速く動作する 注意: ErlangVMは普通のCPU処 理は遅いみたいです