と言う話。
何故、今 RSS / Atom Reader を作り始めたか
僕の場合、今現在の使用ソフトウェアとしては、
- Reeder for Mac or iOS で Feedbin.com + Instapaper を読む
という構成でド安定で、かつこの組み合せには、 まったくもって不満はない のですが、 いかんせん、僕が、
次の新しい PC に Windows Laptop 使うかなぁ
と考えていて、かつ、
今の環境を再現できる RSS / Atom Reader 、 無いっぽいぞ
という感じなので、まあ、仕方なく、というか必要にかられて作り始めました。
ただ、Reeder for Mac の代わりが欲しいとは言え、 Reeder for Mac のモロパクリのクローンなんぞ作ってもしょうがないし、 また成果物を OSS で公開する事を考えている以上、 モロパクリを OSS というのは気が引けるので、 とりあえず、色々とアレンジは加える予定です。はい。
で、次。
何故、言語に Elm を採用したか
それで、 今回の本題 。
僕は今回、 RSS / Atom Reader を作り始めるにあたって、それを実装する言語として、
を採用しました。
それで、
Elm ってどんな言語?
と言うと、基本的なイメージとしては、
Haskell っぽい けど Haskell じゃない
という特長を持つ、
Web Application の Frontend に特化 した 関数型言語
で、もうちょっと具体的に言うと、
Elm は Redux っぽい仕組み と Virtual DOM の DSL を Haskell っぽい文法 で 包んだ言語
と言えるとか思います。
そして、僕が今回、 Elm を選んだ理由なんですが、これが一言で言うと、
RSS / Atom Reader を作る事に集中するため
に付きます。
これ、どういう事かっていうと、別に RSS / Atom Reader を作る、と言う事に関して言えば、 別 に Elm 以外の組み合せでも良くて、例えば、
- React + Redux
- TypeScript + Angular2
とか、色々定番な組み合せはあるかと思います。
ただ、この定番の組み合せ、僕の中では心理コストが結構大きくて、
やれ React を入れて Redux も入れて Babel を入れで babelrc 書いて云々……
とか、結構、色々やる事が多くて、正直 RSS / Atom Reader を作り始める前にくじけてしまいそうだったし、 また、現に今の今までその手の組み合せを使った個人プロジェクトでも、案の定、くじけて最初の内から放置、 と言うのを散々に行なってきてしまったので、まあ、それは今回は困るよね、って事で Elm を採用しました。
ま、 Elm の場合、Homebrew 使ってるなら Homebrew Cask 経由で一発で入るし、
また、Homebrew 使ってなくても npm から elm
を入れたら一発で環境は整うので、
その点では環境構築のコストが低いです。
また、Elm は静的型付けの関数型言語なので、変数は全部定数、代入は一回こっきり、 それでいて、おかしなコードはコンパイル時に全部弾かれるから、バグは少なくて済む、 という、至れり尽くせりな印象で、その辺りも僕にとっては心理コストが低い要因の一つでした。
ただまあ、やっぱり静的型付けの 関数型 言語なので、慣れるまでは学習コストは掛りますし、 また、Server-Side Rendering は、まだ最適解が見つかってないので実装してない、とかなんとからしいので、 Server-Side で Rendering する必要が有るケースではまだちょっと使い辛いかと思います。
それで、今回の僕の場合だと、RSS / Atom Reader は Single Page Application だし、 また Server-Side Rendering も考えなくて良いので、こりゃ Elm 使うしかないよね、って感じで選択しました。
ま、新しい言語を触りたかった、っていうのも、有るには有りますけどね。
以上
いい加減、書きたい事を書いていたら、そろそろ長くなってきたのでもうそろそろ締めますが、 Elm で RSS / Atom Reader を作ってるの、結構楽しいです。はい。
また、僕は一時期、
を使っていて、これも パッケージ定義が関数型言語なのですが、 今回 Elm を本格的に使いだして、
あー、俺、関数型言語について、全然分かってなかったなー
と実感する事しきりです。
また、Elm に限らず、関数型言語は関数型言語は色々独特なんですが、 たぶんこれ、一度、何かしらの関数型言語をマスターすれば、 他の関数型言語も使いこなせる様になるのでは感が凄い有るので、
新年から何か新しい言語習得したいなぁ
という方がいらっしゃるなら、
Elm 、学んでみるのも良いかもよ!?
と述べたいと思います。
という事で以上です。はい。
うん、なんか結構長くなったぞこれ。