Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://exphenomenologist.blog100.fc2.com/tb.php/594-2a7fb6c5

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

田丸健三郎、小林龍生『Unicode IVS/IVD入門』

Unicode IVS/IVD入門Unicode IVS/IVD入門
(2013/02/28)
田丸健三郎、小林龍生 他

商品詳細を見る

複雑怪奇な日本語文字コードの世界を解説。特に、Windows 8で導入された、IVD(Ideographic Variation Database)を使った異体字選択の仕組みを扱っている。異体字は既定文字と異体字セレクターを組み合わせた、異体字シーケンス(IVS; Ideographic Variation Sequence)によって表現される。IVD/IVSについて解説した書物はほとんど存在しないので、本書はその点で貴重。本書300ページ強のうち、半分以上は文字コード表の付録で、本文は150ページ強。文字コード表ではJIS X 0213:2004の文字セットを基にしたUnicode、CP932(Windowsの独自文字セット)との対応表、逆にCP932を基にしたUnicode、JIS X 0213:2004との対応表を載せている。

志はいい本なのだが、いかんせん誤記が多すぎる。詳細は詳しい人たちが「IVS本へのツッコミ」としてまとめている。それも誤植というレベルのものでなく、年代や数字など基本的情報について、また基本的な考え方、外字を独自に作成しているなど広範囲に及んでいる。ここまで誤記が多いと第二版として修正するのも大変だろう。

逆に言うと、間違い探しのように読むことによって、複雑怪奇な日本語文字コードについて自分が正しく理解しているかどうかを確認することができよう。かなりきちんと自分で調べない限り、この本からは容易に引用してはいけない。そうして細かく読んでいたら、ツッコミページにないものをいくつか自分でも見つけた。せっかくなので書いておく。


【p.42, p.61, p.63, p.77】
「適応」という言葉が見られるが、これらは「適用」の誤り。この二つは、音が似ていることもあって混同する人が多い。「適応する(adapt)」とは環境に順応することで、普通は「~に適応する」と自動詞で使われる。「適用する(apply)」とは規則を当てはめることで、「~を~に適用する」と他動詞で使われる。「~を適応する」とあったらだいたい「~を適用する」の誤りの疑いが濃厚。
特にp.77では国語審議会による表外漢字字体表の解説を引用していて、その中に「適応」が現れるのだが、その原文(最初にある「見方」の3)に当たると正しく「適用」になっている。「そのまま引用しておきましょう」と書いてあるのに、そのままの引用になっていない。そもそも漢字も変わっている。


【p.53, p.55】
Windows 8について、「JIS90フォントパックをインストールすることにより、Windows標準フォントの字形をJIS90に変更することができます」(p.53)、および「JIS90フォントパックをインストールしている場合は、JIS90字形になります」(p.55)という記述がある。MS122に定義された漢字の字形をJIS90字形に変更するフォントパックがWindows 8に存在するような記述だが、本当?このフォントパックはWindows 7/Server 2008までの提供で、Windows 8には提供されないのではなかったか。著者の一人はMicrosoftの中の人なのだが。。。


【p.81】
3.6.6節の最後の文に現れる「解答」は「回答」の誤りだと思われる。


【p.105】
Unicode ConsortiumのWebサイトからの引用とされている囲みのなかに、カッコ書きで地の文が入っている。囲みが引用符の役割を担っているのだから、外に出すべき。


【p.112】
表4-3で、正規化形式KDの説明の欄にある"Compatobility"は"Compatibility"の誤記。


【p.126】
リスト4-2のコードはコンパイルエラーのもとになる。まず、変数lpstrをLPCSTR型で宣言しているが、LPCSTRはconstなので次の行で代入できない。正しくはLPSTR型で宣言すべきだろう。
さらに、for文があるのでifブロックが次の行の"return NULL;"で終わってしまうため、elseは対応するifを持たずエラーとなる。このelseブロックは不要だと思われる。条件を見るに、ifブロックのreturnかforループのreturnのどちらかで必ず返るのでは。
forループのなかにあるビット演算も怪しいけど、面倒なのでスルー。


【p.134】
リスト4-4のコードは最終行末にセミコロンがないので、コンパイルエラーのもとになる。
また、変数strTargetとstrDecodedのstring型宣言がない。他のコードサンプルではローカル変数の型宣言がすべて書かれているのだが、ここだけなぜないのか。


【p.152】
string.Length()というメソッドはC#には存在しない。リスト5-1で使っているように、string.Lengthプロパティの誤り。
また必ずしも誤りではないが、stringはStringの方がよいのでは。C#ではstringは単にSystem.Stringクラスのエイリアスだからいいけれども、違和感が。。。
StringInfo.LengthInTextElement()というメソッドはStringInfoクラスに存在しない。リスト5-1で使っているように、StringInfo.LengthInTextElementsというプロパティの誤り。
スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://exphenomenologist.blog100.fc2.com/tb.php/594-2a7fb6c5

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。