ITのベストプラクティスは時々変化しますが、テキストファイルの特定の不可視文字の管理はその一例です。EOL(End of Line)文字は、特にバージョン管理システム統合の目的で進化してきました。同じように、UnicodeテキストファイルのBOM(Byte Order Mark)は、あまり使われなくなってきています。
4D v19 R2では、4Dはこれらのベストプラクティスに沿ってスムーズに進化しており、より柔軟な対応が可能です。
リマインダ
行末(EOL)
テキストファイルの行は、EOL(End of Line)文字で区切られていることはご存じでしょう。Windowsでは、これは2つの文字の組み合わせになっています。
- キャリッジリターン(#13、CRと命名)と
- ラインフィード(#10、LF)です。
macOSでは、従来のCR文字でした。
Gitのようなバージョン管理システムでは、CRをEOL文字として管理できないため、LFを使う必要がある。
バイトオーダーマーク(BOM)
Unicodeテキストファイルには、使用する文字セットを定義するByte Order Markという見えない見出しバイトがあることもご存じでしょう。
4Dは、Unicodeを導入する際、デフォルトでBOMを持つテキストファイルを書くことで、現在のベストプラクティスに従いました。しかし、UTF-8が標準的なテキストファイルのフォーマットになりつつあるため、BOMはあまり使われなくなってきています。
テキストファイルに関する新しい4D規則
今後、4Dは、トレンドに従って、BOMなしでテキストファイルを書き込みます。また、macOSでは、4DはLFをEOL文字として使用します。これは、4DSettings、4dm、4DFormなど、4Dで書かれた全てのファイルに対して、完全に自動で行われます。
以前の4Dバージョンでファイルを開く場合、たとえ4D v19 R2で書かれたものであっても、問題は発生しません。これらの以前のバージョンは、BOMなしで、EOL文字としてLFを使うファイルを開くことができたからです。
互換性の設定
4Dの動作に従いたいですか?新しい互換性設定を使用すると、次のことが可能になります。 TEXT TO DOCUMENTFilesetText()オプションの “charSet “と “breakMode “パラメータがない場合、macOSでBOMなしでファイルを生成し、EOL文字としてLFを使用することができます 。これは完全に自動化されており、この新しい動作の恩恵を受けるためにソースコードを書き換える必要はありません。
新しい文字セット
新しい互換性設定は、以下のコマンドに適用されます。 TEXT TO DOCUMENTおよびFile.setText()が、”charSet” または “breakMode” オプション・パラメーターなしで使用された場合、適用されます。
EOL文字については、変更はありません。breakMode “パラメータを使用して強制することができます。
同じように、以下の方法で生成されたファイルに、EOL文字が含まれるかどうかを正確に定義したい場合もあるでしょう。 TEXT TO DOCUMENTとFile.setText()が生成するファイルがBOMを含んでいるかどうかを正確に定義したい場合もあります。そのためには、”UTF-8-no-bom” や “UTF-16-no-bom” など、”-no-bom” で終わる Unicode 文字セットを定義して、BOM のないファイルを書き込むようにします。BOM付きのファイルを書き込むには、”UTF-8 “や “UTF-16 “などの”-no-bom “を付けない既存の文字セットを引き続き使用することができます。