だいくしー(@daiksy)のはてなブログ

daiksyの徒然的なもの 以前のブログはこっち -> http://daiksy.blogspot.jp/

「Scala関数型デザイン&プログラミング」の読み方

"FPinScalaの訳本"こと『Scala関数型デザイン & プログラミング』をとりあえずざっと読んだ。

Functional Programming in Scala

Functional Programming in Scala

この本を読み進めるうちに、ふと思ったことがある。

「これは周回プレイを要求されるパターンだ!」

テレビゲームの世界に「強くてニューゲーム」という概念がある。 最近のゲームでは、クリアするとその時点までに得られたアイテムやレベル、お金といったリソースをそのまま引き継いで、ストーリーを最初からやりなおせる、というものがある。 こういった、ゲームのリソースであるとか、プレイヤー自身によるクリアまでの記憶、といった要素を持ち越すことで、2周目はより深いプレイを楽しめる、という寸法だ。

クロノ・トリガー」という時空を跨るループ性の強いゲームが、初出だったかと思う。

クロノ・トリガー(特典なし)

クロノ・トリガー(特典なし)

Scala関数型デザイン & プログラミング』に話を戻そう。

この本は、とても丁寧に順序立てて関数型プログラミングについての説明が組み立てられている。 まるで上質なミステリー小説のように、本のはじめの方に出てきた実装が、のちの章の伏線として作用している。

一方で、書中のいたるところに掲載されている練習問題は、とても歯ごたえがあるものが多い。 まるで、「強くてニューゲーム」を前提としてゲームの中盤にラスボスクラスの隠しモンスターが配置されている雰囲気を連想させる。

こういった本書の構成を察知し、ぼくはこの本では「強くてニューゲーム」を導入するという読書方針を選択した。なので、練習問題はそこそこに、とりあえず最後まで流し読みしてしまって、本書の全体の構成を頭に入れてから再び最初から読もうと思ったのである。

練習問題に取り組む場合も、この実装は後のあの章で効いてくる、とわかっていれば心を折らずに取り組めるだろうとの目論見である。

技術書を読む場合は、この「強くてニューゲーム」方式は有効な場合が多いので、おすすめの読み方である。