おもしろメディア学 第73話 1×1=?(その2)
2015年2月18日 (水) 投稿者: メディアビジネスコース
前回の「面白メディア学入門」では、AADL(Algebraic Accounting Description Language)を通じて、掛け算の意味と方法についてデータ編集という実務における文脈のもとに紹介した。AADLにおける掛け算の実装は、同じ基底同士の交換代数の間で、かつ単位など掛け算として意味のある交換代数同士で定義される、という内容であった。今回は、AADLでこのように掛け算を定義すると、システム設計上どのような効果が期待できるかという内容について紹介しよう。
問4 以下のように果物の購入数量データと購入単価データがあるとき、果物それぞれの購入金額を求めよ。
購入数量データ
= 5<リンゴ,個>+ 1<メロン,個>+ 5<ミカン,個>
購入単価データ
= 300<リンゴ,単価>+ 1500<メロン,単価>+ 100<ミカン,単価>
データ管理を行うとき、実務上は、共通の意味を持ったまとまりで管理すると、ミスを防ぎやすくなるだけでなく、いろいろな場面で利用しやすい。上記の問では、購入数量と購入単価それぞれについてデータをひとまとまりにして管理している。
AADLでは、リンゴ、メロン、ミカンなどの果物の各購入数量、各購入単価などを一つの交換代数形式の要素で表し、それを形式和でつないで一まとまりのデータファイルを作成できる。別の機会に詳述するが、AADLでは交換代数形式のデータファイルは、CSV形式で入出力できるようになっている。上の例では、購入数量データと購入単価データをそれぞれCSVファイルとして作成することができる。
さて、問4のように果物の購入数量データファイルと購入単価データファイルが交換代数形式で利用できるとしよう。このとき、購入金額は、前回の「面白メディア学入門:1×1=?」で見た通り、この計算が意味を持つもの、すなわち、
単価×数量→金額
を確認し、購入数量データ、購入単価データの単位(unit)基底それぞれ
個→円
単価→円
に振替変換した上で、各交換代数データを掛け算する。このとき、AADLでは同じ基底を持つ交換代数元同士の間でのみ掛け算を行うように実装されている。基底変換後の購入数量データと購入単価データはそれぞれ、
購入数量データ
= 5<リンゴ, 円>+ 1<メロン, 円>+ 5<ミカン, 円>
購入単価データ
= 300<リンゴ, 円>+ 1500<メロン, 円>+ 100<ミカン, 円>
であるので、それぞれ、リンゴ同士、メロン同士、ミカン同士の間でだけ掛け算が定義され、リンゴの購入数量とメロンの購入単価などの基底の異なる交換代数同士の間の計算は行われない。AADL上で実装されたこのような掛け算を「要素積」と呼ぶ。計算結果は以下のとおりである。
購入数量データ×購入単価データ
= 購入金額データ
= 5<リンゴ, 円>×300<リンゴ, 円>
+ 1<メロン, 円>×1500<メロン, 円>
+ 5<ミカン, 円>×100<ミカン, 円>
= 1500<リンゴ, 円> + 1500<メロン, 円> + 500<ミカン, 円>
この、同じ基底を持つ交換代数同士の間でだけ掛け算が定義されているという点がポイントである。このようなデータ管理システムのプログラムを書くときに、購入数量データと購入単価データの間で果物の名前をマッチングするロジックを作る必要がないからである。同じ果物同士の購入数量と購入単価を掛け算して購入金額を求めるという、実務上は常識的とも言える考えが、AADL上では特段のロジックを書くこともなく、要素積で実装できる。実務感覚でコードが書けるAADLの強みの一つがここにある。次回は、もう少し現実的な例で、この要素積の威力を見ていこう。
(メディア学部 榊俊吾)
「おもしろメディア学」カテゴリの記事
- 【研究紹介】お城を数値で作り上げる!:日本城郭のプロシージャルモデリング(2019.01.22)
- 【研究紹介】プロジェクションマッピングはエンタメだけじゃない!プロジェクションマッピングによる動作支援(2019.01.15)
- 高大連携企画・映像制作ワークショップを開催しました(2019.01.14)
- 【再掲】世にも恐ろしい本当にあった話...(からぁ~の,エール!)(2019.01.09)
- 【研究紹介】”匂い”で季節感を感じさせることはできるか?(2019.01.06)