ソフトウェアの肥大化




ソフトウェアの肥大化(英: software bloat)とは、コンピュータソフトウェア製品が新しいものほど大きくなり、システムリソース(ディスクスペース、CPU能力、メモリ量)をより多く使うようになる傾向をいう。そのようなソフトウェアをブロートウェア(英: bloatware)とも呼ぶ(英語では elephantware という呼称もある[1])。また、ブロートウェアという用語は、パーソナルコンピュータにプリインストールされている多数のソフトウェア(その多くはデモや試用版)を指すこともある。




目次






  • 1 背景


  • 2 肥大化する理由


  • 3


  • 4 対策


  • 5 脚注





背景






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]


(訳)「もしそうなら話は単純だったのだろうが、Mozilla が大きいのは、そのほとんどが無駄なクソだからではない。Mozilla が大きいのはあなた方の要求が大きかったからだ。インターネットが大きいから、ニーズも大きい。世の中には小さいウェブブラウザはたくさんあって、便利なことはほとんど何もしない。でも、僕らが Mozilla を書いたとき、完璧な輝く宝石にするのが目標じゃなかった」





































































Microsoft Windows のハードウェア推奨要件の変遷
Windows バージョン
プロセッサ
メモリ
ハードディスク

Windows 95[5]
25 MHz
8 MB
~50 MB

Windows 98[6]
66 MHz
24 MB
140–255 MB

Windows Me[7]
150 MHz
32 MB
320 MB

Windows 2000 Server[8]
133 MHz
64 MB
1 GB

Windows XP[9]
300 MHz
128 MB
1.5 GB

Windows Vista[10]
800 MHz
512 MB
15 GB

Windows 7[11]
1000 MHz
1024 MB
16 GB

Windows 8[12]
1000 MHz
1024 MB
16 GB

Windows 10[13]
1000 MHz
1024 MB
16 GB

Microsoft Windows は、肥大化を非難されてきた。例えば、最近の Windows Vista について、マイクロソフトの技術者 Eric Traut は「多くの人が Windows は肥大化したオペレーティングシステムだと思っているし、それは正しい見方だと認めざるを得ない」と述べ、さらに「その中核であるカーネルや基本コンポーネントは、実際には非常に効率化されている」と続けた[14]。PC World 誌の元編集者 Ed Bott は、この見方に懐疑的である。すなわち、マイクロソフトのオペレーティングシステムは新しいものが登場するたびに肥大したと批判され続けており、今ではブロートウェアとは見なされない MS-DOS でさえそうだった点を指摘した。[15]


Nero Burning ROM などの CD や DVD のライティングソフトも肥大化を批判されるようになってきた[16]。言語サポート (NLS) のように、エンドユーザーに使い易いように調整されていない余分な機能が高速セットアップでデフォルトでインストールされることがある[要出典]。NLSは、中国語、日本語、アラビア語のフォントをサポートするもので、そのためのレンダリングサポートとUnicodeデータの制御が含まれる。これらはそういった言語を使う予定がない人には無用である。


AVG 8 がリリースされたとき、以前のバージョンに比べて肥大化した点が非難された[要出典]



対策


Mozilla Firefox や Microsoft Office のようなアプリケーションでは、プラグインの形で追加機能をパッケージ化し、本体とは別にダウンロードして追加できるようになっている。プラグインはサードパーティが作成することもできる。プラグイン方式によって、プログラム本体の肥大化を抑えることも考えられる。


プラグイン・インタフェースと個々のプラグインを全てインストールすると、それらを本体に一体化した場合に比べてリソースを多く消費することになるのは明らかである。しかし、ユーザーが自分の必要なプラグインだけを選択してインストールすれば、必要な容量は削減される。


オープンソースソフトウェアは、プリプロセッサ・ディレクティブを使ってコンパイル時に必要な機能だけ選択することができる。これはプラグインよりも実装が容易だが、ユーザーがソースをコンパイルしなければならないという欠点がある。


ソフトウェアの肥大化の原因の1つとして「忍び寄る機能主義 (creeping featurism)」[17][18]がある。これを bullet-point engineering とも呼ぶ。肥大化を減らす方法としては、UNIX哲学の一つである「一つのことをうまくやるプログラムを書け」がある。この言葉は、一つの複雑化したソフトウェアを複数の単純な部品に分けて、それぞれをパイプやシェルスクリプト、または、別の形式のプロセス間通信を用いて接続すべきだということを意味している。



脚注





  1. ^ The 5 most annoying programs on your PC - Download Squad


  2. ^ Eric S. Raymond The Art of Unix Programming, Addison-Wesley Professional, 1st edition (2003年9月17日) On-line HTML version. 2007年6月16日閲覧


  3. ^ Strategy Letter IV: Bloatware and the 80/20 Myth - Joel on Software


  4. ^ "easter eggs."


  5. ^ “Microsoft KB: Windows 95 インストール要件”. 2008年9月14日閲覧。


  6. ^ “Microsoft KB: Minimum Hardware Requirements for a Windows 98 Installation”. 2008年9月14日閲覧。


  7. ^ “Microsoft KB: Windows Me をインストールするための最小限のハードウェア要件”. 2008年9月14日閲覧。


  8. ^ “Windows 2000 Server Getting Started: Chapter 3 - Planning Your Windows 2000 Server Installation”. 2008年9月14日閲覧。


  9. ^ “Microsoft KB: System requirements for Windows XP operating systems”. 2008年9月14日閲覧。


  10. ^ “Microsoft KB: Windows Vista のシステム要件”. 2008年9月14日閲覧。


  11. ^ “Windows 7 システム要件”. 2010年8月30日閲覧。


  12. ^ “Windows 8 のシステム要件”. 2013年1月24日閲覧。


  13. ^ “Windows 10 の仕様とシステム要件 - マイクロソフト”. 2015年9月19日閲覧。


  14. ^ informationweek.com


  15. ^ Ed Bott. “Windows bloat? It’s always been that way”. 2008年9月14日閲覧。


  16. ^ 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日閲覧。 


  17. ^ "The Designer’s Notebook": "creeping featurism produces a bloated, complicated mess"


  18. ^ Jamie Zawinski のソフトウェア開発の法則「あらゆるプログラムは電子メールを読めるようになるまで拡大しようとする。そこまで拡張できないプログラムは、それができるプログラムに置換される」






Popular posts from this blog

Accessing regular linux commands in Huawei's Dopra Linux

Can't connect RFCOMM socket: Host is down

Kernel panic - not syncing: Fatal Exception in Interrupt