86
バグと修正: Safari ウェブコンテンツの不具合

Mac OS X Snow LeopardでもLionでも、Safari 5.1をお使いの方は、その動作に満足していない可能性が高くなります。少なくとも、多くの同僚から聞いたり、フォーラムの投稿で目にしたりするのは、まさにその通りです。Safari 5.1に関する数多くの問題が報告されていますが、ここでは関連する2つの問題に焦点を当てることにしました。

強制リロード

Safariウィンドウで複数のタブを開いている場合、アクティブなタブを変更するためにクリックすると、新しく選択したページが再読み込みされ、一時的に空白になることがあります。通常、この時点で、その後に表示するために選択したすべてのタブで同様の再読み込みが発生します。この症状は毎回発生するわけではなく、全く発生しないというユーザーも少数います。しかし、多くのユーザー(私を含め)は定期的にこの症状を経験しています。私の知る限り、この症状は以前のバージョンのSafariでは発生しませんでした。

場合によっては、Safariのタブにアクセスしようとすると、ページの強制的な再読み込みが迫っていることを警告するメッセージがポップアップ表示されることがあります。「Webページが応答していません。選択したWebページにアクセスするには、他のタブとウィンドウ内のすべてのWebページを強制的に再読み込みする必要があります。このページにアクセスしますか?」

良いニュースは、「ページにアクセス」の招待を拒否することで、すべてのページの強制的な再読み込みを回避できることです。Appleサポートコミュニティのスレッドに寄せられたある投稿によると、「キャンセル」を選択して1分ほど待つと、表示しようとしているウェブページは最終的に表示されるものの、他のすべてのページの再読み込みは必要ないとのことです。ただし、私はこの件を確認していません。

この強制的な再読み込みは、大抵はそれほど煩わしくありませんが、ページがすぐに再読み込みされなかったり、ページの内容が途中で変更されたりすると、非常に煩わしくなります。何十ものタブやウィンドウを開いている場合、たとえ最良の状況であっても、すべてが再読み込みされるのは好ましいことではありません。

私の理解では(完全に理解しているわけではありませんが)、この「機能」はSafariバージョン5.1での新しい動作方法による間接的な結果です。アクティビティモニタを起動すると、Safariのプロセスが2つ表示されます。Safari本体(これまで通り)と、新しいSafari Webコンテンツプロセスです。Wikipediaのページで説明されているように、WebコンテンツはSafari 5.1にWebKit2が統合された結果です。「WebKit2は、Webコンテンツ(JavaScript、HTML、レイアウトなど)が別のプロセス(Safari Webコンテンツ)で実行される分割プロセスモデルをサポートするように根本から設計されています。」Safariのインターネットプラグインや拡張機能は、他の機能の中でも特にWebコンテンツプロセスで実行されます。どうやら、Webページの実際のレンダリングもWebコンテンツが担っているようです。

このプロセス分離の利点は、Safariのアドオンがクラッシュしても、メインのSafariアプリケーションを停止する必要がないことです。欠点は、問題が発生したときに「強制リロード」の問題に直面する可能性があることです。一方、Safari自体がクラッシュする可能性があるのであれば、強制リロードの方が望ましいかもしれません。

こうした強制リロードを最小限に抑える方法はありますか? すぐに思いつく対策は一つあります。もし、動作が不安定なプラグインや拡張機能があれば、それを無効にしましょう。もし、どのアドオンが原因なのかわからない場合は、試行錯誤を繰り返す必要があります。

いくつかのフォーラム投稿では、コンピュータのメモリを増設すると強制リロードを回避できる可能性があると示唆されています。しかし、ほとんどのユーザー(多くは8GB以上のRAMを搭載しています)は、これは当てはまらないと主張しています。あるスレッドでは、Lion特有の症状として、一定時間非アクティブなプロセスを強制終了する自動終了機能に関連している可能性があると示唆されています。これは、Safari Webコンテンツが何らかの時点で終了し、それが強制リロードにつながることを示唆しています。この説には何らかの根拠があるかもしれません。しかし、Snow LeopardのSafari 5.1でも強制リロードの症状を確認したことがあるため、自動終了だけが原因ではないでしょう。

暴走プロセス

SafariのWebコンテンツプロセスに関する2つ目の不満は、アクティビティモニタに表示されるCPU使用率が非常に高くなり、時には100%を超えることです。WebコンテンツのCPU使用率が管理可能なレベルであっても、実メモリと仮想メモリの表示は非常に高くなることがあります。メモリレベルが2GBを超えるケースも見たことがあります。このような状況になると、Safariのあらゆる動作(場合によってはMac全体の動作)が極端に遅くなります。これは、Appleサポートコミュニティの大規模なスレッドやTUAWの記事など、数十件の投稿で確認されています。

このようなバグではよくあることですが、すべてのSafariユーザーがこの問題に遭遇しているわけではありません。Safariのアドオンが原因だと指摘するユーザーもいますが、Webコンテンツプロセス自体に固有のメモリリークが原因ではないかと推測するユーザーもいます。後者の場合、Macにメモリを増設してもほとんど効果はありません。むしろ、AppleがSafariのアップデートで修正する必要があるでしょう。回避策として、Safariを終了して再起動すると(特に、以前開いていたタブやウィンドウをすべて開かずに)、症状は一時的に解消されるはずです。