ロバスト Python

ロバストパイソン

クリーンで保守しやすいコードを書く

ロバスト Python の表紙
プログラミング
著者:
Patrick Viafore / 鈴木 駿 / 長尾 高弘(パトリック ヴィアフォア / スズキ ハヤオ / ナガオ タカヒロ)
出版社:
オライリージャパン
出版日:
2023年03月25日
ISBN:
9784814400171
在庫:
在庫あり
4.5(2 件 / 楽天ブックス)
中級者向け
プログラミングPython型ヒントメンテナンス静的解析テスト設計依存関係拡張性コード品質

なぜ注目されているか

言及数
116位
総合160位 ↑ 13 ランクアップ 言及 36 件・うち記事 22 件を掲載
出版前出版日04820222023202420252026

書籍紹介

メンテナンスしやすい Python コードを書く!
Python は動的型付け言語であり、静的型付け言語と比べてメンテナンスの簡単なコードが書きにくいという意見もありますが、本書は Python の型を用いてメンテナンスに適したコードにアプローチします。全 4 部あり、1 部と 2 部では本格的に型ヒントを扱い基本的な事柄をしっかり抑えることができます。3 部は Python の拡張性として依存関係や設計について、4 部はセーフティネットと称して静的解析や高度なテスト技法を扱います。

技書の森解説

『ロバスト 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 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: