0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Adaのモジュール設計:パッケージと可視性の哲学

Posted at

"見せないことが、信頼を生む。"

ソフトウェアの本質は、機能ではなく構造である。
構造を制御するということは、「何が、どこから、どう見えるか」を設計することに他ならない。

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つのもの

  1. 変更耐性
    実装を差し替えても、外部には影響しない。

  2. 意図の明確化
    設計者が「これだけを使ってほしい」という意思を構文で表明できる。

  3. セキュリティと堅牢性
    内部の構造に不用意に踏み込まれることを防ぐ。


private型:完全なカプセル化を実現する型制御

type Engine_State is private;

private
   type Engine_State is (Idle, Running, Error);

外部からは Engine_State の構造が見えず、値の操作も制限される。
これはC++のprivateよりも厳密な意味での構文的カプセル化である。


可視性制御によって、設計者の意図が守られる

Adaでは、すべてのシンボルに対して明示的な「公開/非公開」の指定が必要になる。
これにより、無意識の依存関係を排除し、設計の自律性が保たれる。


結語:構造の秩序が、ソフトウェアを永続させる

良い設計とは、美しい実装ではなく、壊れにくい構造である。
Adaのパッケージシステムは、見えるものを制限することで、未来の破綻を防ぐ。

"コードは記述するものではなく、公開と非公開を設計するものである。"

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?