Elm について (はじめに)
Elm は JavaScript にコンパイルできる関数型プログラミング言語です。 ウェブサイトやウェブアプリケーションを作るのに役立ちます。Elm はシンプルであること、簡単に使えること、高品質であることを大切にしています。
このガイドは以下のことを目指します。
- Elm によるプログラミングの基礎を身に着けてもらうこと
- The Elm Architecture を使ってインタラクティブなアプリケーションを作る方法をお見せすること
- あらゆる言語で使える法則やパターンを重視すること
最終的にはあなたには Elm を使って素晴らしいウェブアプリをただ作れるようになるだけでなく、Elm をうまく使えるようになるための核となるアイディアやパターンを理解してもらえればと思います。
Elm に対して様子見の立場である方も、Elm をちょっと試してみて実際に何かプロジェクトで使ってみると JavaScript のコードがいままでよりもうまく書けるようになっているはずです。 Elm で得られた知見はいろんなところで簡単に役立てることができます。
Elm を知るためのサンプルコード
以下のコードは、数をインクリメント(+1)したりデクリメント(-1)したりする小さなプログラムです。
import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)
main =
Browser.sandbox { init = 0, update = update, view = view }
type Msg = Increment | Decrement
update msg model =
case msg of
Increment ->
model + 1
Decrement ->
model - 1
view model =
div []
[ button [ onClick Decrement ] [ text "-" ]
, div [] [ text (String.fromInt model) ]
, button [ onClick Increment ] [ text "+" ]
]
こちらのオンラインエディターで試してください。
このコードは、はじめはきっと見慣れないものでしょうから、どんなことをしているかをこのあとすぐに説明します!
なぜ関数型言語を採用しているか
関数型スタイルでプログラミングすることで、いくらかの恩恵を受けられますが、Elmのような関数型言語でしか得られないものがあります。
- 実用上ランタイムエラーがでない
- とてもわかりやすい親切なエラーメッセージ
- 信頼性の高いリファクタリング
- すべてのElmパッケージは自動的にセマンティックバージョニングが強制されている
JSのライブラリだけではこれらすべてを保証できないでしょう。ですが言語自体の設計によって保証できるようになります!これらが保証されているおかげで、今までこんなにも自信を持ってプログラミングできたことはない、と言うことがElmプログラマーには珍しくありません。自信を持って素早く機能を追加したり、数千行をリファクタリングできるようになります。それでも、何か大事なところを見落とす心配はないのです!
作者のEvanはElmを簡単に学んで使いはじめられるように多大な注力をしているので、Elmを少し試してみてぜひあなたの感想を教えてください。 (訳注: elm-jpでは日本語でElmについてやりとりできるdiscordを用意していますので、ぜひ招待リンクから参加して感想をお聞かせください)
Elmによって楽しく新鮮な感動を覚えていただけると幸いです。