Program > JavaScript > AltJS > Elm > Elmガイド > コマンドとサブスクリプション
今まで多くは触れませんでしたが、これまでのプログラムは全て Browser.sandbox から生成されていました。
初期値としてのModelを与え、どのようにそれをupdateしてviewするのかを説明してきました。
Browser.sandboxではシステムを下記のように構成すると考えることができます:
我々はElmの世界(上図のブルーの部分)の中にとどまり、いろいろな関数を書いたりデータを変換したりします。
そしてこの世界がElmのランタイムシステムとつながります。
全てのDOM操作を明確に分離することにより、極めて積極的な最適化が実現可能となります。
続くいくつかの例ではプログラムを作るためにBrowser.elementを使っていきます。
そこでは外の世界とのやり取りを可能とするためのコマンドとサブスクリプションの概念を導入していきます。
Browser.elementではシステムを下記のように構成すると考えることができます:
このプログラムではHtmlという値に加えて、CmdとSubなる値をランタイムシステムに送り出します。
ここでは我々のプログラムがランタイムシステムに対してHTTPリクエストを送ったり乱数を生成するよう指示することができます。
また現在時刻をランタイムシステムから待ち受けて我々のプログラムで使うこともできます。
この図をHaskellに置き換えて考えると、
と分割しているように見えます。
果たして、コマンドとサブスクリプションとは、一体何なのか!?
先に読み進めて正体を探ってみたいと思います!