2014の1日目です。Elmはクライアントサイド向けの関数型言語です。HTML/CSS/JSにコンパイルされるElmはHTML/CSS/JSにコンパイルして使用します。この辺はJavaScriptにコンパイルされるAltJSに似ています。AltJS同様、Elmも特別なランタイムライブラリは不要です。Elmは1つのソースでHTML/CSS/JSをすべてまかなえるのが特徴です。JavaScript"をモットーにしています。文法を改良するのみで、「中身」はJavaScript以上でも以下でもありません。Elmでは直接JSやCSSを操作することはできません。基本的にすべてElmの関数・レイアウトライブラリを使わなければなりません。これはとっつきにくいのですが、逆に見れば「歴史的なしがらみによる汚さ」を扱う必要が無いと言うことです。Portsを通じてJavaScriptとやりとりしたり、Canvas風にHTMLに埋め込んで使うこともできます。HaskellベースであるElmはHaskellを元に若干の修正を加えた独自言語です。Elmは強力な静的型を備えています。「0に.nameというプロパティはありません」的なエラーとは無縁です。あらゆるものは関数です。Programing)に対応しているElmはHaskellベースなので状態や変数はありません。クライアントには状態変化がありまくりです。etc...JavaScriptの場合は状態変化はonmousemoveなどのcallbackを使って関数で明示的に扱うことになります。callbackが増えてきて、しかもネストしだすと何がなんだかわからなくなります。callback地獄です。Elmでは組み込みの<~と~を使います。30)更新の処理はElmが勝手に行ってくれます。FRPについてはこちらのスライドが大変優れているので、こちらをご覧ください。Playgroundが充実しているElmはPlaygroundに力を入れています。GoなどにもPlaygroundはありますが、Elmのは、シンタックスハイライトあり型の候補の表示あり自動でコンパイル右側でコンパイル結果を操作可能と、かなり機能が充実しています。Exampleも基本文法から、応用までそろっています。ExamplesElmのPlaygroundのゆるかわほっこり感は、Haskellの取っ付きにくさを打ち消してあまりあるものがありますね。Haskellだけど怖くない私はHaskellはこんなイメージです。確かに、JavaScriptとはシンタックスが全然違うのでとっつきにくくはあります。最初はコンパイルが通らなくて苦労します。ElmはPlaygroundで簡単にトライ&エラーを繰り返す事ができます。「最初の100個の素数を求める」のような人工的な例ではなく、目に見えて実際に動くアプリを作る事ができるので、Haskellよりモチベーションを保ちやすいでしょう。ElmにはFRPがある代わりにElmにモナドはありません。ElmはAnglarJSを置き換える言語である?既にクライアントサイドには様々なAltJSやライブラリがあるのに、なぜ新しくElmを学ぶのか?私の場合はAngularJSへの疑問でした。難しすぎる!3つの異なる言語(HTML/CSS/JavaScript)を同時に扱わなくてはならない。多い!→難しい!WEBは10年20年先も存在し続けると思いますが、AngularJSが10年使われるか疑問です。Elmはシンプルです。言語は1つだけ*2FRPの仕組みは汎用的(フォーム入力にも、APIコールにも、アニメーションにも何にでも使える)「すべてが関数」関数は容易に組み合わせられるひょっとしたら、Elmにはクライアントサイドの未来の主流になるかもしれません。少なくともElmにヒントがあるのは確かです。関連リンクPOSTDにElm関連の翻訳記事があります。これらをよんでモチベーションを高めてから始めるといいと思います。POSTDあとがき明日2日目は「Elmをインストールする」です。2014にはまだ空きがあります。ふるってご参加ください。*1:場合によってはCoffeeScript、Less、Slimなども学ばなければなりません。HTMLやJavaScriptと連携すれば別です。2014の14日目の記事です。2014の6日目です。2014の3日目です。月別アーカイブはてなブログをはじめよう!doloopwhileさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。