アプリケーションのドックアイコンをクリックして押し続けると、ドックメニューがポップアップ表示されます。通常、アプリケーションが最近開いたドキュメントのリストが表示されます(ドキュメントの読み込みをサポートしている場合)。これらのリストは、そのようなファイルを素早く見つけて開くための最も便利な方法だと感じており、アプリケーションのファイルメニューにある「最近開いたファイルを開く」コマンドよりも優れています。ただし、一つだけ問題があります。ドックメニューのリストは時々乱れてしまうのです。特に、新しいドキュメントを開いてもリストが更新されず、古いリストのままになってしまうことがよくあります。一方、「最近開いたファイルを開く」コマンドでアクセスできるファイルリストは常に正確です。
ドックメニューの不具合は、私が最も頻繁に使用する2つのアプリ、OS Xのテキストエディットとプレビューで特に発生しています。一見すると、症状はかなり奇妙に見えます。2つのリストは同じデータから読み込まれているはずなので、常に同期しているはずだと考えていました。ところが、なぜ同期していないのかが謎でした。そこで調べてみることにしました。例としてテキストエディットに焦点を当て、以下のことが分かりました。
最近使ったアイテムの「データベース」を見つける
ホームディレクトリのライブラリフォルダに移動します。簡単な方法は、Optionキーを押しながらFinderの「移動」メニューを選択することです。ライブラリ項目が表示されるので、それを選択します。
フォルダ内に入ったら、「Preferences」フォルダを見つけて開きます。そこから「検索」(Command-F)コマンドを使って、「textedit」という単語を含むすべての項目を検索します。
複数のファイルが表示される可能性があります。最も注目すべきはcom.apple.TextEdit.LSSharedFileList.plistです。このファイルには、TextEdit で最近開いたファイルのリストが含まれています。インストールされているソフトウェアによっては、このファイルを開いてリストを表示するのが難しい場合があります。Apple の OS X 開発ソフトウェアがインストールされている場合は、Xcode で設定ファイルを開くことができます。そうでない場合は、 PlistEdit Proや PrefEditなどのサードパーティ製アプリが必要です。

plistファイルのリストと「最近使ったファイルを開く」コマンドのリストを比較すると、2つのリストが同一であることがわかります(少なくとも私の場合は常に同一でした)。同様に、「最近使ったファイル」から「ファイルを消去」サブコマンドを選択すると、両方の場所から既存のドキュメントが削除されているのがわかるはずです。これはすべて正常な動作です。
環境設定フォルダにあると思われる関連ファイルは、com.apple.TextEdit.SandboxedPersistentURLs.LSSharedFileList.plistです。100%確実ではありませんが、このファイルには、TextEditで現在開いているファイルのリストが含まれているようです。TextEditはおそらく、アプリケーションを終了して再起動した後にどのドキュメントを自動的に再度開くかを判断するためにこのファイルを使用していると思われます(システム環境設定の「一般」パネルでこの機能を有効にしている場合)。
また、textedit の設定ファイルの中に、 lockedfile.plistで終わるものが1つ以上見つかるかもしれません。これらは「一時的な」キャッシュファイルで、複数のアプリケーションが同時に設定ファイルにアクセスしようとした場合に問題が発生するのを防ぐために使用されます。これらのロックファイル項目について詳しくは、MacFixIt の優れた記事をご覧ください。
問題は、これらのファイルはどれも、テキストエディットのドックメニューのリストの正確性と更新にほとんど影響を与えていないように見えることです。例えば、これらの設定ファイルの一部またはすべてを削除しても、ドックメニューのリストは変更されません。
ドックからの退出
ライブラリフォルダで答えを探すのを諦め、Dock自体に目を向けました。具体的には、TextEditを終了し、Dockからアイコンを削除しました( TextEditのDockメニューから「オプション」>「Dockから削除」を選択)。次にTextEditを起動すると、嬉しい知らせがありました。TextEditのDockメニューのリストが「最近使った項目」のリストと一致していたのです。これですべての場所が正しく同期されました。その後、TextEditのオプションに戻り、「Dockに保持」を選択しました。
あるいは、すべてのアプリケーションDockメニューの「最近使った項目」リストを一括更新できることを発見しました。これを行うには、ターミナルを起動します。そこで「killall Dock」と入力します。これにより、Dockが強制的に終了し、再起動します。これで、すべてのDockアプリケーションリストが更新され、「ファイル」メニューの「最近使った項目」リストと同期しているはずです。
一つ問題が残りました。この修正は必ずしも永続的なものではありません。初めてこの修正を試した際、TextEditでファイルを再度開くと、Dockメニューのリストがすぐに古い状態(同期されていない状態)に戻ってしまいました。何度か修正を繰り返した後、ようやく効果が現れたようです。今のところ、私のリストはすべて同期しており、今もその状態が続いています。しかし、過去の経緯を考えると、この状態が長く続くとは思えません。
結局のところ、誤ったドックデータがどこにキャッシュされているのか、また症状が再発しないようにするにはどうすればよいのか、まだ正確にはわかりません。今のところ私にできる最善のことは、症状が再発するたびに修正プログラムを再適用することです。ウェブ上で確認した報告によると、これはAppleがまだ修正していない既知のOS X 10.8のバグのようです。