AppleはmacOS 10.12.6およびiOS 10.3.3のAPFSでUnicodeのランタイム正規化を導入しています。詳細は以下から。
Appleは本日、Mac/iOSデバイス向けに「macOS Sierra 10.12.6」および「iOS 10.3.3」をリリースしましたが、同バージョンではWWDC 2017のセッション715で発表された通り、Appleの新しいファイルシステム「APFS」で発生していたUnicodeの正規化問題において新たにランタイム正規化が導入されているそうです。
In macOS High Sierra, APFS is normalization-insensitive in both the case-insensitive and case-sensitive variants, using a hash-based native normalization scheme. In iOS 11, APFS is normalization-insensitive as well, using either a native normalization scheme (erase restores only) or runtime normalization scheme (upgrades from previous versions). Runtime normalization will also be available in iOS 10.3.3 and macOS Sierra 10.12.6.
Frequently Asked Questions – Apple Developer
AppleのEric TamuraさんやEagleFilerを開発しているMichael Tsaiさんによると、AppleはiOS 10.3アップデートでファイルシステムを従来のHFS+から新しいファイルシステム「APFS」へ変更しましたが、初期のAPFSではUnicodeの正規化形式(NFD/NFC)の問題により、ファイルにアクセスできない不具合が確認されており、
iOS 10.3.3 and iOS 11 will also be case-sensitive, normalization-preserving, and normalization-sensitive, but they will add runtime normalization. If you try to read a file but don’t have the right normalization in your path, the file system APIs will transparently look for the file using other normalizations. This should give the correct behavior but at a performance cost.
APFS Native Normalization – Michael Tsai
Appleはこの問題を解決するためにiOS 10.3.3およびmacOS 10.12.6でランタイム正規化手法を採用し、読み込もうとしたファイルが正しく正規化されたパスにない場合、ファイルシステムのAPIが他の正規化を使用してファイルを探すようになっているそうです。
また、Appleは今後(macOS 10.13 High Sierra&iOS 11)のAPFSでUnicodeのネイティブ正規化を行うともコメントしているので、興味のある方はセッション715″What’s new in Apple File System”をチェックしてみて下さい。
追記
iOS 10.3.3アップデート後、GoodReaderなどAPFSのUnicode問題でファイルが扱えなくなっていたサードパーティ製アプリもエラーなく利用できるようになっているそうです。
コメント
WindowsとGoodreaderで濁点ファイル名のファイルエラーが無くなったのもこの効果か