Loading AI tools
ウィキペディアから
ソフトウェアの肥大化(ソフトウェアのひだいか、英:software bloat)とは、コンピュータソフトウェア製品が新しいものほど大きくなり、システムリソース(ディスクスペース、CPU能力、メモリ量)をより多く使うようになる傾向をいう。そのようなソフトウェアをブロートウェア(英:bloatware)とも呼ぶ(英語では elephantware という呼称もある[1])。また、ブロートウェアという用語は、パーソナルコンピュータにプリインストールされている多数のソフトウェア(その多くはデモや試用版)を指すこともある。
この節には独自研究が含まれているおそれがあります。 |
1970年代ごろまで、ソフトウェア開発は記憶容量の厳しい制限との戦いでもあった。1バイトでも大きさを削り、1クロックでも処理を削って、プログラムが使用可能なリソースの中でより多くのことができるようにすることが重要だった。
この状況は現在では逆転している。リソースの単価が安くなり、素早い開発とマーケティングのためのより多くの機能が重視されるようになっている[2]。その原因の1つは、技術の進歩によって処理能力や記憶密度が何倍にもなり、相対的にコストが何分の1かになったためである(ムーアの法則参照)。そして、コンピュータがビジネスや生活のあらゆる場面に浸透したために、ソフトウェア産業は1970年代の何倍にも大きくなっている。
ソフトウェア開発ツールや手法により、各種機能を実現するのにプログラム全体の修正が必要となり、そのソフトウェアの主要機能にまで影響を及ぼすような大掛かりなコードの結合が行われ、結果としてほとんど使わない機能まで追加されるといったことが起きている。さらに言えば、利用可能なリソースが増えたことで製品の効率の優先順位が低くなり、コードを容易に開発できるツールが使われるようになった[要出典]。
ニクラウス・ヴィルトはこの状況をヴィルトの法則にまとめた。ヴィルトの法則とは、ハードウェアの高速化よりも急速にソフトウェアが低速化していく、というものである。
ジョエル・スポルスキは2001年のエッセイ Strategy Letter IV: Bloatware and the 80/20 Myth[3]で、80%のユーザーは機能の20%しか使わず(パレートの法則のバリエーション)、各ユーザーの使う機能はそれぞれ異なるとした。従って、機能が少ないソフトウェアは多くのユーザーによって役に立たないと見なされ、それらユーザーは肥大化したソフトウェアの宣伝文句にある機能群に自分の欲しかった機能を見つけ、そちらに流れる。スポルスキは Jamie Zawinski が Netscape について語った言葉を最後に引用している。
"Convenient though it would be if it were true, Mozilla is not big because it's full of useless crap. Mozilla is big because your needs are big. Your needs are big because the Internet is big. There are lots of small, lean web browsers out there that, incidentally, do almost nothing useful. But being a shining jewel of perfection was not a goal when we wrote Mozilla."[4]
Windows バージョン | プロセッサ | メモリ | ハードディスク |
---|---|---|---|
Windows 95[5] | 25MHz | 8MB | – 50MB |
Windows 98[6] | 66MHz | 24MB | 140 – 255MB |
Windows Me[7] | 150MHz | 32MB | 320MB |
Windows 2000 Server[8] | 133MHz | 64MB | 1GB |
Windows XP[9] | 300MHz | 128MB | 1.5GB |
Windows Vista[10] | 800MHz | 512MB | 15GB |
Windows 7[11] | 1000MHz | 1024MB | 16GB |
Windows 8[12] | |||
Windows 10[13] | |||
Windows 11[14] | 1000MHz 64ビット 2コア |
4096MB | 64GB |
Microsoft Windowsは、肥大化を非難されてきた。例えば、最近のWindows Vistaについて、マイクロソフトの技術者 Eric Trautは「多くの人がWindowsは肥大化したオペレーティングシステムだと思っているし、それは正しい見方だと認めざるを得ない」と述べ、さらに「その中核であるカーネルや基本コンポーネントは、実際には非常に効率化されている」と続けた[15]。PC World誌の元編集者 Ed Bottは、この見方に懐疑的である。すなわち、マイクロソフトのオペレーティングシステムは新しいものが登場するたびに肥大したと批判され続けており、今ではブロートウェアとは見なされないMS-DOSでさえそうだった点を指摘した[16]。
Nero Burning ROMなどのCDやDVDのライティングソフトも肥大化を批判されるようになってきた[17]。言語サポート(NLS)のように、エンドユーザーに使い易いように調整されていない余分な機能が高速セットアップでデフォルトでインストールされることがある[要出典]。NLSは、中国語、日本語、アラビア語のフォントをサポートするもので、そのためのレンダリングサポートとUnicodeデータの制御が含まれる。これらはそういった言語を使う予定がない人には無用である。
Mozilla FirefoxやMicrosoft Officeのようなアプリケーションでは、プラグインの形で追加機能をパッケージ化し、本体とは別にダウンロードして追加できるようになっている。プラグインはサードパーティが作成することもできる。プラグイン方式によって、プログラム本体の肥大化を抑えることも考えられる。
プラグイン・インタフェースと個々のプラグインを全てインストールすると、それらを本体に一体化した場合に比べてリソースを多く消費することになるのは明らかである。しかし、ユーザーが自分の必要なプラグインだけを選択してインストールすれば、必要な容量は削減される。
オープンソースソフトウェアは、プリプロセッサ・ディレクティブを使ってコンパイル時に必要な機能だけ選択することができる。これはプラグインよりも実装が容易だが、ユーザーがソースをコンパイルしなければならないという欠点がある。
ソフトウェアの肥大化の原因の1つとして「忍び寄る機能主義(creeping featurism)」[18][19]がある。これをbullet-point engineeringとも呼ぶ。肥大化を減らす方法としては、UNIX哲学の一つである「一つのことをうまくやるプログラムを書け」がある。この言葉は、一つの複雑化したソフトウェアを複数の単純な部品に分けて、それぞれをパイプやシェルスクリプト、または、別の形式のプロセス間通信を用いて接続すべきだということを意味している。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.