スペースがないなら script 書けばいいじゃない2007年01月15日 20時49分05秒

HTML で日本語と ASCII 文字の間に半角スペースを入れるべきか否か、というお話。見ての通り、おいらは入れちゃう派です。

考え方とかは後回しにして、とりあえず 30分ぐらいで作っちゃったスクリプトの紹介からw

ASCII 文字とそれ以外との間に余白が見えるようにするスクリプト

semantic でない「見た目の為」だけの空白文字は使うべきではない、と言いたくなる人の気持ちもわからなくは無いのですが、「本来ブラウザがその辺の見た目の面倒を見るべきだ」とか言っちゃうのは流石に傲慢に過ぎると思う。Gecko のパッチを作るのもいいけれども、とりあえず Javascript でまかなえそうなことは Javascript でまかなってしまうというのも手では無いだろうか。

と、いうわけで、作ってみた。w

使い方もサンプルの中で書いてるから参照してちょ。あと、スクリプトはできれば直リンクではなくダウンロードして各自が管理するサーバー上に置いて使って欲しい。

ブラウザ上でテキストを反転してみると分かると思うけれど (さらにコピペしてみたりするとなおよく分かると思う)、スペースを直接挿入しているわけではなくて、クラス名付きの <span> タグを挿入し、スタイルシートでマージンを空けるという方法を採っている。表面上の動作としては、アクセス性原理主義的な要望にブラウザが応える場合に、行うべき動作をシミュレートしてみた、という感じ。

スペース入れる派の主張

おいらの場合、理由は 3 つある。

  • 閲覧者がコピペしてテキストエディタに貼り付けたときの見た目を考慮

こういう使い方を想定すること自体おかしいだろうとか言われちゃうとちょっと辛いのですが (^_^; 。

逆に、テキストエディタ上で HTML 編集するときに自分が見づらいから、という理由でもあったりする。ちょー傲慢>ヲレw

  • どーせ改行とか入れちゃうんでしょ?

ブログで HTML 書く時はあんまり気にしないんだけど、テキストエディタで HTML 書く時は、文章の、というかパラグラフの途中でも、適当なところで改行を入れてしまう。HTML では改行も空白として扱われる為、結局のところ、余計な空白がぽつぽつ入り込んでしまうことになる。実用的なことを言えば、これをいちいち気に止めていても仕方ないんじゃん? という思いがあったりする。

まぁでも、最近は「HTML はあくまでメタデータというかプロトコルなのであって、人間が直接書くべきものじゃない」っていう考え方の方が主流になりつつあるから、この主張も次第に形骸化していったりもするのかな。なんだかんだで Wiki 文法的なものの方が受け容れられやすくなっているようだし。

  • そもそも HTML/CSS が日本語と英語が混在することを想定した仕様になっていない

縦書きにすら対応できてないくせにえらそうに言うな、という話。アラビアンのために右から左へ書いていくスタイルはサポートされているのに。

考えてもみて欲しい。英語は確かに単語単位でスペースを挟む仕様になっているし、日本語も確かに単語単位でスペースをわざわざ挟まない仕様になっている。しかし日本語と英語が混ざるような文章において、日本語部分と英語部分の境目はどうあるべきなのかということについて、確たることが言える人間などこの世にいるのだろうか? 定義のないことに関しては、「何もしない」のが正しい動作である。違うか?

ブラウザ開発者の誰一人として、あるいは HTML/CSS の仕様策定に関わる人間の誰一人として、この件に関する「真実のあり方」を知る者はいないし、そしてそれに「触れようとする者」も現れなかった。それだけのことなんじゃないのか? そうでなければ DOM の Node.TEXT_NODE はもっと種類が細分化されるべきだし、ラテン文字や CJK 文字などのテキスト要素カテゴリを CSS からアクセスできて、例えば

body:text<latin:cjk> {
    word-spacing:   0.3em;
}

みたいな感じでテキスト要素カテゴリごとの境目に対する余白の微調整ができて然るべきだ。なぜならブラウザの標準の実装による余白の大きさを気に入らない人はいるかもしれないし、何よりブラウザごとに余白の大きさが異なるなんてことにでもなれば、このお方のように、フォントの違いでさえ気にかけるようなギリギリのチューニングを施す Web デザイナー達にしてみれば、たまったもんじゃないという話になってしまう。

重要なのは、「コントロール可能」であることであり、「余計なことはしない」ということでもある。そういう意味でも、self spacing はとても reasonable な選択だと言えるのではないだろうか。

そもそも、この空白って、あっちゃいけないものなの?

見た目だけの為に文字を挿入するべきではない、という意見はごもっともだと思う。恐らく、日本国内での言いだしっぺはこの辺だと思うのだが (「実際にやってみよう」のリンク先のサンプルは IE7 でもやっぱり正しくレンダリングできないのね ^_^;)、これに関して言えば、少々こだわりすぎかとは思われるものの、それでも一応理に適った、筋の通った話ではあると思うし、理解は出来る。

しかし今回の話の場合、単語と単語を区切る空白文字までもを、「見た目の為の文字」とみなしてしまうという事は、そもそも英単語を普通に区切る空白でさえも、「見た目の為に空白文字を使っている! セパレータであることを表す適切な文字を使うべきだ!」という話になってしまわないのか? そうならないのは、空白文字が「単語間のセパレータ」を意味する文字として適切だと一般に認められているからなんじゃないのか?

そうなのだとしたら、英単語同士を区切るセパレータに使用する文字として、空白文字が適切であるのに対して、英単語と日本語を区切るセパレータに使用する文字として、空白文字が適切ではない理由はあるのか?

思うに、日本語と英単語の間に入れる空白文字を「余計なもの」だと考える人は、そもそも、日本語と英単語の間に区切り文字を入れる必要などない、と考えているのではないかと思う。あるいは、なんとなーく見た目の為に空白を入れている人の中にも、その空白を、「単語間のセパレータ」を意味する文字であることを意識して使っている人は、案外少ないのかもしれない。

しかしながら、「日本語と英単語の間に区切り文字は必要だ」と考え、そのための区切り文字として空白文字を選択しているのであれば、それはそれでアリなんじゃないかと思う。そして、その必要性を定義できる人間が、HTML/CSS 仕様策定に関わる人間の中に存在しない以上、どちら側に捉えようとも、それは HTML を書く人間の勝手である、と考えるのが、現状では妥当であるように思えるのである。

ちなみに。

単位が日本語の場合、数字と単位の間はスペースを空けずに書くようにしています。ex) 1個、2個、3個、...

あ、あと、句読点の後は、スペース入れてません。ってことはそれって思いっきり見た目重視じゃねーか>ヲレ ((((((/;^^)/

コメント

_ 森井ゴンザレス ― 2007/01/15 23:42:12

大変勉強になりました。autospacing.js、SafariとMac IEで試しましたもののうまく読み込んでくれずでしたが、Firefoxだとバッチリautospacingされてました。berry coolだと思います。
記事を書いて様々なご意見をちょうだいし、半スペ問題は書き手の信念や哲学によるものなのかなと思いました。いろいろご意見はあるでしょうが、僕は半スペなしで行こうかなと思っております。もちろん半スペ派を攻撃するつもりは毛頭ありません。信教及び哲学の自由です。

_ T.MURACHI ― 2007/01/15 23:56:43

ぅぁ、Safari じゃダメでしたか (^_^; 。やっぱりテスト環境欲しいなぁ~っていうか Mac 欲しいなぁ~ (((((((/;^^)/
ってことはやっぱり注釈ポップアップも Safari じゃうまく動かんのかしら。。。つか、そういえば Konq. で試してなかったな。。。あとで knoppix で試してみるか。。。

_ T.MURACHI ― 2007/01/16 00:01:52

つか、今気付いたけど、berry cool って何だよwwwww>ヲレ (T-T)/

_ @DRK ― 2007/01/16 00:21:06

berryで辞書引けwww

スペースはー、blog書くときとか全く入れてません。
めんどくさいし、自分以外ソースは読まないからなぁ。

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
おいらがやっている会社の名前をひらがな4文字で。

コメント:

トラックバック

このエントリのトラックバックURL: http://harapeko.asablo.jp/blog/2007/01/15/1114210/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。

_ [ぴ] - 2007/01/16 00:48:46

なんか半年〜1年くらい前にも似た話題を見たな…。と思ったら今回のエントリの中でもまさにそれがリンクされてた。
自分はアルファベットの前後には半角スペース入れる派で、4〜5年前から習慣的に行っているので、もうすっかり手に染みついて何も考えなくても自然に半角スペースが入るようになってますが、これは本来 UA が行うべき仕事のはず。
と言ってもそんな UA がワープロ・DTP にしか存在しない中の次点の策としては、適切な半角スペースが自動的に挿入されるような機能がブログツールに付くと素敵です。
半角スペースを自動で入れる@404 Blog Not Found (Perl でのアプローチ)
スペースがないなら script 書けばいいじゃない@国民宿舎はらぺこ 大浴場 (JavaScript + CSS でのアプローチ)
そう、こんなの。
半角スペース入れが徹底されている Microsoft などは文書リリース前に自動整形するようなプロセスがあるんでしょうね。