ロバスト Python
ロバストパイソン
クリーンで保守しやすいコードを書く
- 著者:
- Patrick Viafore / 鈴木 駿 / 長尾 高弘(パトリック ヴィアフォア / スズキ ハヤオ / ナガオ タカヒロ)
- 出版社:
- オライリージャパン
- 出版日:
- 2023年03月25日
- ISBN:
- 9784814400171
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
技書の森解説
『ロバスト Python』 (Patrick Viafore 著、鈴木 駿 監訳、長尾 高弘 訳、オライリー・ジャパン、2023 年 3 月刊) は、Python 3.5 から導入された型ヒントを足場に、何年も手を入れ続けられる堅牢なコードの書き方を扱う書籍です。副題は「クリーンで保守しやすいコードを書く」、原書は Robust Python です。型アノテーションの基礎から、列挙型やデータクラス、プロトコルといったユーザー定義型、依存関係と拡張性の設計、静的解析とテスト手法までを全 4 部 24 章で順に積み上げます。動くコードは書けるのに、規模が大きくなると変更が怖くなる段階の Python 開発者に向いた一冊です。
全 4 部 24 章の構成、型アノテーションからテスト手法まで
1 章「ロバスト Python 入門」でロバストネスとは何か、コードを通じて意図をどう伝えるかを整理したうえで、第 I 部「型アノテーション」に入ります。2 章から 7 章では、強い型付けと弱い型付け、動的型付けと静的型付け、ダックタイピングといった型システムの整理に続き、Optional や Union、Literal、Annotated、NewType、Final による型制約、TypedDict やジェネリクスを使ったコレクション型、mypy の設定と高速化、Pyre や Pyright といった別の型チェッカ、既存のコードへ型チェックを段階的に導入する進め方までを扱います。第 II 部「ユーザ定義型」は 8 章から 14 章で、列挙型、データクラス、クラスの不変式とカプセル化、インタフェースの定義、部分型、プロトコル、pydantic による実行時型チェックが並びます。第 III 部「大規模な変更への対応」は拡張性、依存関係、コンポーザビリティ、イベント駆動アーキテクチャ、プラガブル Python の 5 章、第 IV 部「セーフティネットの構築」は静的解析、テスト戦略、受け入れテスト、プロパティベーステスト、ミューテーションテストの 5 章です。
型で意図を伝えることが保守の手間を減らす理由
保守しにくいコードの多くは、書いた人の頭の中にだけある前提に支えられています。この引数は空でもよいのか、この辞書にはどのキーが必ず入っているのか、この値は特定の数種類しか取らないのか。こうした前提がコードに書かれていないと、後から読む人はすべての呼び出し元を追いかけて推測するしかありません。型アノテーションや列挙型、データクラスは、その前提を処理系と型チェッカが検証できる形でコードに残す手段です。Python の型ヒントは実行時に強制されないため、書いただけでは 型安全性 は得られず、mypy のような型チェッカを開発の流れに組み込んで初めて効き目が出ます。本書が型の書き方だけで終わらず、型チェッカの設定や、実行時に外部の入力を検証する pydantic、さらにテストの層まで一続きで扱っているのは、この点を踏まえた構成だと読めます。
第 III 部と第 IV 部は、型だけでは守れない領域を受け持ちます。15 章では 開放閉鎖の原則 を軸に、機能を足すたびに既存のコードを書き換えずに済む構造を考え、16 章では物理的、論理的、時間的という 3 種類の依存関係と、その可視化を扱います。テストの側では、behave と Gherkin による振る舞い駆動開発の受け入れテスト、Hypothesis を使ったプロパティベーステスト、mutmut を使った ミューテーションテスト まで進みます。ミューテーションテストの章にはカバレッジなどの指標が実態とずれる問題を扱う節があり、テストの数を増やすことと、テストが本当に誤りを捕まえられることの違いを確かめる流れになっています。
Python の基本を終えた人に向く理由と、合わない目的
本書は文法の入門書ではありません。クラスや関数、例外処理、パッケージの扱いを一通り知っていることが前提で、型システムやテストの用語が順に出てきます。まだ Python を書き始めたばかりなら、Python 本の選び方 を参考に入門書を一冊通してから戻るほうが、各章の問題意識が自分の経験と結びつきやすくなります。また、数値計算や機械学習のライブラリの使い方、Web フレームワークの具体的な手順を求めている場合も目的が合いません。扱うのは特定の用途ではなく、どの用途の Python にも共通するコードの組み立て方です。
数千行を超えるコードを複数人で育てている人、過去に書いたスクリプトが業務の中核になって手放せなくなった人、型ヒントを入れたいが既存のコードにどこから適用すべきか迷っている人にとって、型の基礎から設計、テストまでを一冊で順に通せる本書は、手元に置いて章ごとに自分のコードへ当てはめていける実務の参考書になります。
言及した記事 (22 件)
Pythonでコードに意図を込める方法
♡ 245Python, リーダブルコード, EffectivePython, ロバストPythonいつの間にかPythonが軟派な言語ではなくなっていた~ロバストPython~
♡ 146Python, mypy, 型アノテーション, ロバストPythonPython3.12からPEP695-Type Parameter Syntax(型引数構文)が導入され、型変数を使ったクラスや関数の定義が大きく変わる
♡ 143Python, pep, typing, ロバストPythonロバストなPythonコードを書くための基本的なテクニック
♡ 57PythonPythonの達人を目指して~Effective Pythonで学ぶコーディングテクニック~(前編)
♡ 43Python, Python3, EffectivePythonデータサイエンティストのおすすめ書籍30選
♡ 43Python, 機械学習, データ分析, 統計学, データサイエンス【Python】`typing.NewType`をこれから書くコードでは使わないほうがいいと考える理由
♡ 18Python, typing, Pylance, ロバストPython, ベイクドモチョチョPythonの型ヒント「Annotated」にDeepDiveしてみる
♡ 17Python, sqlalchemy, FastAPI, TypeHints, Annotated【Python】`typing.NoReturn`の使いどころ
♡ 15Python, typing, ロバストPython技術書読書ログ「ロバストPython」
♡ 8python, 技術書
この本に興味がある方におすすめ
関連する本
関連記事
Python 本の選び方 - 独学の最初の 1 冊から実務品質まで
Python 本の選び方を「動機」から逆算して整理。プログラミング未経験の最初の 1 冊、業務自動化に直結する本、型ヒントとコード品質で実務水準へ進む本まで、2026 年 8 月時点の定番を独学ルートに沿って解説します。
本の選び方に正解はない
どの本を選べばいいか迷って決められない。同じテーマの入門書は扱う基礎が大きく重なるため、どれからでも学べます。確認すべき 1 点と、迷いを終わらせる決め方を解説します。
テスト本ガイド - テスト設計を学べる技術書の選び方
テストの書き方からテスト戦略まで学べる技術書の選び方を紹介。テストピラミッド、TDD の正しい読み方、テストの ROI の考え方を解説します。
関連用語
テスト駆動開発
テストを先に書き、テストが通るコードを実装し、リファクタリングするサイクルで開発を進める手法
ミューテーションテストとは - テストの品質を数値で測定する手法
ミューテーションテストはソースコードに意図的な変異を注入し、テストが検出できるかで網羅性を評価する手法。Stryker/PIT の導入手順とスコアの読み方を解説
テスト
ソフトウェアが期待通り動くか検証する活動。品質と変更の安全性を支える
TDD
テストを先に書いてから実装するソフトウェア開発手法。設計と品質を同時に高める
E2E テスト
ユーザーの操作をブラウザー上で再現し、システム全体の動作を検証するテスト手法
テスト戦略
プロジェクトのテスト種類、範囲、自動化レベルを体系的に定義する計画