15章拡張性
この章では拡張性に焦点を当てる。拡張性は、第Ⅲ部全体を通じて考えるテーマであり、この重要な概念をしっかりと理解することが大切になる。拡張性がロバストネスに与える影響を理解すれば、コードベース全体に拡張性を与えるチャンスが見えてくるはずだ。システムの拡張性を上げれば、将来の開発者たちは自信を持ってコードベースを拡張でき、エラーの可能性が下がる。それでは始めよう。
15.1 拡張性とは何か
拡張性は、システムの既存部分を変更せずに新機能を追加できるというシステムの性質である。ソフトウェアは静的なものではなく変化するものである。コードベースの寿命が尽きるまで開発者はソフトウェアを変更する。ソフトウェアという言葉のソフトという部分がそれを示す。変更は大規模なものになることがある。規模を拡大する際にアーキテクチャの重要な部分を入れ替えたり新しいワークフローを追加したりする必要がある状況を考えてほしい。そのような変更はコードベースの複数の箇所にわたって影響するため、単純な型チェックではこのレベルで生じるエラーをすべて検知できない。結局、データ型を完全に再設計することになるかもしれない。拡張可能なソフトウェアの目標は、将来の開発者のために、特に頻繁に変更される部分で簡単に拡張できるポイントを用意しながら設計することである。
このアイデアを説明するために、サプライヤが注文に対応できるように通知システムを実装しようとするレストランチェーンについて考える。レストランには特別なメニューが存在したり、ある食材が切れていたり、はたまた食材が腐ってしまったりするかもしれない。いずれの場合も、レストランはサプライヤに自動で材料の入荷が必要である旨を通知したい。サプライヤは通知のためのPythonライブラリを提供する。 ...
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