昨今読んだPythonの書籍ではダントツに良かった。
いろんな意味で読み手を選ぶ気がするし、広義のZENについて述べているのでコードの写経やイケてるフレームワーク紹介などを求めて取り組むと肩透かしをくらうと思う。しかし、著者の強くあたたかい眼差しには大げさに言えば感動を覚えた。
再読する価値がある。以下に書評を記す。
どんな本?
ここで説明する概念を理解するには、思った以上に時間がかかるかもしれません。(中略) あなたの準備が整ったときに突然理解できるようになり、すべてが腑に落ちるようになります。
わかりみが深い。この言葉を、技術書で読めるという体験ですでに購入する価値がある。
そして続くページにはこのように記載がある。
すぐに理解しようとして焦る必要はありません。どうぞ時間をかけてください。(中略) あなたならきっと理解できます。
なんと力強い言葉か。
僕はこういう語り口に強い共感を覚えるし、とても良い文章だと思うのだけれど、こういう生暖かい目線の本は苦手、という方にはあわないだろう。あなたには別の書籍がマッチするはずだ。
このように、著者の姿が思想が全面に押し出されているような書籍となる。Python Guruに弟子入りして、師匠のお言葉を拝聴するような感覚だ。
どんな人向け?
ある程度何かしらのオブジェクト指向プログラミング言語を嗜んでいる人向けだと思う。少なくともクラスの書き方などはなんの断りもなく突然出てくる。
いくつかの言語を書くけれど、良きPythonistaとはお世辞にも言えないなという自認がある諸兄には良いのではないだろうか。
そこを踏まえて、次の項目からは技術的な観点で評していく。
デコレータ
この解説が最も鮮烈で、僕の記憶に強く残った。正直に言えばこの書籍に出会うまでは、デコレータは自分の書くコードでは採用しなかったし、コードリーディングの際も「うわ。デコレータ出てきたよ…嫌だな」と思っていた。しかしこの解説を読んだことでそれらの不安は解消され、今後自分のプロダクトでも積極的に使用していこうと思えるようになった。
特筆すべきはファーストクラス関数の特性、クロージャの仕組み、ラムダ式の解説という流れが完璧すぎる。素晴らしい説明だと思う。
この解説のためだけでも購入する価値がある。
ちなみにクロージャ自体がなんなのかがそもそも初耳だと少々難しいかもしれないが、JSのクロージャに関するブログはこれが決定版だと思っている記事があるのでご紹介させて頂く。ずいぶん昔に出会ったけど、今読んでもわかりやすい。
[JavaScript] 猿でもわかるクロージャ超入門 まとめ
カスタム例外クラス
ちゃんとした設計・実装をするときに役立ちそうなTips。(個人的に規模の大きいコードはほとんど書かなくなってしまったのだけれど)
抽象基底クラス
ちゃんとした設計・実装をするときに役立ちそうなTips。(個人的に規模の大きいコードはほとんど書かなくなってしまったのだけれど)
名前付きタプル
ちゃんとした設計・実装をするときに役立ちそうなTips。(個人的に規模の大きいコードはほとんど書かなくなってしまったのだけれど)
インスタンスメソッド、 クラスメソッド、 静的メソッド
ちゃんとした設計・実装をするときに役立ちそうなTips。(個人的に規模の大きいコードはほとんど書かなくなってしまったのだけれど)
マルチセット(重複を許容するセット)
存在自体知らんかった。
イテレータ
デコレータについで丁寧に解説されている。本書2個目のハイライトと言えよう。イテレータも「なんとなくそんな感じか」程度の理解だったが、その実装を丁寧に紐解いてくれていることで理解を深めることができた。
またその流れでジェネレータの解説に移行するのもたいへん好ましく、わかりやすい解説だった。
メンバシップテスト
辞書が持つgetメソッドの利点をわかりやすく解説。思いつきで書くと動きはするが効率が悪くなりメンテコストもかかる。
switch/case文をディクショナリのディスパッチテーブルを用いて再現
中々面白い試みで、イディオムとして使い勝手が良さそう。
まとめ
上述の通り、デコレータとイテレータ、ジェネレータの解説、そして語り口が大きな特徴と言える。ここをすでに深く理解している方には物足りない内容だと思う。
しかし本書を通してPythonicであろうとする著者の姿勢には敬服するところがあり、読み物として素晴らしい出来になっていると思う。 キーボードを前にディスプレイにかじりついて読む必要はない。小説のように、あるいはエッセイのように、傍らに置いておきたい本である。