「パソコンを再起動してください」ってよく言うけど、電源落として再起動することをリブートって呼ぶのはどうしてなんだっけ? ふと気になって調べてみたら、そこにはこの電算マシンが本来的にもつ最も革命的な部分がわかる奥深い歴史がありました。
自律起動マシン。これはただのONではない
1950年代。最初期のコンピュータを手がけるエンジニアたちの前にある難題が立ち塞がりました。コンピュータをONにするプロセス、これを言い表すぴったりとくる言葉がどうしてもわからなかったんです。
「そんなの簡単じゃん!」―いやいや、それがそうじゃないのです。当時の機械のON/OFFは実に単純明快でした。スイッチを入れると電気や燃料で電源が回って「ON」になる、おわり。
ところがコンピュータは違います。スイッチを入れると電源が回るところまでは一緒なんだけど、その後にソフトウェアの小さなコードを読み込まないといけない。で、その読み込んだコードがさらに別のコードを読み込んで、それがまた別のコードを読み込んで…っていうことを延々やるわけですよ、周辺機器とOSが立ち上がってプログラム実行できる準備が整うまで。
つまり完全に「ON」になるまでには何段階ものプロセスを踏まなきゃいけない。ところがこの機械は恐るべきことに放っといても勝手に自分でコード読み込んで勝手に準備OKになっていくんですね。まさに革命児。
明らかに他の「ON」とは挙動が違う。
このいそいそと準備に勤しむ一連の所作は一体なんなのだ!?
ということで知恵を絞った挙げ句、エンジニアたちが行き着いたのが、「ブーツを履く(booting up)」という比喩です。ブーツって上に指突っ込める輪っか(ブートストラップ)がついてるじゃないですか? あそこでブーツがブーツをぐいぐい持ち上げていく、あれじゃないかというんですね。なるほど。
時代の変化とともに
20世紀半ば新語として生まれてからも、ブートは激変を続けます。20世紀中期にはまだ起動といえば、初期化シーケンスなり単語を磁気ドラムやテープ、パンチカードから読み込むところから始まっていました(初期のコンピュータはよく電源入れた後に「読み込み」ボタン押さなきゃならなかったりしますが、それはこのため)。それが後のコンピュータでは読み出し専用メモリ(ROM)にブートストラップ読み込みプログラムやファームウェアがもう格納済みになってて、回路基板に常駐の小さなコードから勝手に自分で自分をブートできるようになったんです。
今のコンピュータのブート(起動)は大体が、「ブートローダー」というちっこいプログラムを起動するところから 始まってるわけですが、このブートローダーを記録できる媒体はハードドライブ、CD、USBドライブ、フラッシュメモリカードなどさまざまです。中には回路基板の上に直にある特殊なチップに記録してるコンピュータまであります。
ブートローダーの任務は、他のプログラムを読み込むことで、端末によっては、モニター、ドライブ、キーボードなど周辺機器の起動までやります。OS(Windows、OSX、Linux、Chromeなどなど)をRAMに読み込むところもブートローダーの仕事です。で、OSの読み込みが終わってコマンドを実行できる状態になれば、コンピュータはブート完了。もう使ってOKというわけですね。
「ブートローダー」という言葉は「ジェイルブレイク」端末絡みで耳にしたことある人もいるかもしれませんね。一般的なジェイルブレイクでは、ブートローダーにコードを挿入したり、まるまる他のコードに置き換える作業が要るので。使えるプログラムをもっと自分でコントロールできるようにする部分で。
リブートでバグが直るのは当たり前
こうしてブートのプロセスを知ってしまうと、再起動で直るバグが多いの当たり前だよねってなんとなく納得しちゃいますよね。プログラムやOSは使ってくうちに実にさまざまな理由でコードエラーが積み重なっていきます。使ってるこっちは動作が遅くなったりプログラムがフリーズして初めて異変に気づくのだけど、もうその頃にはエラーとエラーが絡まり合ってワケがわからなくなってる。こうなると一番いいのは、バギーになる前の原初の状態に全プログラムを戻すこと。つまりはそれが、リブートです。全プログラムを終了して、またコードを一からブートストラップし、マシンを最高の「ON」状態に戻す。絶好のコンディションで仕事に臨める状態に戻すんだから、調子良くて当然なのです。
そんなわけで次回コンピュータを起動するときには、デスクトップでもスマホでもなんでもいいですんで、自分で自分を引っ張りあげ叱咤激励し立ち上がるマシンをその目で見る感動に一瞬浸ってもらえれば。ONボタンは言うなれば、ただの火打ち石です。残りは全部ソフトウェアが 自分でやってるのです。
Annalee Newitz - Gizmodo US[原文]
(satomi)