Skip to Content
ロバストPython ―クリーンで保守しやすいコードを書く
book

ロバストPython ―クリーンで保守しやすいコードを書く

by Patrick Viafore, 鈴木 駿, 長尾 高弘
March 2023
Intermediate to advanced
384 pages
5h 30m
Japanese
O'Reilly Japan, Inc.
Content preview from ロバストPython ―クリーンで保守しやすいコードを書く

14章pydanticによる実行時型チェック

ロバストなコードの主題は、早い段階でエラーを見つけやすくすることだ。複雑なシステムの開発ではどうしてもエラーが発生する。エラーを回避できない。独自データ型を定義すると、矛盾が起きにくい語彙を生み出せる。型アノテーションを使うと、開発中にエラーを検知できるセーフティネットが得られる。これらはどちらもシフトレフトの例と言える。テストあるいは本番稼働中ではなく、もっと早い段階、理想的にはコード開発時にエラーを発見することだ。

しかし、すべてのエラーがコードインスペクションや静的解析だけで発見できるわけではない。実行時しか検出できないエラーがあるのだ。データベース、設定ファイル、ネットワークリクエストなど、プログラム外から提供されるデータを扱う際は常に入力として不正なデータを受け取る危険がある。データを受け取り、パースするコードをロバストにできても、ユーザが不正なデータを渡すのを防げない。

まず考えるのは、大量のバリデーションロジックを用意することだろう。渡されたデータがすべて正しいかどうかをチェックするif文である。しかし、バリデーションロジックは複雑で膨大になることが多く、一目見ただけでは理解しにくい。バリデーションの範囲が広ければ広いほどこの問題は大きくなる。エラーを発見することが目的ならば、すべてのコードおよびテストを読むに越したことはないが、その目的のためには調べるべきコード量を最小限にする必要がある。読めば読むほどコードの理解が深まる一方、認知負荷も高まりエラーを発見する確率が下がる。

この章ではpydanticライブラリを使ってこの問題を解決する方法を説明する。pydanticでモデル化されたクラスを定義することで可読性を犠牲にせずバリデーションロジックのコード量を削減できる。また、ユーザから渡されたデータのパースが簡単になり、出力されるデータ構造の正しさが保証できる。この章では基本的な例からpydanticで何ができるかをひと通り紹介し、最後に高度な使い方も紹介する。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Pythonからはじめるアルゴリズムトレード ―自動売買の基礎と機械学習の本格導入に向けたPythonプログラミング

Pythonからはじめるアルゴリズムトレード ―自動売買の基礎と機械学習の本格導入に向けたPythonプログラミング

Yves Hilpisch, 村上 振一郎
サイトリライアビリティワークブック ―SREの実践方法

サイトリライアビリティワークブック ―SREの実践方法

Betsy Beyer, Niall Richard Murphy, David K. Rensin, Kent Kawahara, Stephen Thorne, 澤田 武男, 関根 達夫, 細川 一茂, 矢吹 大輔, 玉川 竜司
スクラム実践者が知るべき97のこと

スクラム実践者が知るべき97のこと

Gunther Verheyen, 吉羽 龍太郎, 原田 騎郎, 永瀬 美穂

Publisher Resources

ISBN: 9784814400171Other