OSTRACISM CO.

iTunesあるいはSoundJAMのID3タグにおける日本語の扱いの混乱について


 おくればせながら、この件に関する情報はかなり不正確なものが多いようなので。

1. 問題の本質

 端的に表現すればID3v1.0/v1.1のタイトル名、アルバム名、アーティスト名に使う文字コードに何を使うかの問題です。現実として、Windows向けのツールは全てAPIネイティブな文字コードをそのまま入れています。ほとんどのツールは欧米で作成されているため、事実上そこに入っている文字コードはWindows-1252(Windows西欧、Code Page 1252、Windows ANSI文字コード表)と想定されます。
 iTunesはMacintoshのソフトなので、欧米ではMacRomanと呼ばれるApple拡張ASCIIコードがAPIネイティブな文字コードであり、それをLatin-1(ISO-8859-1)に変換してID3タグを作成します。
 Windows-1252はISO-8859-1のスーパーセットで、ようはISO-8859-1の文字セットはWindows-1252に完全に含まれるため、欧米では概ねこの方法がWindowsと互換性を保つ最善の解決方法といえます。

 ところがiTunesを日本語にローカライズする際、MacRomanからLatin-1に変換するコードがそのまま残ってしまいました。Macintoshの日本におけるAPIネイティブな文字コードはShift-JISであり、MacRomanではありません。だのにShift-JISをMacRomanとみなしてLatin-1に変換してしまいます。こんなタグが他環境のツールで読めるはずがありません。
 また、iTunesはフォント決め打ちなので日本語版ではそもそもMacRomanを入力できません。日本語版でMacRomanからLatin-1に変換するのは単純に間違った動作なのです。

2. 誤解

 SoundJAM(iTunes)開発チームが「我々はID3の仕様に沿っている。正しいのは我々だ」と主張している(していた)とよく紹介されていますが、その元の主張のWebページが見当たりません。原文を読んでみたいのですが、どこかに残っていませんか? 主張を取り下げたのならそれでもいいのですが、いまだiTunes日本語版の実装は上記問題点において正しい解決に至っていません。

 で、その伝聞情報の主張の裏をとるため、ID3v1.0/v1.1の仕様書をさがしたところ、見つかったのは以下のページです
http://alternic.net/drafts/drafts-n-o/draft-nilsson-id3-00.html
 これはID3v2.xの仕様を策定しているMartin Nilssonによる仕様書です。RFCとして書いたようですが、ドラフトでかつ期限切れです。でもたぶんこれが最も詳しい仕様です。
 この仕様では「TAG」という識別文字および「年」にISO-8859-1を使えと書いてありますが、それ以外は全く規定されていません。タイトル名、アルバム名、アーティスト名にどんな文字コードを使うかの記載は全くありません。そもそも「TAG」とか「年(数字)」だって、ASCIIしか使いようがないわけで、ISO-8859-1の出る幕はないのです。
 Eric Kempによるオリジナルな仕様はさらにあっさりしており、ようは構造体を1つ定義しただけです。

 SoundJAM開発チームが「ID3の仕様に沿っている」というのは間違った主張であり、「そんな仕様は存在しない」というのが事実のようです。「西欧ではこの変換をしないと他環境と共存できないからだ」とはっきり言ってくれればいいのですが。

 ID3v1.xにおける仕様通りの実装は「なにもしない」であり、「なにもしない」と「MacRomanをLatin-1に変換」のどちらをデフォルトの動作にするかはユーザの選択に任せるのが正しい態度です。

 ちなみに、iTunesの持っているMacRomanとISO-8859-1の間の変換に使われているテーブル('ISOM' 4000)を見ましたが、ISO-8859-1で定義されていない文字コードがWindows-1252の相当文字コードになるわけではありません(例えばoとeがくっついたような文字)。想定ターゲットが何なのかは不明です。どうせやるならWindowsと合わせれば良いのですがこのあたりも中途半端です。

3. 表現

 iTunesの中途半端な対策として、「ID3タグを変換」コマンドがあります。ここに「ASCIIからISO Latin-1へ」といった機能がありますが、この表現を見てクラクラしたのは私ばかりではないでしょう。これがどういった機能のことを表現しているのかかなり考えないとわかりませんでした。問題は「ASCII」という表現です。ここでいうASCIIって何でしょう?
 一般的にMacintoshの欧文文字コードはMacRomanと言い、これが最も通じる言葉です。ASCIIはその一部($00〜$7F)であり、ASCIIと書いてMacRomanを示すなどという腐った表現をいままで見たことがありません。  少なくともこの一点で「SaundJAM開発チームは文字コードのことなんて、なんにも解ってない」ってことがバレています。
 Appleは独自に国際化を頑張った製品を世に送り出していると思っていましたが、iTunesはかなり恥ずかしい日本語対応だと言えます。iTunesをAppleの名前で出荷してて良いのでしょうか?

4. デジタルハブ

 iTunes日本語版(2.0.3)でのデフォルトのID3タグはv2.2で、日本語はUNICODE(BOM付き、リトルエンディアン)で保存されます。ID3v2.2ではISO-8859-1とUNICODEが正式な文字コードとして規定されています。
 iTunesはSonicBlue RioとCreative NOMADに曲データを転送できます。RioとNOMADはアップルストアで扱っており、デジタルハブ構想の一部をなす製品です。RioはAppleのテレビCMでも使われていました。しかしこの両製品ともにUNICODEが扱えません。私はNOMAD日本語版のユーザなので調べたところ、NOMADはv2.2のID3タグを解釈するものの、文字コードは単純にShift-JISとして扱うようです。もちろんMacRomanとしてLatin-1に変換されたShift-JISを扱うなんてことはありません。
 たぶん、NOMAD日本語版から日本語フォントを消せば、Latin-1を扱うのであろうことは想像できます。欧米ではiTunesの書き出すタグはNOMADで正しく読めるでのでしょう。
 ID3v2.2でShift-JISを扱うというNOMADの動作は明らかに規格外なのですが、AppleがiTunesと組み合わせて使えるとして販売するにしてはiTunes側の対応があまりに中途半端です。
 くり返しますが、「なにもしない」と「MacRomanをLatin-1に変換」のどちらをデフォルトの動作にするか、およびデフォルトのID3タグバージョンをユーザに選択させるべきです。

5. ID3v2.x

 Martin Nilssonによるv2.xの仕様書は以下のページにあります。
http://www.id3.org/
 ここにあるv2.2〜v2.4の仕様を読んで、開いた口が塞がりません。なんとv2.2とv2.3は上位下位ともに全く互換性がなく、加えてv2.3を正確に実装してもv2.4タグで解釈できないものが作れるのです。なんですかコレは。
 iTunes 2.0.3のデフォルトのタグがID3v2.2であり、ID3v2.4に未対応の理由がわかります。ID3v2.2が最も無難なバージョンであり、ID3v2.4なんてものに対応する義理も必要もないということです。
 iTunesは無駄のない簡潔なタグを出力します。日本語を入れたコメントの言語がなぜか'eng'なのはご愛嬌。

6. デマ

 こばやしゆたか氏の記事(http://www.zdnet.co.jp/macwire/0103/06/r_itunesj_10.html)で間違っている点。

 『ちゃんと仕様書は存在するんだけど,世の中の多くのソフトはその仕様書を守っていない。でも,iTunesは,きちんと仕様書通りに作ってある』
 ID3v2.xの動作は仕様通りだが、ID3v1.xの動作は明らかにSoundJAM開発チームの間違い。ただしID3v2.xもiTunesのバージョンによっては間違った解釈やバグがありました。

 『Windows Meに標準でついてくる「Windows Media Player」は「世の中」仕様だった』
 MacRomanとLatin-1の違いはMacintosh固有の問題であり、Windows-1252はISO-8859-1を含んでいるため、Windowsでは欧米における文字コードの変換という問題自体が存在しません。そのため、Shift-JISでも何もしないという最も正しい実装になったといえます。

2002.02.04

 こばやしゆたか氏の訂正記事(http://www.zdnet.co.jp/macwire/0204/26/c_ppoi.html)が公開されています。Appleがこの問題を正しく解決することを望みます。

2002.04.27
「ホーム」へ戻る
OSTRACISM CO.
OSTRA / Takeshi Yoneki