なぜPCでトラブルが発生した際に「再起動」すると解決することが多いのか?
PCで何らかのトラブルが発生した時には「ひとまず再起動してみる」という解決策を試す人は多いはず。そして再起動だけでトラブルが解決してしまうことも多いものです。PCの再起動がなぜトラブルを解決するのかについての考察をSalesforceのエンジニアであるノーラン・ローソン氏がブログにまとめました。
Programmers are bad at managing state | Read the Tea Leaves
https://nolanlawson.com/2020/12/29/programmers-are-bad-at-managing-state/
ローソン氏は再起動で解決する理由を端的に「プログラマーが状態の管理を不得手としていること」と述べました。プログラムを記述して最初に起動した際には全ての変数はプログラマーの意図通りになっており、自動テストなどを通じて「プログラムとして最も純粋で完璧な状態」に仕上がっています。
しかし、プログラムの起動後はユーザーが何かをクリックしたり入力欄に文字を書き込んだりするだけでなく、ウェブアプリであればブラウザの戻る・進むボタンや更新ボタンを押したり、数週間放置した後に起動したりとさまざまな操作を行います。こうした操作を通してプログラムは元のプログラマーの意図とは異なる状態になり、エラーやクラッシュ、フリーズが発生してしまいます。
「一度電源をオフにして再度オンにする」という操作はプログラムの状態をリセットして当初のプログラマーの意図通りに戻すことで高い効果を発揮しているとのこと。
実際、ローソン氏の妻が数年ぶりにSteamを起動しようとしたところうまく起動せず、再インストールしてみてもロードに失敗していました。しかしSteamのデータが保存されている「~/Library/Application Support/SteamSteam」というフォルダを削除して状態をリセットすることで正常に動作させることに成功したと述べられています。
また、ウェブアプリが何度リロードしても読み込み中にフリーズしてしまうという問題が発生した時にはChrome DevToolsの「アプリケーション」タブで「サイトデータを消去」することで解決できたそう。
さらに、macOSをアップデートしたあとのMacBookで印刷ができなくなるトラブルに対しては古いプリンターソフトウェアをアンインストールすることで解決したという例も記載されています。
そのほか、Firefoxを久しぶりに起動すると「お久しぶりです! Firefox はしばらく使われていないようです。プロファイルを掃除して新品のようにきれいにしますか?」という旨のメッセージが出現することについてローソン氏は「Firefoxにユーザーを誘導する優れた方法」と述べました。ブラウザ間の体感速度の差は実際の実力の差よりも拡張機能や設定、履歴、キャッシュなどの影響が大きいためFirefoxをリフレッシュすることでそうした状態をリセットしてFirefox本来の軽快さを体験させているわけです。新しいPCやスマートフォンが驚くほど軽快に動作するように感じられるのも同じ理由とのこと。
ローソン氏は「ソフトウェアは複雑であり、プログラムがどのような状態をとり得るのかを全て予測することは不可能だ」として「自分のプログラムのファイルをクリーンアップするための専用プログラムを用意するなどのある種の脱出ハッチを用意することは素晴らしいことだ」とリセット手段を用意することの大切さを訴えました。
・関連記事
手軽にできるスマホのハッキング対策は「再起動」すること - GIGAZINE
Windowsの「System32」からランダムにファイルを選んで削除し再起動できるかどうかを試し続ける恐るべき飲み会「System32ルーレット」 - GIGAZINE
全身麻酔から目覚めるとき脳の「再起動」時間は領域ごとに差があるという研究結果 - GIGAZINE
Linuxの起動を29万2612回も繰り返して1000回に1回発生するバグを見つけることに成功 - GIGAZINE
飛行機に「インターネットをリセットするボタン」があったという報告 - GIGAZINE
・関連コンテンツ