🙌

pCloudとMusicBeeで起こったNFC NFD問題

2024/02/20に公開

NFC NFD問題とは

WindowsとMacでは、濁点・半濁点の処理方法が違うのであーる
簡単に言うと

  • Windows: ぱぱぱ
  • Mac: ぱぱぱ

こんな感じで、Macは濁点・半濁点をひとつの文字として認識してしまうのだ!
ナンデジャ!!

参考

ほりしょー「MacファイルシステムにおけるUnicode正規化の闇」
https://zenn.dev/hacobell_dev/articles/68ccc92bffd6cc

事象

事の発端は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「同一名のファイルが複数存在します!!」

  • え???????

また、別のファイルでは

image
改行の位置おかしくね?

ここで気づく
「濁点半濁点が悪さをしている…?」

pCloudのWebGUIでファイルを確認する

image
濁点半濁点ありのやつだけ重複してる…

ここで出会う、NFC NFD問題

MusicBeeでエラーが出たのは

MusicBeeはNFD形式でファイルが存在してもNFC形式のパスでファイルを探そうとする
そのため、見つからない

Syncthingでエラーが出たのは

NFD形式のファイルはNFC形式に変換して処理する
そのため、同一ファイルが複数ある事になった
https://github.com/syncthing/syncthing/issues/430

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を挟めば、いい感じにならんかなぁ…と

GitHubで編集を提案

Discussion