"見せないことが、信頼を生む。"
ソフトウェアの本質は、機能ではなく構造である。
構造を制御するということは、「何が、どこから、どう見えるか」を設計することに他ならない。
Adaにおけるモジュール設計は、パッケージ(package)という単位によって厳密に制御される。
パッケージ=「見せること」と「隠すこと」の境界線
Adaのパッケージは、インターフェースと実装が物理的に分離されている。
-- インターフェース定義
package Motor_Control is
procedure Start;
procedure Stop;
end Motor_Control;
-- 実装定義
package body Motor_Control is
procedure Start is
begin
-- 実装詳細
end Start;
procedure Stop is
begin
-- 実装詳細
end Stop;
end Motor_Control;
この分離によって、公開されたインターフェース以外に依存することを構文的に禁止できる。
「実装の不可視化」が守る3つのもの
-
変更耐性
実装を差し替えても、外部には影響しない。 -
意図の明確化
設計者が「これだけを使ってほしい」という意思を構文で表明できる。 -
セキュリティと堅牢性
内部の構造に不用意に踏み込まれることを防ぐ。
private型:完全なカプセル化を実現する型制御
type Engine_State is private;
private
type Engine_State is (Idle, Running, Error);
外部からは Engine_State
の構造が見えず、値の操作も制限される。
これはC++のprivate
よりも厳密な意味での構文的カプセル化である。
可視性制御によって、設計者の意図が守られる
Adaでは、すべてのシンボルに対して明示的な「公開/非公開」の指定が必要になる。
これにより、無意識の依存関係を排除し、設計の自律性が保たれる。
結語:構造の秩序が、ソフトウェアを永続させる
良い設計とは、美しい実装ではなく、壊れにくい構造である。
Adaのパッケージシステムは、見えるものを制限することで、未来の破綻を防ぐ。
"コードは記述するものではなく、公開と非公開を設計するものである。"