このBlogは移転しました。今後は aish.dev を御覧ください。

いまさらながら、エキスパートPythonプログラミング

遅ればせながら、エキスパートPythonプログラミング を読んでみた。翻訳者の一人、森本さんに頂いたのだが、なんと彼は本をやるから書評を書けと私に強制するのだ。ひどい男である。聞くところによればこの本、すでに第4刷まで増刷されたヒット作であり、いまさら私をどやしつけて書評を書かさなくてもよさそうなものだ。

コードは書けてもプログラマではない人に

さてこの本、目次をみるとこんな感じになっている。

第1章 さあ、はじめよう
第2章 構文ベストプラクティス ―― クラス以外
第3章 構文ベストプラクティス ―― クラスの世界
第4章 良い名前を選ぶ
第5章 パッケージを作る
第6章 アプリケーションを作る
第7章 zc.buildoutを使う
第8章 コードの管理
第9章 ライフサイクルの管理
第10章 プロジェクトのドキュメント作成
第11章 テスト駆動開発
第12章 最適化:一般原則とプロファイリングテクニック
第13章 最適化:解法
第14章 Pythonのためのデザインパターン
付録A Unicode

それぞれの章をよく見てみると、どうもこの本、単なるPythonの解説書ではなさそうだ。第4章は丸々「名前の付け方」に費やしているし、バージョン管理やドキュメント作成にもそれぞれ独立した章を割り当てている。プログラミング言語の解説書としては、少々異例な章立てだ。

プログラミングとは、単にコードを書き散らすだけの作業ではなく、プログラマとはプログラミング言語の知識がある人のことでもない。独立したライブラリやアプリケーションを書き上げるには、プログラミング言語以外にも色々と知らなければならないことがあるのだ。それは具体的な知識であったり、心構えであったり、ツールやテクニックであったりする。「プログラマ」として独り立ちするためには、そういったことを学ばなければならない

この本では単なるプログラミング言語Pythonの解説だけでなく、Pythonを題材として、「単にコードを書ける人」を「プログラマ」にスケールアップするための解説書でもあるのだ。そういった意味では、Pythonのエキスパートになる気がない人であっても、「プログラマ」を目指す人には本書を読む価値があるだろう。

もちろん、訓練されたいPythonistaにも

とはいっても、もちろんPythonの解説書としても読み応えは十分だ。特に第2章と第3章はPythonチュートリアルや言語仕様書だけでは分かりにくい、色々なテクニックを解説している。

この本では、「Pythonic」という言葉が随所で使われている。「Pythonic」とはなんだ?というのも面倒くさい話になるが、Pythonを使い込んでいくと、「Pythonの本来の設計意図に即した使い方」というのがだんだん分かってくるようになる。このような「即した使い方」がPythonicであるということであり、解決したい問題を、Pythonicな方法を適用できるような形に展開できるのが、訓練されたPythonistaなのだ。

これもまた、Pythonだけの話ではない。Javaでもなんでも、設計者の意図した「ハマる使い方」というのがあり、プログラマは問題をそういう形に変形して、うまく扱えるようにする技術を身につける必要がある。本書で「Pythonic」を学び、問題をスマートに解決するというのはどういうことなのか、という感覚を学ぶと良いだろう。