Elm
関数型プログラミング

わざわざ学ばなくてもいいプログラミング言語一位Elm

2019年にわざわざ学ばなくてもいいプログラミング言語という記事で堂々一位にElmがランクインしました!名誉ですね!

記事の大事な部分を引用すると、


同社のランキングは、コミュニティのエンゲージ、成長、雇用市場の3つの側面から決定したスコアに基づく(編集部注:Codementorは発表について、3つの側面に基づく評価をしたものであり、「名前の挙がった言語の有用性を過小評価したり、その価値を疑問視したりするものではない」と説明している)。


それでは、有用性や価値の部分について、わざわざ学ぶ必要があるか無いかを検証してみましょう!


障害に強いプロダクトを作れる

Elmは「静的型付関数型言語」という40年以上の歴史を持つ研究成果を活用しています。その結果、



  • 実用上ランタイムエラーが出ない(nullやundefinedが存在しない)


  • とてもわかりやすい親切なエラーメッセージがでる

  • コードの規模が大きくなっても全体の設計が崩れることがない

という利点を得られます。

何だ大したことないですね! これらの利点は一切の設定もせずに、何のライブラリも入れること無く 自然に得られるのです!

Elmのコードは副作用がなく(副作用を起こすことはできます)バグを起こすことがないので、1ファイル2000行を目指すことを推奨されたり。仮に20ファイルある状態でコードを変更したとしても、脳死でコンパイルエラーを治すだけでリファクタリングが完了すると言う難しいことを考えなくて良いというカルチャーショックが存在します!

実際にElmのコンパイラの制約でバグを数え切れないぐらい防ぎ、

1ファイル1000行突破するのはコンビニに行くのと同じ感覚になりました。

うん!学ぶ必要なさそう!


いろんな初学者に対しての敷居が低い

Elmの文法はとても少なく、この1ページにすべてが集約されています。公式のガイドも日本語コミュニティの方々によって日本語訳されていています。Elmは情報量が少ないと言われていますが、そもそも覚えることが少ないのです。(もちろん実用的なノウハウはもっと増えてくると嬉しいですね!)

公式ガイドはとても短いですが、質が高く・方向性がユニークです。


あらゆる言語で使える法則やパターンを重視すること

Elm に対して様子見の立場である方も、Elm をちょっと試してみて実際に何かプロジェクトで使ってみると JavaScript や React のコードがいままでよりもうまく書けるようになっているはずです。 Elm で得られた知見はいろんなところで簡単に役立てることができます。」


とElmを使わなかったときにも知識が役立つことと明記されている点です。あとは先程も書きましたが、エラーがお母さん並に親切で初学者が挫折する方が難しかったりします。日本語の書籍「基礎からわかる Elm」は公式ガイドで足らない部分の補完をしていて、とーーーーっても丁寧にマニアックな情報なんかも書いていて買わない理由はないぐらいのクオリティになっています。

Elmをオンラインで簡単に試せるEllieというサービスもあります。自由にパッケージを入れれて便利です。

日本の情報だと、Twitterに「Elm」というキーワードを入れて疑問をつぶやくと、すぐさま疑問に答えてくれるようです。

うん!学ぶ必要はなさそう!


プロジェクト管理が楽

ElmはThe Elm Architectureというフレームワークを一択にしている言語です。また、テストフレームワークも実質一択なのでバージョンアップなどが非常に楽です。さっさと実運用レベルの環境が欲しい方のオススメのボイラプレートがこちらになりますが、ガチガチに整えたとしてもこれほどしか依存がありません。

Elmのパッケージはpackage.jsonとは別にelm.json管理下に置かれます。ここで管理されるサードパーティ含む全てのライブラリは、セマンティックバージョニングが強制されています。(ライブラリ作者はバージョンを手打ちすることはなく、利用者は基本ライブラリバージョンを指定する必要がありません)。さらにバージョンアップ時にどんな変更差分があったかコマンド一発で見ることができ、非常に楽です!

スクリーンショット 2019-04-19 6.56.11.png

うん!学ぶ必要はなさそう!


学んだ人がみんな笑顔になる

僕はオンラインでもオフラインでもElmをフロント・プログラミング初心者の方に教える機会が多いのですが、大体魔法を見ているような感覚と、あれ?簡単過ぎてじぶん続けれそう!という感想を抱いて笑顔になってくれます。リピーターも非常に多く、次も教わりたい!と言われるケースが多いです。オンラインでも楽しい楽しいという声がとても多く見受けられます

プログラミングは苦しんでやるものですね! 

うん!学ぶ必要なさそう!