カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

Elm で RSS / Atom Reader を作り始めた

と言う話。


何故、今 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 の DSLHaskell っぽい文法包んだ言語

と言えるとか思います。

そして、僕が今回、 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 、学んでみるのも良いかもよ!?

と述べたいと思います。


という事で以上です。はい。

うん、なんか結構長くなったぞこれ。