はじめに
Pythonは書けるようになるのが早い言語だ。チュートリアルを1本こなせば、翌日にはスクリプトが動いている。
問題はその先にある。「動くコード」と「良いコード」の間には巨大な溝があって、自分はその溝に長い間気づかなかった。動くからいいだろうと思って書いていたコードを、後から読み返して何をしているのかわからない。他人のコードレビューで「Pythonicじゃない」と言われても、何がPythonicなのかわからない。
もうひとつの問題は、Python関連の本が多すぎることだ。Amazonで検索すると数百冊出てくるが、実際に読んで力がつく本はそのうち一握りしかない。
この記事では、英語圏で長年定番とされているPythonの技術書から5冊を厳選した。入門レベルから上級リファレンスまで、段階的に読んでいけば「Pythonを書ける人」から「Pythonを使いこなす人」になれる構成にしてある。すべて日本語版が出ているので、英語が苦手でも問題ない。
① 退屈なことはPythonにやらせよう 第2版 ―ノンプログラマーにもできる自動化処理プログラミング — Al Sweigart
著者のAl Sweigartはプログラミング教育に特化した開発者で、Creative Commonsで本を公開するなど教育への貢献で知られている。
この本の最大の特徴は、最初から「実際に役立つもの」を作ることだ。ファイルのリネーム、Excelの自動処理、Webスクレイピング、メール送信の自動化——1章ごとに1つの実用的なプロジェクトが完成する。
プログラミングを学ぶ最大の敵は退屈だ。ソートアルゴリズムの写経を3章続けられる人は少ない。この本はその問題を「実際に自分の生活が便利になる」というモチベーションで解決している。章を読み終えるたびに、日常業務の何かが自動化されている。
注意点として、ソフトウェア開発の作法(テスト、設計パターン、コード構成)は教えてくれない。あくまでPythonで問題を解決する楽しさを体験するための本だ。
こんな人に: プログラミング未経験から始める人。日常業務の自動化で成功体験を積みたい人。
② 改訂新版 最短距離でゼロからしっかり学ぶ Python入門 必修編/実践編 — Eric Matthes
著者のEric Matthesは高校で数学とプログラミングを長年教えた経験を持つ教育者で、教え方の洗練度が本全体に現れている。
①が「自動化スクリプト」にフォーカスしているのに対し、こちらは「ソフトウェア開発」を教えてくれる。前半で基礎文法を押さえた後、後半でゲーム(Pygame)、データ可視化(Matplotlib)、Webアプリケーション(Django)の3つの本格プロジェクトを構築する。
この本で学べるのは単なる構文ではなく、「コードをどう構成するか」だ。関数の分割、モジュールの整理、プロジェクトのディレクトリ構造——プログラマーとして必要な設計の基礎が、プロジェクトを作る過程で自然に身につく。
日本語版は必修編と実践編に分冊されている。必修編だけでも基礎は十分身につくが、実践編まで読むと「自分でアプリケーションを作り上げた」という確かな手応えが得られる。
こんな人に: 他言語からPythonに移行する人。スクリプトではなくアプリケーションを作りたい人。
③ Effective Python 第3版 ―Pythonプログラムを改良する125項目 — Brett Slatkin
著者のBrett SlatkinはGoogleでPythonインフラの構築に携わったエンジニア。大規模プロダクション環境で得た知見が、125の具体的なプラクティスとして凝縮されている。
この本の構成は明快で、「Item 1: Pythonのバージョンを確認する」「Item 2: PEP 8に従う」のように独立したアドバイスが並んでいる。頭から読んでもいいし、気になるItemだけ拾い読みしてもいい。
各Itemは「こう書くと問題が起きる」→「こう書けば解決する」→「なぜこれが正しいのか」という構成になっている。Googleの本番コードで実際に遭遇した問題が例として出てくるので、「教科書的な正しさ」ではなく「現場で役立つ正しさ」が学べる。
第3版では125項目に拡充され、型ヒント、パターンマッチング、最新のPython 3.x機能がカバーされている。自分のコードを1段上げたいと感じたとき、最初に手に取るべき本だ。
こんな人に: Pythonの文法は知っているが正しい書き方に自信がない人。コードレビューで指摘する側に回りたい人。
④ Fluent Python 第2版 ―Pythonicな思考とコーディング手法 — Luciano Ramalho
著者のLuciano Ramalhoはブラジル初のPythonユーザーグループを設立し、25年以上Pythonのトレーニングに携わってきた人物。Python言語そのものへの深い造詣が本書の端々に滲んでいる。
③のEffective Pythonが「こうしろ」というアドバイス集なら、この本は「なぜPythonはこう設計されているのか」を解き明かす本だ。データモデル、イテレータプロトコル、ディスクリプタ、メタクラス——Pythonの裏側にある設計思想を理解することで、言語と「一体化」する感覚が得られる。
正直に言うと、この本は重い。800ページ超、しかも1ページあたりの情報密度が高い。一気読みは推奨しない。1章ずつ読み、実際にコードを書いて試し、しばらく寝かせてからもう一度読む。そういう付き合い方をする本だ。
自分がこの本で最も衝撃を受けたのは、ダンダーメソッド(特殊メソッド)の章だった。__repr__と__str__の使い分けすら曖昧だった自分が、データモデル全体を理解した途端、Pythonのあらゆる挙動が「そういうことか」と腑に落ちた。
こんな人に: Pythonを深く理解したい中上級者。フレームワークやライブラリの内部を読める力をつけたい人。
⑤ 初めてのPython 第3版 — Mark Lutz
著者のMark Lutzは1992年からPythonに関わり、O'Reillyから複数のPython本を出している黎明期からの貢献者。Python言語の全機能を網羅するという使命で書かれた本書は、1600ページを超える圧倒的なボリュームを持つ。
この本は通読する本ではない。デスクに置いて必要なとき開く、辞書のような使い方をする本だ。データ型、演算子、文、関数、モジュール、クラス、例外処理、メタクラス——Pythonのあらゆる言語機能が、複数の角度から解説されている。
各章末にクイズがついているので、理解度を自己確認できる。他の本で「なぜこうなるのか」がわからないとき、この本を開けばほぼ確実に答えが見つかる。
注意点として、日本語版の第3版はPython 3以前の内容が中心であり、最新のPython機能(型ヒント、パターンマッチングなど)はカバーされていない。言語の基本メカニズムを理解する目的で使い、最新機能については公式ドキュメントや③④で補完するのが正しい使い方だ。
こんな人に: Pythonの言語仕様を正確に把握したい人。困ったとき開ける網羅的なリファレンスが欲しい人。
まとめ:どの順番で読むか
| ステップ | 読む本 | 得られるもの |
|---|---|---|
| 1. 動かす楽しさを知る | 退屈なことはPythonにやらせよう | 実用スクリプトの即戦力 |
| 2. 開発者の基礎を固める | 最短距離でゼロからしっかり学ぶ Python入門 | プロジェクト設計力 |
| 3. プロの書き方を学ぶ | Effective Python 第3版 | 本番品質のコーディング習慣 |
| 4. 言語を深く理解する | Fluent Python 第2版 | Pythonの設計思想とPythonicな思考 |
| 5. 必要なとき調べる | 初めてのPython | 言語仕様の正確な理解 |
5冊すべてを順番に読む必要はない。今の課題に合わせて1冊を選べばいい。
- 「プログラミング自体が初めて」→ ①から
- 「他言語経験あり、Pythonは初めて」→ ②から
- 「書けるけどコードに自信がない」→ ③から
- 「中級から上級に壁を感じている」→ ④から
- 「特定の挙動を正確に理解したい」→ ⑤を辞書的に使う