レポート

生みの親が語るElixirのこれまでとこれから ―「ElixirConfJapan 2017」参加レポート

この記事を読むのに必要な時間:およそ 3 分

2017年4月1日,秋葉原コンベンションホールにて「ElixirConfJapan 2017」が開催され,300人を超す参加者が集まり大盛況となりました。その模様をレポートします。

オープニングの模様

オープニングの模様

オープニングキーノートセッション ―José Valim氏

オープニングキーノートはElixirの作者であるJosé Valim氏による講演です。2017年1月で5歳になるElixirの歴史と今後の展望について発表しました。

José Valim氏

José Valim氏

何故Elixirを作ろうとしたのか

2011年,並行処理の重要性が高まりから,その課題解決のアプローチとして,関数プログラミングに注目したとJosé氏は語り始めました。

RubyやPython等のオブジェクト指向プログラミング言語では,複数のスレッド間で並行的にオブジェクトの状態操作を行うのは難しいという問題があります。そこで,関数プログラミングにより状態を明示的に扱い,オブジェクトの状態を変化させるのではなく,状態が変更された新しいオブジェクトを生成するというアプローチを取る事で,平行処理をシンプルに扱う事ができるのだとJosé氏は説明します。

Haskell,Clojure,OCamlなどさまざまな関数型言語を研究し,Erlang/OTPに出会ったとJosé氏は言います。Erlang/OTPは並行処理だけでなく分散環境への対応や耐障害性など,並行処理の先の事まで考慮された言語で,とても気に入り,使い始めたそうです。

しかし,Unicode対応が無く自分の名前が扱えなかったり(José氏はブラジル出身です)⁠メタプログラミングをする方法が無い等の制限があり,自分自身のプログラミング言語を作成する事にしたそうです。

プロトタイプ言語

最初のプロトタイプの言語は2011年1月から4月までの間に開発されました。このプロトタイプ言語は,現在のElixirとかなり違うものだとJosé氏は言います。

実際,このプロトタイプ言語は,

  • defobjectを使ってオブジェクトを定義
  • JavaScriptのようなプロトタイプオブジェクトモデル
  • メタプログラミングのためにどこでもevalを実行可能
  • 非常に遅い
  • Erlang/OTPのモジュール・関数を呼び出すことはできない

といった特徴を持ち,現行のElixirを普段使用している筆者も,全く別物だと感じます。

ゴールの再定義

こうして出来上がったプロトタイプ言語は,残念ながら満足いくものではなく,José氏はElixirのゴールを以下のように再設定したと続けます。

  • 生産性が高い(mix等の便利な管理ツール)
  • 拡張性が高い(ポリモーフィズムやメタプログラミングのサポート)
  • 互換性が高い(Erlang/OTPのモジュール・関数を呼ぶことができる)

そしてplataformatec社の共同設立者となり,フルタイムでElixirを開発することとなります。

2017年までのElixir開発について

こうして開発が進められたElixirですが,2012年9月にバージョン1.0がリリースされました。当時のコントリビューターは180人で,3冊の書籍が発売され,初めてのElixirカンファレンスが開催されたと紹介がありました。

そして,2017年1月にはバージョン1.4がリリースされ,コントリビューターは520人になり,ElixirとErlang/OTPのライブラリのホスティングサイトのhex.pmには3800ものパッケージが公開され,数多くの書籍やポッドキャスト,オンラインクラスがあります。さらに世界中でElixirカンファレンスが開催されるようになりました。そう,日本でも!

Elixirは何でできているか?

次にElixirの構成要素について話をされました。Elixirを構成する要素は以下の3つであるとJosé氏は説明します。

  • データ(状態を表現する)
  • モジュール(振る舞いを表現する)
  • プロセス(時間変化を表現する)

Elixirを構成する3つの要素

Elixirを構成する3つの要素

ハッシュオブジェクトの操作とプロセスの生成を例に,この3要素を使ってどうElixirが動作するのかの解説が行われました。

2017年以降の展望

最後に,今後Elixirへ導入を検討している言語要素として,

  • UTF-8アトムの対応(対応中)
  • GenHTTP(研究中)
  • データストリームとプロパティテスト(研究中)
  • 型システムの導入(研究中)

の4つが紹介されました。

1つ目は現在導入作業中のUTF-8アトムの対応です。現在のElixirとErlang/OTPでは,UTF-8のアトムを作成することはできませんが,この対応によってUTF-8のアトムが利用可能となります。近いうちに日本語のアトムやテストで日本語が使えるようになり,以下のようなコードが記述可能となるそうです。

test "こんにちは世界" do
  assert :こんにちは世界
end

2つ目はプロセスレベルでHTTP関連の操作を行うGenHTTPの提供,3つ目はデータストリームとプロトタイプテストです。これらはまだ研究段階と説明されていました。

そして4つ目が今回のセッションの一番の目玉となった型システムです。GenHTTPデータストリームとプロトタイプテスト同様に,まだ研究段階とのことでしたが,発表されると「Elixirに静的型チェックが来る!」と筆者もかなりの驚きと期待でいっぱいになりました。

なお型システムに関するアナウンスは,このキーノートセッションが初めてだったそうです。

まとめ

Elixirの今後の展望について述べて終了したキーノートセッションですが,終了後の質疑応答でも型システムに関する質疑が飛び交ったり,懇親会でもJosé氏を交えて型システムについて議論されたりと,かなりの盛り上がりを見せました。

著者プロフィール

大原常徳(おおはらつねのり,ohr486, おーはら)

tokyo.ex主催運営,JapanElixirAssociation理事。「ElixirConfJapan2017」には主催運営とスピーカーとして関わる。

株式会社ドリコムに所属し,主に全社基盤や広告基盤を開発。好きなビヘイビアはGenEvent。

Twitter:@ohrdev
Github:https://github.com/ohr486

コメント

コメントの記入