アナリシスパターンで基本型にすべきと提案されている「量」の概念
量とは?
現実世界では、長さを 160cm、金額を 500円 など、量を「数値+概念」で表します。
ところが、システム上ではこれらを単に 160, 500 といった数値で表すことも多いかと思います。
アナリシスパターン では、このような「量」という概念について、単に数値ではなく「量」、つまり 160cm, 500円 として、そのままモデリングすることが提案されています。
量の定義
量は次のように定められた型です。
これを使うと、次のような表現が可能です。
金額、長さなどは世の中では「数値+単位」で扱われるため、この概念をそのまま型として定義しようとするものです。
単なる数値ではなく、「量」という型に基づいて設計することで、システム内で扱われる値をより正確な概念で扱うことができます。
直感的な感想
最初これをみたとき、 数値だけで保存したほうがデータ小さくなるし、単位が重視される場面はそこまで多くないのでは? と思いました。しかし、後に
- そもそも型のモデリング段階で、データの大きさなどの実装を考慮することは無意味
- 量という概念は、直感的な解釈よりも広い
という事に気づきました。
1. モデリング段階で実装を考慮すること
これは様々なところで言われていることですが、モデリングの段階で実装を考慮すると、特定の実装に依存したモデリングをしてしまう要因となります。レイヤードアーキテクチャに代表されるように、特定の実装に依存することはあまり推奨されることではないと認識しています。
2. 量という概念は、直感的な解釈よりも広い
これについては、そもそも「単位」が何かを理解する必要がありました。
Wikipedia(単位)によると、単位とは
単位(たんい、英: unit)とは、量を数値で表すための基準となる、約束された一定量のことである。
とあります。
つまり、単位というのは「cm, kg, 円」のように単に後ろにつける符号に限らず、例えば
- 容積を表すための「東京ドーム ○個分」
- 体重を表すための「りんご ○個分」
なども量の単位として扱うことができます。
例: 商品代金の支払い
買い物をする場合、商品代金 を お金 を使って支払います。
しかし、値引クーポン、ポイント などを使うことで支払う金額をディスカウントできることがあります。
一般的な解釈としては、次のような式が成立します。
商品代金 - (値引クーポンの値引き額 + ポイントの値引き額) = 支払うお金
ここで、上の式に現れた概念はすべて「量」です。
商品代金は基本的にお金で払う という前知識が邪魔をしていましたが、上の式は下と同じです。
商品代金 = 支払うお金 + 値引クーポンの値引き額 + ポイントの値引き額
つまり、お金を特別視する必要は無い ということになります。
したがって、この関係性は次のような図で表せます。1
システムでこのように定義することができれば、今後「支払い方法を増やす仕様変更」などが入った場合にも容易に改修することができます。
「量」という現実世界に即した概念でモデリングを行うことで、より本質的な洞察をシステムに組み込むことが可能となります。
まとめ
「量」という概念を使うことで、本質的な概念を抽出できる例を示しました。
アナリシスパターンでは、量についてより詳しい記述2もありますので、ぜひ読んでほしいです。
参考文献:アナリシスパターン
システムでよく遭遇する「型の構造」の詳細な分析が記された本です。
読むのが少し難しいですが、理解すると非常に納得感が得られます。
- 書籍名: アナリシスパターン: 再利用可能なオブジェクトモデル
- 著者: マーチンファウラー
- 翻訳: 堀内一, 児玉公信, 友野晶夫, 大脇文雄
- 出版社: アジソンウェスレイパブリッシャーズジャパン, 1998
Author And Source
この問題について(アナリシスパターンで基本型にすべきと提案されている「量」の概念), 我々は、より多くの情報をここで見つけました https://qiita.com/fuuki/items/ba6de4baa3c6eaefc5ed著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .