5章モジュールを学ぶ

オブジェクト指向でアプリケーションを作成していると、当然ですがオブジェクトの種類は際限なく増えていきます。たとえばThree.jsという3Dグラフィックス用のライブラリでは200種類を超えるオブジェクトが使用されています。しかし、そのような大量のオブジェクトはすべてと平均的に関連しているわけではありません。たとえばライティングに関わるオブジェクト群や、ジオメトリに関わるオブジェクト群など、同じような目的を持つオブジェクト同士は密に関連しますが、目的の異なるオブジェクト同士の関連は少ないか、場合によってはまったくありません。

関係することの多いオブジェクト群をサブシステムとして切り出し、アプリケーション全体をサブシステムの組み合わせで表現できれば複雑なアプリケーションでも見通しがよくなります。図5-1から分かるように、システムをオブジェクトの関連として全体を捉える(左)と非常に複雑ですが、サブシステムに分割してそれらの関連として捉える(右)ことができれば随分と分かりやすくなります。

サブシステムの切り出し

図5-1 サブシステムの切り出し

また、このような構造にすることでサブシステム単位で開発者もしくは開発チームを分けることも容易になります。つまりサブシステム間の連携に使用されるオブジェクトの仕様についてだけ全体的な同意が得られていれば、それ以外のオブジェクトについては開発者または開発チームが自由に設計できるようになるのです。

ただし、そのためにはサブシステムに分解するだけでなく、もうひとつ、サブシステム内でだけ使われるオブジェクトの情報を外部から隠蔽する手段も必要です。そういった手段がないままサブシステムごとにチームを分解すると、複数のサブシステムで同名のオブジェクトが定義され、結合時に動作しなくなるという問題が発生する可能性があります。 ...

Get ハンズオンJavaScript now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.