読者です 読者をやめる 読者になる 読者になる

WindowsとMacでファイルを共有するときの注意

あけましておめでとうございます.

今までの記事を見返してみると「です・ます」と「である」が入り混じっていますが,その場の気分で書いているのでとくに修正しない予定です.

新年明けましたが相変わらずMacを購入したことによって起きた問題です.

最近ではDropbox,OneDrive,GoogleDriveなどのクラウドサービスを使っている人が多いと思いますが,この類のサービスを使うときに(USBメモリでファイルを移動させるときも同じかもしれませんが)文字コードの違いが原因でトラブルが発生しました.

日本語での「が」などの濁点が付いている場合に,Windows(やLinux)では「が」で1文字とするのですが,どうやらMacでは「か」+「゛」と分割した文字を結合させて表示しているのです.
他にはドイツ語などのウムラウトや,ハングル文字でも同様の問題が起こるようです.
これはWindowsMacで採用している「Unicode正規化」の手法が異なるのが原因のようです.

WindowsではNFC (Normalization Form Canonical Composition),MacではNFD (Normalization Form Canonical Decomposition)の変種を使っているとのことです.
前者がComposition=結合,後者がDecomposition=分解なので先の事例と
詳しいことはWikipedia (Unicode正規化 - Wikipedia)や少し検索するとヒットする他のブログなどを見てください(他人任せ).

上に挙げた3つのクラウドサービスでは,WindowsではNFCで処理し,MacではNFD(もどき)で処理しているようで,普通に使っていて特に問題は起こりませんでした.(Copyなど他のサービスは使っていないのでわかりません.)
ですが私はこれらの無料サービスでは容量が足りず,かと言って定期的にお金をとられるのも嫌だったので自前でQNAPというメーカーのNASを購入し,それのサービスの1つであるQsyncというソフトウェアを使ってきました.
www.qnap.com

速度は正直遅いものの,モバイル端末でもアクセスできるので非常に重宝していたのですが,これが上記のUnicode正規化の処理をきちんとしてくれませんでした.
起こる現象は以下のような流れです.

・まず,私は元々Windowsを使っていたところにMacを追加しました.
・すると,Macにファイルがコピーされていきます.
・ところが,このファイルは名前がNFDもどきで保存されるため,Qsyncは別のファイルが作られたとしてコピーします.
・最終的にWindows上にもNFDもどきで名付けられたファイルがコピーされます.
エクスプローラーでは見分けがつかないので,一見すると同じ名前のファイルが2つできます.
コマンドプロンプトで確認すると濁点が1文字として表示され,またバックスペースでは濁点だけが先に削除されます)

幾つか検索してみても解決策は見当たらず,ファイル名を英語に整えたり,エンコードを変更しようにもファイルが多すぎで途中で挫折したという話でした.

未解決のことばかり書き連ねていますが,ちゃんと解決したらまた書きますよ.きっと.