ちょっと硬派なコンピュータフリークのBlogです。

カスタム検索

2016-10-27

フォントは自由に変えられる。だから絵文字で何かを伝えるのはナンセンス。そんなことも分からなかったのか、Googleよ。

Unicodeに絵文字が多数追加されたことは、以前から批判していたのだが、やはりというか何と言うか、しょっぱい問題が起こりつつある。

macOS SierraやiOS 10でピストル絵文字🔫が水鉄砲に変わることで起こる問題。 | AAPL Ch.

絵文字はフォント次第で形が変わる。故にフォントが変わればニュアンスも変わる。自分と相手、あるいは今使っている機種と将来使う機種が同じフォントを使っているとは限らない。だからフォントを変更することで様々な問題が起きるわけである。

根本的な問題=性質が異なるものを混ぜてしまった

文字と絵は本質的に性質が違う。

文字はその見た目ではなく、文字を組み合わせた単語、単語を並べた文章によって意味を持つ。フォントが違っても、見た目の違いはあれど、文章そのものの意味は変わらない。どのようなフォントで読んでも意味は通じるのである。

ところが、絵文字はそうは行かない。絵はそこに書いてある形や色がすべての情報であり、それが変わってしまうと意味も違ってしまう。上記のリンク先でも解説があるように、機種やサービスによってフォントがマチマチであり、ニュアンスが違う。そうすると、機種やサービスによって同じコードポイントの絵文字であっても、ニュアンスが違うという問題が生じるわけである。鉄砲と水鉄砲ではずいぶん意味あいが異なる。顔文字も色々とバリエーションがあり、笑顔の顔文字つきでメッセージを送った場合、自分が見てる笑顔と相手が見ている笑顔が同じだとは限らないのである。

絵と文字は本来同一の体系で扱うべきではない。かつてガラケーに絵文字が登場したときから既に違和感を感じていたが、文章の中にフォントで絵を埋め込むのはそもそもの発想がおかしい。ガラケーはキャリア主導でフォントが固定されていたから良かったものの、依然として異なるキャリア同士ではフォントの違いがあるなどの問題があったわけで、まさに閉じた世界であるから通用した機能だったと言える。拡張性はゼロだ。

ところが、Unicodeに絵文字を埋め込んだのは、その問題を拡大することに繋がる行為であって、非常に愚かな判断である。絵と文字を混ぜあわせて使いたいのであれば、もうひとつ上のレイヤーでそのようなフォーマットを規定するべきである。例えばHTMLのようなものであれば、何ら問題はない。HTMLがゴテゴテ過ぎるというのであれば、もっとコンパクトなフォーマットを定義すれば良い。

そういう観点では、LINEのスタンプという発想は素晴らしい。スタンプは完全な絵であり、誰がどのようなデバイスで見ても同じに見える。もちろん、ディスプレイによって色合いやサイズなどに違いは生じるが、少なくとも形に違いが生じることはないので、スタンプを送信した人と受け手でニュアンスの違いも生じない。しかも、スタンプは自由度が高く、実に様々なバリエーションが存在する。サイズも自由だ。これこそが「絵」のあるべき姿なのである!!スタンプという仕組みは商売にとっても良いものかも知れないが、データのフォーマットとしても極めて好感が持てるシロモノなのである。(さらに改良するならベクターデータにするぐらいだろうか。)LINEそのものについては言いたいこともが無いわけではないが、スタンプを採用した点についてはまさに慧眼だったと思う。

混ぜるな危険!!

一般的に言えることであるが、異なる性質のデータを、同じ階層あるいは次元で扱うのは極めて危険である。Unicodeにおける文字の標準化というような、極めて重要かつ公然の箇所でもそのような愚かな過ちを犯す例を見ても、人はなかなかこの手の間違いを回避できないのかも知れない。

ソフトウェアの設計やデータベースの設計といった作業では、異なる性質のものをより分けて、別のモジュールあるいは別のテーブルといったものへ配置するという作業が必要になる。そうしなければソフトウェアのコードがスパゲティになってしまうからだ。データ構造の設計は、ソフトウェア設計の根幹を成す部分であり、異なる性質のものをきちんと区別して異なる配置にすることは、基本中の基本だと言って良い。文字と絵を混ぜるなど、言語道断の低レベルな間違いなのである。

このような「異なる性質のものを混ぜる」ということは、ソフトウェアの拡張や改良を難しくし、さらには様々な副作用ももたらすことになる。今回の、フォントの違いによって見た目が変わる問題も、そのひとつであると言っていい。

個人的には、Unicodeに絵文字を混入させてしまったのは、今世紀最大の設計ミスの王冠を捧げたい。

想像力の欠如

どうしてこういうことが起きるということを、もっと早く気づくことができなかったのだろう。一欠片の想像力があれば十分気づきそうなものである。つまりUnicodeに絵文字を混入させることを提唱した人は、全く想像力の欠片も無かったということになるのではないか。あるいはソフトウェア設計に対するセンスが皆無であったのだろう。はたまた、キャッチーな機能を追加して注目を浴びたい欲求が、他のすべての問題に目をつむらせてしまったのだろうか。当然ながら、これはGoogle社員ひとりひとりの責任というわけではなく、というかむしろGoogleの社員の大多数は優秀であり、ごく一部の社員がやらかしたことではあるのだが、全世界のソフトウェア開発に影響のあるUnicodeへ標準化してしまったというのは、もはや会社の看板に大きな傷がついたと言っても過言ではないのではなかろうか。中の人は誰か止めて差し上げることは出来なかったのか。いずれにせよ、とんでも無いことをしてくれたものである。標準化されてしまった今となっては、もはや取り返しが着かないし、この件はGoogleの黒歴史として未来永劫語り継がれて行くことだろう。

皆さんはこの件を他山の石とし、異なる性質のものを混ぜてはいけないということを心がけ、同じような失態をしないようにして欲しいと思う。意図的に同じバイナリデータの中に異なる性質のものを織り込むようなこともあるが、そのようなケースでは少なくともデータを生成する際にエンコードが、データから個々の要素を取り出す際にはデコードが必要になる。Unicodeのように、同じコード体系の上で異なる性質のものを扱おうとするようなオモシロ設計にしてしまうと、それは大きな負の遺産となり、後から様々な不都合が生じることになるので気をつけていただきたい。

0 コメント:

コメントを投稿