2012-04-13[n年前へ]
■エクセル(表計算ソフト)の「表空間と値の拡張」を考える!?
エクセル(Microsoft Excel)に「型」を追加する機能が欲しいと思うことがあります。たとえば、複素数やベクトルをひとつのセルで扱ったり、さらにはもっと複雑な属性を持つ「値」を扱いたい、と思うことがあります。
そうした「(独自の)型」に対して、演算子を自由に定義できたり、セル内での表示方法を自由に定義できたり(「条件付き書式」の自由度が高ければ、独自型の表示スタイルをカスタマイズすることもできるのでしょうか)したい、と思うことがあります。
…とそんなことを書いたら、ささっと @IchiroMori さんがシート(コード)を書いて・送ってくれました。「セルに入っている文字列を"imreal"と"imaginary"関数で処理し、独自定義の複素数クラスで処理した上で、"Complex"関数で文字列に戻すというコードです。
表計算ソフトというものを考えたとき(エクセルは表計算ソフトという範疇にとどまらないものだと思いますが)、表計算ソフトの基本機能は『「表」上で「値」が簡単に計算できる』ということになります。
そして、そんな表計算ソフトに対して、次の2つの点の拡張をしてみたいと感じることがあります。
1.「表」という部分
格子状の座標だけでなく、任意の「位置関係」「座標系」「空間」…を使いたい
2.「値」という部分
任意の属性・特性を持つ「存在(クラス・インスタンスというか)」を扱いたい(属性・値の演算方法やセル・グラフ上での表示方法も含む)
表計算ソフト(エクセル)の性質『「表」上で「値」が簡単に計算できる』というものを、『空間が各領域で値(属性)を持ち、それらが空間上で作用し合う・作用させ合うことができる』と捉えるならば、その「表」と「値」の拡張ができたなら、一体どんなことができるようになるだろう?と考えたくなります。…空間が各領域で値(属性)を持ち、それらが空間上で作用し合うというのは「世界」持つ基本的な性質ですから、つまりそれは、表計算ソフトが簡単に世界を表現しうるということになります。
「値」の拡張という部分に関しては、独自クラスを定義した上で文字列にシリアライズ・文字列からデシリアライズすれば可能だろうとは思うのですが、演算子や関数をオーバーロードできないと、既存関数の再利用ができなくなったり、何より「使い勝手」が悪くなるように思います(たとえば、ある属性に対して+=PLUSを定義したとき、その定義がSUM 関数やAVERAGE関数に反映されないと不便ですよね?)。
…というわけで、表計算ソフトの「表」と「値」の機能拡張ができたなら?と考えるのです。そうすれば、表計算ソフトは、(ある範囲の)世界を表現するのではないかと考えたりするのです。