見出し画像

境界面

システム設計するときには、統治すべき領域や、領域間で情報をやりとりする方法をよく検討することが重要です。ある領域でやるべきことを他の領域でもやってしまったり、やり取りする方法を無視してしまったりするとうまく統治できなくなります。

 ある山村で狼煙を使って、山村の人々に残りの魚の量を伝えていました。漁村の人は山村の狼煙を見て魚を売りに行っていたところ無駄なく山村に魚を売ることができていました。ある日、漁村の人が狼煙を見て魚を売りに行ったところ、多すぎる魚を持っていったため、魚を無駄にしてしまいました。
なぜそのようなことが起こったのでしょうか。
 山村の人は、山村の人達にわかりやすいように狼煙を上げるルールを変更しました。
漁村の人はルールが変わったことを知らずに魚を持っていってしまったのです。山村特有の情報伝達の方法によらず、山村の魚の量を漁村が確実に知る手段が山村と漁村間で取り決められていたら、いくら山村の狼煙の上げ方が変わろうが、そうした問題は起こらなかったでしょう。
 山村がいつのまにか発展し、狼煙を使わなくなったとしても、漁村は山村と取り決めした情報伝達のルールを守っていれば、魚の残量を知ることができます。

 ある領域内部のことが変更されたからと言って、別の領域にまで変更が必要になるような設計は後になって改修のコストが大きくなります。
 
インターフェイスを上手く使いこなしているエンジニアがいると、この人はプロフェッショナルだと思ったりします。
 



 

この記事が気に入ったらサポートをしてみませんか?