pCloudとMusicBeeで起こったNFC NFD問題
NFC NFD問題とは
WindowsとMacでは、濁点・半濁点の処理方法が違うのであーる
簡単に言うと
- Windows: ぱぱぱ
- Mac: ぱぱぱ
こんな感じで、Macは濁点・半濁点をひとつの文字として認識してしまうのだ!
ナンデジャ!!
参考
ほりしょー「MacファイルシステムにおけるUnicode正規化の闇」
事象
事の発端はpCloud
2024年のバレンタイン企画、60,000円で2TBをライフタイム契約すれば、お友達に同じプランをプレゼント
友達と協力し、実質30,000円で、2TB Lifetimeプランを契約
よし!NASの中身をpCloudに全部移そう!!
俺のMusicLibraryをアップロード
俺はDJをやってるから、ローカルに楽曲が色々保存されてる
曲の管理にはMusicBeeを使ってる
その中には当然、濁点・半濁点が含まれる
- 例: キズナアイ、ウマ娘プリティーダービー、東京ドギマギ
ちなみに元々は
ノートPC(Mac)、デスクトップPC(Windows)、NAS(Linux)の3OSで同期
Syncthingを利用
pCloudにアップロード後、SyncthingとMusicBeeに異変が
MusicBee「ファイルのパスが見つかりません!!」
- どんどんと俺のライブラリから曲が消えてゆく…
- なんでぇ????
Syncthing「同一名のファイルが複数存在します!!」
- え???????
また、別のファイルでは
改行の位置おかしくね?
ここで気づく
「濁点半濁点が悪さをしている…?」
pCloudのWebGUIでファイルを確認する
濁点半濁点ありのやつだけ重複してる…
ここで出会う、NFC NFD問題
MusicBeeでエラーが出たのは
MusicBeeはNFD形式でファイルが存在してもNFC形式のパスでファイルを探そうとする
そのため、見つからない
Syncthingでエラーが出たのは
NFD形式のファイルはNFC形式に変換して処理する
そのため、同一ファイルが複数ある事になった
File "..." contains non-NFC UTF-8 sequences and cannot be synced. Consider renaming.
非NFCの文字が含まれてるとエラー出してくれるみたい
結局この件、悪いのは誰?
見方によっては誰が悪いとも取れるよなぁ…
pCloudが悪い
Dropboxとかだと、NFC NFDのケアをしてくれる
pCloudが、東京ドギマギ(NFC)と東京ドギマギ(NFD)を同一ファイルとして扱ってくれれば、この問題は起きなかった
MusicBeeが悪い
MusicBeeはNFD形式でファイルが存在してもNFC形式のパスでファイルを探そうとする
この仕様はおかしい
まあ、普通に使ってればWindows機でNFD形式のファイルが生成されることはないから、仕方ないかもしれんけど
Macが悪い
絶対これだろ
なんでNFDなんて規格を使うんですか????
対処法
現状取ってる対処法
Windows - Mac間の同期にはSyncthing
Windows - pCloud間は同期ではなく、バックアップ機能
未実施だけど、効果の有りそうな対処法
pCloudの同期に、NASを挟む
NASにpCloudCLIを入れて、3端末で同期を行う
俺の使ってるNAS(Synology)は、NFDをNFCに自動変換してくれる
- なんて素晴らしい仕様なの!!
- ちゅき!!!
変換役としてNASを挟めば、いい感じにならんかなぁ…と
Discussion