ElixirConf Japan 2017 に行ってきた

ElixirConf Japan 2017 に行ってきたよ。

最初に書いておくと、私は Elixir に関しては全く書いたことがなく、Erlang についても遥か昔にちょっとだけ触って、今は忘却の彼方という感じ。 さすがに行く前にチュートリアルくらいやっておくか、と思ってたのだけど、結局時間が作れなくてできずじまい…。

何しに行ったんだよ感がすごいけど、まあ色々と縁があったのでお邪魔しました。

感想を書くけど、こういうレベルなので適当なことや的外れなことを書いてると思う(いつものこと)。 (あと特に後半はバッテリー切れによりほとんどメモが取れてないので記憶がやばい。)

「Opening Keynote」 by José Valim

Elixir とはどういった言語なのか、その歴史と、未来の話、だと思う。たぶん。

ゆっくりしゃべってくれて聞きとりやすいと評判の英語だったけど、基本的なリスニング能力がそもそもないのでゆっくりだろうが聞きとれない程度の英語力でした。本当にありがとうございました。

Elixir も英語もわからないなりに聞いた感じ、型システムの導入を検討している点が興味深かった。型システムが入れば Elixir の売りの一つであるメンテナンス性も上がりそうな気がするし、型いいよね。

Phoenix で作るスケーラブルなリアルタイムゲームサーバー」 by hdtkkj

ミクシィのゲーム部門、XFLAG の方の発表。モンストの裏側の話。

Phoenix で作るにしてもやはり苦労ポイントは色々あるようで、なんかよくわからないけどすごそう(小並感)。

実際にサービスで動いているのかという質問に、実はまだ動いてないという回答は色々と察するものがあった。

「Elixir から始める関数型言語」 by tuvistavie

発表資料: http://tuvistavie.com/slides/elixir-fp-intro/

パターンマッチ、末尾再帰最適化、高階関数、イミュータビリティ、そしてイミュータブルな世界でどうやって状態を扱うのか。

最初に書いた通り、Elixir 入門以前みたいな感じなので、チュートリアル的な内容はとても助かった。私の場合、関数型を(ある程度)知っている視点で Elixir の機能を知ることができた。

= がパターンマッチなのはとてもおもしろい。ただ今は型システムがないようなので、型が入るともっと色々できるようになるのかなーと想像した。

「Elixir 導入提案」 by cooldaemon

gumi の CTO の cooldaemon さんが、 Erlang や Elixir とどのように出会い関わってきたか、みたいな話。いや、話の主題はそこではないけども。

SLA 99.9982% というキビしい条件が求められるところ、Erlang なら 99.9999999% が可能、と。Erlang まじすごい。

Erlang 導入したけど変更多い部分は Perl 強要されたり、Scala に浮気したけど Elixir に戻ってきたり、色々あって聞いてておもしろかった。特に Erlang 使いたいがために出世するというのがすごい。

というわけで gumi は今後 PythonErlang をやめて Elixir でリプレースしていくらしい。すばらしい。

「Elixir はリアルタイムWeb に強いというのは本当か?」 by mururu

発表資料: https://speakerdeck.com/mururu/elixirkariarutaimuwebniqiang-i-toiufalsehaben-dang-ka

難しくて完全に雰囲気で聞いてた…。プロセス可視化のやつが見た目すごそうな雰囲気出ててよかった。

Rubyist |> (^o^) |> Alchemist 〜Elixirの採用からサービス稼動までの記録〜」 by ohr486

発表資料: https://www.slideshare.net/ohr486/elixirconfjapan2017sessionohr486

どのようにしてチームに Elixir を導入するか。教育の手法などの話。

かなり具体的な実務的な内容で、これから Elixir を採用しようと思ったチームにとってすごく参考になりそうな話だった。

個人的にはそういった立場にないのでアレだけど、並列に動くように書けるか、とか、テストなんかの話もあったので個人で何かやる場合にも参考にできそう。

「ニコニコを支えるErlang/Elixir 〜 大規模運用して初めて見えたアレやコレ」 by kojingharang

発表資料: http://niconare.nicovideo.jp/watch/kn2397

ドワンゴの Elixir の導入規模がやばくて会場(TL)がどよめく。全体的にやってることが大規模かつ高レベルで、ただただすごいなーという感想だった。

なんか今発表資料見たら当日使われてなかった(収まらなかった?)ページが最後の方にあった。ツールちゃんと作ってるのもさすがだし見習いたい。

LT: 「Why did we decide to start using Elixir?」 by ma2ge

発表資料: https://speakerdeck.com/ma2gedev/why-we-decided-to-start-using-elixir

なぜ Elixir を使うのか、という問いに対して 3 つの理由を挙げている。

実際にはこれ、Elixir に限らずあらゆるものに対して適用できそうな理由なので、なぜ Elixir という問いの答えにはなってなさそうだけど、理由については共感できるものだし私も新しいことやって行きたいと思った。

LT: 「「Surge」 - Amazon DynamoDB for Elixir」 by hirocaster

発表資料: https://speakerdeck.com/hirocaster/surge-amazon-dynamodb-for-elixir

Surge の紹介。この辺りの基礎知識がなさすぎたので、キーワード聞いたら思い出す程度にとどめておこう。

LT: 「初心者のElixir |> Flow,GenStage |> Concurrent MapReduce」 by ovrmrv

発表資料: http://qiita.com/ovrmrw/items/14dc9907c2ec699f849c

Flow を使うと並列処理してくれてすごいらしい。すごい!

逆に言えば、いくら Elixir 使ってもちゃんと意識して書かないと並列にはならないってこと。当然だけど大事。

LT: 「AngulaとElixirの新しい関係」 by isyumi_net

発表資料: https://www.slideshare.net/ssuserd34c39/angulaelixir

Vim の設定が大変だった部分がどう大変だったのかが気になりすぎて他のことを覚えていない。ごめん。(単にフロントエンドよくわかってないというのもある)

LT: 「Elixirでbotkitを倒す」 by ne_sachirou

倒せなかったらしい…。

Botkit と Hedwig を比較した。Botkit は速いけど安全じゃない。Hedwig は、速くはないが安全。

LT: 「APIサーバーとしてのCowboy」 by hayabusa333

軽量サーバ Cowboy の紹介。そもそも Phoenix の内側で使われているのが Cowboy らしい。私なんかはそもそも Phoenix が Web フレームワークだということをこの日に知った感じなのでとてもアレ。

LT: 「Elixir client from OpenAPI(Swagger) definition」 by niku_name

発表資料: http://slide.rabbit-shocker.org/authors/niku/elixir-conf-japan-2017-04-01-lt/

Elixir 用の OpenAPI のアレ。Swagger はちょっと触ったことあるけど、あれいいですね。Elixir でも使えるというのはとてもよい。

LT特別枠(15分): Erlang and Elixir Factory SF Bay 2017 参加報告」 by jj1bdx

発表資料: https://speakerdeck.com/jj1bdx/erlang-and-elixir-factory-sf-bay-area-2017-can-jia-bao-gao

当然(?)ながら、私はこの Erlang and Elixir Factory というもの自体知らないわけなんだけど、いやはや会議日程がすごい。トレーニングやばい。

で、恐らく一番伝えたかったのは最後のスライド。「日本の皆さんもすごい成果出しているので発表しましょう!」

私も分野は違えど何かしてもあまり発表とかしたがらない人なので(あまり大したことはできてないけど)、割と他人事ではない気もしつつもうぐぐ…英語~。

「クロージング Keynote」 by Voluntas

発表資料: https://gist.github.com/voluntas/81ab2fe15372c9c67f3e0b12b3f534fa

ここまで、Erlang VM つよい!すごい!みたいな話が多かったけど、まあ当然いいことづくめってわけにも行かないわけで。欠点も知っておきつつ、長所が活きる場所で使う。そのために欠点の部分もちゃんとカバーされていたのはとてもよかった。

特に技術の dis って(今回のは別に dis ではないけど)、本当にその技術に精通している人だからこそできるものだと思う。最後にこの話が聞けてよかった。

まとめ的なやつ

ほぼ知識ゼロで参加したけど、全体を通して、Erlang VM はとにかく堅牢性が高い、落ちない、そしてとっつきづらい文法の Erlang にかわって、書きやすくメンテナンスしやすい言語として Elixir があるということがとても伝わってきた。

Erlang や Elixir が注目されている理由について今までピンと来ていなかったので、そこがわかっただけでもだいぶ収穫だった。

未経験で、場違いなんだろうなーとドキドキしながら参加して、実際場違い感はあったけど、思い切って参加してよかった。来年までにはチュートリアルやっておきます。