「Services for Macintosh」廃止後のMacとの共存(2)

海上忍
2009-12-21 12:23:01
  • このエントリーをはてなブックマークに追加

 Services for Macintosh(SFM)のディスコンには、Active Directoryの普及やMac OS XのSamba標準装備が影響しているであろうことは、前回述べたとおり。Sambaは長年の実績がある安定した実装ということもあり、SFMの時代とは反対にMacをファイルサーバとして使うケースも増えている。

 標準装備となったSMB/CIFSを利用したファイル共有、WindowsとMacのみの環境で運用する場合には設定がほとんど不要なレベルにまで洗練されているが、ほかの共有サービスを混在させようとすると、ファイル/パス名の文字コード正規化処理をめぐる問題が発生することがある。事情が若干複雑なため、ここで整理しておこう。

  • Mac OS Xのパス名
  •  Mac OS Xのパス名の文字コードはUTF-8だが、Unicode Normalization Form D(NFD)と呼ばれる正規化処理が施される。たとえば、「が(U+304C)」は「か(U+304B)」と結合用濁点(U+3099)」により構成される。
  • SMB/CIFSでの正規化処理
  •  WindowsおよびSambaが導入されたほかのOSでは、ファイル名は正規化処理をともなわない「Precomposed UTF-16LE」でやり取りされる。一方Mac OS Xに収録のSambaは、正規化されたPrecomposed UTF-16LEを利用するが、問題なくSMB/CIFSで共有できる。
  • Mac OS Xのiconv
  •  Mac OS Xに収録のiconvには、上述の正規化処理に対応するため、コードセットとして「UTF-8-MAC」が追加されている。これはApple独自の拡張で、ほかのOSに収録のiconvはUTF-8-MACに対応しないことが多い。その結果、UTF-8-MACに対応できないファイル共有サービスは、Macとのやり取りで問題を生じる。

 ざっくりとした言い方になるが、WindowsとMac、およびLinuxが共存するファイル共有環境を構築する場合、SMB/CIFSで統一すればファイル名の正規化処理を意識せずにすむ。ここにLinuxをサーバとしたほかのサービス、たとえばNFSやAFP(Netatalk)を提供しようとすると、iconvにUTF-8-MACを追加するなどの対策が必要となるわけだ。

Mac OS Xではファイル/パス名に独特な正規化処理を施すが、SMB/CIFSを使用するかぎり問題にならない Mac OS Xではファイル/パス名に独特な正規化処理を施すが、SMB/CIFSを使用するかぎり問題にならない
  • コメント(1件)
#1 anonymous   2009-12-21 20:22:44
netatalkは自前で正規化のテーブルを持っているため、iconvにUTF-8-MACを追加する必要性はありません。
  • 新着記事
  • 特集
  • ブログ