Elmのバージョン0.11リリースの目的はJavascriptとFRP言語をよりシンプルに組み合わせて使えるようにすることだ。この目的を達成するためにふたつの特徴が追加されている。
-
コンポーネント作成機能。コンポーネントはコンパイルされたElmのコードでdivに埋め込める。一度埋め込めばページの一部として動作する。
-
ポートはJavaScriptとElmが通信する方法を提供sる。メッセージは定義されたin-ポート経由でElmのコンポーネントに送られる。応答はout-ポートを購読するコールバック関数に処理される。
このふたつの要素を使えば、埋め込み可能なUIウィジェットを作成し、ElmのHaskellスタイルの構文とライブラリを使って処理できる。
Elmの作者であるEvan Czaplicki氏はElmの未来についてブタペストで開催された初のElmワークショップで語っている。氏はElm開発の4つの優先事項について語った。
-
ライブラリの共有
-
HTMLとJavaScript統合
-
Elmへ貢献しやすくする
-
末尾呼び出しの最適化
また氏はREPLのプロトタイプをデモした。これはコミュニティから望まれていたものだ。
ウェブサイトにはたくさんのサンプルが見られる。マリオ風のゲームはStrange Loop 2013でライブで作成されたもので、Elmのグラフィック能力を示している。より実用的なアプリとしてはTodoアプリケーション (デモ)がある。Elmの理論的な詳細はEvan氏のペーパーを参照。このペーパーはProgramming Language Design and Implementation Conference 2013で発表された。
InfoQはEvan氏に話を聞いた。
InfoQ: ワークショップでは、あなたはNode Package Modulesとの統合をして、Elmのライブラリソリューションを提供しようとしているのではないかと思いました。しかし、Elmのモジュールを他から分離してしまうことに懸念を抱いていたようですね。この問題はどのように解決しましたか。それとも新しい解決策を採用したのでしょうか。
Evan: まったく異なる解決策を採用しました。結果的にはとても良かったと思っています。Elm Public Libraryを最近公開したのですが、これによってライブラリの共有が簡単になりました。これはGitHubを利用していますが、Elmユーザにとってもスクラッチで開発するのは素晴らしい経験になりました。簡単に検索できるドキュメント (Elmで書かれています)を提供できます。この発表では技術的な決定事項やロードマップについても詳しく触れていますが、ライブラリが共有できるようになったというのが最も重要な点です。
InfoQ: 2012年、あなたはもっと産業側のサポートを強化したいと思っていました。Preziでのあなたの役割はあなたの求めているサポートを与えてくれますか。
Evan:もちろんです。Preziで働くことでElmの開発は大幅に進行しています。しかし、もっと重要なのは、Preziで働くことでElmのエコシステムを産業ユーザ向けにすることに注力できるということです。これは私の当初からのゴールです。今、私はこのゴールに達するために必要な技術的支援を受けられます。機能の優先順位やAPIの調整をしているとき、喜んで議論をしたり改善をしたりするエンジニアがいます。Preziの言語相互運用インフラから直接着想を得たこともあります。この着想のおかげでElmのポートが出来、Elm/JSの相互運用がシンプルでシームレスに実現できたのです。
InfoQ: Elmのロードマップを教えてください。
Evan: ポートが実装された0.11とこれから行うGraphics.Inputの改修によって、Elmは実運用環境で利用できる状態にかなり近づきます。今年の夏、性能の改善に注力し、末尾呼び出しの除去を行い、デバッグとIDEのサポートを改善します。一般的に、最適化とツーリングに注力することは、言語そのものではなく、実運用環境で利用するユーザ向けにシフトすることを示します。
また、Preziの内部ではすでにElmが利用されており、私はとてもわくわくしています。いままでの利用経験でわかったのは、実践ではコンポーネントモデルがとても便利だということです。Elmで書きやすいコンポーネントもいくつかあり、簡単にJSやTypeScriptに統合できます。PreziでElmを使ってコードを書いてくれる人を探しているくらいです。これはElmが産業界で通用することを証明するトライアルになると思います。