「インターフェイス指向設計」読ん…でます

プログラムのインターフェイス(User InterfaceではなくProgramming Interface)のデザイン(この記事では"意匠"ではなく"設計"の意味で使います)について書かれた本。

まだ第一部(第三部まである)しか読んでません。

この本を読んで、大学で受けたコンピューターアーキテクチャの最初の講義で「(コンピューターアーキテクチャの)デザインとは、トレードオフを決めることだ!」と先生が言ってたのを思い出しました。

どういうことか、説明してみます。

デザインというのは、いろいろなアーキテクチャの選択肢の中から、どれかを採用したり、組み合わせたりすることです。選択肢にはそれぞれ特徴、つまりメリットとデメリットがあります。デザイン作業では、それらを見極めた上で、メリットが最大化されるように当てはめていきたいのですが、ほとんどの場合は、デメリットもある程度受け入れなければなりません。このメリット・デメリットのバランス取りの事をトレードオフと言うのですが、デザインの問題の本質は、このトレードオフにあるのだという話でした。

本のほうに話を戻します。

この本の第一部は、

  • インターフェイス実装の時に注意すべきこと、契約による設計について
  • さまざまなインターフェイスのパターンについて、メリットとデメリット、特定の状況で特に注意すべきデメリットについて

書かれています。トレードオフするインターフェイスのパターンとして以下が解説されています。

  • データインターフェイス vs サービスインターフェイス
  • 別のメソッドを用意する vs パラメータで制御する
  • 高機能 vs 単機能
  • インターフェイス vs 継承
  • ステートレス vs ステートフル
  • 単一インターフェイス vs 複数インターフェイス
  • リモートインターフェイス
    • 手続き型インターフェイス vs ドキュメント型インターフェイス
    • 同期型インターフェイス vs 非同期型インターフェイス
    • ステートレス vs ステートフル
    • 安定性 vs 柔軟性

結構、無意識的に知っていることが多かったのですが、このように明文化して読めたというのは良かったです。プログラミング初級者を卒業し、デザインパターンやオブジェクト指向プログラミングを学ぼうという人にとっては、とても良い教科書になるでしょう。本なしでは自分で色々と試行錯誤しないと分からない知識に触れることができます。実際に身につけるには経験が必要ですが、知識があるだけで、まずい選択をすることが減らせると思います。