anchor
Macがトラブった!そのとき何をする?〜トラシューの15のコツ
当サイトは元々MacOSのトラブルシューティングの記録としてスタートしている。
ユーザーはMacを使う上で様々なトラブルに遭遇する。
かつてはそのトラブルの数は半端なく多かった。
なので、ここでその記録を備忘録的に残しておこう、そうすれば後日類似のトラブルが起きた時に、どう対処したか過去の記録を見れば対処法がわかることがある。
このサイトのデイリーの記事が「OS運用記録」というタイトルになっているのはその頃の名残だ。
時代は移り変わり、MacのOS Xもバージョン7Lionまで進んできて、かつて毎週のように見た爆弾マークも見ることがなくなった。(OS Xでは爆弾マークは廃止されたとかそういうことではなくσ(^_^;)…)
トラブルそのものがOS9以前と比べて非常に少なくなってきたので、弊サイトも一時期フリーウエアアプリ紹介サイトみたいになっていたが、元々のサイトの目的はそういうことだった。
少なくなったといっても今でも無くなった訳ではない。
最新Macでもトラブルはやっぱり起こりうる。
おそらく、コンピューターという形態をとる限り完全なトラブルフリーはあり得ないと思う。
ならば「トラブル起きないでくれ」と祈るよりも「トラブルが起きた時にどう対処するか」という方面の頭をはっきりさせておいた方が、結局時間や労力を浪費しなくてすむと思う。
以下にトラブルが起きた時にトラブルシューティングは、どういう手順で何をするか、その考え方を書いていこうと思う。
Macとつきあい始めて十数年、Windows時代も含めたら結構長い期間パソコンとつきあってきたし、今本業もそれに近い仕事をしているので、トラブルシューティングの手順をまとめておくのは意義があると思った。
何か思いついたら、改訂・追記していくと思う。
15のトラシューの要件
Macがちゃんと動かない…
これがトラブルが起きた時に、最初に感じる印象。
そして質問サイトやサポートコミュニティや掲示板などにもこういう質問がしばしば投稿される。
「Macがちゃんと動きません!どうしたらいいでしょうか?」
しかしこの質問に答えられる人はほぼ絶対にいない。
答えられるのはエスパーだけだ。
ここで最初にしないといけないことがいくつかある。
1)障害の範囲を特定する
まずは、どういう症状が発生しているかを冷静に観察することだ。
「Macがおかしい」
だけでなく、振る舞いがおかしいのはシステムなのかアプリなのか、どのアプリを使っている時におかしな症状が起きるのか、障害が出る動作に共通の傾向がないかなどを観察する。
これは掲示板などで質問する時だけでなく自分で解決する時でも大事なことだ。
まずは障害の範囲を特定する…これがすべての始まりだ。
2)再現するか
そして次に大事なのは症状の再現性だ。
障害の範囲や傾向を観察する必要があるのは、この症状に再現性があるかを知りたいからだ。
障害が再現しない場合、次の障害が出るまで観察しないと仕方がない。
障害の出方を見て、なにをした時に障害が出るのかを見て、何が障害の原因かを推測する材料にする為に、まず再現性を確認することが必要だ。
初心者は必ず「何もしていないのに壊れた」という。
しかしコンピュータは何もしないのに勝手に壊れたりしない。
必ず何かをした時に壊れる。
何をしたら症状が出るのか、その再現性が重要なのは初動の初歩の初歩だ。
3)アッセンブルの切り分け
4)ソフトウエアの切り分け
症状が再現することを確認したらその症状が発生する条件を切り分けていく。
例えばUSBに差さっているものを一度全部抜いてみるとか、最近増設したメモリ、ディスクなどを抜いてみるとかハードウエアの切り分けをしていくことで、ハード故障・障害を突き止めることができる。
同じ要領で、起動しているアプリ、アクティブになっているプラグインを止めることで、症状が止まるかを観察する。
アプリだけでなく常駐プロセス、daemonなども観察の対象にする。
かつてはMacOSはコンフリクトの固まりだった。
だからソフトを止めていってコンフリクトを特定するというのは定番のトラシューだった。
今ではコンフリクトは非常に少なくなっているが、根絶された訳ではない。
この方法は今でも有効なトラシュー法だと思う。
アクティビティモニタを起動すると使用中のアプリだけでなく、
常駐のプロセス、daemon、システムのプロセスも確認できる
問題に近そうなものを一つずつ止めていけば原因が分かることがある
そのためにはどのプロセスが何をしているのかを普段から知る必要があるが
ただし大原則は「必ず一つずつ外していく」こと。
一度にたくさんの対策を実施すると、どれが効果があったのかわからなくなってしまう。
そして次に同じ問題が起きた時に、また一から同じ切り分けをしなくてはいけなくなる。
一つずつ外していって、その都度調子を見る。
地道な作業だが、一番確実だと思う。
5)時間軸の切り分け
トラシューでもう一つ重要なのは、その発生時間を特定することだ。
何となく調子が悪い、結局再起動を余儀なくされた。それが小一時間前…こういう漠然とした時間の把握だけでなく、何が調子悪いかを特定できれば、それに関連したクラッシュが起きていないかを見ることで、原因を突き止めることができる。
6)コンソールを活用せよ
だから問題の症状がいつ発生しているかをログで確認することは有効だ。
ログはConsoleを起動することで誰でも見ることができる。
ユーティリティフォルダの中にあるコンソールだ。
コンソールは馴染みにくい言葉で書かれているので、開発者専用だと思いつい敬遠してしまうかもしれない。
しかし、問題発生時間を特定するなら、別に開発者でなくても素人でも十分活用できる。
トラブルの発生時刻特定で役に立つのはコンソールの「CrashReporter」だ
これでどのプロセスがいつクラッシュしたかを特定できる
これはメニューバーに何も表示されなくなった問題のトラシュー風景
症状が起きた時間にClamXav Sentryのクラッシュが起きている
どうもこの時にシステムUIサーバを巻き添えにして落ちたようだ
このトラシューの結果、ClamXavをバージョンダウンして様子を見ることにした
こういうログを読むことは闇雲に当てずっぽうの対策をする無駄を省いてくれる
7)要素の切り分けは一つずつ行う
上記した通り、切り分けで何かを切り離す時、あるいはアプリを止めていく時に、問題ありそうなものを一気に全部切り離してしまうと、たとえ問題を解決できても原因が特定できない。
原因が特定できないということは、次回に何をやったらまた問題が再発するかも理解できていないということだ。
ということはいつ同じ問題が再発するかわからない。
これでは問題を解決したことにならない。
問題を解決する早道は、「一度に一つずつ」。
これしかない。
8)トラシューは初動が大事
これも上記した通り。
トラブルはそれが起きた時に、その症状を確認する、範囲を確認する、発生時間を確認する、発生する条件を確認する…これの積み重ねだ。
調子が悪くなったら何でもかんでもいきなり再起動する…これはとてもMac的な問題の解決の方法だが、これでは何もトラシューしたことにならない。
しかも初動で問題を把握するチャンスを自分でつぶしてしまっている。
再起動で問題解決は、時間がなくてじっくりトラシューをしている余裕がないときの非常手段だと知るべし。
9)メッセージを読む
トラブルが起きた時、あるいはその予兆が始まる時にシステムは様々なメッセージを表示しているはずだ。
「〇〇しようとしている。〇〇してもいいか? OK/NO」
という確認タグは常に出しているはずだ。
確認タグや、メッセージが出たら必ずその中身を読むこと!
これはぜひとも習慣を身につけてほしい。
そこから多くの情報を得ることができるだけでなく、多くのトラブルを予防することもできる。
とにかくいけないのは、
「メッセージを読まないで何でもかんでもOKボタンをクリックする」
トリガーハッピーなユーザ。
システムは「うっかりミス」を防ぐための多くのフールプルーフを用意しているが、せっかくのフールプルーフ(つまり『馬鹿が操作しても大丈夫』ということ)も意図的に何でもOKしてしまう「大馬鹿」に対しては無力だ。
またメッセージを読まないとトラシューの力もつかない。
何を訴えようとしているのかは常に把握する努力をする。
10)メンテナンス手順のルーティン化
システムを常時快適に保つために、Macでもやっておくべきメンテナンスがいくつかある。
ここでもいくつか紹介している。
最近私が実行しているメンテナンス手順についてまとめてみた2
最近私が実行しているシステムメンテナンス3
Mac使うならこれだけはやっておけというメンテナンスを省力化してやってしまう〜追記あり〜
こうしたメンテナンス手順はある種のトラブルに対して有効だ。
メモリーリーク、Swap増大、ディスクアクセスの増大などで動作に影響が出てくることはあり得る。
そうしたものを切り分けたらすぐに対処できるようにこうしたメンテナンス手順は、分野別にルーティン化しておくのがいいと思う。
メモリ解放のためのこれとこれをやるとか。
こういう細かい手順を用意することで、対応が早くなる。
11)最新トピックスに関心を持つ〜特にバージョンアップとウイルス
トラブルというのは実は結構同じ時期に集中して起きる。
例えばシステムのアップデートの時とか、人気アプリのアップデートの時とか。
その場合同じような問題を指摘するトピックスがネットで多く語られているはずだ。
トラブル、特にウイルス、マルウエアなどの情報は、常にアンテナを張っておくと、いざという時に問題解決が早くなることがある。
何でもかんでもウイルスのせいにするのは非常にまずい考え方だが、ある種のウイルスはそれでしか起きない特徴的な問題の起こし方をするはずだから、そういう障害の特徴を把握しておくことは有力な手がかりになる。
12)アプリインストールは入れっぱなしではなく動作テストを必ずする
問題が起きやすいのは、アプリをインストールした時。
特にシステムユーティリティをインストールした時に問題が起きることがある。
何か新規のアプリをインストールしたら、必ずその時にアプリを起動して調子を見ておくこと。
一通りの作業をやってみて、何か調子が悪い部分がないかを見ておくこと。
いろいろインストールしてそのままにしていて、ある時期システムが全般的に調子悪くなったら何が問題なのかわからなくなってしまう。
何かインストールしたら必ず起動してみる…これも習慣にしたい。
13)アプリの動作だけでなく関連するAPIを利用するアプリも動かしてみる
このタイトルでは何のことかわからないと思うが、最近あった実例を紹介すると‥‥
Macの動画の再生はQuickTimeというビデオコーデックパッケージソフトで行っている。
これは多くのコーデックのエンコーダ、デコーダをバンドルしたパッケージなのだが、このQuickTimeがカバーできないコーデックもある。
そういうものをカバーするためにVLCというエンコーダー、デコーダーのパッケージもサードパーティから配布されている。
このVLCがあるバージョンから、ソースを大きく変更したようだ。
そのためにHandBrake、
FairMountなどのアプリが動かなくなってしまった。
この辺の依存関係を知らないと、これらのアプリがなぜ動かなくなったのか理解できないかもしれない。
QuickTimeもiTunesやFinalcutなどの多くのアプリが依存している。
こういう依存関係を知れば、ある日突然動かなくなったとか、動作が変わったとかの問題の解決法に気がつくのが早くなる。
14)インプットが同じならアウトプットは常に同じでなければいけない
トラシューをする上で、一つ知っておくべきことがある。
コンピュータというものは、特に今の「ノイマン型コンピュータ」と呼ばれる世代のコンピュータは、
「同じ入力に対しては同じ出力を出す」
という性質がある。
何故そうなのかといえば、ノイマン型コンピュータが開発された時の要求仕様の一つがそうだったからだ。
だから何か問題が起きた時に
「今度はうまくいくかもしれない」
と同じ操作を繰り返すのは2回までにするべきだ。
2回同じ結果が出たら、その後何十回やっても結局同じ結果が出る。
だから、「今度はうまくいくかも」と熱くなってバナナの罠にはまった猿のように同じことを何十回もすることはやめることだ。
ストレスになるだけでなく、時間の無駄でもある。
逆に言うと検証のためなら毎回入力を変えてやらないといけない。
2回やって結果が同じなら、この後500回やっても同じ結果が出る…このことは心に留めておいて損はない。
15)たいていは再起動で何とかなる
最後のコツはこれ。
上に書いたことと矛盾するのだが、Macの場合たいていの問題は「再起動一発」で解決する。
再起動一発で解決するトラブルというのは、厳密にはトラブルというより、Swapやメモリ不足などのストレスからくるものだから、ハードウエアの向上以外に根本的な解決はない。
それでも、問題は起きる。
起きたときは初動に気をつけてできるだけ、切り分けをしたい。
そうすれば解決は見える。
でも見えない時もある。
そういう時は多くの問題は「再起動が解決してくれる」
逆にいえば、再起動で改善しない問題こそ真に「重大なトラブル」ともいえる。
というところに希望を持って、ある程度やるべきことをやったらあっさり諦めて再起動する…そういう潔さもトラシューには必要なのだ。
2012年5月27日