おもしろメディア学 第74話 1×1=?(その3)
2015年2月19日 (木) 投稿者: メディアビジネスコース
今回は、前回の「面白メディア学入門:1×1=?(その2)」で紹介した要素積をもう少し現実的な内容に拡張し、実務上の考え方ないし実務上の処理の流れと、システム設計上の対応について考えてみよう。
問5 ある人の2015年1月2日から1月5日までのスーパーにおける買い物の履歴について、以下は、この人の、各商品の購入数量と購入時の単価が各日付別に記録された交換代数形式のデータである。この人の日付別・商品別の購入額について計算せよ。
購入数量データ
= 5<リンゴ,個,Y2015M01D02>
+ 3<リンゴ,個,Y2015M01D03>
+ 5<リンゴ,個,Y2015M01D05>
+ 1<メロン,個,Y2015M01D05>
+ 5<ミカン,個,Y2015M01D05>
購入単価データ
= 300<リンゴ,単価,Y2015M01D02>
+ 1500<メロン,単価,Y2015M01D02>
+ 100<ミカン,単価,Y2015M01D02>
+ 300<リンゴ,単価,Y2015M01D03>
+ 1500<メロン,単価,Y2015M01D03>
+ 100<ミカン,単価,Y2015M01D03>
+ 200<リンゴ,単価,Y2015M01D04>
+ 1000<メロン,単価,Y2015M01D04>
+ 100<ミカン,単価,Y2015M01D04>
+ 500<リンゴ,単価,Y2015M01D05>
+ 2000<メロン,単価,Y2015M01D05>
+ 300<ミカン,単価,Y2015M01D05>
もともとAADLでは、交換代数型のデータは4つの基底で実装されていると紹介してきた。ここで、もう一度その基底構成を復習しておくと、
< name, unit, time, subject>
誰が(subject )、何を(name)、いつ(time)、どれだけ(unit)を表しており、今回は、name、unit、timeの3つの基底からなる属性の構成で紹介する。前回までは、何を(name)、どれだけ(unit)の2つの基底でデータの属性を説明し、今回新たに時系列の属性(time)が加わったわけである。
上記のデータ例では、購入数量データについては、この人の購入実績のある品目・曜日のデータのみ記録されている。一方、購入単価データについては、2日から5日に至る、全ての品目(今回の例では、リンゴ、メロン、ミカンの3種類)の単価が記録されている。さて、上記の問の日付別・商品別の購入額の計算は、実はAADLでは非常に簡単である。前回のように、この購入額の計算が意味を持つもの、すなわち、
単価×数量→金額
を確認し、購入数量データ、購入単価データの単位(unit)基底それぞれ
個→円
単価→円
に振替変換した上で、各交換代数データを掛け算すればよい。その結果は以下のとおりである。
購入数量データ×購入単価データ
= 購入金額データ
= 5<リンゴ,円,Y2015M01D02>×300<リンゴ,円,Y2015M01D02>
+ 3<リンゴ,円,Y2015M01D03>×300<リンゴ,円,Y2015M01D03>
+ 5<リンゴ,円,Y2015M01D05>×500<リンゴ,円,Y2015M01D05>
+ 1<メロン,円,Y2015M01D05>×2000<メロン,円,Y2015M01D05>
+ 5<ミカン,円,Y2015M01D05>×300<ミカン,円,Y2015M01D05>
= 1500<リンゴ,円,Y2015M01D02>
+ 900<リンゴ,円,Y2015M01D03>
+ 2500<リンゴ,円,Y2015M01D05>
+ 2000<メロン,円,Y2015M01D05>
+ 1500<ミカン,円,Y2015M01D05>
何の変哲もない計算のように見えるが、「同一品目・同一日の購入数量データと単価データが自動的に選択されている」計算になっている点に注意されたい。まず、この人の買い物は1月2、3、5日の3日間に限られているが、単価データはスーパーが開店している他の日(4日)の分も存在する。しかしこの人の購入実績のある2、3、5日の3日間だけ、そして実際に購入した品目だけ計算が行われている。つまり、AADLでは原則として同一基底を持つデータの間でしか計算を実行しない。そして、同じ品目同士だけ計算するのはもちろん、同じリンゴでも、当然のことながら、2日の購入は2日の単価で、3日の購入は3日の単価で計算が実行されている。
こうした計算をプログラミングする際、同じ品目、同じ日付の条件マッチングという面倒な手続きに煩わされた経験のある方も多いであろう。前回紹介したように、これらのデータ間の条件分岐を自動的に行なってくれるのがAADLである。すべて同じ基底を持つデータの間でのみ掛け算が定義され、これが実装されたAADLの「要素積」は、特殊な演算であるが実務上は常識的で、しかも極めて単純なロジックでの実装を提供できる(というより今見たように単なる掛け算である)。
さて、今回のデータ事例に「誰が (subject )」を加えた、交換代数本来の4項基底でデータ管理を行えば、このスーパーの顧客別購入履歴リストを作成することができる。この場合も、基底の振替変換をうまく行えば、今回の例のように自動的に編集できる。試しに考えてみてほしい。
(メディア学部 榊俊吾)
「おもしろメディア学」カテゴリの記事
- 【研究紹介】お城を数値で作り上げる!:日本城郭のプロシージャルモデリング(2019.01.22)
- 【研究紹介】プロジェクションマッピングはエンタメだけじゃない!プロジェクションマッピングによる動作支援(2019.01.15)
- 高大連携企画・映像制作ワークショップを開催しました(2019.01.14)
- 【再掲】世にも恐ろしい本当にあった話...(からぁ~の,エール!)(2019.01.09)
- 【研究紹介】”匂い”で季節感を感じさせることはできるか?(2019.01.06)