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 ―クリーンで保守しやすいコードを書く

4章型制約

大半の開発者は型アノテーションの初歩を学んで満足するが、学ぶべきことはまだたくさんある。型アノテーションには価値ある高度な機能が多く含まれる。高度な型アノテーションを使うと、データ型に制約を加え、データ型が表現できるものをさらに制限できる。目標は、意図しない状態を表現できないようにすることだ。システム内で矛盾するデータ型、無効なデータ型を物理的に作れないようにすべきだ。最初から間違ったコードが書かれなければ、コードベースにエラーは紛れ込まない。型アノテーションを使えば、この目標を達成して時間とコストを節約できる。この章では6種類の型制約テクニックを説明する。

Optional
コードベース内のNone参照を置き換える。
Union
扱える複数のデータ型を表す。
Literal
指定できる値をごく一部に制限する。
Annotated
扱えるデータ型と値の条件を指定する。
NewType
特定のコンテキスト内だけで扱えるデータ型を作る。
Final
変数を束縛し変更できないようにする。

それではOptional型でNone参照に対処する方法から始めよう。

4.1 Optional型

null参照は「10億ドル級の過ち」と呼ばれることが多いが、これはアントニー・ホーアが最初に述べたことだ。

私が10億ドル級の過ちと呼ぶものがある。それは1965年にnull参照を発明したことだ。当時、私はあるオブジェクト指向言語(ALGOL W)における参照のために最初の包括的な型システムを設計していた。私の目標は、コンパイラの自動チェックにより参照を使っているすべての箇所を完全に安全にすることだった。しかし、ただ実装が容易になるというだけの理由で、null参照を認めるという誘惑に勝てなかった。そのために無数のエラー、脆弱性、システムクラッシュが発生することになった。これらはおそらく過去40年で10億ドル分の苦痛と損害を引き起こしたはずだ ...

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

Rustの練習帳 ―コマンドラインツールの作成を通してRustを学ぶ

Rustの練習帳 ―コマンドラインツールの作成を通してRustを学ぶ

Ken Youens-Clark, 中山 光樹
scikit-learn、Keras、TensorFlowによる実践機械学習 第2版

scikit-learn、Keras、TensorFlowによる実践機械学習 第2版

Aurélien Géron, 下田 倫大, 長尾 高弘
Node.jsデザインパターン 第2版

Node.jsデザインパターン 第2版

Mario Casciaro, Luciano Mammino, 武舎 広幸, 阿部 和也
サイトリライアビリティワークブック ―SREの実践方法

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

Betsy Beyer, Niall Richard Murphy, David K. Rensin, Kent Kawahara, Stephen Thorne, 澤田 武男, 関根 達夫, 細川 一茂, 矢吹 大輔, 玉川 竜司

Publisher Resources

ISBN: 9784814400171Other