Fits on a Floppy - 小さなソフトウェアのための宣言
(fitsonafloppy.com)- ソフトウェアの肥大化とは、かつてはフロッピー1枚に収まっていたアプリが、今ではギガバイト級の保存容量と長い待ち時間を要求するようになった変化を指す
- 1.44MBフロッピーディスクは冗談めいた制約ではなく、節度の基準であり、単一目的のツールも十分に小さく作れるという前提である
- 小さなソフトウェアは、すばやいダウンロードと即時起動、低いメモリ・CPU使用量、長いバッテリー駆動時間、古いシステムへの対応を志向する
- ネイティブのみを使用し、依存関係の肥大化を避け、すべてのコードが存在理由を持つべきだという原則を強調する
- フロッピーバッジは、総ダウンロードサイズが1.44MB未満のアプリに付与され、重要なのはノスタルジーではなく、あらゆるバイトを重視する作り手の姿勢である
小さなソフトウェアの基準
- ソフトウェアの肥大化により、かつて単一のフロッピーディスクに収まっていたアプリが、今ではギガバイト級の保存容量、長い待ち時間、過度な忍耐を要求するようになった
- 1.44MBフロッピーディスクは冗談めいた制限ではなく、節度の基準として使われる
- かつて事業全体を動かしていたソフトウェアがこの容量に収まっていたのなら、現代の焦点を絞った単一目的ツールも十分に小さくできる
- 小さなソフトウェアは、すばやくダウンロードでき、すぐに起動し、不必要な読み込みを減らすことを目標とする
- 低いメモリとCPU使用量、より長いバッテリー駆動時間、古いシステムへの対応まで含め、ユーザーのデバイスを尊重する
- ネイティブのみを使用し、依存関係の肥大化を避け、すべてのコードが存在理由を持つべきである
- ひとつの仕事をうまくこなすソフトウェアは、機能が集中し、バグが減り、より長く使い続けられる
測定方法と意図
- フロッピーバッジは、総ダウンロードサイズが標準3.5インチフロッピーディスク容量である1.44MB未満のアプリに付与される
- ディスクに表示されるサイズは、開発者の配布プラットフォームが報告したユニバーサルバイナリサイズを基準にしている
- 実際にデバイスへダウンロードされるサイズは、プラットフォームシニング(platform thinning)によって特定ハードウェアに必要な断片だけが配信されるため、表示サイズより小さくなる場合がある
- 重要なのはフロッピーディスク自体へのノスタルジーではなく、あらゆるバイトが重要であり、制約が創造性を生み、ソフトウェアは軽量であるべきだという作り手の姿勢にある
- 関連する例として、39KBの受賞ゲーム YOYOZO 制作記 がリンクされている
1件のコメント
Lobste.rsの意見
逆に、移植性のために静的リンクをしたり、Janetのようにランタイムがあまり一般的でない言語を使うと、この基準をあっさり超えてしまう
私のプロジェクト Decker は外部依存を減らそうと努力しているが、移植性のためにSDLとSDL_imageに依存し、同梱している。現在のApple Siliconリリースは圧縮状態で6MBで、そのうち約4.6MBがSDLとSDL_imageのdylibだ。Webビルドは、ユーザーがすでにそれなりに新しいHTML5ブラウザを持っているという前提なら0.5MB程度から始まるが、ブラウザまで含めれば依存関係は数百MBになる。
有用なアプリケーションやライブラリの生のdeckファイルは、ランタイムがすでにあるなら数十KBで済むこともある。Love2d もSDLといくつかの組み込みコンポーネントの上に成り立つ似たような状況で、圧縮で10MB、展開後25MBだ。Love2d上ではLuaスクリプトとベクターグラフィックスだけで数十KBの有用なアプリを作れるが、やはりそれもランタイムがすでにある場合の話だ。
開発リソースが無限ならSDL依存を避けるのは立派な目標だろうが、たいていのSDLベースのプロジェクトでは、インストーラを数MB削る代わりに、あまり人気のないOSのサポートを最初から捨てることになる可能性が高い。これを肥大化と見るかどうかは、視点によるだろう
昔はテキストだけでも妥当だったが、今ではまれだ。挙げられている動機の一覧のうち、実際の生バイナリサイズに直接結びつくのは最初のものだけで、残りはあればうれしい別個の利点に近い。
しかもそのサイト自体、1,600バイトのマニフェストを届けるのに約200,000バイト使っている
https://cdn.fosstodon.org/media_attachments/files/…
今のユーザーはダウンロードが1.44MBなのか2.88MBなのか、あるいはそれより大きいのか気づかないし、実行ファイルを動かすときにも違いを体感しない
フロッピー1枚のアプリケーションも存在したが、80〜90年代の本格的なソフトウェアの大半は複数枚に分けて配布されていた。たとえば Microsoft Word v2.0 on 7 disks with 2 supplemental disks、Lotus 1-2-3 on 13 floppy disks、Doomですら 4 floppy disks だった。
フロッピー1枚に収まるという発想は、フロッピー時代ですら一般的ではなく、もっと大きいソフトウェアは複数枚で配布すればよいということを皆わかっていた