技術者が押さえておくべき文字コードの基礎知識が得られる本(プログラマのための文字コード技術入門)

[改訂新版]プログラマのための文字コード技術入門 (WEB+DB PRESS plusシリーズ)

  • 2018/12/28
  • 矢野 啓介 (著)



最近になって「文字」が気になり始め、さらに『文字や文字コードに興味を持ったら絶対に読むべき本(ユニコード戦記)』を読んだこともあって、文字に愛着?のようなものを感じ始めたところです。

最終的には JIS や Unicode、ISO/IEC 10646 などの規格書を読まないといけないかな?とは思いつつも、私のような文字の基礎知識が薄い人間は、今の段階で読んでもすぐに飽きてしまいそうな気がしてます(笑)。

そこで、最近の事情をまえた文字技術を概観できるような本はないかと探して読んだのがこの本です。

タイトルに「プログラマのための」とある通り、文字そのものについての話というよりは、主に文字コードの基礎知識や利用上の留意点などが多く取り上げられています。

単なる符号化規則の話だけではなく、歴史的な経緯や、(絵文字も含めた)文字の種類、そして文字(コード)変換やプログラミング上の留意点など、幅広く触れられており、システム開発に関わる人が知っておくべき基礎知識が詰まった良い本だと思いましたので書き留めておきます。

<本の内容>

本書で取り上げられている話題を概観します。

【目次】
  • 第1章 文字とコンピュータ
    • 1.1 コンピュータで文字を扱う基本
    • 1.2 文字を符号化するということ
    • 1.3 文字集合と符号化文字集合
    • 1.4 制御文字
    • 1.5 文字コードはなぜ複雑になるのか
    • 1.6 まとめ
  • 第2章 文字コードの変遷
    • 2.1 最もシンプルな文字コード
    • 2.2 文字コードの構造と拡張方法を定める
    • 2.3 2バイト符号化文字集合の実用化
    • 2.4 1バイト符号化文字集合の広がり
    • 2.5 国際符号化文字集合の模索と成立
    • 2.6 まとめ
  • 第3章 代表的な符号化文字集合
    • 3.1 ASCIIとISO/IEC 646
    • 3.2 JIS X 0201
    • 3.3 JIS X 0208
    • 3.4 JIS X 0212
    • 3.5 JIS X 0213
    • 3.6 ISO/IEC 8859シリーズ
    • 3.7 UnicodeとISO/IEC 10646
  • 第4章 代表的な文字符号化方式
    • 4.1 JIS X 0201の符号化方式
    • 4.2 JIS X 0208の符号化方式
    • 4.3 Unicodeの符号化方式
  • 第5章 文字コードの変換と判別
    • 5.1 コード変換とは
    • 5.2 変換の実際
    • 5.3 文字コードの自動判別
    • 5.4 まとめ
  • 第6章 インターネットと文字コード
    • 6.1 電子メールと文字コード
    • 6.2 Webと文字コード
    • 6.3 まとめ
  • 第7章 プログラミング言語と文字コード
    • 7.1 Java
    • 7.2 Ruby 1.8
    • 7.3 Ruby 1.9以降
    • 7.4 まとめ
  • 第8章 はまりやすい落とし穴とその対処
    • 8.1 トラブル調査の必須工具
    • 8.2 文字化け
    • 8.3 改行コード
    • 8.4 「全角・半角」問題
    • 8.5 円記号問題
    • 8.6 波ダッシュ問題
    • 8.7 まとめ
  • Appendix
    • A.1 ISO/IEC 2022のもう少しだけ詳しい説明
    • A.2 JIS X 0213の符号化方式
    • A.3 諸外国・地域の文字コード概説
    • A.4 Unicodeの諸問題
    • A.5 Unicodeの文字データベース
    • A.6 規格の入手・閲覧方法ならびに参考文献
    • 参考文献

<感想>

400ページレベルの分量がある本ですが、専門的になりすぎず、かといって内容が薄いわけではなく、とても読みやすく、かつ丁寧な説明があります。

改訂新版が出るのもうなずける内容です。

私が購入した主な目的は、主に第2~3章、第8章と Appendix あたりの文字規格に関する内容を知ることでしたが、当然ながら本書の全ての内容は互いに関連があるので、結局、最初から最後まで読みました。

すると、個人的には全く興味が無かった「絵文字」とか、私が使ったことがない Ruby の日本語の扱いなど、いろいろと知ることができて面白かったです。

特に、絵文字(emoji)の仕様はこの本で初めて知ったのですが、とても興味深く読めました。

このあたりになると、漢字の字形云々の世界とは全く違うように見えて、実は似たような問題を内包しているのではないか?などと思ったりして、文字とは何なのか?をさらに考えさせられました。

絵文字の良し悪しは別として、その技術仕様や考え方はとても興味深いです。

また、第6章のインターネットと文字コードについても、実務上、知っておくと役立つことが多いと思います。

例えば、私の場合、HTML に lang 属性があるのは知っていましたが、その意味は深く考えたことがなくて、書体選択に関係する可能性があるとは知りませんでした。

第7章では Java (JSPを含む)と Ruby がプログラミング言語が取り上げられています。

私の場合は、Ruby 言語を使ったことがないため、ここは興味深く読みました。

一方で、Python や JavaScript などの他のメジャー言語は取り上げられていないため、特徴や留意点などの差分だけでも取り上げて欲しかった、とは思いましたが、これらをいいはじめるとキリが無いですね。

プログラミング言語の項に限らず、全体として、もう少し突っ込んだ内容を知りたいと思うところも多々ありましたが、この本の内容だけでも 400ページ弱ありますので、分量的に限界かもしれません。

むしろ「技術入門」として、多様な話題に触れて(概観して)、次のステップへのインデックスになっているのが、この本の良いところだと思います。

ところで、年齢がバレバレですが(笑)、実は文字コード関連の書籍は、過去に買って読んだことがあります。


これらの本を購入した当時は、仕事上の必要に迫られて必要な所だけつまみ食いしただけでしたので、面白いと思って読んだわけではありません。(当時は文字に興味がなかったし。)

しかし、今回取り上げた文字コード技術入門を読んで、久しぶりにページをめくってみると、さすがに内容が古いと思えるところがありつつも、以前とは違って興味深く読めます。

良くも悪くも、文字規格は過去の内容を包含していることを実感します。これは、この本が基礎知識を与えてくれたおかげで感じたことだと思います。

最後に、この本は読み物的に読むだけでなく、索引が比較的細かく列挙されているので、ハンドブック的な使い方もできそうです。

手元に置いておこうと感じた一冊です。

コメント

このブログの人気の投稿

Google Document AIで画像から表形式データを抽出する(Vision API OCRとの違い)

VirtualBoxのスナップショット機能

オントロジーエディタ Protégé を使ってみる