オライリー矢野様より献本御礼。

私のような Occasional Pythonistas には、これまで書かれた最良の Python 本。

だけど、初心者向けの本としては、どうなのだろう。

本書「初めてのPython 第三版」は、タイトルどおり、プログラミング言語Pythonの初心者向けの本であり、そしてオライリーという出版社がだしているだけあって、その決定版であることを運命づけられた一冊。

Book:初めてのPython 第3版より
はじめに
I部 Pythonの基礎知識
1章 PythonについてのQ&A
2章 Pythonプログラムの実行
3章 プログラムの起動方法
II部 ビルトインオブジェクト
4章 Pythonのビルトインオブジェクト
5章 数値
6章 ダイナミックな型付け
7章 文字列
8章 リストとディクショナリ
9章 タプル、ファイルオブジェクト、その他
III部 ステートメント
10章 Pythonのステートメント
11章 代入ステートメント、式ステートメント、printステートメント
12章 ifステートメント
13章 whileループとforループ
14章 Pythonのドキュメント
IV部 関数
15章 関数の基礎
16章 スコープと引数
17章 関数に関連する高度なテクニック
V部 モジュール
18章 モジュールとインポート
19章 モジュールのインポート、リロード
20章 パッケージインポート
21章 モジュールに関連する高度なテクニック
VI部 クラスとオブジェクト指向プログラミング
22章 Pythonでのオブジェクト指向プログラミング
23章 クラスのコーディング(基礎)
24章 クラスのコーディング(詳細)
25章 クラスと設計
26章 クラスに関連する高度なテクニック
VII部 例外
27章 例外の基礎
28章 文字列例外とクラス例外
29章 例外と設計
付録A インストールと環境設定
付録B 演習問題の解答
付録C さらに新しいバージョンのPythonについて
C.1 新バージョンの位置づけ
C.2 歴史
C.3 変更点とその裏にある思想
C.4 おわりに
索引

まずびっくりしたのが、その厚さ。800ページを超えている。ただページ数が多いだけではない。フォントが明らかに他の動物本より小さいのだ。単に文字数だけを数えたら、邦訳が上下に分冊されてしまったラクダ本に匹敵するのではないか。

はじめからこうだったわけではない。初版が432ページで、 第2版が715ページ。そしてついに第3版で808ページというわけだが、なぜここまで大きくなってしまったかには、二つほど理由がある。

一つは、著者--に限らず Pythonistas というのは、「どうやる」、「なぜそうか」に加えて「なぜそれが正しいのか」を語りたがる癖があるから。小姑といえば小姑ではあるが、懇切丁寧といえば懇切丁寧である。Pythonたんが実在したとしたら、委員長に違いない。ぜったい違いない。

しかしもう一つは、Pythonもまた歴史というものから逃れられないことから生じている。同じことをやるにしても、過去と現在では「正しい」やり方が変わってきているのである。

例えば、以下の例を見てみる。

[Run via codepad]
import math

def log2(b = math.exp(1)):
    def f(x):
        return math.log(x) / math.log(b)
    return f

lg = log2(2)
print lg
print lg(8)
print log2()(8)

以上は、クロージャーを持つ言語に慣れたユーザーであれば、実に自然な表記である。JavaScriptならこうなるだろう。

var log2 = function (base){
    if (!base) base = Math.exp(1);
    return function(x){
        return Math.log(x) / Math.log(base);
    };
};
var lg = log2(2);
alert([ lg, lg(8), log2()(8) ].join(',\n'));

ところが、かつてこういう書き方はエラーになっていたそうなのである。どうしてエラーになっていたのかは、本書P. 347をご覧頂くとして、本書は「過去のPythonに対する弁解」もかなり入っていて、それが嵩を増している。

かさを気にしなければ、本書は単なる入門書としてではなく、かつてPythonを使ってみようとして挫折したり飽きたり失望したりした人々に対する再入門書としても実によい出来だといえる。ここまで懇切丁寧だと、間違いはおこしようがないのではないかと思えるほど。委員長のツンデレさかげんを試すのは、本書の範疇からは外れる。

それでもこれを見て、プログラミングというものを未体験の人は、正直びびらないだろうか?転校して来た初日に委員長にしかられるような体験にならないだろうか?本書を見てびびった人は、以前紹介した「実践Python」を薦めておく。

しかしそれ以上に心配になったのは、Python のバイブルとなっている「ヘビ本」との棲み分け。目次を見ての通り、本書は「初めての」を通り越して「終わりまで」な一冊なのだが、ヘビ本の原著第三版は、なんと1596ページある。これならご本尊を食ってしまうこともないというわけか。本書の表紙はどう見てもニシキヘビの大好物である。「窮鼠蛇を噛む」なんてことになったら面白いと思ったのだが。

それらを考慮しても、そろそろ「初めてのPython」は、「初めてのPerl」がリャマとアルパカに分かれたように、分冊すべきだと思う。初心者でなくとも怖がる人は少なくないのではないか。

委員長属性がある人は、言語ごと本書もお勧めなのは言うに及ばず。

Dan the Occasional Pythonista