エイリアスとシンボリックリンク
エイリアスとシンボリックリンクは、ファイルやフォルダへの軽量な参照です。エイリアスはMac OS標準(HFS)およびMac OS拡張(HFS+)ボリュームフォーマットに関連付けられています。シンボリックリンクはHFS+とUFSファイルシステムの機能です。エイリアスとシンボリックリンクはどちらも、ファイルやフォルダの複数のコピーを必要とせずに、これらの項目への複数の参照を可能にします。
Mac OS Xv10.2より前では、エイリアスとシンボリックリンクは、参照するファイルが移動されたり変更されたりしたときに、非常に異なる振る舞いをとっていました。
エイリアスの意味
HFSおよびHFS+ファイルシステム上では、各ファイルとフォルダはユニークな、継続的な同一性【identity、以下ID】を持っています。エイリアスは、同一ボリューム上のファイルやフォルダを見つけるために、パス名の情報に加えてこのIDを用います。
Mac OS Xの10.2より前のバージョンでは、エイリアスはファイルやフォルダを特定する際に、最初にそのユニークIDを用いて、次にパス名を用いました。Mac OS X 10.2で始める際には、エイリアスはこの検索順を逆転し、パス名は最初に用いて、ユニークIDを二番目に用いるようにしました。
これが意味しているのは、もしあなたがファイルを移動し、全く同じ名前のファイルで置き換えた場合、元のファイルへのエイリアスは、今度は新しいファイルを指すということです。
同様に、もしあなたがファイルを同一ボリューム上で(置き換えずに)移動したら、エイリアスはそのファイルを特定するために、ユニークIDを使用します。
ファイルやフォルダを移動したとき、エイリアスはそのパス情報かユニークIDのどちらかを、その変更に合わせるために更新することがあります。
もし、ファイルが同一ボリューム上のどこかに移動したら、エイリアスはその内部レコードを、そのファイルのための新しいパス情報で更新します。
同様に、もし元のファイルが同じ名前の、ただしユニークIDが異なるファイルで置き換えられた場合には、エイリアスはその内部レコードを、新しいファイルのユニークIDで更新します。
シンボリックリンクの意味
エイリアスは最初にファイルの位置を決定するためにファイルシステムパスを使用するため、今ではシンボリックリンクと同様の振る舞いを提供するようになっています。
シンボリックリンクはファイルを特定するために、完全にパス情報のみに依存しています。もしあなたが、ファイルを置き換えずに同一ボリューム上のどこかに移動したら、エイリアスは追従するのに対して、そのファイルへのシンボリックリンクは壊れてしまいます。
シンボリックリンクを修復する唯一の方法は、削除してから新しく作るしかありません。
破損エイリアスを避ける
現在では、Finderおよびその他のシステムアプリケーションは、このパス名優先の振る舞いを持つエイリアスを使用しています。けれども、今でもアプリケーションはAlias Managerのメソッドを用いて、エイリアスをユニークID優先に決定することができます。
もしあなたのアプリケーションが、Mac OS Xv10.2より前のMac OS Xのバージョンに対応するのであれば、ファイルを変更する際にいくつかのガイドラインに従う必要があります。
ひとつめは、ファイルを編集するときは、既存のファイルを変更します。 【ファイルの保存失敗に備えて、一時ファイルを編集してから既存のファイルと置き換える、というやり方だとユニークIDが変化してしまうため、元のファイルに上書きすべしという意味か。多分。】
ふたつめは、もしあなたがファイルを新しいバージョンで明確に置き換える必要があれば、古いファイルを新しいファイルで交換するためにFSExchangeObjectsを使用してください。【古いファイルにエイリアスが追従しないように】
NSDocumentクラスは書類ファイルの更新のために同様の技法を既に用いているため、可能なときはいつでもエイリアスを維持しています。