法則

【法則】ヴィルトの法則 ─ ソフトはハードが速くなるより速く重くなる

【法則】ヴィルトの法則 ─ ソフトはハードが速くなるより速く重くなる

当サイトを閲覧いただきありがとうございます。 本記事は、テクノロジーの皮肉を突いた「ヴィルトの法則」について解説します。

パソコンやスマホは、毎年のように高性能な新製品が出ます。中身の半導体は、当サイトのムーアの法則で見たとおり、猛烈な勢いで進化しています。それなのに、「新しく買ったのに、思ったほど速くない」「数年使うと、なんだか重くなった」と感じた経験はないでしょうか。この不思議を言い当てたのがヴィルトの法則で、「ソフトウェアは、ハードウェアが速くなるより速く重くなる」という、なんとも耳の痛い経験則です。ムーアの法則とちょうど正反対を向いたこの現象を、この記事では掘り下げていきます。

図解

ヴィルトの法則とは

ヴィルトの法則(英語では Wirth’s law)とは、「ソフトウェアは、ハードウェアが高速になるスピードよりも速く、低速化していく」という経験則です。

これは、プログラミング言語Pascal(パスカル)の開発で知られるスイスの計算機科学者ニクラウス・ヴィルトが、1995年の論文で述べたものです。彼はこの論文で、ソフトウェアがどんどん重く、肥大化していく風潮に警鐘を鳴らし、「無駄のない、引き締まったソフトウェア」の大切さを訴えました。

意味するところは、こういうことです。ハードウェア(半導体)は、ムーアの法則に沿って着実に高速になっていきます。ところが、その上で動くソフトウェアが、性能の向上を食いつぶす以上のスピードで重くなっていく。結果として、せっかくハードが速くなっても、体感速度はちっとも上がらない、どころかむしろ遅くなることすらある、というわけです。ムーアの法則が「進歩の明るい面」だとすれば、ヴィルトの法則はその「影の面」を鋭く突いています。

速くなったはずなのに、速くならない

この法則を実感するのは、そう難しくありません。少し前のパソコンと今のパソコンを比べると、部品の性能は何倍にもなっているはずです。それなのに、起動にかかる時間や、アプリが立ち上がるまでの待ち時間は、数年前と大して変わらない。そんな経験は、多くの人が持っているのではないでしょうか。

なぜこうなるのか。単純に言えば、ハードが手に入れた「余裕」を、ソフトがそのまま使い切ってしまうからです。処理能力が2倍になっても、ソフトウェアがその2倍以上の仕事を要求するようになれば、待ち時間は縮まりません。性能が上がったぶんだけ、ソフトが贅沢になるのです。

これは、「道路を広げても、車が増えて渋滞は解消しない」という現象にどこか似ています。せっかく空いたスペースが、新しい需要ですぐ埋まってしまう。ハードウェアの進歩という「広げた道路」を、肥大化するソフトウェアという「増えた車」が埋め尽くしてしまうのが、ヴィルトの法則の正体です。進歩の果実が、私たちの体感する速さにはなかなか届かない。このあたりに、この法則の皮肉が詰まっていると思います。

似たことは、身近な場面でもよく起こります。パソコンを買い替えた直後は「さすがに速い」と感じても、数年たつと、アプリの更新や新しいサービスへの対応で、いつのまにか元のようなもたつきが戻ってくる。ハードは何も悪くなっていないのに、その上で動くソフトが重くなったぶんだけ、速さが削られていくのです。私たちが「新しい機械なのに、思ったほど快適にならない」と感じる背景には、たいていこのヴィルトの法則が、静かに働いています。

なぜソフトは重くなっていくのか

では、なぜソフトウェアは放っておくと重くなるのでしょうか。悪意があるわけではありません。いくつかの、ごく自然な理由が重なっています。

一つ目は、機能の盛り込みです。ソフトは新しいバージョンが出るたびに、新機能や装飾が追加されていきます。一つ一つは便利でも、積み重なれば全体はどんどん重くなります。「使うかどうか分からない機能」まで抱え込むことで、ソフトは太っていくのです。

二つ目は、作りやすさを優先した「層」の積み重ねです。現代のソフトウェアは、開発を楽にするために、既製の部品や仕組みを何層にも重ねて作られます。これは開発の効率を上げる一方で、一つの処理をこなすのに、余分な手間が何段も挟まることになり、動作を遅くします。

三つ目は、最適化の手が抜かれやすいことです。ハードウェアが十分に速いと、「多少効率が悪くても、どうせハードが速いから問題ない」という判断が働きやすくなります。丁寧に無駄を削るより、手早く作って世に出すほうが優先される。こうして、ハードの進歩に甘えるようにソフトが緩んでいく。ヴィルトが訴えた「引き締まったソフトウェア」が失われていく背景には、こうした事情があるのです。

ムーアの法則との、せめぎ合い

ヴィルトの法則をいちばん面白く理解できるのは、ムーアの法則との対比で見るときです。この二つは、まさに綱引きのような関係にあります。

ムーアの法則は、ハードウェアが与えてくれる進歩を表します。半導体が2年で2倍になり、私たちに速さの余裕をプレゼントしてくれる。ところがヴィルトの法則は、ソフトウェアがその進歩を食いつぶすことを表します。ハードが与えたものを、ソフトが奪っていくのです。この関係は、俗に「ハードが速くした分を、ソフトが遅くする」と言い表されることもあります。

だからこそ、私たちの体感速度は、ハードの進歩ほどには上がらないのです。ムーアの法則という上向きの力と、ヴィルトの法則という下向きの力が引き合った、その差し引きが、私たちが日々感じる「速さ」になります。技術の進歩を、明るい面(ムーア)と影の面(ヴィルト)の両方から眺めると、テクノロジーとの付き合い方が、より立体的に見えてくると思います。

この綱引きは、しばしば別の言い方でも語られます。有名なのが、「アンディが与えたものを、ビルが奪っていく」という、業界の皮肉めいた言い回しです。ここでの「アンディ」は半導体メーカーの、「ビル」はソフトウェア会社の、それぞれ当時の経営者を指しています。ハードを作る側が性能を上げても、ソフトを作る側がそれを使い切ってしまう。この構図が、両業界を代表する二人の名前で語り継がれてきたわけです。それだけこの現象が、テクノロジーの世界で広く実感されてきた、ということでもあります。

ヴィルトの法則についてよくある疑問

ソフトが重くなるのは、開発者が怠けているからですか?

一概にそうとは言えません。前に見たとおり、ソフトが重くなる背景には、新機能への要望、開発を効率化する仕組み、限られた時間での開発といった、それぞれもっともな事情があります。当サイトのハンロンの剃刀で述べたように、「悪意や怠慢」で片づけるより、「そうなってしまう事情」を見るほうが正確です。むしろヴィルトの法則が問いかけているのは、個人の怠けではなく、「ハードが速いから多少の無駄は許される」という業界全体の緩みのほうだと言えます。便利さと引き締まりのバランスをどう取るかが、本当の論点なのだと思います。

この法則は、今のスマホやAIにも当てはまりますか?

基本的な構図は、今も生きています。スマホのアプリは年々高機能になり、それに合わせて必要な性能もどんどん上がっていきます。数年前の端末で最新アプリが重く感じるのは、この法則の表れの一つです。ただし、近年は省電力やバッテリー持ちのために、ソフトの効率を見直す動きもあり、単純に重くなる一方とは限りません。とはいえ、生成AIのように膨大な計算を要求する新技術が次々に登場する今、「ソフトの要求がハードの進歩を追い立てる」という関係は、むしろ強まっている面もあると思います。

私たち利用者に、できることはありますか?

いくつかあります。まず、使わない機能や常駐アプリを整理するだけでも、体感速度は変わります。ソフトの肥大化をそのまま受け入れるのではなく、自分の使い方に合わせて身軽にするという発想です。また、道具を選ぶときに「軽さ・シンプルさ」を評価軸に入れるのも有効です。高機能なものほど良いとは限らず、必要十分で軽快なものが、結局いちばん快適ということは少なくありません。ヴィルトが訴えた「引き締まったソフトウェア」の精神は、作り手だけでなく、道具を選ぶ私たち使い手にも通じる考え方だと思います。

関連する法則

半導体の指数的な進歩「ムーアの法則」、人を増やしても速くならない「ブルックスの法則」、そして無能を悪意と取り違えない「ハンロンの剃刀」の記事です。

まとめ

本記事は「ヴィルトの法則」について解説しました。如何だったでしょうか。

ソフトウェアは、ハードウェアが速くなるより速く重くなる。半導体が猛烈に進歩しているのに、パソコンやスマホの体感速度がなかなか上がらないのは、この法則のせいでした。機能の盛り込み、作りやすさ優先の層の積み重ね、最適化の手抜き。ハードの進歩に甘えるように、ソフトは緩み、太っていくのです。

面白いのは、これがムーアの法則とちょうど正反対を向いていることです。ハードが与えた進歩を、ソフトが食いつぶす。その綱引きの差し引きが、私たちの感じる「速さ」になります。技術の明るい面と影の面を、両方あわせて眺める。そして道具を選ぶときには「軽さ・シンプルさ」も大切にする。ヴィルトの法則は、進歩を無邪気に喜ぶだけでなく、その使い方まで考えさせてくれる、示唆に富んだ経験則だと思います。

法則の一覧に戻りたい方は以下のリンクからどうぞ。

それでは次の記事も閲覧いただけると幸いです。

【法則一覧】マーフィーの法則・パーキンソンの法則など有名で面白い法則24選を解説senkohome.com/law-list/