続・iPhotoライブラリの一部の写真が iPhoneに同期しない

iPhotoライブラリ関連ファイルをのぞいてみると:

この中で唯一 human readable なのは AlbumData.xml だったのでとりあえず見てみることに。

/Volumes/PBHD2/ユーザ名/Pictures/iPhoto Library/2005/11/23/DSCF0069.JPG

というような記述があり、写真データの絶対パスが書いてあります。しかしなんで絶対パス
PowerBookのディスクを交換した後にパーティションを切ってデータ格納位置を変えているので、絶対パスを使われるとなんかヤバそうな香り。で、さらに AlbumData.xml を後ろのほうまで見てみるとやっぱり昔のパス記述を発見。以前はパーティションを切っておらず、/Data の下に画像データを置いていました。

/Data/Pictures/iPhoto Library/2005/11/20/PB200285.JPG

こういうのがいくつあるか数えてみました。ターミナルで:

$ grep -e \/Data AlbumData.xml | grep -v Originals | grep -v Thumbs | wc
389 779 28796

サムネールおよび写真編集時にできる Originalファイルを除く /Data の出現回数をカウントしています。
389個か。写真の総数と iTunesでの表示数の差にほぼ一致。でも、いつパスを書き換えてくれたんだろうか。
iPhoneで表示されない写真を iPhotoで編集すると上記カウントが減ります。ふーむ。


このあたりの情報をあさってみると、アップルのサイトにありました:
iPhoto:「iPhoto Library」フォルダを新しい場所に移動する方法」
http://support.apple.com/kb/HT1229?viewlocale=ja_JP
これによれば、ライブラリを移動したら option を押しながら iPhoto を起動し、ライブラリの位置を iPhoto に教えることになっているということ。
そうか。そもそも私はこの方法に従っていません。まずいなこりゃ。
しかし多くの写真のパスは正しい値が書かれているというのもふしぎな話。何かしら操作する必要のあった写真だけパスを書き換えてくれていたのだとすると話がわかりやすいけど、ディスク交換後に2000枚以上の写真をいじったりはしていないし、アルバム名やキーワードを変えたりもしてない。


ライブラリを移動したわけではないのにおかしなことになった場合の対応が以下に書かれています:
iLife:ほかの iLife アプリケーションで iPhoto ファイルが表示されない」
http://support.apple.com/kb/TS1192?viewlocale=ja_JP
一部の写真が iPhoneに同期しないという症状は上記ページには書いてませんが、状況は似通っています。


対策として示されているのは:

  • プレファレンスを作り直す----Preferences/com.apple.iApps.plist ファイルを削除してから iPhotoを起動する。
  • XMLファイルを作り直す----AlbumData.xml を別の場所に移動させてから iPhoto を起動し、メニューの「新規アルバム」選ぶ。
  • キーワードを変更する。

やってみたのですが、結論から言うと、最初のふたつはダメ。

  • プレファレンスファイルを削除して iPhoto 起動 → 変化なし。
  • AlbumData.xml を別の場所に移動させてから iPhoto を起動 → 間違ったパスの XMLデータが作られます。

で、いまさらながらって感じですがライブラリ移動時のしきたりに従ってみました。

  • Optionを押しながら iPhotoを起動してライブラリの場所を教える → やっぱり間違ったパスの XMLデータが作られます。

さらに、

  • AlbumData.xml をエディタで編集して正しいパスに書き換えて iPhotoを起動 → せっかく直したところが元の間違ったパスに書き換えられます。

iPhotoXML ファイルを作る際には、写真データの実際の構造をチェックせず別のメタデータを見ているだけなのでしょう。


続く