Mac + NAS だとファイル名制限が最長 42 文字になる件について


先に結論から書いておこう。次の条件だとファイル名の文字数についての制限がかなり厳しくなってしまう。

  • OS が Mac である。
  • Linux ベースの NAS を使っている。
  • (半)濁点の付いたひらがな・カタカナを多用する。

上記の条件で最悪の場合、ファイル名には 42 文字という制限がかかってしまうのだ。

いつものようにエンコード

パンティ&ストッキングwithガーターベルト」の 10 話目をエンコしたときのこと、ファイル名をこんな感じにして iTunes に登録しようとするとうまく行かない。

パンティ&ストッキングwithガーターベルト 10 「インナーブリーフ/チャック・トゥ・ザ・フューチャー/チャック・トゥ・ザ・フューチャー PART2/チャック・トゥ・ザ・フューチャー PART3/HELP!二人はエンジェル」.mp4

101226-0003.png

こんな感じで Finder にはきちんと表示されるのに、ファイルを iTunes にドラッグ & ドロップすると、しばらくガリガリやった後で登録されないのだ。

ひょっとして……と思って、ファイル名を削ると登録成功。これは Mac OS X(正確には HFS+)のファイル名における仕様、及び、NAS で使っているファイルシステムによるものだった。

HFS+ におけるファイル名の制限

現在の Mac OS X で使われているファイルシステムは HFS+ である。

HFS Plus – Wikipedia
http://ja.wikipedia.org/wiki/HFS%2B

Wikipedia によると、ファイル名の制限は Unicode(UTF-16)で最大 255 文字となっている。件のファイル名は 117 文字しかないので余裕……かと思うとそうでもない。

Mac OS X におけるファイル名に関するメモ(NFC, NFD等)
http://www.sakito.com/2010/05/mac-os-x-normalization.html

リンク先にある通り、Mac においては濁音・半濁音をも一文字とカウントしなくてはならない。つまり、これは 126 文字が正しい。

Linux におけるファイル名の制限

Linux ベースの NAS だと制限がきつくなる。Linux においては ext3、ext4、XFS などのファイルシステムが使われる。

ext3 – Wikipedia
http://ja.wikipedia.org/wiki/Ext3

ext4 – Wikipedia
http://ja.wikipedia.org/wiki/Ext4

XFS – Wikipedia
http://ja.wikipedia.org/wiki/XFS

NTFS,ext3,ReiserFS等のファイル名の長さの話
http://blog.livedoor.jp/nig_luce/archives/51183894.html

ファイル名/フォルダ名の文字数の上限 + 最大パス名長
http://www.k5.dion.ne.jp/~r-f/sicklylife/memo/ubuntu1004/hdd.html#filename_length

これらのファイルシステムにおいては、ファイル名はUTF-8 で最大 255 バイトしか扱えない(リンク先にもあるとおり、これはファイルシステムと言うより Linux という OS による制限でもある。)。上の動画のファイル名は数えると 318 バイトあった。どおりで登録できないわけである。

正規化も加味すると、UTF-8 ではひらがな・カタカナ・漢字を 3 〜 6 バイトで表すことになる。最悪の場合、つまりファイル名がすべて濁音のひらがななどだった場合、使える文字数はたった 42 文字になってしまうのだ。これは結構きつい。

対策

対策……とは言っても大したことはできない。

悪魔に魂を売って Windows を使う
Windows では濁音をそのまま扱うのでひらがな・カタカナ・漢字は 3 〜 4 バイトに収まる。これでファイル名の上限は 63 〜 85 文字にまで増える。
NAS には HFS+ か NTFS を使う
別にこの 2 つに限らないが、ファイル名に 255 バイトではなく、255 文字使えるファイルシステムなら何でもいい。
とはいえ、個人向けの NAS でこの 2 つを使えるものは聞いたことがないから、自分で鯖立てるしかないのかな……。

アニメにおける長い題名

おまけ。アニメの各話タイトルの長さ記録では高松信司監督の 2 作品が有名(?)である。

銀魂 第 75 話

仕事のグチは家でこぼさず外でこぼせ!って言うからちょっとこぼさせてもらうけどね「侍の国」僕らの国がそう呼ばれていたのは今は昔の話…とか言って始まったこのアニメもはや一年半。あんな事こんな事いろんな事があったよね。で、そろそろ色々振り返ってもいいかなーと思ったのに「チェッ、なんだよ総集編かよ、手抜きじゃね?」とかアニメだって作るの大変なんだから文句言うのやめなさい!

文字数 バイト数(UTF-8 NFC) バイト数(UTF-8 NFD)
183 543 591
スクールランブル 第 1 期 第 26 話

突然の「さよなら」…迷い込んだラビリンス…あなたはだれ?…教えて。「すれちがい」「片想い」とどけ、ボクの気持ち。とどけ、ワタシの想い。たぶん一度しかない季節、青春の1ページ。これが最後のチャンス、確かめたい…キミの気持ち。伝わる言葉、伝わらない想い。あの日の告白、永遠の一日、だけど…いつまでも続いていく、わたしたちの「いま」。そして明日へ…「スクールランブルフォーエバー」

文字数 バイト数(UTF-8 NFC) バイト数(UTF-8 NFD)
187 557 605

はい。むちゃくちゃです。タイトルで 600 バイトオーバー って正気の沙汰じゃないね。こういうファイル名がつけたいときは HFS+(Mac)か NTFS(Windows)を使うようにするしか方法はないだろう。

CropImage.png

コメントを残す