17
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ElmAdvent Calendar 2016

Day 16

[Elm] Web API サポート状況

Posted at

Elm Advent Calendar 2016 の16日目です。

Web API のサポート状況

A Farewell to FRP で触れられている通り、Elm は Web API を使ったライブラリの公開をコミュニティに許していません。(これについては議論すると長くなるので、詳しくは読みにいってください。)

そこで、よく知られている Web API のサポート状況をざっくり表にまとめました。該当パッケージがない場合は、Port を使いましょう。

API 該当パッケージ 補足
History elm-lang/navigation いわゆる SPA のためのルーティング。
DOM elm-lang/dom フォーカス・スクロール・要素のサイズ取得。caret position や mesureText なども候補には上がっている。
HTML elm-lang/html Virtual DOM。
SVG elm-lang/svg Virtual DOM。
Canvas (非推奨) evancz/elm-graphics 最終的にはもっと機能を増やしたAPIを公開するとのこと。
... I expect we will eventually have an API specifically targetted at canvas that covers more features.
WebGL elm-community/webgl API改善に向けて elm-dev にて議論中。
HTTP elm-lang/http
Web Socket elm-lang/websocket
Geolocation elm-lang/geolocation
Page Visibility elm-lang/page-visibility
Web Storage N/A パッケージ未公開。キャッシュとして使うことを前提に LocalStorage をラップ。
Cookie N/A パッケージ非公開。セキュリティ上の問題からサポートしない事にした(Maybe the Cookies API should not exist)。
File / Binaries N/A ファイルのアップロードはよく議題に登る。バイナリ一般は先が遠そう。
Web Audio API N/A かなり先は遠そう。
Web RTC N/A かなり先は遠そう。
Web Worker N/A POCがあるので可能ではありそう。
Service Worker N/A
その他 N/A

見ての通りオーディオなどは本当に弱いです。もし使う予定があれば、最初から Port 前提で設計を考えるのが良いでしょう。Native Module は非サポートなので、がっつり依存すると何が起こるか分かりません。

Port は公式ドキュメントにある通り "JavaScript as a Service" と考えるのが妥当です。関数の代用として考えるときついと思います。ちなみに、Elm 0.17で Port の使い方が変わりました。定数が使えなくなっていますが、Mainモジュール以外からでもport moduleと宣言すれば Port が使えるようになっています。

17
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?