ペパ研 国際会議

Erlang and Elixir Factory SF Bay 2017 / Elixir Conf Japan 2017 参加報告

ペパ研 国際会議

ペパボ研究所客員研究員の力武健次(りきたけ・けんじ)です。この記事では3月23日〜24日に米国サンフランシスコで行われたErlang and Elixir Factory SF Bay Area 2017と、4月1日に東京・秋葉原で行われたElixir Conf Japan 2017の参加報告をします。(文中敬称略)

Erlang and Elixir Factory SF Bay Area カンファレンス

Erlang and Elixir Factory SF Bay Area (EEF)カンファレンスは、ErlangやElixirといったErlang VM上の並行プログラミングシステムのコンサルティングを行っているErlang Solutions社が同社主催のイベントシリーズの1つとして2009年から米国カリフォルニア州サンフランシスコ近郊で行っているイベントです。会議の内容は、ErlangやElixirのシステム自身、またその応用に関する各種発表です。この会議は北米最大のErlangカンファレンスであり、また代表的なElixir関連イベントの1つでもあります。

EEFカンファレンスは最初の2009年から2011年まではサンフランシスコ国際空港(SFO)の近くのBurlingameという街にあるHilton SFOで行っていましたが、2012年からは開催場所をサンフランシスコのダウンタウンにある現在のMarines’ Memorial Club and Hotel(MMC)に移しています。このMMCというホテルは米軍海兵隊関連の財団が運営しており、古風ですが独特の落ちついた雰囲気があり過ごしやすいところです。力武は2010年より毎年参加しており、今年でもう8回目となりました。

カンファレンスにかかる費用は決して安いものではありません。参加費のみで、朝食や昼食付きで、チュートリアルで1日300米ドル弱、トレーニングとなると4日で2000米ドルを超える価格となります。そのため力武は毎年必ず話すトピックを考えて講演募集に応募し採択された上で、40分の講演を引き受ける代わりに会議に無料で参加できるようにしています。もっとも、それでもMMCへの宿泊はカンファレンスレート割引でも1泊200米ドルを超えますし、米国への往復の旅費も安いものではありません。しかも会議はすべて英語で行われます。とても遊び気分で参加できるものではありません。

EEFへの参加の意義と力武の講演内容

そこまでしてこのEEFカンファレンスに参加する意義は何かといえば、以下の3点にまとめることができます。

  • 日本から比較的近い米国西海岸にてErlangやElixirの最前線の人達と交流できる。
  • ErlangやElixirの開発状況についての最新のトピックを議論できる。
  • 発表者として自分の講演を収録してもらい、講演終了後1日以内にYouTubeのビデオで公開してもらうことができる。これはリアルタイムストリーミングよりもずっと効果的な情報の共有の方法だと個人的には思っています。

力武は過去7年、以下のトピックで講演しています。

  • 2010年: Erlang secure RPC and SSH module
  • 2011年: Erlang/OTP and how the PRNGs work
  • 2012年: IPv6 programming for Erlang/OTP
  • 2013年: Amateur Radio Propagation Analysis with Erlang/OTP and Riak
  • 2014年: Star Trek: revisited in Lua and Erlang/OTP
  • 2015年: Xorshift* and Erlang/OTP: searching for better PRNGs
  • 2016年: Fault-Tolerant Sensor Nodes with Erlang/OTP and Arduino

そして今年2017年はWriting A New Erlang/OTP Module for Beginnersというトピックで講演を行いました。講演の内容はこちらのYouTubeのビデオにあります。

今年の講演は、個別技術の解説を主としていた例年とは違い、EricssonでErlang/OTPの開発に携わるOTPチームとの自分の共同作業の経験を基に、 自分の成果をErlang/OTPに反映させるにはどのようにOTPチームと共に作業すればよいか をまとめたものとしました。これは2016年末に自分が開発にかかわったErlang/OTPのrand疑似乱数モジュールの開発が一段落ついたこともあり、OTPチームの外の(=被雇用関係にない)者から見た体験談をまとめておけば同じようなことをする人達にとって役立つものになるからであろうと考えたからでもあります。講演に先立ち、関連する内容の英文ドキュメントも作成しました。

今年はさらに、ライトニングトークにてElixirで作ったディレクトリリスティングモジュールplug_static_lsの話をすることができました(ビデオはこちらにあります)。力武がElixirで作ったツールについて英語で話をしたのはこれが最初になります。

今年のEEFカンファレンスでのハイライト

今年も例年通りEEFカンファレンスではErlangやElixirに関する興味深い発表が行われました。これらの内容はすべてYouTubeのErlang and Elixir Factory SF 2017プレイリストから参照することができます。

毎年恒例となっているのはOTPチームからの開発状況の発表(OTPチームの1人Lukas Larssonが担当)です。今年はOTPバージョン20のRC1が5月3日、RC2が5月31日、正式版が6月21日にリリース予定であることが発表されました。この他にも、VM内共有テーブルであるETSの機能改善や、モジュールをOTP標準配布物から分離する作業などの長期的開発計画について発表が行われています。

カンファレンスの基調講演の1つとしては、“Language Encodes Wisdom”というSarah Allenによる講演が印象的でした。この講演では、「言語が過去の知恵を未来に伝える」という原則に基づいて、諸々の人間が話してきた言語と同様に、ErlangやElixirがどうやって過去の並行システム記述の知見を伝えてきたかについての考察が行われました。そして彼女が運営するプログラミングを広く社会に伝えるための非営利法人であるBridge Foundryと、その教材の1つでElixirに関するElixirBridgeの紹介が行われました。

また、カンファレンスの講演としては、Pragmatic Bookshelfの創設者の1人であるDave Thomasによる“Transforming Programming”が印象的でした。彼はElixirの著書をPragmatic Bookshelfから自ら記して出版するほどのElixir好きで、昨年は「プログラミングElixir」という書籍が日本語の翻訳で出ています。また、2014年のErlang FactoryカンファレンスでのElixirの作者José Valim(ジョゼ・ヴァリム)との共同講演では、Erlangへの(主にライブラリが充実していないことに関する)批判を堂々を行ったことで物議を醸し、力武もその場に居合せていささか場の空気が不穏になったことを覚えています。しかし、今年のEEFカンファレンスの講演と、たまたま力武も受けることができた3月25日のチュートリアル”Idiomatic Elixir”にて、彼がElixirに期待しているものが、Elixir(そしてErlang)が持つパターンマッチングと内部状態の明示的な記述による関数型の特徴を活かしたプログラミング、そしてその上に実現されるOTPの並行処理機能であることが力武にもようやく理解できました。 プログラミングとはデータの変換である という考え方に基づく彼の講演は、一聴に値します。

その他力武の興味を惹いた講演については、後述するElixir Conf Japan 2017での参加報告スライドにまとめています。

Elixir Conf Japan 2017

EEFカンファレンスから帰国して間もなく、一般社団法人 Japan Elixir Associationが主催するElixir Conf Japan 2017が開かれました。このカンファレンスはErlangとElixir関連の日本のカンファレンスとしては初めてのもので、事前販売の300名分のチケットは無事に売り切れ、会場の秋葉原コンベンションホールは満員の熱気に包まれました。

このカンファレンスはElixirのカンファレンスであると同時に、力武が2008年にErlang/OTPの勉強を始めたころから精力的に活動をしている人達がErlang/OTPとElixirの両方のビジネスを経験してきた上で満を持して開催したものであるという印象を受けました。

キーノートではElixirの作者であるJosé Valimが、Elixirがどのように成長し変わっていったかについて概説すると共に、UTF-8のアトム名での使用(Erlang/OTP 20が必要)、独自の静的型付けメカニズム(このカンファレンスで初公開)、属性テストの導入など新機能についても語っていました。

そしてその後の各社セッションでは、Elixir導入に係る苦労、大規模導入の際に必要な工夫等について、詳細な事例報告と解説が行われました。ライトニングトークも実務的な内容が広く網羅されていました。力武は前述のスライドにある通りのEEFカンファレンスへの参加報告を15分の特別枠をいただいて行いました。報告の最後では、 EEFカンファレンスには日本人が非常に少ないため、もっと積極的に参加し、発表して欲しい ということを強調しました。

そして、最後のクロージングキーノートは、日本でのErlang/OTPビジネスの先鞭を付けた時雨堂のV氏による「なぜErlang/OTPを使い続けるのか」という、Erlangの欠点を語りながらも、Erlang/OTPへの熱い想いを語るトークにて終了しました。この後の懇親会も、カンファレンスのスポンサー各社のご尽力もあって大いに盛り上がっていました。

このカンファレンスを通じて見えてきたのは、オンラインゲームのような複数のゲームが同時進行し、なおかつプレーヤーのアクションやゲームの状態が頻繁に変わり生成と消滅が繰り返されるようなシステム応用には、ErlangやElixirのような軽量プロセスを記述できる仕組みを持つ言語が最適であるということです。今後WebやHTTPベースのアプリケーションを支えるバックエンドとして、ElixirやErlangは引き続き有力な選択肢であり続けるでしょう。

各種セッションとライトニングトークなどについては、以下の報告が参加した方々のblogや記事として上がっています。

なぜErlang/OTPやElixirを学び続けるのか

最後に、筆者の力武にとって、Erlang/OTPやElixirが現在までにもたらしてくれたことを述べてこの記事をまとめます。

Erlang/OTPやElixirは、それまでの手続き型の制御構造や共有メモリを前提としたプログラミングの慣習を排し、並行処理やメッセージパッシングなど、大規模な処理を迅速に書くことに特化したプログラミングシステムです。Erlang/OTPやElixirの学習を通じて、力武は以下のことを学んだように思います。

  • 変数への単一代入原則など、共有メモリの使用を極力排除し、各操作についてロールバックを容易にすることの重要性。これについては力武の2014年6月の電子情報通信学会第26回ICSS研究会の研究報告(PDF)にて記しています。
  • OTPのgen_serverなどに代表される各種サーバ等の定型化。重要な処理はパターン化してまずは使ってみることができるようにすることで、プログラミングエラーが減ります。
  • より普及している言語の見掛けを保ちつつ、親しみやすい形で新しいプログラミング手法を導入することの重要性。Elixirは作者JoséのRuby on Railsの経験を活かし、これを実現しています。おかげで力武もペパ研で開発が進んでいるmruby関連の技術などに興味を持てるようになりました。

今後、ElixirやErlang/OTPがどのように発展していくかは予想がつきませんが、これらの高度な並行プログラミングシステムを学ぶことによって、他のプログラミング言語やシステムへの理解が深まったように、力武は個人的には感じています。


【PR】パートナー積極採用中!

ペパボ研究所では、新しいパートナーを求めています。詳細については、当研究所のトップページをご覧ください。