ファイルシステムガイドライン
以下のセクションでは、あなたのアプリケーションの、Mac OS Xのファイルシステムとのやり取りを改善するための方法についての、ガイドラインを提供しています。
ファイル保存のためのガイドライン
あなたが書類を保存するときは、常に、あなたがその書類のために作成するファイルに、以下の情報を確実に含めるべきです…
- タイプコード
- クリエータコード
- ファイル名拡張子
Mac OS Xのファイルシステムにおけるすべてのファイルは、ファイル名拡張子を持つべきです。Finderはファイル名拡張子を、ファイルの種類を見分ける材料として用います。
より重要な点としては、他のプラットフォームはファイルの種類を見分けるために、ファイル名拡張子だけを使用しています。ネットワーク転送プログラムのような、いくつかのプログラムは、ファイルをどの方法で転送するかを判断するために、よくファイル名拡張子を用いています。
あなたのアプリケーションのデータファイルのためにファイル名拡張子を提供することは、エンドユーザにとって、他のプラットフォーム上のユーザとあなたのデータファイルを交換することを容易にします。
同様に、タイプコードとクリエータコードは、旧Mac OS システム上のデータの交換を容易にします。
これらに対応するための更なるガイドラインを含む、ファイル名拡張子についての詳細は、「ファイル名拡張子」(39ページ)を参照してください。
表示名を使用しましょう
表示名は、Mac OS Xにおけるユーザ体験を向上させ、またすべてのアプリケーションによって対応されるべきものです。表示名とは、ユーザに対してのみ、表示することを意図された名前です。あなたは表示名をファイルを開くためのあなたのコードの中で使用することはできません。その代わり、表示名はファイルとフォルダの名前を動的に各国語化すること、そしてファイルについての識別情報を一切失うことなく、ファイル名拡張子を隠すことを可能にします。
どのように表示名に対応するかの詳細は、「表示名」(43ページ)を参照してください。
大文字・小文字の区別を想定しましょう
あなたが大文字・小文字を区別しないファイルの比較や検索を行うことができる、という思い込みを避けてください。Mac OS Xは、ファイル同士を区別するために大文字・小文字の区別を用いる、多数のファイルシステムに対応しています。 大文字・小文字を区別しない(HFS+といった)ファイルシステム上であっても、ファイル名の比較に大文字・小文字の区別が用いられるような機会はやはり存在しています。たとえば、CFBundleとNSBundleは、名前付きリソースのためにバンドル ディレクトリを検索するときに、大文字・小文字の区別に配慮します。
あなたのソフトウェアを、(UFSといった)ボリューム上で、ファイルを大文字・小文字の区別で見分けるかどうかをテストしてみましょう。 【注:10.4では大文字・小文字を区別するHFS+が使用できる。】
あなたが必要なものだけを得ましょう
ファイルシステムを扱うコードを書くとき、性能は重要な検討事項です。あなたがデータを要求したときから、ディスクの読み取り開始の準備ができるまでであっても、数百万サイクルのコンピューティング時間がかかります。加えて、異なるファイルシステムは異なる形でデータを記録するので、HFS+ボリュームでディレクトリの内容の大きさをキャッシュしていたとしても、UFSボリュームは要求されるたびに値を計算するような場合があります。
あなたのソフトウェアを設計する際には、確実に、あなたが取得するデータはあなたが実際に使用するデータとして、あなたが使用するデータはあなたが実際に必要とするデータとしてください。ファイルシステムのオーバーヘッドを縮小することにより、あなたのアプリケーションの性能を著しく向上させることができます。
あなたのファイル関連のコードの性能を、計測および向上させるための詳細は、File-System Performance Guidelinesを参照してください。
送信先ボリュームの種類に配慮しましょう
ユーザのファイルは、ネットワークボリューム、モバイルボリューム、もしくはローカルボリューム上に属していることがあります。もしファイルがネットワークボリューム上にあれば、これらへの頻繁なアクセスは、性能に大きなペナルティを負わせることになるでしょう。もしネットワークボリュームが(Xsanの配列のような)記録領域ネットワークの一部であれば、配列が最高の性能を発揮することを保障するために、追加の手順を踏む必要があるでしょう。特に、あなたは以下のことを行うべきです…
- もし、あなたのファイル処理コードを、特定のファイルシステム上で最大の性能を発揮するように最適化する必要があれば、ファイルシステムに関する情報を得るために、GetVolParmsか、statfsを使用してください。もし使用可能であれば、専用API群を使用しましょう。
- あなたがアクセスする前に必要なものだけをロックしましょう。そして、できるだけすぐに、確実にこれらを開放しましょう。
- ブートボリュームを除き、ボリュームが常に存在していると仮定してはいけません。携帯型の装置はユーザによっていつでも取り外されることがあります。もし、特定のボリュームがシステムから取り外されたことを知る必要があれば、I/O Kit の通知に登録しましょう。
改行のガイドライン
Mac OS Xは、行の終わりを表すために、\n【バックスラッシュ-n】の文字を用います。改行文字【line ending characters】を書き出すMac OS Xのメソッドと関数のほとんどは、この文字だけを書き出します。あなた自身のコードでは、内容を書き出すときに、同じようにするべきです。けれども、内容を読み取るときには、あなたのコードは\n、\r、または\r\n【LF(UNIX)、CR(旧Mac)、CRLF(MS-DOS、Windows)】の改行を含む内容を扱う用意ができている必要があります。こうした他の改行を読めるようにすることは、他のプラットフォームとの相互処理可能性を促進させます。