😢

PureScript SPAの作成における苦行

2020/09/29に公開

PureScript

普段はVueやReactを書いているのですが,フロントエンドで純粋関数型をやるの楽しそう!! という理由でPureScript Halogenを選定してみました(そんなに複雑なアプリでもないので,気軽に選べた).しかし,簡単なはずのウェブサイトが異常な難易度に跳ね上がるという結果になり,多分もう二度とPureScript SPAはやらないかなと思います.

Routing

ゴリゴリの状態管理が必要で,ものすごくしんどいものがありました.react-routerだったり,vue-routerの偉大さを感じる結果になりました.

DOM

jsxは createElement へとコンパイルされますが,PureScript Halogenではそのコンパイル後の方を書くような形になります.書くのが非常に難しいです.

もちろん,これは悪いことばかりではなく,関数適用をうまく使うと書きやすくなる部分もあるのですが,これは文法上避けられない難点かなぁと思います.

ES5

ffiで読み込むjsは,ES5しか対応しておらず,TypeScriptで書くことすらできません.また,importができないので,lazy loadingもできないです.

その結果,lighthouseのパフォーマンススコアは結構悪化してしまいました.コード分割ができないSPAは,本当にこのあたりが大変だと思います.

おわりに

難点を多く感じる結果になりましたが,関数型の書く楽しさはやはりあり,単純にDOMとの相性が地獄なだけです.自明なことですが,フロントエンドはIOも状態もたくさんあり,関数型で扱うのが面倒なものばかりなので,やはり使い所を選ばないとなぁと思いました.

Discussion