2章抽象化の技
抽象化はソフトウェア設計とソフトウェアアーキテクチャにおいて、非常に重要な役割を果たします。複雑さを管理する鍵とも言えます。抽象化なくしては、良い設計や正しいアーキテクチャなど考えるのも困難です。それでいて良質な抽象化や、上手に使いこなすのは驚くほど難しいのです。蓋を開けてみると、抽象化の構築と使用は分かりにくい部分が多くあり、科学 (science) というよりも芸術 (達人技、妙技、art) と呼ぶにふさわしいものです。本章では抽象化とその技について詳細に解説します。
「ガイドライン 6」では、抽象化の目的を述べます。また、抽象化が要件や期待する動作を表現する点、および抽象化が期待する動作に従うのが重要である理由を解説します。設計の原則の 1 つ、リスコフの置換原則 (LSP、Liskov Substitution Principle) も紹介します。
「ガイドライン 7」では、もっとも広く使用される抽象化である、基底クラスとコンセプトを比較します。両者の共通点である、期待する動作の表現という点を解説します。
「ガイドライン 8」では、内容を抽象化の意味的な要件にまで拡大し、3 つ目の抽象化、関数オーバロードを取り上げます。オーバロードセットに含めた関数には期待される動作があり、そのため LSP に従わなければならない点を解説します。
「ガイドライン 9」では、アーキテクチャにおける抽象化の意味を集中的に解説します。アーキテクチャとは何か、またアーキテクチャの上位、下位に期待されるものは何かを述べます。依存関係の解消には、アーキテクチャの観点から言えば、抽象化するだけでは不十分であることを示し、抽象化を用いたアーキテクチャを構築する上で重要な依存関係逆転の原則 ...
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