Technology

テクノロジー

表計算ソフトの計算を支える仕組

佐藤剛宣
2008年7月24日 / 10:00
 
 
PC と言えば表計算。ワープロソフトは PC でなくてもワープロでできましたからね。

最近では表計算ソフトの機能も膨大になってしまって、ほとんどの人はせいぜい1割ぐらいの機能しか使っていないのではないでしょうか?

表計算のデータって、セル単位の複雑な計算が絡んでいるので、一般的なデータベースには入らないですよね。しかもデータってぱっと見ただけでは、何を意味するのか分からない。

さらに言うと、現代の検索エンジンは、文章はうまく検索できますが、データは難しいですよね。

仮になんとか Web 上で検索したとしても、どこの情報を参照してできあがっているのか、信憑性を確かめるのがまた一苦労。

そんなこんなで、とあるプロジェクトで、表計算ソフトの仕組みを、特定の用途向けに一からデザインしなおして作ってしまおうということをやっています。

その過程で最近はいろいろと表計算を支える仕組みを考えています。

表計算ソフトで最もよく使う機能は、計算式ではないでしょうか? 他のセルを参照して、四則演算などの計算をします。例えば、C1 というセル(C という列の1行目)の計算式が、「D1+E1」だったら、D1 と E1 のセルの値を足したものになります。

E1 の値が変更されると、そこの値を参照して計算している C1 の値も自動的に計算してくれるので便利ですよね。

ところで、どうやって自動的に計算をしていると思いますか? ここでいう「どうやって」というのは、どうやって四則演算をしているか、ではなくて、どういう順番で計算しているか、です。例えば次のような少し複雑なケースを考えてみてください。

C1 = 10, D1 = C1, E1 = C1 + D1, F1 = C1 + D1 + E1

横一列に並んだセルが、自分より左にあるセルを全て参照しているようなケースです。C1 の値を20に変更した場合、どうしたら正しい値を計算して表示できるのでしょうか?

実はこのような依存関係を解きほぐすアルゴリズムというのが存在していて、面白いことに、結構身近な問題解決に使えるなものです。例えば次のケースを考えてみてください。

1.    ふとんを取り込む
2.    掃除機をかける
3.    雑巾がけをする
4.    はたきをかける
5.    便所掃除をする

これらの家事はどの順番でやったら最も効率が良いでしょうか? そうです、ある作業は、別のある作業のあとでなければならない、またはある作業は同時にやっても良い、というような依存関係がここにもあります。

表計算の自動計算を支えている、正しい順序を割り出すアルゴリズムは、トポロジカルソートと呼ばれるもので、面白いことに、このような作業の順序を割り出すのにも使えるのです。

さて、元々このアルゴリズムは表計算ソフトのために作られたのではなく、もちろん主婦のために家事を効率化しようとして作られたのでもありませんが、よろしければ身近な問題でお試しになってはいかが。

前回予告した、HyperTable と MySQL との性能比較は、次回に結果を報告します。

記事提供:db4objects
【関連記事】
Google の巨大テーブル
タイムマシン
全記録時代への挑戦
嘘をつくコンピュータ――2
嘘をつくコンピュータ

New Topics

Special Ad

ゆりかごからロケットまで、すべての乗り物をエンジョイ
ゆりかごからロケットまで、すべての乗り物をエンジョイ えん乗り」は、ゆりかごからロケットまで、すべての乗り物をエンジョイする、ニュース、コラム、動画などをお届けします! てんこ盛りをエンジョイするのは こちらから

Hot Topics

IT Job

Interviews / Specials

Popular

Access Ranking

Partner Sites