コンピューティングにおけるミニマリズムとは、ハードウェアとソフトウェアの設計および使用において、ミニマリズムの哲学と原則を適用することである。この意味でのミニマリズムとは、可能な限り最小限のハードウェアおよびソフトウェアリソースを使用するシステムを設計することを意味する。
1970年代後半から1980年代初頭にかけて、プログラマーは、比較的高価で限られたリソースしか持たない一般的なプラットフォームの制約の中で作業していた。8キロバイトまたは16キロバイトのRAMが一般的で、64 キロバイトは膨大な量と考えられており、初期のパーソナルコンピュータで主流だった8ビットCPUがアクセスできるアドレス空間のすべてだった。最も一般的な記憶媒体は、88キロバイトから170キロバイトの容量を持つ5.25インチフロッピーディスクだった。5メガバイトから10メガバイトの容量を持つハードドライブは、数千ドルもした。
時が経つにつれ、パーソナルコンピュータのメモリ容量は桁違いに拡大し、主流のプログラマーたちはこのストレージ容量の増加を利用してソフトウェアの機能を強化し、より高水準の言語を用いることで開発を容易にした。一方、従来のソフトウェアのシステム要件は変わらなかった。その結果、かつての最も精巧で機能豊富なプログラムでさえ、現在のソフトウェアと比べると簡素なものに見える。
システム要件がかつて重厚な評判をもたらしたプログラムの一例として、GNU Emacsテキストエディタが挙げられます。8メガバイトが大量の RAM だった時代には、「8 メガバイトと絶え間ないスワッピング」というバクロニムが付けられました。 [ 1 ]今日では、Emacs の主にテキストバッファベースのパラダイムは、EclipseやNetbeansのような同等の機能を備えたデスクトップ メタファーGUI IDEよりもはるかに少ないリソースを使用しています。2002年の International Lisp Conference での講演で、Richard Stallman は、 Lispの経験と当時のローエンドミニコンピュータのシステム仕様に基づいて、GNUと Emacsの開発においてミニマリズムが懸念事項であったことを示しました。 [ 2 ]
1980年代から1990年代にかけて、一般的なデスクトップソフトウェアやオペレーティングシステムの機能とシステム要件が拡大し、ソフトウェア開発が相反する流行のソフトウェア開発手法を主張するチームによって支配されるようになったため、一部の開発者はミニマリズムを哲学として採用し、プログラムをあらかじめ決められたサイズや範囲に制限することを選択した。[ 3 ]ソフトウェアの最適化に重点を置くと、プログラマーが実行速度を上げるためにプログラムが実行する操作の数を減らすため、ミニマリストなソフトウェアになる可能性がある。[ 4 ]
21世紀初頭、コンピューティングの新たな発展により、ミニマリズムが注目を集めるようになりました。いわゆるポストPC時代においては、一般的なコンピューティング作業を行うためだけにハイエンドのパーソナルコンピュータを購入する必要はなくなりました。[ 5 ]スマートフォン、タブレットコンピュータ、ネットブック、プラグコンピュータなどのモバイルコンピューティングデバイスは、置き換えられると想定されているパーソナルコンピュータと比較して、メモリ容量が小さく、グラフィックスサブシステムの性能が低く、プロセッサの速度が遅い場合が多いです。さらに、アルファブレンディングなどのグラフィックス効果を多用すると、「フラットUI」よりもバッテリーの消耗が早くなります。[ 6 ]これらのデバイスの人気が高まるにつれ、ミニマリズムは重要なデザイン上の課題となっています。

Windows 8では、Microsoft は「シンプルで角ばった」Metro外観を実装しました。これは、Windows 7およびWindows Vistaで使用されていた以前のAeroインターフェイスよりもグラフィック負荷が低いものでした。この変更は、小型のバッテリー駆動デバイスの台頭と電力節約の必要性が一因でした。[ 7 ] [ 8 ] [ 9 ] AppleのiOSバージョン 7 では、ユーザー エクスペリエンス上の理由から同様の変更が行われました。[ 10 ]
GoogleのChromeブラウザとChromeOSは、ミニマリストデザインの例としてよく挙げられる。[ 11 ] [ 12 ]
開発者は、ユーザーを混乱させる可能性のあるボタンやダイアログボックスを排除することで、ユーザーインターフェースをできるだけシンプルに作成することがあります。ミニマリズムは、特にハードウェアデバイスやソフトウェアの工業デザインにおいて、視覚芸術の意味で用いられることがあります。
一部の開発者は、特定の機能を最小限のコード行数、または特定のプラットフォームで可能な限り最小のコンパイル済み実行可能サイズで実行するプログラムを作成しようと試みてきました。[ 13 ] [ 14 ]一部のLinuxディストリビューションは、ミニマリズムを目標として挙げています。Alpine 、Arch、Puppy、Bodhi、CrunchBang、dynebolic [ 15 ] 、 Tiny Coreなどがその例です。Unixシステムの初期開発は低電力ハードウェアで行われ、Dennis RitchieとKen Thompsonは、この制約がシステムの「設計の優雅さ」に貢献したと述べています。[ 16 ]
プログラミング言語の設計者は、構文糖衣や広範なライブラリ関数を避けることで、最小限のプログラミング言語を作成できます。このような言語は、一般的なプログラミングタスクに対する標準的なサポートを提供しないため、チューリングのタールピットになる可能性があります。最小限の Lispインタプリタを作成することは、コンピュータ サイエンスの学生に課される一般的な学習タスクです。 [ 17 ]アロンゾ チャーチによって開発されたラムダ計算は、関数定義と関数適用のみを使用する最小限のプログラミング言語です。[ 18 ] [ 19 ] Scheme、[ 20 ] [ 21 ] Forth、[ 22 ]およびGo [ 23 ] [ 24 ]は、実用的で最小限のプログラミング言語の例として挙げられています。
コードゴルフというプログラミングの趣味はミニマルなソフトウェアを生み出すが、[ 25 ]これらは通常、練習やコードの詩であり、使用可能なアプリケーションソフトウェアではない。
ジョン・ミラー・キャロルは著書『ミニマリズム:ニュルンベルク・ファンネルを超えて』の中で、ミニマリズムの使用により、ビデオゲーム、ATM、投票機、ショッピングモールのキオスクなど、学習曲線がほとんどまたは全くなく、ユーザーがマニュアルを読む必要のない「即時使用」デバイスが実現すると指摘した。[ 26 ]ユーザーインターフェースの研究者たちは、簡潔性と透明性という設計原則によって示されるミニマリズムが、効率性と学習しやすさを向上させることを示唆する実験を行ってきた。 [ 27 ]ミニマリズムは、「すべてはテキストストリームである」および「1つのことをうまく行う」というUnixの哲学に暗黙のうちに含まれているが、現代のUnix/Linuxディストリビューションは、この哲学にそれほど厳密には従っていない。[ 28 ]
...私は Lisp の実装を可能な限り最小限にすることを目指しました。プログラムのサイズは非常に大きな懸念事項でした。1985 年当時、仮想メモリのない 1 メガバイトのマシンを使用している人がいました。彼らは GNU Emacs を使用できるようにしたいと考えていました。そのため、プログラムを可能な限り小さく保つ必要がありました。たとえば、当時唯一のループ構造は
while で
、これは非常に単純でした。'while' ステートメントから抜け出す方法はなく、catch と throw を実行するか、ループを実行する変数をテストするしかありませんでした。これは、私がどれだけ小さく保つために努力していたかを示しています。'caar' や 'cadr' などは存在しませんでした。 「可能な限りのものを絞り出す」というのが、GNU Emacsの精神であり、Emacs Lispの精神であり、それは最初から変わらないものだった。
年、デスクトップは世界市場の 44%、ノート PC は 56% を占めていました。わずか 3 年後には、販売された PC の 61% 以上がノート PC であり、この傾向は加速しています。これは、販売されたすべての Windows PC を測定した世界的なものです。今年、米国で PC を購入する消費者のうち、76% 以上がノート PC を購入する予定です。米国で販売されるすべてのデスクトップの絶対数は、2012 年のタブレットの数よりも少なくなるでしょう。
このオペレーティングシステムは、256MB RAMを搭載したPentium2プロセッサで動作するように設計されており、ハードディスクさえ必要ありません。中古PCでもコンピュータの潜在能力を最大限に引き出します。
年に Communications of the ACM に掲載された論文で、Unix は初めて一般に公開されました。その論文の中で、著者らは Unix のこれまでにないほどシンプルな設計について説明し、600 を超える Unix のインストールについて報告しました。それらはすべて、当時の基準からしても性能の低いマシン上で実行されていましたが、(リッチーとトンプソンが書いたように)「制約は経済性だけでなく、ある種の優雅な設計をも促した」のです。
Schemeに関する最初の報告[Sussman, 1975b]では、概念ごとに1つのプリミティブ構造を持つ、非常に簡潔な言語について説明されています。(1つで済むのに、なぜ2つも取る必要があるのでしょうか?)
{{cite conference}}: CS1 maint: 複数の名前: 著者リスト (リンク)は、概念的な優雅さとシンプルさを重視するLispの方言です。
Forthは最小限の構文を持つコンピュータ言語です。
は、シンプルで信頼性が高く効率的なソフトウェアを簡単に構築できるオープンソースのプログラミング言語です。
…私たちは、言語のすべての機能について私たち3人全員が納得しなければならないという考えから始めました。そのため、どんな理由であれ、言語に余計なゴミが入れられることはありませんでした。
の基本的な考え方は、デフォルトでは非常にシンプルなものであるということです。