ショートカット
ファシリテーター × あり方
コーディングの向こう側
Hello, ANOTHER world!
オブジェクト指向のはなし
プログラミングのはなし
C言語実力診断クイズ
eSkillBooks
コーディングの向こう側

設計をしよう!

だんだん核心に近づいてきた度

インターフェイスと設計の関係

これまでインターフェイスについての考察をしてきました。インターフェイスの質によってどんな良いこと・悪いことがあるのかや、アクセス関数の活用方法について解説しました。良いインターフェイスを決めることが、どれほど良い結果を生むのかということは、理解していただけたと思います。

インターフェイスを決めるということは、設計の範疇に入ります。設計といってもいろいろなスケールがありますが、インターフェイスの決定はかなりコーディングに近い設計です。実際、コーディングの担当者が行うケースが多いでしょう。

そもそも、2つ以上のものが存在してはじめてインターフェイスが必要になります。開発の現場で現実的な問題となるのは、ある人が作ったモジュールを別の人が作ったモジュールと組み合わせるためのインターフェイスでしょう。つまり、担当者が異なるサブシステム間のインターフェイスです。サブシステムごとに担当者が違うということは、すでに誰かがモジュール分割を行って、作業分担を決めた後ということですね。このモジュール分割の段階がうまくできていないと大変困ったことになるのですが、この方法についてはすでに議論がしつくされていると思いますのでここでは解説しません(知らない人は「モジュール結合度」「モジュール強度」をキーワードにして調べてみてください)。

さて、システムをサブシステムに分割する必要性は、どんなときに生じるのでしょうか?例えば "Hello, world!" プログラムを作るときには分割の余地はありませんね。自分専用のちょっとしたツール(たとえばソースコードからコメントを取り除くツールなど)を作るときにもいちいち「ここをサブシステムにして・・・」などと考えないでしょう。つまり、分割が必要になるのは次のようなときです:

  • 作ろうとしているものの規模が大きいとき
  • 2人以上で作ろうとしているとき

分割を行う以上、サブシステム間のインターフェイスは絶対に必要です。ですから開発者は良いインターフェイスの作り方を知っている必要があります。良いインターフェイスには、「きちんと情報隠蔽されている」という特徴があります。つまり、実装とインターフェイスが明確に分離されているということです。情報隠蔽の技術を身につけるためには、オブジェクト指向で用いる「カプセル化」の技法を学ぶのが良いでしょう。

--- 設計とは、分割なり ---

他には?

分割は、設計を行う上で必要不可欠です。しかし、分割を行うこと自体が設計ではありません。設計にはもっといろいろな側面があります。そこで、これから数回に分けて、設計にはどんな側面があるのか考察していこうと思います。手始めに、次回は「設計とはそもそも何なのか?」について考えてみます。

前へ

目次へ
設計ってナンダ?

(「コーディングの向こう側」は2000年4月から2001年5月にかけて作成されたコンテンツです。)