ソフトウェアの肥大化

ソフトウェアの肥大化（ソフトウェアのひだいか、英：software bloat）とは、コンピュータソフトウェア製品が新しいものほど大きくなり、システムリソース（ディスクスペース、CPU能力、メモリ量）をより多く使うようになる傾向をいう。そのようなソフトウェアをブロートウェア（英：bloatware）とも呼ぶ（英語では elephantware という呼称もある）。また、ブロートウェアという用語は、パーソナルコンピュータにプリインストールされている多数のソフトウェア（その多くはデモや試用版）を指すこともある。 1970年代ごろまで、ソフトウェア開発は記憶容量の厳しい制限との戦いでもあった。1バイトでも大きさを削り、1クロックでも処理を削って、プログラムが使用可能なリソースの中でより多くのことができるようにすることが重要だった。 この状況は現在では逆転している。リソースの単価が安くなり、素早い開発とマーケティングのためのより多くの機能が重視されるようになっている。その原因の1つは、技術の進歩によって処理能力や記憶密度が何倍にもなり、相対的にコストが何分の1かになったためである（ムーアの法則参照）。そして、コンピュータがビジネスや生活のあらゆる場面に浸透したために、ソフトウェア産業は1970年代の何倍にも大きくなっている。 ソフトウェア開発ツールや手法により、各種機能を実現するのにプログラム全体の修正が必要となり、そのソフトウェアの主要機能にまで影響を及ぼすような大掛かりなコードの結合が行われ、結果としてほとんど使わない機能まで追加されるといったことが起きている。さらに言えば、利用可能なリソースが増えたことで製品の効率の優先順位が低くなり、コードを容易に開発できるツールが使われるようになった[要出典]。 ニクラウス・ヴィルトはこの状況をヴィルトの法則にまとめた。ヴィルトの法則とは、ハードウェアの高速化よりも急速にソフトウェアが低速化していく、というものである。 ジョエル・スポルスキは2001年のエッセイ Strategy Letter IV: Bloatware and the 80/20 Mythで、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." （訳）「もしそうなら話は単純だったのだろうが、Mozilla が大きいのは、そのほとんどが無駄なクソだからではない。Mozilla が大きいのはあなた方の要求が大きかったからだ。インターネットが大きいから、ニーズも大きい。世の中には小さいウェブブラウザはたくさんあって、便利なことはほとんど何もしない。でも、僕らが Mozilla を書いたとき、完璧な輝く宝石にするのが目標じゃなかった」 Microsoft Windowsは、肥大化を非難されてきた。例えば、最近のWindows Vistaについて、マイクロソフトの技術者 Eric Trautは「多くの人がWindowsは肥大化したオペレーティングシステムだと思っているし、それは正しい見方だと認めざるを得ない」と述べ、さらに「その中核であるカーネルや基本コンポーネントは、実際には非常に効率化されている」と続けた。PC World誌の元編集者 Ed Bottは、この見方に懐疑的である。すなわち、マイクロソフトのオペレーティングシステムは新しいものが登場するたびに肥大したと批判され続けており、今ではブロートウェアとは見なされないMS-DOSでさえそうだった点を指摘した。 Nero Burning ROMなどのCDやDVDのライティングソフトも肥大化を批判されるようになってきた。言語サポート（NLS）のように、エンドユーザーに使い易いように調整されていない余分な機能が高速セットアップでデフォルトでインストールされることがある[要出典]。NLSは、中国語、日本語、アラビア語のフォントをサポートするもので、そのためのレンダリングサポートとUnicodeデータの制御が含まれる。これらはそういった言語を使う予定がない人には無用である。 AVG 8がリリースされたとき、以前のバージョンに比べて肥大化した点が非難された[要出典]。 Mozilla FirefoxやMicrosoft Officeのようなアプリケーションでは、プラグインの形で追加機能をパッケージ化し、本体とは別にダウンロードして追加できるようになっている。プラグインはサードパーティが作成することもできる。プラグイン方式によって、プログラム本体の肥大化を抑えることも考えられる。 プラグイン・インタフェースと個々のプラグインを全てインストールすると、それらを本体に一体化した場合に比べてリソースを多く消費することになるのは明らかである。しかし、ユーザーが自分の必要なプラグインだけを選択してインストールすれば、必要な容量は削減される。 オープンソースソフトウェアは、プリプロセッサ・ディレクティブを使ってコンパイル時に必要な機能だけ選択することができる。これはプラグインよりも実装が容易だが、ユーザーがソースをコンパイルしなければならないという欠点がある。 ソフトウェアの肥大化の原因の1つとして「忍び寄る機能主義（creeping featurism）」がある。これをbullet-point engineeringとも呼ぶ。肥大化を減らす方法としては、UNIX哲学の一つである「一つのことをうまくやるプログラムを書け」がある。この言葉は、一つの複雑化したソフトウェアを複数の単純な部品に分けて、それぞれをパイプやシェルスクリプト、または、別の形式のプロセス間通信を用いて接続すべきだということを意味している。 [脚注の使い方] ^ The 5 most annoying programs on your PC - Download Squad ^ Eric S. Raymond The Art of Unix Programming, Addison-Wesley Professional, 1st edition（2003年9月17日） On-line HTML version. 2007年6月16日閲覧 ^ Strategy Letter IV: Bloatware and the 80/20 Myth - Joel on Software ^ "easter eggs." ^ “Microsoft KB: Windows 95 インストール要件”. 2008年9月14日閲覧。 ^ “Microsoft KB: Minimum Hardware Requirements for a Windows 98 Installation”. 2008年9月14日閲覧。 ^ “Microsoft KB: Windows Me をインストールするための最小限のハードウェア要件”. 2008年9月14日閲覧。 ^ “Windows 2000 Server Getting Started: Chapter 3 - Planning Your Windows 2000 Server Installation”. 2008年9月14日閲覧。 ^ “Microsoft KB: System requirements for Windows XP operating systems”. 2008年9月14日閲覧。 ^ “Microsoft KB: Windows Vista のシステム要件”. 2008年9月14日閲覧。 ^ “Windows 7 システム要件”. 2010年8月30日閲覧。 ^ “Windows 8 のシステム要件”. 2013年1月24日閲覧。 ^ “Windows 10 の仕様とシステム要件 - マイクロソフト”. 2015年9月19日閲覧。 ^ Microsoft. “Windows 11 Specs and System Requirements | Microsoft” (英語). Windows. 2022年3月29日閲覧。 ^ informationweek.com ^ Ed Bott. “Windows bloat? It’s always been that way”. 2008年9月14日閲覧。 ^ Cassia, Fernando (2007年2月27日). “'Nero Lite' and 'Nero Micro': smaller sometimes is better”. The Inquirer. オリジナルの2007年3月2日時点におけるアーカイブ。. https://web.archive.org/web/20070302073052/http://www.theinquirer.net/default.aspx?article=37873 2007年3月7日閲覧。  ^ "The Designer’s Notebook": "creeping featurism produces a bloated, complicated mess" ^ Jamie Zawinskiのソフトウェア開発の法則「あらゆるプログラムは電子メールを読めるようになるまで拡大しようとする。そこまで拡張できないプログラムは、それができるプログラムに置換される」