QuizKnock

アプリで記事をもっと見やすく

インストールする

カテゴリ

ログイン

こんにちは、福良です。

とりあえずこちらのクイズをどうぞ。

さて、最近よく騒がれている「平成が終わる」問題。

こちらの記事でも紹介しました。

これが結構いろんな所に影響が出るようで、IT関係の人の中には下のような状態を嘆く姿がよく見られました。

注:10進数表記に変換しています

どうやら、「平成の次の元号の枠が空いていない!」ということらしいです。

「どういうこと?」僕自身最初は意味が分かりませんでした。
興味深い話だったので、「この表は何?」「どういう混乱がおこるの?」という疑問を徹底解説していきます。

組み文字とは?

2文字以上の言葉を1文字にした文字のことを組み文字といいます。
例えば、㌔、㌢、㌍、㌀、㍿、㌠などが比較的よく目にすると思います。
明治、大正、昭和、平成は全て㍾、㍽、㍼、㍻と組み文字が存在します。

そこで今回の話題はこう言い換えられます。
新しい元号は、組み文字を作るには余白が足りないのではないか?
まだ分かりづらいですね。さらに詳しく掘ります。

文字コードとは

余白が足りないってどういうことなのか?
これをお話しするには、まず「そもそもコンピュータはすべて数字で動いている」という話をしなければなりません。

QK ←はいこれ! 見えますよね? アルファベットのQとKの2文字が皆さんの画面には書かれているでしょう。
これは、この記事の作者である僕のコンピュータが「Qという文字を書いて、Kという文字を書きなさい」という命令をして、皆さんのスマホやパソコンの内部のコンピュータがその命令を実行している、ということなんです。
しかし実は、アルファベットを直接指定している訳ではない、というのがポイント。

実際は「番号第27番の文字と番号第21番の文字を書きなさい」というような命令を僕のコンピュータは送っています。
そして皆さんのコンピュータは「第21番の記号はK」「第27番の記号はQ」というような番号と記号の対応表を持っています。
そのため、送られた命令と持っている対応表を合わせて「QK」という文字を皆さんの画面に表示出来ているのです。

すなわち、文字の表示というのは、「数字の命令」「対応表」が2つ揃って成り立っているのです。
これはアルファベットだけでなく平仮名・カタカナ・漢字でも同じことで、全ての文字に番号が付けられて情報をやりとりされています。
文字に対応する数字のことを文字コードと呼びます。

ここで大切になってくるのが、文字と文字コードの関係をつなぎとめる、対応表という存在。もしも、2人のコンピュータが違う対応表を使っていたらどうなるでしょう。
正しい変換が出来ずに意味の通らない言葉が生まれてしまいます。

"QK"と表示させたいのに"ひな"と表示されてしまう図

実は文字化けが起こるメカニズムもこれ。
たまに海外のサイトや古いサイトを見ると文字化けして読めないことがありますよね。
これは、書いた人とは違う対応表を見てるから意味の通らない文字列になっているんです。

国際化が進むにつれて「これじゃやばい!」という話になりました。
アルファベットしか使わない国だけで通信していてもさほど問題にはならなかったのです。しかし、日本人に送ると平仮名に文字化けして、韓国人に送るとハングルに文字化けして……となる事に気づいて慌てて話し合いが行われました。
そうこうして、世界中で使われる「世界的な対応表」が作られました。この対応表をUnicode(ユニコード)と言います。

という訳で現在、Unicodeという対応表が世界中で使われています。さきほどの画像の対応表は僕が適当に作ったやつで、実際には使われておりません。
ではUnicodeがどういう対応表なのか見ていきます。

Unicodeにおける元号の組み文字

「㍾」という文字の文字コードは「337E」番。コンピュータが扱いやすいようにEを数字として扱っていますが、我々が普段使っている数字に直すと13182番のことを指します。
その1つ隣の13181番には「㍽」が、13180番には「㍼」が、13179番には「㍻」が当てられています。
そしてここが本題!
㍻の隣に新しい元号の組み文字を置こうかな……と思ったら! 13178番には「㍺」という先客がいるのです。
ご覧になっている環境によっては見えないかもしれませんが、「IU」を1文字にしたような記号が書いてあります。

……いや待て、「IU」ってなんだよ!
ビタミンやホルモンなどの効力を国際的に統一して示すときに用いられる単位で、International Unitの頭文字をとったものらしい。。。
いやいや! 使ったことないから!
とツッコミたい気持ちは山々ですが、使っている人は使っているのでしょう。おそらく。

ちなみにその1つ隣は僕が知る限り「立方デシメートル」を表すためだけに存在する記号ですね。
これは体積の単位ですが、「リットル」と全く同じ量を表します。おそらく二度と目にすることなく僕は生涯を終えるでしょう。
それだけUnicodeにはありとあらゆる記号が収められているという証拠ですね。
㍾の次が㍿なのも面白い。

問題は分かった、それでどうなるの?

ここまでが、冒頭にお話しした「IT関係の人たちが嘆いていたこと」の説明でした。
㍾、㍽、㍼、㍻の次が埋められている、というお話。

では問題点が分かったところで、どう解決するのでしょうか。
そもそもUnicodeの最初のバージョンが出来たのが平成3年なので、元号が変わるというのは初のケース。どうなるのか確実なことは分かりませんが、様々なパターンを考えてみました。

パターン1. 隣ではない他の数字を文字コードとする。 連続したところに置けないというだけで、空きスペース自体はあるんです。
パターン2. 元号が1文字になる。 組み文字が不要になります。なくはないとは思いますが、これこそ発表待ちですね。
パターン3. 組み文字を作らない。 もう諦めちゃえの精神。どうしても一文字にしたい時はイニシャルにしてください。
パターン4. 既存の文字を組み文字のように扱う。 たとえば元号が「言公」になれば「訴訟」の「訟」という漢字で組み文字のように使うことが出来ます。確率はとても低い。
パターン5. 元号という制度の廃止。 逆に色々おおごとです。

パターン4.㍻の次が柱に決まった瞬間

と色々考えましたが、パターン1.が濃厚でしょう。
新しい元号の組み文字だけ飛び地にする。

「てかそれで解決じゃない?」と思われるでしょう。しかし、ちょっと不便なことが起こります。

例えば、コンピュータで何かを五十音順に並べたいとしましょう。 アの次にイを並べるためには「五十音表でアの次はイである」という知識は絶対に必要ですよね。
しかし、コンピュータは「アの次はイである」とか「イの次はウである」と直接知っているわけではありません。
「ア」の文字コードに+1をして、隣がどんな文字なのかを調べているのです。その次が知りたければさらに+1すればいい。

では元号を年代順に並べたい時はどうなるでしょう。 今までは五十音と同じように「㍾の隣のやつ」作戦でいけたのですが、新元号が飛び地に追加されるとこの技が使えなくなります。

飛び地にしたら上手くいく方法が全くないという訳ではなく、たくさん根回しすればちゃんとシステムは運用出来ます。 ただ、最も簡潔で綺麗な方法が使えなくなり、エンジニアの作業が増えるのではないかと恐れられていたということですね。

ということで、パターン1.になってエンジニアの負担が増えるだろうという僕個人の予測でこの記事は締めたいと思います。
長くなりましたが、これでエンジニアの方々の苦労が少しでも伝われば幸いです。
これでもかなりざっくりな解説なので、興味を持った方は文字コードの歴史やUnicodeの計算方法など調べてみると面白いかもしれません。

Amazonのアソシエイトとして、当サイトは適格販売により収入を得ています。

関連記事

この記事を書いた人

ふくらP

ふくらP(福良拳)です。とにかく分かりやすさ命で記事を書いていきます。よろしくお願いします。

ふくらPの記事一覧へ