Slide 1

Slide 1 text

Elixirのライバルを 紹介する (仮) 2015-08-25 Shibuya.ex #1 LT もっこす(@moccos[twitter|GitHub])

Slide 2

Slide 2 text

ライバル? 適用分野が似ているという意味のライバル(Rails等)ではなく 姿形の似たアクターモデルのライバルを紹介

Slide 3

Slide 3 text

VS Erlangとの比較も話題としてはあるけれど、今回は無しで

Slide 4

Slide 4 text

VS この4つを紹介 (一番右はロゴがなかった)

Slide 5

Slide 5 text

Akka • http://akka.io/ • 2.3.12 (current stable release) • JVM • Java / Scala 既にメジャーバージョン2、だいぶ充実してきている

Slide 6

Slide 6 text

Akkaといえば… Play Frameworkが一番有名かも Akkaの上に実装されている

Slide 7

Slide 7 text

公式を見ると、何やらあちこちで採用されている おそらくErlangと同様にバックエンドなので、見た目にはわからない

Slide 8

Slide 8 text

ドキュメントも充実

Slide 9

Slide 9 text

いろいろな機能が実装されている Erlang/OTPの売りであるSupervisorも ある

Slide 10

Slide 10 text

Akka vs Elixir Akka Elixir Scala / Java 言語 Elixir / Erlang JVM 処理系 Erlang VM メッセージ スケジュール単位 簡約 全体 GC Processごと 静的 型 動的 速い 演算速度 遅い そんな強力なライバルAkkaとの比較 かなりの部分がJVM と Erlang VMの比較

Slide 11

Slide 11 text

Akka vs Elixir Akka Elixir Scala / Java 言語 Elixir / Erlang JVM 処理系 Erlang VM メッセージ スケジュール単位 簡約 全体 GC Processごと 静的 型 動的 速い 演算速度 遅い Erlang VMの強みは • Actorのスケジュール → 長く演算しているErlangプロセスが占有しない • グローバルに同期しないGC → Stop the worldの危険性が低い という、Actor model専用機ならではの部分かと

Slide 12

Slide 12 text

Orleans • http://dotnet.github.io/orleans/ • 1.0.9 (NuGet) • .NET • C# / F# / VB Microsoft謹製 超大型FPS Halo4 のサーバーサイド (https://channel9.msdn.com/Events/Build/2014/3-641 このスライドの説明がとてもわかりやすい)

Slide 13

Slide 13 text

Orleansの思想 Virtual Actor

Slide 14

Slide 14 text

Virtual Actor instances always exist, virtually

Slide 15

Slide 15 text

Virtual Actor • あるActorが常時存在する (ように見える) • 落ちたら勝手にどこかで復活する • Let it crash! の単純化 Erlang等だと、再起動ポリシーをこまごまと設定できるけども とりあえず再起動してくれればいいよ、とまで単純化できるのであれば 楽が出来そうなしくみ

Slide 16

Slide 16 text

Orbit • http://orbit.bioware.com/ • 0.4.5 (Maven central) • JVM • Java / Scala

Slide 17

Slide 17 text

heavily inspired by the Orleans project

Slide 18

Slide 18 text

Orbitの雑な説明 • OrleansのJVM版クローン ほとんど同じ機能が実装されている でも、.NETではなくJVMで動くというだけで価値がある

Slide 19

Slide 19 text

Pony • http://www.ponylang.org/ • 0.1.7 (on 18 Jun) • ネイティブバイナリにコンパイル 最後に色物、まだ出来たての言語

Slide 20

Slide 20 text

でも既にCommercial Supportがある。謎の気合

Slide 21

Slide 21 text

要素は全てActor。これはErlang VMと同じといえる (喋る時間がなかったけども、GCがActor単位で可能な利点をPonyも持つ)

Slide 22

Slide 22 text

他の文法を雰囲気だけ見てみると… 変数宣言、これはわかる

Slide 23

Slide 23 text

なんだこれは → Objectの参照権で細かく分類されている

Slide 24

Slide 24 text

Pony • ドキュメントがなくてつらい • そもそも言語機能が多くて難しい • 理想が高いのはわかる • 演算性能が高くなるはずなのもわかる (ドキュメントについて補足) 一切全く無いのでなくチュートリアルはあるが、網羅的でない Exampleやソースコードが頼り

Slide 25

Slide 25 text

(とても大雑把な) まとめ • Akka • 機能豊富 • 実績あり • Orleans / Orbit • Actorの死活管理がシンプルでよければ • 分散システム前提 • Pony • 現状は人柱 • たぶん動けば速い

Slide 26

Slide 26 text

(とても大雑把な) まとめ •Elixir • Erlang VMの応答性が最強