ローマ数字の逆襲


UTF-8 を使ってみる

Weblog(2003/10) - Web Studio】に、素敵な話が。

このページは、UTF-8で記述していますので ローマ数字(注意:リンク先はPDF)を直接HTMLで記述しても機種依存ではありません 。そのため、このページでは商品名に合わせるために使用しています。

未だに多くの人が勘違いしているようですが、 機種依存文字の定義そのものがUnicodeの普及によって昔とは変わっています。 例えば他にも以下の文字はUnicodeには存在します(つまり、理論上これらの文字は使える)。

ローマ数字を使用するには、数値文字参照すれば好いのではないかしらん、てのが行儀の良い解決法だったわけですが、なんたってユニコードなわけですよ。つまり、機種依存ではなくて、仕様としてキチンと定義されている文字なわけですから、直接記述しちゃっても大威張りなわけです。しかも何が凄いかというと、例えばユニコードの 2160 〜 2169 を使ってローマ数字の 1 〜 10 を記述した場合、それは数値データとして扱われる可能性があるのです。ユニコードで ⅩⅩⅧ 円などと書いてあれば、データとしては、28 円と等価になる可能性があるわけです。これが機種依存文字( UTF-8 以外の charset )だった場合 ⅩⅩⅧ 円と 28 円は、等価にならないのです。(ホントか?)

まあ、UTF-8 でなくても、数値文字参照しておけば、ローマ数字も数値データとして扱われる可能性があるわけで、『ローマ式記数法で書かれたアルファベットによるローマ数字』よりもデータとしての有用性が高いと言えるでしょう。

ということで、UTF-8 にて、ローマ数字について実用実験してみます。代替スタイルシートにて、font-family " Osaka " と " ヒラギノ角ゴ " と " MS Pゴシック " を用意してあります。

MacOSX で、本リソースを利用した場合、

という結果になりました。なんでこうなるのかは、ユニコードがよく分かってないので、意味不明というか理解できてません。


表示確認

アラビア数字 ローマ数字
(数値文字参照)
数値文字参照
[16進数] コード
文字パレットからの
直接入力
UTF8 Unicode ローマ式記数法で書かれた
アルファベットによる
ローマ数字
1ⅠE2 85 A02160I
2ⅡE2 85 A12161II
3ⅢE2 85 A22162III
4ⅣE2 85 A32163IV
5ⅤE2 85 A42164V
6ⅥE2 85 A52165VI
7ⅦE2 85 A62166VII
8ⅧE2 85 A72167VIII
9ⅨE2 85 A82168IX
10ⅩE2 85 A92169X
11ⅪE2 85 AA216AXI
12ⅫE2 85 AB216BXII
50ⅬE2 85 AC216CL
100ⅭE2 85 AD216DC
500ⅮE2 85 AE216ED
1000ⅯE2 85 AF216FM
1000ↀE2 86 802180CDみたいな
5000ↁE2 86 812181DDが重なる
10000ↂE2 86 822182Dのひっくり返りとD
100ↃE2 86 832183Cのひっくり返り

ローマ数字の悲劇

扨、『ローマ式記数法で書かれたアルファベットによるローマ数字』などと回りくどい表現を使いましたが、個人的にはローマ数字をアルファベットで表現する方法を、間違いであると切り捨てることが出来ません。【Weblog(2003/10) - Web Studio】には、以下のようなことも書かれています。

ところで、ローマ数字は機種依存文字なのでアルファベットで代用すれば良いと主張しているページもたまに見かけますが、これは間違いです。 例えばローマ数字でと書けば、音声ブラウザはさんとかスリーとか読み上げることができます(実情は知りません)。 しかし、アルファベットで代用してIIIと書くと、あい、あい、あいとなってしまいます。 また、検索エンジンでも3などを同一の文字と見なした検索も可能でしょうが、 これにIIIを含めるかどうかは難しいところでは無いかと思います (技術的には可能ですが、処理効率がよくないですし、なにより検索精度に問題がありそう)。 どのみち、代用なのですから、見た目のために文章の意味が変わってしまっているという点は間違いありません。

ローマ数字は機種依存文字だからアルファベットで代用したほうがよいのではなくて、ローマ数字というものは、アルファベットをローマ式記数法に従って並べたものであるという解釈が成立するのではないかと私は考えるので、『ローマ式記数法で書かれたアルファベットによるローマ数字』でも問題は無いのではないかと思うわけです。データとしての価値(数値データと等価になりそうか否か)は除外した、ローマ数字というものの捉え方の差異ということになるのかもしれませんが。

むろん、データとしての価値を考えれば、そして Web 上で公開されるリソースならその公共性を考えて、UA やひいてはコンピュータが理解しやすいように、UTF-8 や数値文字参照を使うことにやぶさかではありません(そうでなければ、言語解析をしなければならず、現状で言語解析を期待するなら正しいマークアップなどに固執する必要もなく、そうなってしまっては夢物語を狂信する永遠の消費者と同等になってしまうし、こと Web 上ではコンピュータに優しい方法が好まれるので)が、特定のアルファベットを記数法に従い並べたものは、ローマ数字であるという考え方は、観念的な部分でとても魅力的なものに感じられるのです。

ところで、その昔、ローマ数字とアルファベットは同じ字体ではなかったはずですが、長い年月の内に紆余曲折を経て、とりあえず現代では、少なくとも 1000 の位までは、同字体であると解釈しても差し支えないと思います。というか、それがローマ数字の悲劇のひとつでもありました。小さい数字はともかく、大きい数字を表すのが大変、筆算ができない、同字体なのでアルファベットなのか数字なのか分からない、など不便な点が多々あって、アラビア数字が渡来してきたときに、ローマ数字の命運が尽きることになったのだと思うのです。

ちなみに、1000 の位までを表すローマ数字は、I、V、X、L、C、D、M の 7 文字だけです。これを記数法に従い、並べて数字を表します。並んでいる数字を加算します。『 III 』なら 1+1+1 で 3 です。ある数字の左側にその数字より小さい数字が並んでいる場合は減産します。『 IV 』なら、5-1 で 4 となります。『 XLVII 』は、50-10+5+1+1 で 47 というわけです。

実際のところ、なんていうか、ユニコード定義のローマ数字の『 Ⅰ 』はともかく、『 Ⅱ 』とか『 Ⅲ 』とか、そのへんが個人的に気に入らないのです。ローマ式記数法に従うなら、1 が『 Ⅰ 』なら、2 は『 ⅠⅠ 』だし、3 は『 ⅠⅠⅠ 』と書くのが正しかろう、と思うのです。12 が『 Ⅻ 』で 1 文字なんて、おかしいじゃないかー、と思うのです。まあ、もっとも『数字』ではなくて、『記号』なんだと考えれば納得できなくもないのです。つまり正しい数字ではないが、見た目のための記号、或いはコンピュータのための便宜だ(人間の感覚的には変でも、コンピュータには数値と認識させることが出来る)と割りきればってことですが。

それじゃあどうすりゃいいのよって、結論的に言うと、出来ればアルファベットを使わずに、 UTF-8 でも数値文字参照でも構わないけれど、『 Ⅰ 』『 Ⅴ 』『 Ⅹ 』『 L 』『 C 』『 D 』『 M 』だけを使い、ローマ式記数法に従って記述するのが、現段階でのカナかな団的オススメなんじゃないかってことで。

というか、記号としてのローマ数字を、Web 上のリソースに記述する場合、どうしたらよいかってことなら、charset を UTF-8 にするなり、数値文字参照を使うなりするのが宜しいですよってことで、記号としてのローマ数字なんておかしいって思うなら、『ローマ式記数法で書かれたアルファベットによるローマ数字』を使えってのが、私の見解ってことみたいです、つらつら考えてみたら。

そういえば、MacOSX は、『まっくおーえす・てん』なわけですが、この『 X 』、商品名としては、ローマ数字なのか、はたまたアルファベットなのか。


書いた人


案内