関係性のパターン:状態記録パターン

アプリケーションの機能を発想する際に「何かの状態を記録する」アイデアがあります。こういったアプリケーションでは生物(人間、動物、植物)などの調子を記録します。(もちろん機械でも構いません。)

「毎日」「毎週」など、調子を記録する周期にフォーカスしすぎるとオブジェクトに拡張性がなくなる場合があるので注意が必要です。

例えば日報のように記録を毎日とることを前提にすると、1日に複数回記録したり複数日にまたがった記録をとることはできなくなります。拡張性を考慮する場合は、日報という周期を含んだオブジェクトではなく、報告オブジェクトに日時プロパティ、もしくは期間プロパティをつけてモデリングする必要があります。

報告オブジェクトであれば同じ日に複数存在しても概念的に破綻しません。期間プロパティによって複数日をまたいで記録することも可能になります。

もしも1日単位で報告を確認したいのならば、時系列にオブジェクトを並べる表示形式(カレンダー表示など)がそれを担当することもできます。もちろん時系列以外の表示形式とも共存可能なので、報告オブジェクトをさまざまな視点から扱うことができるようにもなります。

日報オブジェクトではなく報告オブジェクトにして複数の表示形式を用意する
The Art of User-Interface Design