面白法人グループアドベントカレンダー2024の14日目の記事です。
フロントエンドエンジニアをしているけいとです。社内で文系エンジニアというあまり浸透しない二つ名を自称していますので、"文字"の話をざっくばらんにしてみようと思います。
"文字"コードのはなし
エンジニアとして活動する上で文字といえばやはり文字コードですよね。
文字コードについて簡単に説明すると、文字をコンピュータ上で処理する際に識別するために文字それぞれの種類に対して番号を割り振った一覧表のことです。例えば、
"KAYAC"
というテキストを打ち込んで友達に送信するのに、ASCIIと呼ばれる文字コードを利用するとします。その際、"KAYAC"は文字コードによる変換によって
"0x4B 0x41 0x59 0x41 0x43"
としてコンピュータに認識されます。通信する際はデータとして"0x4B 0x41 0x59 0x41 0x43"が送られ、そして友人の元で文字コードが参照されることで"KAYAC"が表示される、というイメージです。
今日には文字コードは複数存在しているため、テキスト→データに変換する際の文字コードと、データ→テキストに戻す際の文字コードが異なると変なテキストになってしまいます。もらったテキスト文書が文字化けだらけの怪文書になっていた、という経験がある方もいらっしゃるでしょう。まさしくそれは文字コードによるイタズラといえます。
文字コードには、先ほど例に挙げたASCII以外にもシフトJIS、UTF-8といった種類があります。それぞれちょびっとだけ説明してみましょう。
ASCIIコード
ASCIIはAmerican Standard Code for Information Interchangeのアクロニムとなっています。日本語に意訳すると情報交換のためのアメリカ標準規約、みたいなところでしょうか。Amercan National Standards Instituteによって定められたのちに、国際標準化機構(ISO)また国際電気標準会議(IEC)によってISO/IEC 646として国際化されています。
文字コードの中の基本のキ、のような立ち位置にあり、2桁の16進数のペアで表現されたエンコードデータには128個の英字、数字、または特殊な追加文字と固有の値の制御コードが含まれています。総数が128個と少ないのも特徴的です。
シフトJIS
さて、英語はA~Zの26文字が大文字・小文字の2パターンだけで事足りるためASCIIは128個のパターンで収まっていました。しかし、見ての通り日本語はひらがなにカタカナ、漢字ともう数えたくなくなるほどの種類があります。
それに対応するために日本産業規格(JIS)によって先に定められたのが日本語の文字コードがJISコードです。JISが定めたのでJISコード、というASCII同様わかりやすい名称ですね。
じゃあシフトJISって何なのか? という話です。JISコードは7ビットで1文字を表現していたのですが、それでも 「おっと、文字の種類に対してビット数が足りないぞ!」 となったワケですね。という理由でJISコードをベースに2バイトで文字を表現するように改良したのがシフトJISです。
余談ですが、小学校の間で習う漢字の種類は1,006文字、日常生活における漢字使用の目安とされる常用漢字は2,136文字、日本における一般的な漢和辞典では10,000字以上収録されているのが常とのこと。諸橋轍次が著した大漢和辞典には約50,000字の親字(見出しとして発音、字義の解説が加えられている1文字の漢字)が集められているとか。
日本語って文字のレパートリーがたくさんあって大変ですね。
UTF-8
UTF-8はUnicodeと呼ばれる世界中に存在している様々な言語の文字を統一して扱えるようにした符号化文字集合体を用いた文字の変換方式のことです。
U+306D、U+3053といったような表現は、Unicodeによる文字の表現です。ちなみにU+306Dは"ね"、U+3053は"こ"と対応しています。つまり猫。
また文書を文字化けさせるイタズラを引き起こすのは、UTF-8とシフトJISのタッグであったりもします。縺や繝のような文字が並ぶ場合はUTF-8をシフトJISで変換し読み込んだときに見られがちな漢字であり、�と英字が並ぶ文字化けはシフトJISをUTF-8で変換して読み込んだことに起こりがちです。
あと、UTF-8の親戚にUTF-16という文字コードもあります。
絵"文字"のはなし
SNSやチャットアプリでテキストを送る時に、文字だけじゃなくて絵文字も使ったりしますよね。立派な"文字"ですとも。
絵文字は海外ではEMOJIと呼ばれ、2015年にオバマ大統領が日本が生み出したものの1つとして挙げ賞賛したこともあるものです。日本では馴染み深い幼稚園・保育園における名札をイメージした絵文字📛が、海外でBurning Tofu、Tofu on fire(燃えている豆腐)として捉えられていた、なんて話題になったこともありましたね。私も勿論利用しており、🙏や👌といった絵文字を使うことが多々あります。
ではこの絵文字について。同じ絵文字でも男性だったり女性だったり、肌の色が違ったりしているのをみたことはありませんか?
それ実は、複数の文字が合体した合字(Ligature)と呼ばれるものなんです。
わかりやすく漢字の例でいくと、麿という字があります。これは日本で作られた、麻と呂の音を合わせて1文字で表す字となっています。このようなものを合字と呼んでいます。では、絵文字が合字になっている例を挙げてみましょう。
例えば、「よろしくおねがいします🙇」なこちらの絵文字🙇です。この絵文字について「🙇♀」とか「🙇♂」といった表示を見たことがある方がいらっしゃるかもしれません。それは合字が合字として認識されなかったときの表示となっており、対応しているクライアントであれば女性版の🙇♀️、男性版の🙇♂️が表示されるのです。女性版や男性版の🙇はZero with Joiner(ZWJ)と呼ばれる制御文字で女性だったり男性だったりの要素が結合されることで、🙇♀️になったり🙇♂️になったりしているというワケです。
肌の色や髪型なども同様に、絵文字同士を合体させることでそれぞれの絵文字に反映されています。1文字に見える絵文字がコンピュータのカウントだと2文字カウントだったり3文字、4文字だったりするのはこういった事情があるからなのでした。
"文字"をひらく、閉じるはなし
今まではコンピュータの文字表現に着目してきましたが、最後は人間のコミュニケーションにおける文字表現についてです。
今日のコミュニケーションにおいて文字は書くものではなく打ち込むものになってきています。書けないけど読める漢字とかありますよね、薔薇とか、躊躇とか、曖昧とか。テキスト媒体における表現について、あいまいを曖昧と書くようなひらがなの言葉を漢字で書くことを「閉じる」、反対に文字をもじと書くような漢字変換できる言葉をひらがなで書くことを「ひらく」と言います。
このような文字の「閉じひらき」は、テキストの読みやすさであったり伝わりやすさ、誤読を避けるための気遣いや文章のリズムをつくることに繋がっています。またひらがなと漢字の他、カタカナは半角カタカナなどを混ぜることで、細かなニュアンスの違いを表現したりもすることができます。
例を挙げると、この記事のタイトル「さあ、"文字"のはなしをしよう。」は話という文字を敢えてひらいて記述しています。いくつかパターンを並べつつ、個人の主観からテキストをどう感じるかを述べてみます。
さあ、"文字"の話をしよう。 :一般的な変換を用いた場合のタイトルです。するする読めて、特に何もない。
さあ、"文字"のはなしをしよう。 :採用したタイトル。後半の読みづらさがちょっと引っかかる感じ。
さあ、"もじ"のはなしをしよう。 :全部ひらがなでひらいたものです。柔らかな印象を受けます。
さあ、"モジ"のはなしをしよう。 :文字がカタカナです。見慣れない変換のモジに比重が置かれています。
サア、"文字"のハナシをしよう。 :部分カタカナ変換です。読みにくくどこか文学っぽいような雰囲気があります。
文字の内容は同じでも、パッと見たときの印象の違いが感じ取れるのではないでしょうか。とりあえずひらがな、カタカナ、漢字で異なる印象を受けることがわかっていただければ幸いです。ここまでの文章の中でも意図的に漢字をひらいている部分や、逆に漢字にしている部分、カタカナに変換しているところもあります。探してみてね。
おわりに
せっかく"文字"について述べるのだから文字一本で勝負だ、と"文字"の表現についてコンピュータの処理から人間のコミュニケーションと異なる視点から紐解いてみました。
身近にある"文字"という存在の奥深さを、少しでも感じ取っていただければ幸いです。
カヤックではたった一文字のタイポに気が付けるエンジニアも募集しています!
参考: www.mext.go.jp