ソフトウェアをエコにするなんて
そんなことができるんだろうか。Moore’s Lawが華やかなりし頃は、ハードも電力も安価で無視できる要素だった。だが時代は変わり、今やどちらもエコ化に邁進している。そんな中、エコの話にソフトは登場せず、「エコ化」の対象はハードウェアに限られている。ソフトとエコとの関係と言えば、ソフトウェアでハードも含めた他のものをエコにすることはあるが、ソフトそのものをエコにする話はあまりない。あまりないどころか、これを説明して理解できる人は少ない。
これはたぶん、ソフトの性質上、専門知識のあるソフト開発者以外にこの問題があまり知られていないという事情による。そのため、ソフト自身をエコにするということはあまり議論されていないし、その手法も確立されていない。ハードだと誰でも触ることができるし、その性能を比較的容易に計測できる。たとえば、2つのサーバーがあったとしよう。同じMIPS(1秒当たりのインストラクションの処理数)を出すのに必要な消費電力を測定して比較すれば、どちらのサーバーがエコかは自明だ。
では同様にソフトのエコ性も計測可能だろうか。これには2つの場合がある。同様の機能を有する2つのメーカーのソフトをどちらがエコか比較する場合と、ひとつのソフトを更にエコ化するために修正する場合だ。最初の場合、2つのソフトを同じハード上、同様の出力を得るという環境でテストすればかなり厳密にエコ性を比較できるかもしれない。それぞれのソフトがテストでどれだけの電力を消費したかを計測すれば、1ワット当たりにどれだけの有益な出力が得られたかを算出できる。値の大きな方がより省エネでありエコだと言える。しかし、メーカーの異なる2つのソフトをこのように比較することは、現実として可能だろうか。
例えば性能という面について考えてみる。性能に影響する要素には、ソフトの設計そのものもあるが、ソフトの実行環境等も含まれる。一般論では、性能が出るように設計されているソフトは無駄を省き、コンピューティングに必要なリソースも少なくて済む。しかし当然、色々と例外もある。数値計算などで並列性が多く見られる場合、並列処理できるようなハードで実行した場合とCPUひとつで実行した場合は処理速度が変わるだろう。だから、ソフトのエコ性を精査するには、同じハードで同じ条件でテストすることが必要だ。
更に同様の機能という言い方もあまり科学的ではない。OracleのDBとMySQLを比較した場合、Oracleの下位のDBはMySQLと同様の機能を持っているが、この2つを比較するのに意味があるのだろうか。また、SAPやOracleのERPソフトをどちらがエコかなんて客観的に比較できるのだろうか。
では2つ目の、ソフトを更にエコ化するために修正する場合を考えてみよう。ソフトのエコ性というのは、設計やアーキテクチャーの段階で考慮されるものだろう。ソフトを開発していた頃さんざん言われたのは、効率の良いコードを書くということだった。それも含め、ソフトのエコ化に関係するであろう設計やアーキテクチャーに関する項目を並べてみる。
- 並列処理
- モジュール化とひとつの大きな塊(例:SMTPサーバー)
- インタープリティブとコンパイル型言語(ウェブ言語 対 C、C++、Java)
- 性能と使い勝手
- 最適化
- アルゴリズム
それぞれに関してはあまり説明を必要としないだろう。ソフトの開発は筆者が現役のプログラマーだった頃から根本的には大して変わっていない。表層的な変化は確かにあるが、多くのウェブ言語のシンタクスはUnixやシェルに似通っている。ソフトの開発は非常に大変で、正しく動作するプログラムを書くための言語は、機械語からアセンブリー語、そしてハイレベル言語と進化して、現在はインタープリティブ言語が主流だ。これまではハードの発展でそれが可能だった。CPUの速度が上限に達して並列処理に向かう中、ソフトのエコ化ということも考え直すべきだろう。
最終的にソフトは、仕様通りの機能を提供し、バグがなく、コンピューティングに必要なリソースをできるだけ消費せず、迅速に実行しなければならない。今までは「コンピューティングに必要なリソースをできるだけ消費せず」という概念がなかった。もちろん、「コンピューティングに必要なリソースをできるだけ消費せず」を実践するには何らかの指標が必要だろう。抽象的にはワット当たりの「有益な出力量」ということになるが、これでは抽象的過ぎる。もっとハードにおけるMIPSのようなものを開発する必要がある。
まず、ソフトの開発には「コンピューティングに必要なリソースをできるだけ消費せず」ということ考える必要があるということを教育していく必要がある。今「コンピューティングに必要なリソースをできるだけ消費せず」と言っても多分10人中10人が何のことを言っているのか理解できないだろう。道は長いが、ICTの次のフロンティアはソフトのエコ化である。