計算の品質を高める方法 |
作成日:2001-04-17 最終更新日: |
計算の品質を高める、と一口にいっても計算のどんな面を対象にするかでアプローチは異なる。 ソフトウェアの品質特性、というのがあるけれど、これを計算についても援用できるだろう。
たとえば、計算時間を短くしたい、という要求があるとする。 これはソフトウェアの品質特性でいくと効率性、特に時間効率性という分類になる。 時間を短くするということならば、アルゴリズムを改良するというのが一つの案だろう。 しかし、速いマシンに入れ替えるというのも手である。 頭を使うか、金を使うかの二者択一になるのはどこの世の中でも同じである。 どちらでも解決できなければ政治力というのがあるかもしれない。 政治力で頭のいいやつを雇うか、金を持ってこさせるか、ということだけではない。 実は解くべき問題はなかった(ことになる)とか、真の問題はもっと別のところにあったとか、 問題の所在がどんどんおかしくなっていくのだ。もっともこれは「計算高い」とか 「勘定高い」ほうであり、本来の計算の意味ではないかもしれない。
「作り込み」ということばにはいつも違和感を覚える。 「込み」ということばには、 その製品に魂となる品質を最初から入れておくという積極的な意味を感じる。 それとともに、 一度作ってしまったらあとは検査をすることなく一生持ち続けるという楽観性も同時にただよわせている。 それはともかく、作り込みを重視するなら、自分で何も作らないのがいいだろう。 よそで何回も使われている方法をまねすればいい。 まねというのがいやならば、再利用といえばいいだろう。 ソフトウェアの世界をはじめとして「車輪の再発明はするな」といわれている。 軸に車をつける方法はすでに確立されている。車を使いたければ、車を買えばいいだけの話だ。 計算の世界でも同様である。ソフトウェアを買えばいい。 金がなければどうするか。頭を使えばいい。アルゴリズムがたくさんある。
ある方に聞いたところ、資源の再利用の仕方にもいろいろあるのだそうだ。 一番高いのが「リユース」、もとの形状を保ったままで使えるものだ。 ガラスのコップは洗えばそのまま使える。 コンピュータならば一つのコマンドだろうか。 次に利用度の高いのが狭義の「リサイクル」。部品・化合物レベルまで遡って再利用できるタイプだ。 鉄のスクラップはこのタイプである。 コンピュータならば、ライブラリとか、クラスとか該当するだろうか。 デザインパターンもこのあたりかな。 最もコストが嵩むのは「リソース」。そのまま訳すと資源である。 再生させようとするものに不純物があり、リユースはおろか、リサイクルもできないものである。 リソースとなってしまうと、多くのコストをかけなければならないか、 質を落としたものに再生するしかないのである。鉄のスクラップでも空き缶はこちらのタイプで、 空き缶はブリキでできていてこのブリキの成分のスズがリサイクルを邪魔するのである。 (鉄のリサイクルを阻む不純物としてはスズと銅がある)。
関係ないことを長々と述べた。 いわゆるアルゴリズムに共通する考え方をここで明らかにするのもありきたりだから、 再利用のあり方を少し抽象的に述べてみた。
まず、凡人は新しいアルゴリズムの発見はできないと思っていていいかもしれない。 先人の資産を活かすようにすることが第一ではないか。 もちろん、先人は会社の同僚でもいいし、 自分でもいいのだ。
なお、再利用の一形態としてソフトウェア部品があるが、これについての反省を ソフトウェア部品について に示したので参照されたい。
まりんきょ学問所 > 品質の部屋 > 計算の品質を高める方法