ユニコード実験室

~ その2 実際にページを書くに当たって ~

2002年2月23日記

書くこと自体は、すぐに出来る。が……

2月13日に書いた方のページにおいて あれこれ試してみました。様々な言語を一つのファイルの中に記述する。それも、カタカナやローマ字に直すのではなく、それらを表記するために 通常 用いられている文字を用いて書く。これまでの私の知識では不可能だったことが、ユニコードを使用して実現可能であると確かめられました。webで ちょこっと検索して出てきた いくつかのページを いい加減に読んだだけの私が、その日のうちに そこまで こぎ付けられたのですから、そんなに難しい技術や知識は必要ないはずだと思います。

その後、色々なパソコンでそのページを見て、こちらの意図どおりに表示できる環境は少数派なのだと分かってきました。やはり、表示されない環境が多いのではないかという懸念が非常に強いです。ファイルを作るのは(比較的)簡単です。が、それを見ることが出来ない人が大勢いるのならば、その価値も半減してしまいます。

見る側の問題 ―閲覧ソフトの機能とフォント―

前のページの最後の方にもゴチャゴチャと書きましたが、閲覧ソフト(ウェブブラウザー)の種類やバージョンによって、UTF-8 のファイルをどう解釈するかが変わるものと推測されます。不具合の生じるソフトウェアがかなりの数使用されていることを考慮すると、国際化に対応するために UTF-8 にしました、と簡単に事は運ばないものと思います。

(「不具合」と書きましたが、これは仕方のない面もあります。規格の制定以前に作られたソフトウェアは そもそも対応のしようが無かったはずですし、制定された規格も これからの議論の方向次第で 全く新しいものが登場する可能性を大いに含んでいるのですから)

表示するフォントについての問題もあります。私のシステムでは、MSIE をダウンロードする際に「○○語(文字)表示サポート」とある所を片っ端からチェックしていた所為か、様々なフォントがインストールされた状態になっているらしく、タイ語やヘブライ語で書かれたサイトも問題なく表示できています(読めませんけど)。しかし、母国語、あるいは自分が普段使用している言語がきちんと扱えれば使用するのに不便はありませんから、そこまで沢山のフォントを自分のシステムに入れていないという方は大勢いると思います。そうしますと、いくらウェブブラウザーが正しく UTF-8 を解釈したところで、フォントが無いので表示不可能ということになります。また、ちゃんとフォントは存在するのに それを正しく使うように設定していない場合もあるでしょう(最近のウェブブラウザーは、かなり賢く その辺の設定を自動でやってくれるようですが)。

以上のように、こちらがちゃんと入力した(つもりの)文字が 「□」になったり 「?」になったり 「・」になったり 挙句は何も表示されなかったりする環境が たくさん存在するわけです。これでは、こちらの意図や情報は全く伝わりません。

やはり、UTF-8 を用いたページを公開しようとする者にとっての一番の障壁は、この閲覧側で生じる問題なのではないでしょうか。OSやアプリケーションをインストールする時にフォントの導入から設定まで自動で行ってくれれば良いのですが、現段階では そこまで期待することは酷なようです。もちろん、日本語の文字だけ書いてあるページを日本語が読める人に向かって公開する、というのであれば、あまり問題はありません。そういう人たちが、日本語のフォントがない、あるいは表示されない環境を用いてページにアクセスして来るとは考えにくい。(現に、かなり有名な企業が UTF-8 を採用している) しかし私のように(これも少数派なのだと思いますが)、読めなくても構わないから、紹介したい物の名前などを出来るだけ現地の言葉で正確に記述したいと思って UTF-8 を採用するには、まだまだ問題があるように思えます。「書ける」からと言って UTF-8 に すぐさま走ってしまうと、全く表示されませんという人が続出する結果になるのではないか。正確に書こうと思ったのが却って仇になるのではないか。この辺の不安が払拭されない限り、本格的に採用するのは先延ばしになってしまうでしょう。

書く側の問題 ―簡単に書けるのか―

「そんなに難しい知識や技術は必要ないはず」と書きましたが、果たして本当にそうなのか。

現状、単にHTMLのファイルを作るだけなら、様々なオーサリングツール(この呼び方が正しいのかどうか、イマイチ自信がありません)が存在しており、本格的にHTMLの勉強をしなくてもなんとかなります。C言語でプログラムを書く場合などと違って、厳格に文法を守らなくても表示には問題が無い種類のものなので、これだけ沢山の人が個人的にサイトを立ち上げることが出来るのでしょう。それらのサイトの運営者の方々が、簡単に UTF-8 を用いたファイルを作ることが出来るのでしょうか。それが出来ないのならば、ユニコードの定着や発展が当分先のことになるのは間違いありません。技術として確立しただけで使う人間がちっとも増えない。

前のページでは文字を書き散らすだけ書き散らしておいて、それをどうやって行ったかについては一言も触れなかったので、ここでご紹介してみます。Windows を使っているのであれば、おそらく、以下に書くやり方に順ずる方法で行うしか現時点では選択肢が無いものと思います。

まず、「Windows 98/2000上でのUTF-8のページの作り方」という そのものズバリのページで予備知識を仕入れました。

次に、エディターの選定です。普段私は Windows2000 に付属のワードパッドを用いて Shift_JIS の HTMLファイルを作成し、それを CharsetConverter というソフトで ISO-2022-JP に変換するという手順でサイトの更新を行っています(最初にそれでやり始めて、そのまま現在に至っています。もっとスマートなやり方が当然あるでしょうが)。使い慣れたワードパッドをそのまま使えればいいなと初めは思ったのですが、あれこれ試すうち、ワードパッドはどうやらユニコードには対応していないということが分かりました。そこで、「Windows 98/2000上での~」のページで 現在一押し と紹介されている xyzzy をダウンロードして使ってみることにしました。実は、なんとメモ帳でもユニコードが扱えるようですが、保存する際、ファイルの頭に BOM をくっ付けてしまうことから、使用を見送りました(BOM がなぜ問題なのか、私は良く分かってません)。

xyzzy では、大抵の作業がスムーズに行きます。日本語入力に関しては、普段と全く同じ方法で大丈夫です。アルファベットや数字(要するに半角英数)の入力も問題ありません。その他の文字についても、Microsoft IME 2000 のIMEパッドを表示させ、文字一覧をUnicode順にして画面に出しておけば(フォントを Arial Unicode MS にしておくと、切り替えずとも全ての文字が出て来るようです)、あとは文字をマウスで選んでクリックして行くだけで入力できます。ただし、フォントの設定如何で、入力は出来るけれど文字が表示されないという状況になる場合があります。そうなったら、別にウェブブラウザーなどを立ち上げて確認しながら作業をしないと、間違った入力をしても気付くことが出来ません。また、åç などは、何故か記号の付いていない普通のラテン文字に変換されてしまうので、charmapx などのソフトウェアから コピー→貼り付け で持って来なければいけませんでした(前のページで 少々難アリ と書いたのは、この辺が理由です)(※上手い方法があることが分かりました。詳しくは次のページにて)。書き終わったら保存しますが、「ツール(T)」メニューの「ローカル設定(L)」にある「もろもろ」のタブで、「文字エンコーディング(E)」のところを「Unicode (UTF-8N)」にすれば、UTF-8 で符号化したファイルを作ってくれます。

ファイルが出来上がったら、ウェブサーバーに転送することになります。転送そのものは、FTPを使って普通に行えば良いので何も考えなくても大丈夫です。何か考えなくてはいけない(と思われる)のは「このファイルは UTF-8 で符号化している」という情報を、どこにどうやって入れておくかです。「charsetパラメタの勧め」(リンク先の記述は1998年のものであることにご注意下さい)のページなどによりますと、広く一般的に行われている <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> を HTMLの <HEAD> 内に書く方法だけでは問題があるとのこと。実際、Mozilla/4.78 (Netscape Communicator 4.78) は、<META> による指定だけしか行っていないと、まず文字化けした状態で表示し、それからページが UTF-8 で符号化されていることに気付いて もう一度ファイルを読みに行って ようやく正しい表示になります。そんなわけで、<META> による指定は取り止めることにしました。サーバーが Apache であることから、.htaccessファイルを作って その中に AddType "text/html; charset=UTF-8" html と記述して、HTTPレスポンスヘッダーに charsetパラメーターを含ませるようにしています※1(この方法は、ISO-2022-JP で符号化した 当サイトの他のページでも同様です)。

このような方法で 前のページは出来上がったのでした。IMEパッドなどを用いてマウスで入力するのは、文字によってはかなり大変です。ハングルは「니다」の二文字を入力するだけでも えらく苦労しましたし、アラビア文字などは 目的とする文字がどれなのか良く分かりませんでした。

さて、いかがでしょうか。これなら簡単と思われたでしょうか。まだまだ敷居が高いと思われたでしょうか。

私の場合は、元々テキストエディターのみでHTMLを書いていましたから、すんなりと作業をすることが出来ました(視覚的には何の面白みも無いページばかりですが)。しかし、例えば Frontpage Express などを使用してファイルを作成している方にとってはどうでしょう。「Windows 98/2000上での~」のページでも検証されていますが、ソフトウェアの対応状況は必ずしも完璧ではないようです。これでは、ユニコードなどと言う以前にHTMLのことを覚えなければなりません。とても、気軽にページの公開など出来ないのではないかと思います。

結局、どうしましょう?

長々と書いて来まして、挙句にこんな結論しか出せないのは非常に情けないですし、読んで下さっている方に失礼かとも思うのですが、今の私は「しばらく待とう」という態度です。

もちろん、これはあくまで私の態度なので、「実装が追いついていないソフトウェアのことなど知ったこっちゃない」という主張に基づいて 堂々と UTF-8 を使用したページを公開するのも、大いに結構だと思います。私も、ページのデザインに用いているスタイルシートでは、対応がなっていないウェブブラウザーを完璧に無視していますから、いちいちそんなのに気を使っていられないという意見には同感です。

しかし、MSIE がアラビア文字を表示してくれるようになるくらいまでは、待ってみようと思っています。(※追記 ―2002年11月24日― どうやら、ユニコード表の下の方にある「アラビア表示形」とかいうのを使おうとしなければ、MSIEでも問題ないらしいことが分かって来ました。さて、どうしよう)


※1 参考までに。このページのHTTPレスポンスヘッダーは、以下のようになっているはずです。

Date: Day, dd Mon yyyy hh:mm:ss GMT
Server: Apache
Last-Modified: Day, dd Mon yyyy hh:mm:ss GMT
ETag: "11e7a8-4***-3*******"
Accept-Ranges: bytes
Content-Length: 16778
Connection: close
Content-Type: text/html; charset=utf-8
Content-Language: ja

きちんと指定を行わないと、Content-Type:フィールドに charset が付加されず、符号化方法についての情報が欠落します(ただし、きちんと指定を行っているサイトの方が少数派であるというのが現状のようです)。


このページの文字について、あるいは文章について、お気づきの点がありましたら、メール等でお知らせ下されば幸いです。

web TAZI のトップページへ
mailto : tardy@k.email.ne.jp