Introducing ReScript

Introducing ReScript

「ReScript って聞いたことあるけど、どんな感じなんだろう」と何気なく Amazon で本書をポチったのだが、読み始めると意外と面白く、数時間で一気に読み終えてしまった。おそらく ReScript に関する 2024 年時点で唯一の書籍と思われる。

ReScript は、React の生みの親でもある Jordan Walke により 2015 年に作られた、Reason という言語がベースとなっている。OCaml の上に構築された Reason は、JS とネイティブ向けバイナリを出力でき、JS を出力するために BuckleScript を使用していた。こうしたなか、コミュニティからは JS を出力する方向性への要望が段々と強まっていった。これを受け、Reason チームと BuckleScript チームのどちらにも所属していたメンバーが多かったことから、彼らを中心に、JS を出力する OCaml 風の言語として Reason をベースに BuckleScript をリブランディングすることとなった。こうしてできたのが ReScript という言語である。やや複雑だが、このあたりの話は https://rescript-lang.org/blog/bucklescript-is-rebranding に詳しい。

本書を読んで面白かったのは、普段 TS を書いていて感じる、JS のスーパーセットであるがゆえの不満を解消してくれそうな気がした点だ。ReScript はもはや JS とは異なる別言語であり、sound な型システムの上でプログラムを書ける。また、当然 JS のレガシーな機能はばっさりカットされている。そのため、TS のように書き手によっては割れ窓が生じてしまうといったことが起こりくくなる点がまず魅力的だ。それでいて、同じように JS へとコンパイルされる他言語よりも JS との文法的親和性が維持されており、パターンマッチや Result・Option 型、パイプラインなどによる JS の自然な拡張を目指していることが感じられる。「TS の次の選択肢としての ReScript」という妄想が膨らみ楽しい(もちろん、現状 JS や Node エコシステムとの interoperability を意識してプログラミングしなければいけないため、つらくなるポイントは必ずあるだろうが)。

本書はこうした ReScript の魅力を過不足なく明確に伝えてくれる一冊だった。ページ数は 288 と多くはないが、ReScript の基本的な文法や関数型プログラミングの基本を簡潔な説明と例で紹介してくれる。派手さはないものの、introduction としての役目をしっかりと果たしている。この本で一通りの基礎を学んでから、公式ドキュメントを全体的に確認し、それと並行してある程度のサイズのプログラムを書いてみるというのが、ReScript を学ぶ流れとしては良さそうに思う(自分はまさに今これをおこなっている)。

なお注意点として、本書で扱っている ReScript のバージョンは 10 だが、2024 年現在、最新のバージョン 11 では Uncurried ModeReScript Core によるモジュール構成の再編など、割と大きな変更が色々と盛り込まれていることがある。本書を読んでから バージョン 11.0 のリリースノートなどで差分を確認すれば問題ないと思われるが、本書の内容がすべて最新の環境で動くわけではない点には留意されたい。