2 ポイント 投稿者 GN⁺ 2023-08-22 | 1件のコメント | WhatsAppで共有
  • Macintoshは68000マイクロプロセッサのおかげで高速なコンピュータと見なされていたが、実際の使用ではフロッピーディスクが速度のボトルネックになっていた
  • Steve Jobsが特に問題視したのは、電源を入れたあとメモリテスト、オペレーティングシステムの初期化、Finderの読み込みへと続く起動時間だった
  • JobsはLarry Kenyonに、起動を10秒短縮すれば500万人のユーザーが毎日5千万秒を節約でき、1年では数十人分の人生に相当すると迫った
  • チームはすでにソフトウェア性能の改善に動機づけられていたため、この計算が実際にどれほど影響したかは明らかではない
  • 結果としてMacintoshチームは数か月後に起動時間を10秒以上短縮し、Jobs流の説得はユーモラスな逸話として残った

Macintoshのボトルネックはフロッピーディスクだった

  • Macintoshチームは、68000マイクロプロセッサがApple IIより実質的に10倍速いと見ており、高速なコンピュータだと考えていた
  • しかしRAMが限られていたため、フロッピーから頻繁にデータを読み込む必要があり、この点ではApple IIより速くなかった
  • 実際のアプリケーションが動き始めると、フロッピーディスクが主要なボトルネックであることが明らかになった

Steve Jobsが執拗に見ていた起動時間

  • Jobsが最も不満に感じていた点のひとつは、Macを最初に起動したときにかかる起動時間だった
    • メモリテスト
    • オペレーティングシステムの初期化
    • Finderの読み込み
  • この過程には数分、あるいはそれ以上かかることもあった
  • Jobsはディスクドライバとファイルシステムを担当していたLarry Kenyonに、Macintoshの起動は遅すぎるので、もっと速くすべきだと要求した

「10秒短縮すれば命を救う」という計算

  • Larry Kenyonは改善できる箇所を説明しようとしたが、Jobsはその説明には関心を示さなかった
  • Jobsは数年後には500万人が毎日少なくとも1回Macintoshを起動すると仮定した
  • 起動時間を10秒短縮すれば、毎日5千万秒を節約でき、1年では数十人分の人生に相当すると計算した
  • そのため、起動を10秒速くすることは「数十人の命を救うこと」のように価値があると語った

実際の結果

  • チームはもともとソフトウェアを可能な限り高速にしたいと考えていたため、Jobsの説得がどれほど大きな影響を与えたかははっきりしない
  • ただし、その説得の仕方はチーム内でかなりユーモラスに受け止められた
  • その後数か月のあいだに、Macintoshの起動時間は実際に10秒以上短縮された

1件のコメント

 
GN⁺ 2023-08-22
Hacker News の意見
  • Apple のある古参エンジニアから聞いた話では、MacOS 8.x 時代のユーザー調査で最大の不満は起動時間だった。
    当時は平均で45秒ほどかかっていたが、システムはすでにスリープに対応していたので、なぜ人々が起動時間を気にするのか尋ねたという。
    すると、ユーザーは単に1日1回、週1回再起動しているのではなく、不安定さのために頻繁に再起動していることが分かった。新リリースでは起動も改善したが、OSの安定化により注力した。
    結果として起動時間への不満は消えたが、それはものすごく速くなったからではなく、再起動そのものをあまりしなくなったからであり、顧客が何を求めているかだけでなく、なぜ求めているのかも理解すべきだという教訓だった。

    • それには、わざわざアンケートは必要なかった。当時のOSにはメモリ保護がなく、起動時には Apple や多数のサードパーティ製拡張機能がシステムのあちこちにパッチを当てていた。
      パッチのルールも不明確で、たとえばシステムコールのパッチ内でメモリを割り当てるコードパスがあり得たが、メモリマネージャが再入可能ではなかったため、本来やってはいけないことだった。
      さらに当時の C コンパイラでビルドされたコードが動いており、範囲外メモリ書き込みを防ぐツールも非常に限られていた。
    • Apple の顧客は何年にもわたって、より高い安定性を求めてきた。Apple は意味のある解決策を何度も試みたが、失敗した。
      MacOS 8 も非常に限定的なメモリ保護を導入したが、実際の状況ではほとんど役に立たず、文脈上これは、組織が問題を合理化する能力と意思に関する話である。
      この問題は、Apple を事業としてほとんど死に追いやるところだった。
    • もっともらしく聞こえる。Quadra がスキャン中に高い確率で固まったせいで失った時間は、意図的に再起動して失った時間よりはるかに多かった。
    • Mac OS X は終了に時間がかかった。
      友人が妻に初めて Mac OS X を見せて終了しようとしたところ、妻は「Mac で良かったのは、まさにすぐ終了できるところだったのに」と顔をしかめた。友人は「じゃあ Mac OS で気に入る別のところを探さないとね」と答えた。
    • コンシューマー向けコンピュータは常に30〜45秒以上かけて起動しなければならない、という宇宙の不変法則がある。
      今もっと速いなら、数年待てばいい。開発者たちが十分な性能退行を垂れ流して、またその水準まで戻してくれるだろう。
  • この話を聞いたことがあったのに、忘れていた気がする。Blizzard でインストール、ダウンロード、パッチのチームを率いていたとき、チームに「1,000万人がこのパッチをダウンロードしてインストールするのに、私たちが1分余計に使わせたら、人間の寿命のまた別の一部を消費させることになる」とよく言っていた。
    大げさで野暮ったくはあったが、改善を推し進める助けにはなった。
    より重要視していた指標は光速だった。DVD からインストールしていた時代には、ディスクの回転速度がその環境における光速だったので、できるだけその速度に近づけてインストールすべきだった。
    物理的な限界にぶつかるまで作業速度を改善し続けるべきであり、時間は貴重で、これ以上手に入れることはできない。

    • もっと多くのエンジニアがこう考えてくれればいいのにと思う。インフラの仕事をしている立場からすると、世界における自分の居場所を正当化するために自分に言い聞かせている話でもある。
      大きなインフラ性能改善をデプロイするときの核心は、速度や削減コストそのものではなく、大気中の CO2 が減り、何百万人にも分散していた人間の時間が、コンピュータの応答を待つ以外のことに使われるという点にある。
      私たちは個人の命を救う医師ではないが、人々に人生の一部を返すことはできる。ソフトウェアによっては数億、数十億人が使うので、小さな変更でも複数の「人生」に相当する時間を節約できる。
    • 以前、WoW 関連のサーバーエミュレータのようなものをハックしていた頃、Blizzard がこうした部分にどれほど気を配っていたかが、いつも目についた。
      記憶が正しければ、WoW などのトレントベースのパッチ配布は本当によくできていて、プレッシャーの大きい業界では特にすごいことだった。
    • 最後の部分が重要だ。
      一生懸命働いていると言えるエンジニアは多く見てきたが、自分たちが動かしているハードウェアと、そこで何が可能なのかを理解するために時間をほとんど使わない場合が多かった。
      性能の議論で「遅い」とか「問題ない」という言葉をあまりにも多く聞いたが、実際には基盤となるマシンと可能な限界を完全に無視していることが多かった。
    • WoW のパッチとアップデートの初期の惨状を経験した立場からすると、今日の WoW のアップデートと配布方式には称賛しかない。
      一番好きな機能は段階的ロードのサポートだ。WoW は巨大なゲームだが、一部のアセットだけでもプレイを開始でき、プレースホルダーや低品質のアセットに落として表示したり、特定の地域を丸ごとスキップしたりもする。
      完全に新規インストールしても数分以内にプレイできる。プレイヤーはたいてい当然のことと考えているが、走っている列車の車輪を交換しながら、膨大なデータを大きな問題なく高い性能で届けるために投入された労力は明らかに莫大だったはずで、ありがたく感じている。
    • 「時間は貴重で、これ以上手に入れることはできない」という言葉は正しいが、この例ではダウンロードで節約した時間が、結局はビデオゲームをするという高尚な目的に使われることになる。
      それがダウンロードを待つことより、そこまで良い時間の使い方なのかは疑問だ。
  • Steve Jobs は、人々を動機づけて駆り立てるために、いつも何かをでっち上げていた。いわゆる現実歪曲空間のようなやり方だった。
    Mike Slade によると、1990年ごろ、Microsoft で働いていた自分を Jobs が NeXT に引き抜こうとした。当時 Microsoft は Windows 95 という大ヒットを控えており、NeXT はコンピュータ販売で苦戦していた。
    Jobs は Slade に、Seattle にいたら才能が無駄になると言い、Silicon Valley は興奮と活動の中心地であり、彼が花開ける場所だと語った。
    さらに Palo Alto を、イタリア・ルネサンス期の Florence のような「特別な場所」だと表現し、道を歩けばある瞬間には学者に、次の瞬間には宇宙飛行士に出会うほど才能にあふれている、と即興で熱弁した。
    Slade はその説明に圧倒され、Palo Alto に移ることを決めたという。ところが1年後、妻と Palo Alto の University Avenue にあるイタリアンのチェーンレストラン Il Fornaio で食事をしていたとき、メニューの裏を見ると「Palo Alto はルネサンス時代の Florence のようだ……」という文句と同じ話が書かれていたという。
    結局 Jobs は、自分の好きだったチェーンレストランのメニュー文句、それも出来のよくない広告コピーで人を説得したわけで、Slade は彼を「本当に恥知らずな大ぼら吹き」だったと振り返っている。
    https://www.cultofmac.com/573753/how-jobs-poached-a-microsof...

    • Palo Alto が実際にはかなり退屈な場所だという点まで考えると、本当に笑える話だ
    • Steve Jobs にとっての Palo Alto は、本当に特別な場所だったのだろう
      数年前にそこで働いていたとき、Palo Alto の通りで記憶に残っているのは、Caltrain Station の下の地下道に漂っていた圧倒的な小便臭だけだった
    • ちょっと伝説めいた話に見える
      当時、世界最大級で最も名声のある企業の一つで働いていた頭のいい専門エンジニアが、将来の雇用主の「信じてくれ、最高だ」の一言だけを聞いて仕事を辞め、生活を丸ごと移して別の州へ引っ越したというのは信じがたい。
      そんな決断をするなら、少なくとも飛行機で行ってアパートを見たり、オフィスを訪ねたりしたはずだ。いい話ではあるが、間違いなくもっと多くの文脈があったのだろう
    • 面白い話だが、平凡なイタリア料理を出す Il Fornaio が Jobs のいちばん好きな店だったというのは信じがたい
      他の選択肢がすべて予約で埋まっていたか、もっと遠くまで運転するには遅すぎたときに行くような店だった
    • 面白い話ではあるが、90年代初頭の Silicon Valley は本当に特別な時期だった
      コンピューティング世界の中心であり、Fry’s やレストラン、バーのような場所で驚くような人たちに偶然出会うことが実際にあった。
      今の若い人たちは、今日のテクノロジー周辺の多くが90年代の South Bay と Peninsula に根ざしているという事実を、あまり理解していないように思う
  • プログラマーとエンジニアは、こうした考え方を全体に適用すべきだ。遅いソフトウェアを待つ総量は膨大で、もっと多くの開発チームが性能をより高い優先順位に置くべきだ。
    遅いソフトウェアやサービスのせいで待たされる時間を意識的にすべて足し合わせることはないが、その瞬間、無意識のうちにシステムが自分に敵対しているように感じ、不快でいらだたしくなる。
    少しでも意識して考えるようになると、自分たちの作ったものがリリースに十分だと信じたエンジニアやプロジェクトリーダーを軽蔑するようになる。
    現代のコンピュータの処理能力を考えれば、些細なリクエストに数百ミリ秒待たされたり、少し複雑なリクエストにそれよりずっと長く待たされたりするのは、プログラマーの重大な怠慢を示す証拠だ。

    • ADHD については別のところで書いたが、ここでは名前を伏せる自分自身の話をする。
      木曜の夜、彼女に古い MacBook の整理を頼まれた。ハードウェアに紐づいたアカウントの連携解除、以前自分が設定したであろうファームウェアキーの削除方法探し、新規インストール、アップデートといった数段階だけだった。
      しかし、いくつかの手順や再起動が1桁秒より長くかかり、作業は絶えず自分を誘惑してきたため、6か月かかった。
      何度も中断したあと、キーボードの横の机に置いておいたら、6時間かけて合計30分で終えられた。これは勝利だった。
      誰かが自分の手をノートPCに縛りつけていたならもっと早かっただろうが、空白の画面や進行バー、回転インジケーターを強制的に見つめ続ける苦痛は、想像もできなかっただろう
    • コンピュータが人間を待つべきであって、人間がコンピュータを待つべきではない
      長時間回るバッチ処理のような場合は例外だ
  • 普通のコンピュータでも 5400rpm の回転式ハードディスクから30秒以内にコールドブートできたのに、最新の NVMe SSD ではなぜ1秒以内に起動できないのか疑問だ

    • 複雑さとサイズのせいだ
      Windows 95 は、ほとんどの機能を含めてもインストール容量が約50MBで、Windows 2000 はインストールCD 1枚に収まった。
      現在の Windows 10 インストーラーは片面1層DVDにも入らず、FAT32 USBメモリでインストールするのも諦めなければならない。一部の古い UEFI はまだ exFAT を扱えない。
      体感上、最も速く使えたコンピュータは、デュアル Pentium 3 866、Rambus、15k U320 SCSI ディスクで XP を起動していたマシンで、ほとんどテレパシーのようだった
    • 最近、改造した BIOS と PCIE アダプターカードで古い Dell i5-4590 に NVMe SSD を入れられたが、新しい Windows 10 が数秒で起動した。
      Windows が余計なものを積み上げていくほど起動が長くなるという、昔からの問題に見える
    • 昔のアイコンはマスク付きの 32x32 白黒だったが、今は 512x512 で48ビットカラーだ。
      システムフォントも昔は約200字だったが、今では数万字を含んでいる。
      これを他のあらゆるものに外挿すれば、読み込むものがはるかに増えたことはかなり明らかだ
    • 私の Windows 11 PC は約20秒で起動する。その半分以上は POST で、その後 Windows のログイン画面は5〜10秒以内に表示される。
      気にならないくらい十分速い
    • 私の NUC は、POST を含めて Ubuntu をきっかり3秒で起動する
  • コンピューターを待たなければならないなら、それは十分に速くないということ
    ここでのSteveの論理は業界で広く使われていて、失敗すれば人殺しだという調子なので、ほとんど感情的な脅迫に近いが、それでも古典的ではある

    • むしろ、人々に自分の仕事が人々の生活に影響を与えるのだと考えさせる動機づけとして読める
      遅いソフトウェアの責任をユーザーに押しつけたり、製品の速度より機能や開発速度を押し進めるPMや組織のせいにしたりするのはとても簡単
      ここでのSteveのスローガンは、ソフトウェアの性能が日常生活に実質的な影響を与えるという意味で、それを指摘することは感情的な脅迫ではない
    • もう一つのJobsの逸話にも通じる
      iPad発売後、JobsがiPadを持ってMacチームの会議に入り、iPadをスリープ解除すると、すぐにオンになったという
      続いてMacをスリープ解除すると、スリープから復帰するのに時間がかかり、Jobsが「なぜこれはああできないのか?」のような質問をしたという
      それが可能だと示すiPadがなければ、メモリ速度やディスク速度のような議論が続いていただろうし、より速いMacのスリープ/復帰はWindowsにも改善を迫る圧力になった
  • この論理が正しいなら、今日のUIのあちこちにある大量のアニメーションはどうなのかと思う
    最初の数十回を見栄えよくするためのもの以外は、時間を浪費しているだけの場合が多い
    使っているスマートフォンのアプリスイッチャーは、アニメーションがあると0.5〜1秒かかるが、アニメーションを切ると実質的に即座に切り替わる

    • アニメーションには実際のユーザー体験上の利点がある
      画面が即座にまったく別の配置に変わると視覚的に処理するのに時間がかかるが、要素が新しい位置へ補間されて動くと、その処理時間はアニメーションの長さまで短縮される
      普通は0.5秒や1秒ではなく、0.25秒程度
      スピード重視の人や上級ユーザーには邪魔になるかもしれないのでオフにすればよいが、対象ユーザーはUIの隅々まで筋肉記憶で覚えた人たちではなく、平均的なユーザー
    • すべてのアニメーションが無用なわけではない。実際、無用なアニメーションにUI内の居場所はない
      一部のアニメーションは、時間のかかる処理と重なって、ユーザーに反応があるという感覚を与えつつ待たせることができる。iOSがディスクにスワップされたアプリへ切り替えるときはこのように見え、ロード時間があるためアニメーションが遅延の一部を補う
      アニメーションがなければ、ユーザーは操作を正しく行えなかったと思って入力を繰り返そうとすることがあり、それはフラストレーションにつながる
      一部のアニメーションは、UIの流れの中でユーザーの方向感覚を保つために必要。たとえば最小化アニメーションは、ウィンドウを復元するときに押すべきアイコンへ移動させ、閉じる操作と最小化を区別できるようにする
      一部のアニメーションは、応答性を保ちながら適切なフィードバックを与えるために必要。タッチスクリーンでリストをスクロールするとき、端で出るスプリングアニメーションがなければ、リストの終端なのかタッチスクリーンが止まったのかをユーザーが知る方法がない
    • 多くのソフトウェアは、特に理由もなく入力遅延や速度制限を入れることもある
      ビデオゲーム機のシステムUIや一部のゲームメニューは、この点で特にひどいように思う
    • 低価格帯のスマートフォンはフレームレートがひどいので、滑らかに見せるにはアニメーションを長くしなければならない
      25fpsで200msの短いアニメーションだとフレームは5枚しかなく、カクカクして安っぽく見える
      1000msにすると滑らかでよく見えるが、使うには絶望的
      人気のない解決策かもしれないが、iPhoneを使えばよい。アプリスイッチャーは指の動きと同じくらい速く動作し、安定した60fpsを出すのに問題がない
    • Plasmaのインストール環境が2つとも全体的にもっさりしていて、何かがおかしいのかと思った
      使えないほど遅いわけではないが体感できる程度で、実はアニメーション速度がデフォルトで低すぎることが分かった
      2倍に上げたら、すべてが1,000倍良くなったように感じた
  • Windows 11はHDDから起動するのに約12分かかる。FDDから起動しようとしていると想像すればよい
    Windows 11をインストールしたあと、HDDで全アップデートのインストールを待つと約8日かかる

    • HDDはそこまで悪くない
      https://www.youtube.com/watch?v=MpNagBwWlNk
    • 少し前にデュアルブートシステムを作ろうとして、Fusion drive搭載の2017年iMacのパーティションを壊してしまい、それ以降Macが遅くなった
      起動してからある程度使えるようになるまで、おそらく5分ほどかかり、いずれにせよかなり長かった
      先週末、遅さにうんざりして調べたところ、パーティションをデフォルトに戻す diskutil resetFusion 0 コマンドがあった
      このコマンドを実行してOSを再インストールすると、iMacはまたかなり速くなった。素晴らしいとは言えないが、以前よりはずっと良い
      学んだことは、Fusion driveでのデュアルブートは悪い考えだということ

    • そんな起動時間は見たことがないが、そもそもほとんど再起動しない
      普通、Windows 10マシンは数カ月に一度再起動し、うちのIT部門はWindows PCを約1時間で準備する
      何かがかなりおかしいように思うが、ITの専門家ではない
    • 収集しなければならないTelemetryがとても多いのだろう
    • 私のWindows 11はそうではない。3〜4分かかるが、体感では1時間のように感じる
  • 以前、InterBase(現在の FireBase)に関する記事と議論を見た記憶がある。ストレージと自己修復型の復旧モデルが特定のシナリオで重要だという内容で、当時こんな引用があった。
    「AFATDS は、HP RISC ワークステーションと陸軍の Light Weight Computer Units 上で動作する 935,000 行の Ada コードで構成されている」と、主契約者である Magnavox Electronic Systems Company の John Williams は述べた。
    「Unix と PC プラットフォーム全体で拡張・動作できる単一のデータベースが必要だった。製品は迅速に導入でき、システムリソースを独占せずに高い可用性を提供しなければならなかった」
    「この種の意思決定支援には、分散処理と分散データベースの両方をサポートする、モジュール式で柔軟なアーキテクチャが必要だった。そこで InterBase を選んだ。競合製品より性能が高く、生死がかかった状況でも信頼できると確信させてくれた」
    正確な議論の文脈は、ある戦車では主砲の発射時に内部で EMP イベント が発生し、システムが再起動することがあり、再び発射できるように非常に高速な再起動と復旧時間が必要だった、というものだった。

  • Steve が、小さなガラス板の上で延々とスクロールするせいで、どれほど多くの 何百万もの人々の人生 が失われることになるかを知っていたら、どう思っただろうか。