「Effective Python 第3版」は第2版と何が違い、いつ読む本なのか
5年3か月ぶりに改訂された第3版は、90項目から125項目へ、10章から14章へ。両版の公開目次を1項目ずつ突き合わせたところ、増えた35項目のうち16項目が「ロバストネス」と「パフォーマンス」の2章に集中していました。第2版からの買い替え判断と、読み始める時期の材料をそろえます。
【PR】本ページはアフィリエイト広告を含みます。本文中の「楽天市場で見る」リンクを経由して購入された場合、運営者が提携先から報酬を受け取ることがあります。掲載内容・評価は報酬の有無とは無関係です。
『Effective Python』の第3版が2025年10月に出ました。第2版は2020年7月なので、5年3か月ぶりの改訂です。項目数は90から125へ、章立ては10章から14章へ増えています。すでに第2版を持っている方も、これから最初の1冊として検討している方も、知りたいのは「増えた35項目は自分に必要なものなのか」の一点だと思います。
ところが検索して出てくるのは書店の商品ページと書誌データベースが中心で、両版の差を項目単位で並べた日本語の記事が見当たりませんでした。そこで版元が公開している両版の目次を1項目ずつ突き合わせ、増えた35項目がどの章に集まっているのかを数えました。結論を先に書くと、新規35項目のうち16項目が「ロバストネス」と「パフォーマンス」の2章に集中しています。逆に、並行処理・内包表記・辞書の章は項目が1つも増えていません。
本記事は出版社の公式情報と、第2版・第3版の公開目次の突き合わせに基づく紹介記事です。2026年8月15日時点で、運営者は本書を通読していません(読了後に所感を追記します)。本文中のコード例は本書からの転載ではなく、当サイトが書いて実行結果を確認したものです。確証が得られていない点は、そのつど「未確認」と明記しています。
1. 結論:買うべき人と、いま買わなくていい人
先に結論から書きます。この本を買うかどうかは、「増えた領域が自分の課題と重なっているか」でほぼ決まります。判断を急いでいる方は、次の表で自分に近い状況を探してください。
| あなたの状況 | 判断 | 理由 |
|---|---|---|
| 入門書を1冊終え、自分のコードの書き方に自信がない(本書は未所持) | 第3版でよい | そもそもこの本は「動くコードを、読みやすく直すための判断集」。第2版をあえて選ぶ理由が薄い |
| 第2版(2020年)を持っていて、例外処理・落ちないコード・速度に悩みがある | 買い替える価値が大きい | 新規35項目のうち16項目(46%)がロバストネスとパフォーマンスの2章。増えた分のほぼ半分がこの領域に効く |
| 第2版を持っていて、目的が並行処理・内包表記・辞書の理解 | 急いで買い替えなくてよい | この3つの章は、目次上で新規項目がゼロ。項目の枠組みは第2版と同じ並びのまま |
| Pythonを始めたばかりで、まだ入門書を1冊も終えていない | 今ではない | 文法の基礎は解説されない前提の本。先に入門書を1冊終えるほうが速い |
もう判断がついた方へ: ▶ 第3版の在庫と価格を確認する(楽天市場)(書籍データ欄の末尾・版を確認できるリンクの位置へ移動します)
まだ迷う方は、このまま増えた35項目が「どの章に」増えたのかの実数と章ごとに効きはじめる段階の整理をご覧ください。
版元のオライリー・ジャパンは本書を「Pythonエキスパート必携書の最新版」と紹介しています(出典: オライリー・ジャパンの書籍ページ)。入門書として売られている本ではないという位置づけを、まず押さえておいてください。
ただし「中級者以上向け」という一言で片づけると、判断を誤ります。本書は14章125項目からなり、章によって「効きはじめる開発段階」がまったく違うからです。前半の章は入門書の直後でも読めますが、後半の章は自分のコードを他人に使わせるようになってから効きます。この点は読むタイミングの整理で表にまとめました。
2. 書籍データ(版・ページ数・ISBN)
この本は版によって項目数も章構成も変わるので、書誌情報を先に確認しておきます。
| 項目 | 内容 |
|---|---|
| 書名 | Effective Python 第3版 ―Pythonプログラムを改良する125項目 |
| 原著 | Effective Python: 125 Specific Ways to Write Better Python, 3rd Edition |
| 著者 / 訳者 | Brett Slatkin 著 / 鈴木 駿 訳 |
| 出版社 / 発売元 | オライリー・ジャパン / オーム社 |
| 刊行 | 2025年10月16日 |
| ページ数 / 判型 | 572ページ / B5変型 |
| 構成 | 全14章 / 125項目 |
| ISBN | 978-4-8144-0133-8 |
| フォーマット | Print / PDF / EPUB |
| 対象レベル | 中級〜上級(文法の基礎解説はない) |
| 定価 | 9冊の比較表に掲載(価格情報は1か所に集約しています) |
書誌情報の出典はオライリー・ジャパンの公式ページと発売元オーム社の書籍ページです(2026年8月15日閲覧)。
対応するPythonのバージョンは、公表情報が割れている
ここは購入前に知っておいたほうがいい点です。対応バージョンの表記が、公表元によって食い違っています。
- 版元のオライリー・ジャパンは「第3版では、Python 3.13までの最新機能に対応し、第2版から新たに35項目を追加し、既存項目も時代に合わせて大幅に改訂されています。」と説明しています(出典: オライリー・ジャパン)
- 一方、発売元のオーム社や一部の書店の紹介文では「Python 3.14対応」と表記されています(出典: オーム社)
当サイトは現物のまえがきを確認できていないため、どちらが正しいかは未確認とし、両方の表記をそのまま示すにとどめます。ただし実用上の影響は小さいと考えています。後述するとおり、第3版で新設された項目の中身は新しい文法の解説ではなく、例外処理・計測・配布といったバージョンの数字にあまり左右されない領域に寄っているからです。
第2版と第3版のスペック差
| 項目 | 第2版 | 第3版 |
|---|---|---|
| 刊行 | 2020年7月16日 | 2025年10月16日 |
| 項目数 | 90項目 | 125項目(+35) |
| 章数 | 10章 | 14章(+4) |
| ページ数 | 456ページ | 572ページ(+116) |
| 訳者 | 黒川 利明(技術監修: 石本 敦夫) | 鈴木 駿 |
| ISBN | 978-4-87311-917-5 | 978-4-8144-0133-8 |
出典は第2版のオライリー・ジャパン公式ページと、前掲の第3版のページです。改訂の間隔は5年3か月。Python本としては長めの間隔で、その分だけ変化の幅も大きくなっています。
なお中古で第2版を安く買う選択についても触れておきます。目次の突き合わせ結果のとおり第2版の90項目はすべて第3版側に対応する項目があるため、第2版の内容が無駄になるわけではありません。ただし増えた35項目は現在の実務側の関心(落ちないコード・速度・配布)に寄っており、そこに用があるなら第3版を選ぶ意味があります。
この1冊を通すと、動くだけのコードを「レビューで指摘されにくいコード」「落ちたときに原因を追えるコード」へ自分で書き直せるようになります。しかも困った章から引く辞書のような使い方ができる本です。改訂の間隔は前掲のとおり5年3か月。1回読んで終わりではなく、次の版が出るまで手元に置いて何度も引く前提で考えてください。定価は9冊の比較表に集約しています(実売価格は販売店で異なります)。
▼ 第3版(2025年10月刊・125項目)の在庫と価格を楽天市場で確認できます。第2版とは章構成も項目数も異なるため、ISBN 978-4-8144-0133-8 を確かめてからご購入ください。
3. この本で何が学べるのか
第3版は全14章125項目です。1項目がおおむね数ページの読み切りで、「こう書くべき理由」と「そう書かない場合に何が起きるか」がセットで示される形式になっています。章の並びを大づかみにすると、次の3ブロックに分かれます。
| ブロック | 章 | 扱うこと |
|---|---|---|
| 言語機能の使い分け | 1〜6章(項目1〜47) | Pythonicな考え方、文字列とスライス、ループとイテレータ、辞書、関数、内包表記とジェネレータ |
| 設計と並行処理 | 7〜9章(項目48〜79) | クラスとインタフェース、メタクラスと属性、並行性と並列性 |
| 運用品質 | 10〜14章(項目80〜125) | ロバストネス、パフォーマンス、データ構造とアルゴリズム、テストとデバッグ、コラボレーション |
章タイトルの出典は版元が公開している目次です。この並びから読み取れる本書の性格は、「文法を覚える本」ではなく「同じことを実現する複数の書き方から、どれを選ぶかを決める本」だという点です。for の書き方は入門書で学びますが、「その for をそのまま書くべきか、any で短絡させるべきか」は入門書では扱われません。その隙間を125項目で埋めにきます。
もうひとつ重要な性格があります。通読を前提にした本ではないという点です。第3版の英語版を読んだ技術者の記録には、各項目がどこから読んでも理解できるように書かれているため、興味のあるところから読み進められるという趣旨の記述があります(出典: Zenn・mima_ita氏の読書メモ)。第2版を扱った解説記事にも、項目が独立しているので気になるところだけ読めばよい、という同趣旨の評があります(出典: note.nkmk.me)。
572ページを最初から順に読み切る必要はありません。困った領域の章から引く辞書のような使い方ができる、と考えたほうが実態に近いはずです。この性質が、後述する「読むタイミングは1点ではない」という話につながります。
一方で、本書が扱わないものもはっきりしています。変数・条件分岐・繰り返しといった文法の基礎、そしてWebフレームワークやデータ分析ライブラリの使い方です。前者はPythonの基本文法や組み込み関数の使い方で、後者はよく使うPythonライブラリ50選で補ってください。
4. 90項目から125項目へ──公開目次を突き合わせる
ここがこの記事の中心です。版元は「第2版から新たに35項目を追加」と説明していますが、その35項目がどこに増えたのかは公表されていません。そこで両版の公開目次を使って、自分で数えました。
突き合わせの手順
やったことは単純です。
- 版元が公開している第2版(90項目)と第3版(125項目)の目次を並べる
- 第2版の各項目に、第3版側の対応する項目を1つずつ割り当てる(章の移動・タイトルの言い換えは対応ありとみなす)
- どの第2版項目とも対応しなかった第3版の項目を「新規」として数える
結果、新規と判定された項目はちょうど35でした。版元が公表している「35項目を追加」という数字と一致します。突き合わせの妥当性は、この一致でひとまず確認できたと考えています。同時に、第2版の90項目には、すべて第3版側に対応する項目が存在しました(目次のうえでは、丸ごと消えた項目はありません)。
これは目次の項目タイトルどうしの突き合わせであって、各項目の本文がどれだけ書き換えられたかは検証していません。版元は「既存項目も時代に合わせて大幅に改訂されています」と明記しています。したがって「第2版と同じ項目名=内容も同じ」とは言えません。以下の表は「項目の枠組みがどう動いたか」を示すもので、本文の改訂量を示すものではない、という前提でお読みください。
章構成の再編:増えたというより、分割された
10章から14章へ増えていますが、新しいテーマが4つ生えたわけではありません。既存の章が分割・再配置されたというのが実態です。
| 第2版 | 第3版での行き先 | 何が起きたか |
|---|---|---|
| 1章 Pythonic思考(10項目) | 1章 Pythonicな考え方 / 2章 文字列とスライス / 3章 ループとイテレータ | 3つに分割 |
| 2章 リストと辞書(8項目) | 2章の一部 / 4章 辞書 | 「リスト」が章名から消え、辞書が独立 |
| 3章 関数(8項目) | 5章 関数(10項目) | +2 |
| 4章 内包表記とジェネレータ(10項目) | 6章 内包表記とジェネレータ(8項目) | 一部が3章へ移動・新規なし |
| 5章 クラスと継承(7項目) | 7章 クラスとインタフェース(10項目) | 章名変更・+3(新規4・うち1項目は4章 辞書へ移動) |
| 6章 メタクラスと属性(8項目) | 8章 メタクラスと属性(9項目) | +1 |
| 7章 並行性と並列性(13項目) | 9章 並行性と並列性(13項目) | 1対1で対応・新規なし |
| 8章 頑健性と性能(10項目) | 10章 ロバストネス / 11章 パフォーマンス / 12章 データ構造とアルゴリズム(計28項目) | 3つに分割され、項目数はほぼ3倍 |
| 9章 テストとデバッグ(7項目) | 13章 テストとデバッグ(8項目) | +1(新規2・うち1項目は2章へ移動) |
| 10章 協働作業(9項目) | 14章 コラボレーション(10項目) | +1 |
いちばん下まで読むと、変化が1か所に寄っているのが分かります。第2版で1つの章・10項目だった「頑健性と性能」が、第3版では3つの章・28項目になりました。
新規35項目は、どの章に増えたのか
章ごとに「総項目数」と「そのうち新規の数」を並べます。この表がこの記事でいちばんお伝えしたい部分です。
| 第3版の章 | 総項目 | うち新規 | 新規率 |
|---|---|---|---|
| 1章 Pythonicな考え方 | 9 | 4 | 44% |
| 2章 文字列とスライス | 7 | 1 | 14% |
| 3章 ループとイテレータ | 8 | 3 | 38% |
| 4章 辞書 | 5 | 0 | 0% |
| 5章 関数 | 10 | 2 | 20% |
| 6章 内包表記とジェネレータ | 8 | 0 | 0% |
| 7章 クラスとインタフェース | 10 | 4 | 40% |
| 8章 メタクラスと属性 | 9 | 1 | 11% |
| 9章 並行性と並列性 | 13 | 0 | 0% |
| 10章 ロバストネス | 12 | 10 | 83% |
| 11章 パフォーマンス | 8 | 6 | 75% |
| 12章 データ構造とアルゴリズム | 8 | 1 | 13% |
| 13章 テストとデバッグ | 8 | 2 | 25% |
| 14章 コラボレーション | 10 | 1 | 10% |
| 合計 | 125 | 35 | 28% |
この表から読み取れることを3つ挙げます。
読みどころ1:増分の46%が「落ちないコード」と「速さ」に集中している
新規35項目のうち16項目(46%)が10章ロバストネスと11章パフォーマンスにあります。10章にいたっては12項目中10項目が新規で、実質的に新設された章と言っていい構成です。
この偏りは、発売元の説明とも噛み合います。オーム社の紹介文は、改訂の背景としてAIと機械学習でのPython利用拡大や商用利用の増加により、ロバスト性とパフォーマンスへの需要が高まったことを挙げています(出典: オーム社)。宣伝文としてはよくある言い回しですが、目次を数えると実際にその通りの配分になっているわけです。読者にとっては、こういう裏づけがあるほうが判断しやすいはずです。
読みどころ2:並行処理・内包表記・辞書は、項目が1つも増えていない
逆側も見ておきます。9章 並行性と並列性(13項目)、6章 内包表記とジェネレータ(8項目)、4章 辞書(5項目)は、新規項目がゼロでした。特に並行性の章は、第2版の13項目と第3版の13項目が1対1で対応します。
つまり「asyncio やスレッドの扱いを強化したいから第3版に買い替える」という判断は、項目の構成という観点では根拠が弱いことになります。もちろん本文が改訂されている可能性はあります(版元が「大幅に改訂」と述べているとおりです)。ただ、増えた35項目の恩恵はこの領域には及んでいません。
細かい変化として、第2版でスレッドの用途を扱っていた項目のタイトルから、並列性への使用を戒める後半部分が第3版では外れています。ただしその理由は公表されていないため、当サイトとしてはタイトルの差という事実の提示にとどめます(近年のPythonにおけるGIL関連の動きと結びつけたくなるところですが、根拠がないので推測は書きません)。
読みどころ3:「新しい文法の解説が増えた版」ではない
第3版というと、近年追加されたPythonの新機能が大量に入ったと想像しがちです。目次を見るかぎり、そうではありませんでした。
- 型ヒントに関する新規項目はゼロ。静的解析を扱う項目は第2版から引き継がれたもので、新設ではありません
- Python 3.10以降の言語機能で、項目として新設されたのはパターンマッチ(
match文)だけです
ここも留保が必要です。既存項目の本文で型ヒントの記述が増補されている可能性は十分にあり、その点は未確認です。あくまで「項目という単位では新設されていない」という話です。
とはいえ、増えた35項目の内訳(例外処理・計測・配布・クラス設計)と合わせると、傾向ははっきりしています。第3版は新しい文法の紹介ではなく、書いたコードを運用に耐えさせるための本へ軸足を寄せた版だと読めます。
ここまでで判断がついた方は、書籍データ(版の確認とリンク)へ戻れます。増えた35項目の中身をもう少し具体的に知りたい方は、このまま読み進めてください。
5. 増えた35項目は、何のための項目か
35項目をテーマ別にまとめると、次の6グループになります。各グループで扱われるテーマを、代表的なものだけ挙げます(目次の全文を並べることはしません)。
| テーマ | 新規 | 扱われる代表的なトピック |
|---|---|---|
| 例外処理とロバストネス(10章) | 10 | assert と raise の使い分け、try ブロックを短く保つ、Exception と BaseException の違い、例外の明示的な連鎖、ジェネレータのリソース後始末、exec と eval を避ける理由 |
| パフォーマンスとネイティブ連携(11章) | 6 | timeit での計測、他言語に置き換える判断、ctypes でのネイティブライブラリ連携、拡張モジュール、バイトコードキャッシュと遅延インポートによる起動時間の短縮 |
| Pythonicの土台(1章) | 4 | コンパイル時のエラー検出を期待しない、単一要素タプルの書き方、単純な条件式の使い所、パターンマッチの使い所と使わない判断 |
| クラス設計(7章) | 4 | isinstance よりポリモーフィズム、関数型のシングルディスパッチ、軽量クラスと不変オブジェクトに dataclasses を使う |
| ループとイテレータ(3章) | 3 | ループ変数をループ後に使わない、反復中のコンテナ変更を避ける、any と all による短絡評価 |
| その他(2・5・8・12〜14章) | 8 | 明示的な文字列結合、ミュータブルな引数、functools.partial、クラス本文の定義順序、sort() と sorted() の違い、統合テストの優先、浮動小数点数のテスト、配布用のバンドル |
出典は第3版と第2版の公開目次です。以下、増分の大きい4グループについて「読むと何ができるようになるのか」を補足します(章がひとまとまりのグループに絞り、「その他」は割愛します)。掲載しているコードは本書からの転載ではなく、当サイトがPython公式ドキュメントを参照して書き、実行結果を確認したものです(Windows 11 / Python 3.12.10)。
例外処理の10項目:落ちたときに原因を追えるコードになる
新規項目がいちばん多いのがこのグループです。try と except の書き方そのものは入門書でも扱いますが、実務で効くのは「どこまでを try で囲むか」「どのクラスを捕まえるか」「元の例外情報をどう残すか」といった判断のほうです。
たとえば例外の連鎖。エラーを自前のメッセージに包み直すとき、from を付けるかどうかでトレースバックの情報量が変わります。
def load_setting(raw: str) -> int:
try:
return int(raw)
except ValueError as exc:
# from exc を付けると、元の例外がトレースバックに残る
raise ValueError(f"設定値が数値ではありません: {raw!r}") from exc
load_setting("abc")
実行すると、トレースバックが2段になります。
ValueError: invalid literal for int() with base 10: 'abc'
The above exception was the direct cause of the following exception:
(中略)
ValueError: 設定値が数値ではありません: 'abc'
「設定値が数値ではない」という読みやすいメッセージと、実際にどの変換で落ちたのかの両方が残ります。from exc を省いても元の ValueError 自体は表示されますが、連結の文言が「During handling of the above exception, another exception occurred:(処理中に別の例外が発生した)」に変わり、因果関係なのか単なる巻き込みなのかがログから読み取れなくなります(元の例外を完全に消したいときだけ from None を使います)。この差が、障害対応の初動にそのまま効きます(例外の連鎖の仕様はPython公式チュートリアルのエラーと例外で確認できます)。
この章が効くのは、自分以外の人が動かすコードを持った瞬間です。自分だけが使う使い捨てスクリプトなら、落ちたその場で直せば済みます。ところが同僚のPCや業務サーバーで動くようになると、「落ちた後にログだけを見て原因を特定する」必要が出てきます。10章で新設された10項目は、そのための備えをまとめた章だと言えます。エラーメッセージの読み方そのものに不安がある段階なら、先にPythonエラー一覧と対処法で基礎を固めておくと、この章の内容が入りやすくなります。
パフォーマンスの6項目:速くする前に測る癖がつく
11章の8項目のうち6項目が新規です。ctypes や拡張モジュールといった、Pythonの外側に出ていく手段が並ぶのが第3版の特徴で、著者の公式サイトでも第3版の変更点としてC拡張モジュールとネイティブ共有ライブラリの解説が挙げられています(出典: effectivepython.com)。
ただし、この章で最初に効くのはもっと手前の話です。速さの議論は計測から始めるという点です。標準ライブラリの timeit なら数行で比較できます。
import timeit
setup = "data = list(range(10000))"
a = timeit.timeit("[x * 2 for x in data]", setup=setup, number=1000)
b = timeit.timeit("list(map(lambda x: x * 2, data))", setup=setup, number=1000)
print(f"内包表記: {a:.3f}秒")
print(f"map+lambda: {b:.3f}秒")
手元(Windows 11 / Python 3.12.10)で3回実行した結果は、内包表記が0.25〜0.27秒、map と lambda の組み合わせが0.50〜0.52秒でした。同じ処理でも約2倍の差が出ています。この数値は環境によって変わるので鵜呑みにせず、自分の環境で測ってから直すという手順そのものを持ち帰ってください。それが11章の入口です。
ちなみに、起動時間を削る話(バイトコードキャッシュ・遅延インポート)が2項目入っているのは実務的です。コマンドとして何度も叩かれるツールでは、処理そのものより起動の待ち時間が体感を左右します。
クラス設計の4項目:dataclasses を使う判断が2項目分ある
7章の新規4項目のうち2項目が dataclasses 関連です。軽量なクラスを定義するとき、そして不変(イミュータブル)なオブジェクトを作るときに、それぞれ dataclasses を優先する、という趣旨の項目が置かれています。
from dataclasses import dataclass
@dataclass(frozen=True)
class Point:
x: int
y: int
p = Point(1, 2)
print(p) # Point(x=1, y=2)
print(p == Point(1, 2)) # True
p.x = 5 # FrozenInstanceError
実行すると、表示は Point(x=1, y=2)、等価比較は True、そして最終行で FrozenInstanceError: cannot assign to field 'x' が発生します。__init__・__repr__・__eq__ を手書きせずに済み、frozen=True を足すだけであとから書き換えられない値オブジェクトになります(仕様はdataclassesの公式ドキュメントを参照)。
関数やクラスの設計そのものに不安がある場合は、組み込み関数と関数設計の基礎を先に押さえておくと、7章の議論が追いやすくなります。
1章の4項目:入門書の直後でも読める新規項目
意外に思われるかもしれませんが、新規項目は前半にもあります。1章は9項目中4項目が新規です。しかも内容は初級者がつまずく話題を含みます。たとえば単一要素のタプル。
single = ("value",) # 末尾のカンマがタプルを作る
not_a_tuple = ("value") # 丸括弧だけでは、ただの文字列
print(type(single), len(single)) # <class 'tuple'> 1
print(type(not_a_tuple), len(not_a_tuple)) # <class 'str'> 5
実行結果はコメントのとおりです。丸括弧ではなく末尾のカンマがタプルを作る、というPythonの仕様に由来する落とし穴で、関数に1要素だけ渡すときに事故になります。こうした項目が前半に置かれているので、「中級者向けだから前半も難しい」わけではないという点は押さえておいてください。
6. いつ読むか──章ごとに効きはじめる段階が違う
「Effective Python はいつ読むべきか」という問いには、「中級者になってから」という答えがよく返ってきます。間違いではありませんが、この本に関しては粗すぎる答えだと考えています。14章125項目のうち、どの章が効くかは読者の開発段階によって変わるからです。
章と開発段階の対応(当サイトの整理)
以下は目次の章構成という事実をもとにした当サイトの整理であり、本書にこのように書かれているわけではありません。判断の出発点としてお使いください。
| 章 | 効きはじめる段階 | まだ早い場合 |
|---|---|---|
| 1〜6章 言語機能の使い分け | 自分ひとりでスクリプトを書いている段階から | 入門書の直後でも読める部分が多い |
| 7〜8章 クラス設計・属性 | 複数モジュールや再利用されるコードを書き始めた段階 | まだクラスを書いていないなら早い |
| 9章 並行性と並列性 | I/O待ちや重い処理で待たされる問題が出た段階 | 問題が起きる前に読んでも定着しにくい |
| 10章 ロバストネス | 自分以外の人に使わせるコードを持った段階 | 使い捨てスクリプトでは実感が湧きにくい |
| 11章 パフォーマンス | 「遅い」で実際に困った段階 | 困る前は優先度が低い |
| 12章 データ構造とアルゴリズム | 扱うデータ量が増えた段階 | — |
| 13〜14章 テスト・コラボレーション | 他人と共有する、または継続して保守する段階 | 個人利用だけなら後回しでよい |
この整理には裏づけがあります。第2版を扱った解説記事には、初学者がいきなり読むには厳しいという評がありました。一方で前半の章は早めに知っておくと役立ち、それほど難しくもないとも述べられています(出典: note.nkmk.me/第2版についての記述)。第3版の英語版を読んだ記録では、パフォーマンスの章は状況によって優先度が下がるという指摘も見られました(出典: Zenn・mima_ita氏)。章ごとに優先度が違う——この読み方は、複数の読者の実感とも重なります。
買う前の5問チェック
買うタイミングを自分で判定するための質問です。これも当サイトの整理で、本書の記述ではありません。
- 入門書を1冊終えて、
forや関数定義を調べずに書けますか - 自分が書いたコードを、他の人に動かしてもらったことがありますか
- 自分でクラスを設計したことがありますか
- 処理が「遅い」ことで困った経験がありますか
- テストコードを書いたこと、または書く必要に迫られたことがありますか
| 「はい」の数 | おすすめの動き |
|---|---|
| 0個 | まだ早い段階。入門書を1冊終えるほうが投資効率が高い。順路は参考書9冊の比較を参照 |
| 1個だけ(設問1のみ) | 買ってよい。ただし読むのは前半の章から。後半は必要になってから戻る |
| 2〜3個 | 買いどき。前半に加えて、該当した設問に対応する章から読める |
| 4個以上 | 買いどき。特に第2版所持者なら、増えた35項目がそのまま自分の課題に重なる可能性が高い |
「0個」「1個」だった方へ。この本が効きはじめる合図は3つです。①自分のコードを他の人が動かすことになった ②「遅い」で実際に困った ③クラスを設計する必要が出た。どれかに当てはまった時点で、このページに戻ってきてください(ブックマークしておくと探し直さずに済みます)。それまでは中級者向けアプリ100本で手を動かすほうが、同じ時間で先に進めます。
設問1に「いいえ」の方だけは、順番を変えることをおすすめします。本書は文法の基礎を解説しない前提で書かれているため、先に入門書を1冊終えたほうが結果的に速く進みます。順路としては独習Python 第2版のような体系的な教科書で言語仕様をひととおり通し、そのあとに本書へ進む形が素直です。
「難しい」と言われる理由と、その実態
この本が難しいと言われるのは、扱う概念が高度だからというより、読者が問題に直面していない段階で読むと必要性が分からないからだと考えられます。項目ごとに難易度がばらつくという指摘もあります(出典: allneko.club/第2版のレビュー)。実際、前掲のとおり1章には初級者向けの落とし穴も含まれています。
もうひとつ現実的な話として、物理的な重さがあります。572ページのB5変型は、持ち運びに向くサイズではありません。第3版を予約購入した方の記事にも、ページ数が増えて重くなったことを難点として挙げる記述があります(出典: note・ブオナローティ氏)。通勤中に読む想定なら、電子版を選ぶほうが現実的です。
8. 本書の前に埋めておきたい基礎
本書は文法の基礎を解説しません。裏を返すと、基礎が入っていれば前半から読めるということでもあります。当サイトの記事で埋められる部分を対応させておきます。
| 本書の章 | 前提として知っておきたいこと | 当サイトの該当記事 |
|---|---|---|
| 1〜3章(考え方・文字列・ループ) | 基本文法、スライス、繰り返しの書き方 | Pythonの基本文法 |
| 5章(関数) | 引数・戻り値・組み込み関数の使い分け | 組み込み関数と関数設計 |
| 10章(ロバストネス) | 例外の種類とエラーメッセージの読み方 | Pythonエラー一覧と対処法 |
| 11〜12章(パフォーマンス・データ構造) | 標準ライブラリで何ができるか | 標準ライブラリの一覧 |
| 全体 | 手を動かす題材(読むだけで終わらせないため) | 中級者向けアプリ100本 |
この本のいちばんもったいない読み方は、「なるほど」と思ったまま自分のコードに戻らないことです。1項目読んだら、自分が過去に書いたコードを開いて同じ書き方をしていないか探す。この往復があって初めて、125項目が自分の手癖に入ります。手元に見直せるコードがない場合は、入門後の練習ロードマップで題材を作ってから読むほうが定着します。
9. 読者レビューの傾向
正直に書きます。第3版の日本語の読者評価は、まだ数として読める状態にありません。
2026年8月15日時点で、読書管理サービスのブクログでは第3版の登録が55人・レビューが5件、平均評価は4.67でした(出典: ブクログ)。読書メーターでは登録19件・感想2件です(出典: 読書メーター)。刊行から約10か月が経ってこの母数です。しかも平均4.67は、星をつけた3人(5つ星2人・4つ星1人)の平均にすぎません。
この記事で目次の突き合わせという手間のかかる方法を採ったのは、評価の集計が当てにならない時期だからです。読者の声が集まるまでは、公表されている事実(項目数・章構成・版元の説明)から自分で判断材料を組み立てるほうが確実だと考えました。
そのうえで、現時点で確認できる傾向を挙げます。いずれも個々の投稿を引用したものではなく、当サイトが要約したものです。
- 最初の1冊ではないという評価は、第3版・第2版を問わず共通しています(前掲のZenn・note.nkmk.me)
- 古いPythonの書き方に慣れた人が、現在の書き方に追いつくのに向くという趣旨の評が、第3版のレビューに見られます(前掲のブクログ)
- 物理的に重いという指摘があります(前掲のnote・ブオナローティ氏)
- 好きな項目から読める構成である点は、第2版・第3版の両方で肯定的に語られています
否定的な評が少ないのは事実ですが、星の評価が3人・感想が5件という母数では「評価が高い本」と断言できません。本記事は評判ではなく構成から判断する立場を採っています。
10. 他の本と比べて決める
本書の立ち位置をひとことで言えば、「入門書の次に読む、書き方の判断集」です。したがって比較すべき相手は、同じ棚にある入門書ではありません。
| あなたの状況 | 選ぶべきもの |
|---|---|
| プログラミングが初めて | 入門書が先。本書はその次 |
| 他言語の経験があり、Pythonの文法を体系的に入れたい | 教科書型の1冊(独習Python 第2版など)→ 本書 |
| 事務作業を自動化したい | 本書ではなく自動化の実務書(退屈なことはPythonにやらせよう 第3版) |
| 動くコードは書けるが、書き方に自信がない | 本書が直球で当たる |
| データ分析や機械学習が目的 | 本書の守備範囲外。専門書へ |
当サイトの学習ルートでは、入門書を1冊終えたあと、目的別の実務書(Web開発・自動化・データ分析)を1冊挟み、その次の仕上げとして本書を置いています。9冊の比較と、レベル別・目的別の並びはPythonの参考書9冊の比較にまとめました。本書そのものの位置づけは比較ページの該当欄で確認できます。
読み終えたあとの進み方に迷ったら、入門後の練習ロードマップと中級者向けアプリ100本が受け皿になります。本書で学んだ書き方は、実際に自分のコードを直して初めて身につきます。
11. よくある質問(FAQ)
Q. 第2版を持っています。第3版に買い替える価値はありますか?
目的次第です。例外処理・落ちないコードの書き方(10章)、速度の計測や起動時間の短縮(11章)、dataclasses を含むクラス設計(7章)に用があるなら価値があります。新規35項目のうち16項目がロバストネスとパフォーマンスに集中しているためです。反対に、並行処理・内包表記・辞書が目的なら、この3つの章は目次上で新規項目がゼロなので急ぐ理由は弱くなります。ただし版元は既存項目も大幅に改訂したと説明しているため、本文の更新まで含めた判断は現物の確認が必要です。
Q. Pythonを始めたばかりですが、読めますか?
入門書を1冊終えていない段階ではおすすめしません。本書は文法の基礎を解説しない前提で書かれており、版元も「Pythonエキスパート必携書」と紹介しています。ただし全編が難解というわけではなく、前半の章には初級者がつまずく話題(単一要素タプルの書き方など)も含まれます。入門書を終えた直後なら、前半から読み始めて問題ありません。
Q. どのPythonバージョンに対応していますか?
公表情報が割れています。版元のオライリー・ジャパンは「Python 3.13までの最新機能に対応」と説明し、発売元のオーム社などは「Python 3.14対応」と表記しています。当サイトは現物を確認できていないため、どちらかに断定していません。なお増えた35項目の中身は例外処理・計測・配布といった領域が中心で、バージョンの数字によって価値が大きく変わる構成ではありません。
Q. 型ヒントを学ぶ目的で買ってもよいですか?
その目的が最優先なら、本書は最適ではありません。両版の目次を突き合わせた範囲では、型ヒントに関する新規項目はありませんでした。静的解析を扱う項目は第2版から引き継がれたものです。ただし既存項目の本文に型ヒントの記述が増補されている可能性はあり、その点は未確認です。
Q. 非同期処理(asyncio)を強化したい場合、第3版は役立ちますか?
並行性と並列性の章は第2版・第3版ともに13項目で、目次上は1対1で対応しており新規項目はありません。したがって「非同期処理の項目が増えたから買い替える」という判断は成り立ちにくくなります。本書を未所持で並行処理を学びたいのであれば、第3版を選んで問題ありません。
Q. 125項目を最初から全部読む必要がありますか?
ありません。各項目が独立した読み切りとして書かれており、興味のある項目から読めるという評が第2版・第3版の双方にあります。実際、章によって効きはじめる開発段階が違うため、必要になった章から引く使い方が現実的です。目安は読むタイミングの整理にまとめました。
Q. 英語の原著と日本語版は何が違いますか?
原著『Effective Python: 125 Specific Ways to Write Better Python, 3rd Edition』は2024年11月刊で、日本語版はその約11か月後の刊行です。原著は672ページ(出典: 版元 InformIT の商品ページ)、日本語版は572ページです。判型はほぼ同じですが、日本語は同じ内容をより少ない文字数・行数で組めるため、ページ数の差がそのまま内容量の差を意味するわけではありません。日本語版で内容が削られたことを示す情報は確認できていません。なお本書の原著はWebで無料公開されていないため、日本語で読みたい場合は日本語版を選ぶことになります。
Q. 電子版はありますか?
あります。版元のページではPrint・PDF・EPUBの3形式が示されています。572ページのB5変型は持ち運びに向かないため、通勤中に読む想定なら電子版が現実的です。取り扱いは販売店によって異なるため、出版社の公式ページまたは各電子書店でご確認ください。本文中の楽天市場のリンクは紙版です。
Q. 中古で第2版を安く買うのではだめですか?
目的次第です。第2版の90項目はすべて第3版側に対応する項目があるため、第2版の内容が無駄になることはありません。ただし増えた35項目のうち16項目は10章ロバストネスと11章パフォーマンスにあり、例外処理・計測・配布に用があるなら第2版では埋まりません。逆に並行処理・内包表記・辞書が目的なら、この3章は新規項目がゼロなので差は出にくいと考えられます。なお版元は既存項目も大幅に改訂したと説明しており、本文の改訂量は当サイトでは未確認です。価格の比較は9冊の比較表をご覧ください。
Q. 定価はいくらですか?
価格情報は更新の手間を1か所にまとめる方針のため、参考書9冊の比較表に集約しています。実売価格やセール価格は販売店によって異なるため、購入前にリンク先でご確認ください。
12. まとめ:買う判断の3条件
最後に、判断を3つに絞ります。次のうち1つでも当てはまるなら、第3版を買う理由があります。
- 入門書を1冊終えていて、本書を持っていない — 第2版をあえて選ぶ理由は薄く、第3版でよい判断です
- 第2版を持っていて、落ちないコード・速度・クラス設計のどれかに悩みがある — 増えた35項目の6割近く(20項目)がこの領域に集まっています
- 自分のコードを他人が動かす立場になった — 実質的に新設された10章ロバストネスが、そのまま今の課題に当たります
逆に、並行処理・内包表記・辞書だけが目的の第2版所持者、型ヒントの学習を最優先する方、まだ入門書を1冊も終えていない方には、いま優先度の高い1冊ではありません。この本は「レベルが上がったら読む本」ではなく「困りごとが出てきた章から引く本」です。その困りごとがまだ発生していないなら、先に手を動かす時間に投資したほうが速く進みます。
手を動かす題材は中級者向けアプリ100本に用意しています。
▼ 買うと決めた方へ(第3版・2025年10月刊・125項目)
どちらも同じ第3版(ISBN 978-4-8144-0133-8)のリンクです。他の本と並べて決めたい方は参考書9冊の比較からどうぞ。
本記事は、生成AIを活用して下書きし、運営者が内容を確認・編集したうえで公開しています。AIの利用方針は免責事項をご覧ください。