2018/4/30 追記: 古くなっていたこちらの邦訳ですが、プルリクエストを頂き最新版PureScript v0.11に対応しました。本当にありがとうございました。
Haskellライクな関数型プログラミング言語PureScriptの入門書、"PureScript By Example"を邦訳しました。本書はPureScriptのオリジナルの作者であるPhilさん本人が執筆した入門書です。本書を理解するにはJavaScriptを知っていることが望ましいですが、そうでなくともすでに何らかのプログラミング言語を知っていれば読みこなすことはできると思います。PureScriptはHaskellを始めとした多くの関数型言語と様々な考え方を共有していますから、PureScriptという言語そのものを学ぶという目的でなくとも、関数型プログラミング全般についての入門としても読むにも適しています。無料ですので、ぜひ読んでみてください。
リポジトリはこちらです。訳者がつけたスタイルが気に食わない場合は、GitHub上で直接プレビューで読んだり、Markdownソースをダウンロードしてご自分の好きなMarkdownリーダーで読んでもいいと思います。
原著も以下のページで無料で読めます。翻訳ミスが疑われたり、翻訳が読みにくい箇所があれば、原著にあたってみてください。原著は購入することもできますので、本書が気に入った方はぜひ購入してみてください。
本書の内容
タイトルの通り、本書はとにかく具体的なコードをばんばん見せてから、それに添って説明していくというスタイルです。すべてのサンプルコードはオンラインで入手できますし、演習もついていますので、実際に手を動かしながら理解を深めることができます。言語仕様を端からがっつりという感じではありませんし、数学的な定義がどうのこうのという抽象的な話もほとんどありませんから、比較的取り組みやすいのではないかと思います。扱うサンプルコードは次のような実用性の高いものばかりです。
- 住所録アプリケーション
- 2次元平面上を歩いてアイテムを集めるテキストベースのアドベンチャーゲーム
- HTML5 Canvas APIを使ったCanvasへのグラフィックス描画
- HTMLフォームに入力されたデータの妥当性検証
- QuickCheckによるランダムなユニットテストの自動生成
- JSONデータの型安全な読み取り
- 非同期処理のための領域特化言語によるコールバック地獄の解消
- 安全なページ内リンクを可能にした、HTMLテンプレートとしての領域特化言語の開発
関数型言語の入門のサンプルコードは、パズルでも解いているかのような実用性が感じられないものばかり取り沙汰されることがありますが、その点、本書は関数型プログラミングを現実の開発でどのように実用していくかを常に念頭に置きながら学習できます。標準入出力だけで済ませるような地味なものだとモチベーションが上がらない人もいるでしょうが、本書ではCanvas APIでグラフィックスを扱ったりAjaxで通信してみたりと、比較的派手な内容で楽しく学べるのも魅力です。
開発環境のインストールから、対話式環境の操作、gruntを利用したビルドやテストの自動化まで取り扱っています。関数型プログラミングの概念や言語仕様だけでなく、開発の一連の流れについての包括的な解説になっています。
さいごに
訳が硬くて読みにくい部分も多かったり、誤訳も多いかと思われますが、そのうち直していこうかなと思います。もし邦訳の内容に誤訳などの問題を見つけたら、githubのリポジトリへissueやpull requestを頂くか、このqiitaのページにコメントを残して頂くと私が気が付きやすいです。
英語なら関数型プログラミングの資料はたくさん手に入りますが、やはり英語と日本語だと読む速度が何倍も違ってきます。Haskellについては日本語でもすでに良い入門書が何冊も出版されていますが、本書の内容はそれらに比肩するたいへん充実したものです。そしてなにより無料で読めますから、気が向いた時や暇なときに気軽に読んで頂けたらと思います。書籍にはどうしても肌に合う合わないがありますから、市販の本を買って馬が合わずに損した気分になるより、まずは関数型プログラミングに無料体験してみるのはどうでしょうか。関数型プログラミングに本気で取り組むぞというほどの気概がなくて、関数型プログラミングはなんぞやということをちょっとかじりたいだけの人にもお勧めです。