ドキュメント管理をgit等のバージョン管理システムを利用すると便利です。
ただ、日本語ファイル名を扱うときは注意が必要です。
というのも、Macは通常ファイル名では、「ガ」などの濁音を「カ」「"」の2文字を使って内部のデータを表現します。
通称でUTF-8-Macとか呼ばれたりもしますが、独自の文字コードではなく、UTF-8自体のNFD形式の正規化という仕様です。
ちなみにWindowsなどはNFC形式という「ガ」は「ガ」という一つの文字コードで表します。こっちの方が違和感が無いですね。
で、問題になるのが、Macで日本語ファイル名を作ったり、リネームしたりすると漏れ無くNFDで保管されるので、git上でもNFCではなく、NFDで保存されるので、ファイル名がぶっ壊れます。
Windowsも最近はExploreとかは対応してるので、一見はあまり問題ないんですが、一部のツールが正常に動作しなかったりと結構めんどくさい...
1個や2個なら手でちまちま直せば良いんですが、Mac上でrevert commitとかすると、一括してまとめて壊れるので、とてもじゃないけど、手で直せなくなります。
なので、こんなかんじのコードで対応します。
static void parse(File root) {
for (File f : root.listFiles()) {
String name = f.toString();
String nfcName = Normalizer.normalize(name, Normalizer.Form.NFC);
if (f.isDirectory()) {
parse(f);
}
if(!name.equals(nfcName)){
System.out.println("rename from " + name + " to " + nfcName);
f.renameTo(new File(nfcName));
}
}
}
単純にファイル名を再帰的に読み込んで、nfc形式でなければnfcにリネームするというだけのシンプルなプログラムです。
今回はJavaで書きましたが、ちょっと調べてみた感じgoやrubyでも簡単に書けそうです。UTF-8に対応してる最近の言語なら、ライブラリレベルでNormalizationの仕様を持ってる可能性が高いので、対応は簡単です。
それではHappy Hacking!