tateren’s diary

何か書きたくなった時に使う

beatmania IIDX のスコアデータCSVの文字について

CANNON BALLERS が稼動したので SINOBUZ のバックアップとしてスコアデータCSVをダウンロードした。

普段は BPICL とかに食べさせてたんだけど自分で中を見るのは初めてだったので文字回りを色々調べてみた。

基本情報

エンコーディングは BOM 付き UTF-8 で改行は LF。

バイト順が固定の UTF-8 には本来 BOM は必要無いんだけど、ExcelUTF-8CSV を開くのに必要なので多分そのため。

ソート順

収録バージョン、曲名の順にソートされている。

曲名は Unicode のコードポイント順にソートされている模様。(ゲーム内だとどうだっけ?)

代替文字

公式サイトで焱影が火影に変更されていたことを思い出したので他にも無いか調べてみた。

ゲーム内で表示される本来の表記の曲名リストを入手する方法が思い付かなかったので textage の全曲一覧を拝借してチェックしたところ以下の文字が置き換えられている事が確認できた。

文字 コードポイント 使われている曲 代替表記
¡ U+00A1 ¡Viva! !
Æ U+00C6 ÆTHER A
ö U+00F6 Atröpøs o
ø U+00F8 Atröpøs o
Ü U+00DC Übertreffen U
ä U+00E4 Präludium a
é U+00E9 L'amour et la liberté
旋律のドグマ~Misérables~
e
ê U+00EA Raison d'être~交差する宿命~ e
U+2665 Double ♥♥ Loving
Love♥km
LOVE♥SHINE
Punch Love ♥ 仮面
Raspberry♥Heart(English version)
Sweet Sweet ♥ Magic
超!!遠距離らぶ♥メ~ル
表裏一体!?怪盗いいんちょの悩み♥
キャトられ♥恋はモ~モク
なし
U+2668 ギョギョっと人魚♨爆婚ブライダル 半角スペース
U+7131 焱影

曲名しか見てないのでジャンルとかアーティスト名でまだあるかも。

U+0080 - U+00FF は Unicode Block の Latin-1 Supplement で、 ASCII に置き換えていることからこれらのラテン文字を含まない CP932 (≒Shift_JIS) への変換を考慮していると思われる。*1

♥ ♨ 焱 の3文字も CP932 に対応する文字が存在しない。

この置き換えで CP932 との往復変換が可能になっている。*2

$ tail -c +4 1418-9974_dp_score.csv | md5sum
f972d768f492db6ce6387bc88e9fcbc0  -

$ tail -c +4 1418-9974_dp_score.csv | iconv -f UTF-8 -t CP932 | iconv -f CP932 -t UTF-8 | md5sum
f972d768f492db6ce6387bc88e9fcbc0  -

ちなみに Shift_JIS だと ~ (FULLWIDTH TILDE) で変換エラーを起こす。*3

まとめ

  • 内部的には Unicode を使っているっぽいが CP932 との変換互換性を考慮している。
  • 漢字の置き換えが必要な楽曲は焱影が初だった。(意外)
  • どこまで表現可能か気になるので𠮷 (U+20BB7) 田さんとかいたらアーティストデビューしてほしい、そして BMP 外の絵文字を含む曲を作ってほしい。
  • 今度覚えてたら筐体で日本語フォルダをソートして眺める。

余談

TЁЯRA の Ё (U+0401) はJIS X 0208 の7区7点、 Я (U+042F) は7区33点に収録されているキリル文字なのでそのまま使用されている。

和文フォントでは全角で表示されるためバランスを考慮してか他の文字も全角になっている。

同様の理由から ULTiMΛTE も全角が使われているが、何故か X↑X↓ も全角だった。(何で?)

*1:公式サイトのエンコーディングShift_JIS

*2:liconv は BOM 付き UTF-8 を処理できないので先頭3バイトを無視している

*3:実装による?