「JavaScript関数型プログラミング」を読んだ

2022年11月12日JavaScript,技術書chat_bubble0

「JavaScript関数型プログラミング」を読みました。
関数型プログラミングの本は初めて読んだのですが、かなり良い本だと思います。
私自身そうだったのですが「そもそも関数型ってどういう書き方?カリー化って何?合成って何?ファンクターって何?モナドって何?」というような人にオススメしたいですね。聞いたことはあってもそれらがどういうものなのかはよく分かっていなかったのですが、少なくともこの本を読む前よりかは関数型で書かれたコードを理解出来るようになったと思います。まだまだ慣れや知見が必要かなという感じですが、基本は押さえられたかなと。

対象読者についての引用。

本書は、オブジェクト指向の基礎知識を有し、最新のWebアプリケーションの課題に対して一般的な認識を持つJavaScript開発者を対象としています。JavaScriptは幅広く利用できる言語であり、関数型プログラミングの入門書を探していて、日頃から慣れ親しんだ構文を利用したいと考えているなら、Haskellを学習する代わりに、本書を最大限に活用することができます(ただし、Haskellの学習に役立てようと考えているのであれば、本書は最適な情報源ではありません。言語には、それぞれ独自性があるので、Haskellを直接学習して理解するのが最短の近道です)。

本書は、初級および中級の開発者が、高階関数、クロージャ、カリー化、合成のほか、JavaScript ES6の新規機能であるラムダ式、イテレータ、ジェネレータ、Promiseのスキルを高めるのに役立つでしょう。また、上級開発者向けには、モナド(monad)やリアクティブプログラミングまで広範囲な内容を網羅しています。イベント駆動や非同期のコードを書くという困難な仕事を乗り越えるために、JavaScriptプラットフォームを最大限に活用しながら、このような革新的な方法で立ち向かうことができます。

初級とありますが、あくまでも開発者です。規模はともかくとして何かを作ったことがあり、かつある程度JavaScriptの読み書きに慣れている人じゃないと難しく感じると思います。他言語の経験者ならともかく、JavaScriptを少し触ったくらいの人には早い本だと思います。
特にモナドやメモ化は、何かを作った経験が無いと活きにくい考え方だと思いました。モナドはMaybeモナド、Eitherモナド、IOモナドが分かりやすく解説されています。

本文は直訳っぽい部分があり、やや読み進めづらいです。日本語に訳されているだけありがたいですし、所々に訳注もあって親切ではあるのですが。 また、本に書かれているコードを見れば良いことですが、GitHubに全部のコードが上がっていないのも少し気になりました。 個人的に気になった欠点らしい欠点はそれくらいで、内容的にはかなり良い本です。

解説に使用されるコードはシンプルで理解しやすく、同じコードを何度も用いるので、読み手への負担は少ないです。 ステップバイステップな解説がされており、関数型プログラミング初心者に優しい内容です。 コードのテストやパフォーマンス、非同期のコードについても触れられており、満足度の高い一冊でした。

読み終わった後に、何か関数型の簡単な例は無いのかと思って探したところ、以下の記事を発見。
本の後に以下の記事のコードを写経したら僅かながらに感覚は掴めた気がします。

関数型プログラミング

藤乃音りょう