Cookieとは、「Webブラウザによってユーザーのコンピュータに保存される小さなテキストファイル」です。SafariでCookieに関連する問題が発生した場合、標準的な解決策は、Safariの環境設定を開き、「セキュリティ」を選択して「Cookieを表示」ボタンをクリックすることです。ここで、削除したいCookieの名前を見つけて、「削除」をクリックします。
残念ながら、これでCookie関連の問題が解決するとは限りません。以前取り上げたSafariのエラーに対処しようとしたときに、まさにそのことに気づきました。皮肉なことに、Appleのサポートサイト(特に検索結果)のページを読み込もうとすると、様々なエラーメッセージが表示されるのですが、どれも同じように奇妙な内容です。最も一般的なエラーは下の図に示されています。このバグの影響を受けるのは、AppleのサイトとSafariブラウザだけです。

前回この症状について書いたとき、解決策が見つかっていませんでした。そこで、さらに調査を続け、症状を根絶する方法を見つけました。その過程で、SafariにおけるCookieの仕組みについて興味深い事実をいくつか知りました。
まず、エラーメッセージには、ac_historyというCookie項目が直接的な原因である可能性が示唆されていました。Safariの「Cookieを表示」ウィンドウ(下図)にapple.comからのac_history Cookieが表示されていたので、それを削除しました。すると、Safariを終了しなくてもエラーはすぐに消えました。ここまでは順調でした。しかし、しばらくすると、通常1時間も経たないうちに症状が再発しました。問題となっていたac_history Cookieも同様でした。明らかに、これは永続的な解決策ではありませんでした。

次に、apple.com の Cookie をすべて削除してみましたが、結果は同じで、せいぜい一時的な解決策に過ぎませんでした。
ここから少し奇妙なことが起こり始めました。すべてのCookieを削除しようと決めたのですが、Safari(Safariへの信頼が急速に薄れつつありました)ではなく、~/Library/CookiesにあるCookies.plistファイルを削除し、デスクトップに置きました。
Safariを起動したままこの操作をしてみました(推奨されないことは承知しています)。全く効果はありませんでした。実際、Safariの環境設定でCookieリストを表示しても、何も変わっていませんでした。以前から保存されていたCookieもすべてそのまま残っていました。Safariが削除したファイルにアクセスしているに違いないと思い、ファイルを削除しました。しかし、SafariのCookieリストは変化しませんでした!
なるほど!Safariがキャッシュされたデータにアクセスしているようです。Safari -> キャッシュを空にするを選択しましたが、効果はありませんでした。
最後の驚きはこれです。2つの異なるCookies.plistファイルがあるとします。1つは以前のトラブルシューティングで保存した古いファイルで、もう1つは現在Cookiesフォルダにある新しいアクティブなファイルです。古いファイルにはクッキーがぎっしり詰まっていて2.3MBありますが、新しいファイルは4KBとほとんど空っぽです。これはまさに、私がこの問題のトラブルシューティング中に遭遇した状況です。Safariを起動したまま、4KBのファイルをゴミ箱に捨て、2.3MBのファイルをCookiesフォルダにドラッグします。すると、1秒も経たないうちに、2.3MBのファイルは削除されたファイルのデータに置き換えられ、4KBにまでサイズが縮小されます。2.3MBのクッキーアイテムは消え去ったのです!
これを防ぐのは簡単です。スワップを実行する前にSafariを終了してください。次にSafariを起動すると、置き換えたファイルがアクティブになり、データはすべてそのまま残ります。それでも、このような消失現象が起こるとは驚きです。
SafariのCookieに変更を加えると、予期せぬ結果が生じる可能性があることは明らかです。特にSafariの実行中に変更を加えると、なおさらです。ここで再びac_historyのバグの話に戻りますが、Safariの環境設定からバグを修正しようとするのではなく(もちろんSafariの実行中にしかできませんでした)、別の方法を試すことにしました。Safariを終了し、Cookies.plistファイルを削除しました。これでようやく問題は完全に解決しましたが、数MBもの正常なCookieが失われてしまいました。
最終的に、推奨される解決策が見つかりました。Safariを終了し、サードパーティ製のCookie編集ユーティリティ(旧SafariCookieCutterユーティリティなど)を起動します。このユーティリティからac_history Cookieを削除します。あるいは、より安全のために、apple.comのCookieをすべて削除します。次回Safariを起動すると、エラーメッセージは消え、再び表示されることはありません。少なくとも私の場合はそうでした。
ゲストアカウントのバグ
全く別の話になりますが、今週のバグ&フィックス記事を締めくくるにあたり、Snow Leopardで広く報告されているものの稀なバグについて触れずにはいられません。Snow Leopardでゲストアカウントにログイン・ログアウトすると、OSがホームディレクトリ内のすべてのコンテンツ(ゲストアカウントのデータだけでなく)を削除する可能性があるというものです。言うまでもなく、これは被害者にとっては歓迎できない衝撃です。しかし、これは非常に稀なバグであり、Leopardでゲストアカウントを有効にしてからSnow Leopardにアップグレードしたユーザーに限定されます。これらのユーザーの中でも、影響を受けるのはごく少数のようです。Appleはこのバグを認識しており、修正を予定しています。詳細は、Rob GriffithsによるMacworldの記事をご覧ください。