« おもしろメディア学 第68話 ジェンダーと表象 | トップページ | ソーシャルコンピューティングとは »

おもしろメディア学 第69話 1×1=?

|

前回、前々回の筆者のブログ、『面白メディア学』の「1+1=?」および「1+1=?(その2)」では、足し算を行うためには条件のあることを紹介した。すなわち、実務の世界では、足し算する対象の種類や単位を共通にそろえなければ足し算できないという、考えてみれば当たり前のことを厳密に記述する方法を検討したわけである。

今回は、前回の最後に予告したように、掛け算をAADL(代数的会計記述言語:Algebraic Accounting Description Language)で考え、合わせてその実装上の手続きについても紹介しよう。

 3 1100円のリンゴを10個買いました。合計いくらですか?

この計算をAADLで表現すると、

100<リンゴ, 価格> × 10<リンゴ, >

となる。AADLでは掛け算についても同じ基底同士で実行するように実装されている。そうすると上の掛け算は実行できなくなってしまう。なぜなら同じ品目のリンゴを対象にしていても単位基底が異なるからである。しかし、上記の掛け算を実行することに、経験上あるいは実務上は全く違和感を覚えないであろう。

この齟齬を解決する実装を示す前に、掛け算と単位との関係について考えてみよう。上記のAADLによる交換代数表記のうち、単位だけを取り出してみると、

<価格> × <>

となる。ここで「価格」という単位はスーパーなどで見かける値札に相当するが、実務上の意味は、取引する品目(リンゴ)の取引単位(1)当たりの「単価」のことである。そして、この「単価」に購入数量分を掛けて計算される金額のことを「価額」という。すなわち「単価」は取引単位当たりの「価額」である。そこでこの掛け算に伴う単位の変化を厳密に書き出してみると、

<価額/> × <> → <価額>

となって、意味のある掛け算が構成されていることが理解できると思う。一方、取引数量同士、単価同士の掛け算に意味がないことも明らかであろう。例えば、

100<リンゴ,単価> × 100<リンゴ,単価> → 10000<リンゴ,単価2>

という計算に解釈を与えることは、通常の実務では困難だからである(ただし分散という統計量の加工プロセスで意味付け可能)

以上に見てきたように、掛け算を実装する場合には、それが実行可能かどうか、すなわち実務上意味のある計算かどうかの判断が求められることになる。そこで問3に戻り、購入金額(価額)の単位を「円」とすると、

100<リンゴ, 価格> × 10<リンゴ, > 1000<リンゴ, >

という計算ができればよいことになる。そこで、まず単位のうえで、

<価格> × <> → <>

という変換が実務上意味のある計算になることを確認し、事前に基底の単位変換を行っておく。AADLでは足し算の実装と同様に掛け算でも同一の基底同士で演算を実行するように実装されており、この結果、

100<リンゴ, 価格> × 10<リンゴ, >

100<リンゴ, > × 10<リンゴ, > 1000<リンゴ, >

という計算が実行できる。このように互いに掛け算可能な属性を持つデータ同士を入力ファイルとなるように設計者がしっかりと管理しているという前提で、AADLでは同一基底を持つ交換代数の間で掛け算を定義しているのである。

もちろん、実務上意味のある掛け算を構成する単位の組み合わせを知識ベースとして参照し、自動チェックする実装も現行のAADLで可能であるが、掛け算を行うたびにこの知識ベースを参照するのでは非効率である。知識ベースに頼るのではなく、むしろこうした実務上の意味を考えたデータ管理は設計者の大事な仕事である。次回は、データ管理システムとしてのAADLの掛け算の便利さを紹介しよう。

(メディア学部 榊俊吾)

おもしろメディア学」カテゴリの記事

« おもしろメディア学 第68話 ジェンダーと表象 | トップページ | ソーシャルコンピューティングとは »