『[改訂新版] プログラマのための文字コード技術入門』を読んだ
年末に発売されていたので読みました。
[改訂新版]プログラマのための文字コード技術入門 (WEB+DB PRESS plusシリーズ)
- 作者: 矢野啓介
- 出版社/メーカー: 技術評論社
- 発売日: 2018/12/28
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
どんな感じの本だかざくっと
タイトルに「プログラマのための」あるように、プログラミング経験者がターゲットになっています。ビット・バイト、2進数・16進数、ファイル、プロトコルのような「常識」についてはさらっとした説明で済まされているので、その分、文字コードの本質的な部分・実践的な部分の密度が高くなっています。文章が平易なので、読み進めやすいかと思います。
さらに内容をはっきりさせるのであれば、『「現代日本のプログラマのための」文字コード技術入門』といったところでしょうか。この本は、日本で現在使われている文字コードの話が中心です。世界各地の文字コードだったり、歴史的な文字の符号化などにもおもしろい話はたくさんあるのですが、そこには深入りせず、実用的なテーマに絞って解説されています。国内での業務にすぐ役立ちそうな内容です。
第7章「プログラミング言語と文字コード」では Java と Ruby が題材になっていますが、他の言語でも基本的な概念は共通しています。それ以外の章では Java や Ruby の知識はまったく要求されませんので、馴染みがなくても大丈夫です。その前の第6章が Web の話だということもあり、個人的には JavaScript も取り上げてほしいところですが。
初版との比較
この本(改訂新版)は第2版にあたります。初版は2010年2月に発行されています。
プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)
- 作者: 矢野啓介
- 出版社/メーカー: 技術評論社
- 発売日: 2010/02/18
- メディア: 単行本(ソフトカバー)
- 購入: 34人 クリック: 578回
- この商品を含むブログ (129件) を見る
初版と改訂新版、左右に並べて目で diff をとりながら読みました。Unicode をはじめ、各規格・ツールの更新に合わせた細かな対応がなされていますが、こうして見比べてみると、文字コードの本質的な部分についてはほとんど変わらないことが分かります。Unicode 絵文字(2010年〜)についての記述も増えていますが、ここ数年の世界的な普及を見ると、第3版ではもっともっとページ数が割かれるもしれません(笑)
この期間における最大の変化は、UTF-8 の圧倒的な普及でしょうか。初版では、著者の「JIS X 0213 推し」な雰囲気が端々から伝わってきましたが、UTF-8 の普及がそれを取り込む・呑み込むかたちになりました。Web ブラウジングで文字化けに遭遇するようなこともめっきり減り、たまに出会うと懐かしさすら感じます。Shift_JIS や EUC-JP や ISO-2022-JP を知らずに、UTF-8 一本で暮らしていける世代がすでに出てきているはずです。「レガシー」文字コードから解放される一方で、Unicode の孕んだ複雑さと向き合う場面が増えそうですが……
ただし、「UTF-8 の圧倒的な普及」という印象は、自分が仕事で新しめの Web アプリケーションを触っているから、というのもあるかもしれません。大企業や役所の業務システムはいまどんな感じなんでしょうか。
メモと補足
p. 9 図 1.2
亜 哀 愛 悪 握 圧 扱 安 … 惑 枠 湾 腕
となっていますが、これは「旧」常用漢字の先頭部分と末尾部分ですね。2010年の常用漢字改定によって、「亜 哀 挨 愛 曖 悪 握 圧 … 惑 枠 湾 腕」という並びになりました。
p. 193
IANA の登録簿には、……実際に使われている JIS X 0213 の符号化方式が登録されていないという問題もあります。
登録されていなかったんですね、知りませんでした。
https://www.iana.org/assignments/character-sets/character-sets.xhtml
需要がなかったのでしょうか……;;
p. 206
HTML のDTD において、「copy という名前は
©
を表す」という定義がなされているため、……
このあたりは HTML 4.01 の話です。HTML5 に DTD は存在しません。
p. 208
Shift_JIS を用いる場合はリスト 6.1 の例の「UTF-8」の部分を「Shift_JIS」に、EUC-JP の場合は「EUC-JP」にします。
HTML の <meta charset="hogehoge">
を説明している箇所です。ただし、この本が参照している HTML 5.2 には
Authors should use UTF-8. Conformance checkers may advise authors against using legacy encodings.
という説明があり、「UTF-8 を使用すべき」となっています。一方、HTML Living Standard ではさらに進んで
The Encoding standard requires use of the UTF-8 character encoding and requires use of the "
utf-8
" encoding label to identify it. Those requirements necessitate that the document's character encoding declaration, if it exists, specifies an encoding label using an ASCII case-insensitive match for "utf-8
". Regardless of whether a character encoding declaration is present or not, the actual character encoding used to encode the document must be UTF-8.
という記述になっており、「UTF-8 を使用しなければならない」ことになりました。
p. 216
URL の中に、予約されている記号や、ASCII で表現できない文字を書きたいときには、URL 符号化という方法が使われます。
この本では触れられていませんが、ドメイン名部分は Punycode によって符号化されます。例えば、https://日本語.jp
は https://xn--wgv71a119e.jp
になります。
p. 222
クライアントからの送信に使われる文字コードは、HTML の form 要素の accept-charset 属性で明示的に指定することもできます。
accept-charset="Shift_JIS"
と指定すれば Shift_JIS で送信するということです。
HTML 5.2 では
[...] each token must be an ASCII case-insensitive match for one of the labels of an ASCII-compatible encoding.
となっています。一方、HTML Living Standard では
If specified, the value must be an ASCII case-insensitive match for "
UTF-8
".
p. 226
最後に、これからの日本語メールの符号化がどうあるべきかを考察しました。
初版の名残です。初版では今後についての考察があったのですが、UTF-8 の普及により、改訂新版ではこれが削除されています。
p. 293 表 8.1
表のタイトルが「ベンダー依存の変換の問題の発生する代表的な文字」になっていますが、おそらく表 8.2からの編集ミスです。
[改訂新版]プログラマのための文字コード技術入門 (WEB+DB PRESS plusシリーズ)
- 作者: 矢野啓介
- 出版社/メーカー: 技術評論社
- 発売日: 2018/12/28
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
[改訂新版]プログラマのための文字コード技術入門 WEB+DB PRESS plus
- 作者: 矢野啓介
- 出版社/メーカー: 技術評論社
- 発売日: 2018/12/22
- メディア: Kindle版
- この商品を含むブログを見る