気まぐれ更新

PureScriptでReactのチュートリアル書いてみた

はじめに

5日目の投稿です。
React Advent Calendar 2019 - Qiita

数ヶ月前よりPureScript x Reactで開発をすることになったものです。
本記事ではReactのチュートリアルを通じてPureScript x Reactでの開発の雰囲気と
期間は短いなりに私が感じたPureScriptで開発することのメリット/デメリットをお伝えできれば、と思います。

PureScriptとは

詳しくは調べていただければ、と思いますが
ざっくり言うと厳密な型システムを持ったHaskellチックなAltJSです

www.purescript.org

使用ライブラリ

実装

今回は雰囲気を感じていただくことが目的なので、コードの解説は割愛させていただきます。
本家のJavaScriptのコード比較して、「こんな感じで書くんだ〜」と雰囲気を感じていただければ、と思います。

github.com

※ 本コードは ゲームを完成させる までの実装になります

PureScript メリット/デメリット

メリット

絶対的な安心感

厳密な型システムのおかげで基本的にランタイムでエラーが発生することはありません。
つまり、コンパイルが通れば正しく動くということが保証されます。これは精神的にも非常に良いです笑
私自身後に紹介するFFIで定義した部分以外でエラーが発生した場面に出会ったことがないです。
これがPureScriptで開発する一番のメリットだと思っています。

JavaScriptの資源も利用可能

先程紹介したFFIを使えばJavaScriptで書かれた関数に対して型情報を付与し、
PureScriptのコード内で使用することが可能になります。
ただし当たり前ですが、コンパイラは私達が定義した型が正義だと解釈するので、
間違った型情報を与えてしまうと、その関数実行時にランタイムでエラーを吐きます。

副作用のない世界

PureScriptは純粋関数型言語なので参照透過性が保証されるため、あらゆる関数で副作用は産まない設計になっています。

APIドキュメントが使いやすい

公開済みのPureScriptパッケージのAPIが載っているpursuitが非常に綺麗にまとまっており見やすいです。
また下記のように型でも検索することができるので、パッケージ名/関数名がわからなくても自分のやりたいことを満たす関数を探すことができます。

デメリット

学習コストが高い

これまでJavaScriptや他の関数型言語でない言語の開発者には、
概念や書き方、型システムにとっつきにくい部分があるかもしれません。現に自分がそうでした。
またPureScript自体の体系的な文献が多くはないため、とっかかりにくい部分もあるかもしれません。
個人的にはHaskellの入門書で一通り関数型プログラミングについて学んだあとで、PureScriptの学習をすすめるのが良いのかな、と思っています。

参考文献が少ない

使用例がまだそこまで多くないため、他言語と比較するとネット上に文献は少ないです。
(これから増えていくことを願っています...)

周辺ツール不足

IDEや開発補助ツール等もまだまだ発展途上です。
ただ普通に開発する分には下記のツール群で十分なので、そこまで不自由することもないです。

github.com

github.com

github.com

まとめ

やればやるほど素晴らしいと感じられる言語なので、
これを見ていただいた開発者の皆様 一度お試しくださいー
(ReactというよりPureScriptの紹介記事になってしまって申し訳ないです...)