Microsoftセミナーに行って来た

昨日は仕事を早めに切り上げてこれに行って来た。
Unicode による JIS X 0213 実装 〜情報システムにおける日本語処理〜


会場はガラガラ。30人いたかどうかって感じ。
内容はおおむね文字コードとその周辺の基礎知識、ただしWindowsを中心にしたストーリー展開なのでEUCが居ない子にされてたりしてCP932とUnicodeに関する話題が中心。


Uniscribe APIとかそのあたりを期待して行ったのだが、テーマが変更になったのかその部分はなかった。10月にセッション概要が公開された時には

• Uniscribe API とタグ 
Uniscribe API の概要を理解すると共に、フォントを切り替える事なく字体を切り替える方法について学びます。
 
• OpenType フォント 
OpenType フォントの概要について。 

というのが確かに入っていたはずなんだけど、今見直したら削除されてた。何で削ったんだろう…。楽しみにしてたのに。


19:00〜20:30予定で20:00までの1時間で終わってしまったので、実は残りの30分でこれらのテーマが予定されていたのかもしれないなぁ。


私のように文字コードに多少は覚えのある人にはやや物足りない内容だった。知ってることばかりなので。あまりに暇なので資料の誤字のツッコミをしてたくらい。BOM=Byte Of MarkじゃなくてByte Order Markでしょ、とかね*1。技術的解説はさておき、Microsoft内部でCP932が歴史的に成立してきた(そして役割を終えた)経緯の紹介はこういう視点で見たことはなかったので面白かったか。
逆にビギナーには解説はあったとはいえ専門用語大杉でチンプンカンプン状態だったんじゃないかと予想。ま、このあたりのテーマは基礎になる概念を理解してないと、いきなり説明されても難しいよね…。


ISO 2022あたり端折らないでちゃんと説明した方がよかったんじゃないのかなぁと思う。その辺も基礎としては大事だよね。日本語処理しかテーマ的に考えてません!という態度も若干見えたので仕方がないかもしれないが。


全体的に文字コード周辺の概念説明が主で、具体的な使い方、使われ方とかそういう方向性ではなかった。基礎の基礎を押さえるにはそれなりに役に立つ講座なのかもしれない。
個人的には今回削られちゃった(?)UniscribeとかOpenTypeとかそのうちリベンジ開催してほしいなー


あと、unicode.orgをユニコードオルグと発音するのは個人的にはちょっと違和感があるなぁ。自分だったらオーグかな。元々organizationの略だから英語圏での発音もたぶんオーグに近い感じなんだと思うし。いくらなんでも日本語でオルガニゼイションとは言わないよね??
ただ主流派はなぜかオルグっぽい。⇒Wikipedia


セミナーでの説明とは直接関係ないけど、インスピレーションというか、MSDNでのAPI説明もよく考えたらどうなのよ?とかセミナーを受けつつ考えていた。WCHAR(UTF-16)を引数に取るAPIのバッファ長の説明って、たいてい「number of characters」になってた気がする。でもUTF-16の1ワードは果たして「a character」と言ってよいものかどうか。サロゲートペアとか合成文字を考慮すると必ずしも人間の考える「a character」とUTF-16の1ワードは一致しないんだよね。「number of WCHARs」とかにしたほうがすっきりするんじゃないのか? そのうちDWCHAR?(UTF-32)が使えるようになる日が来るのかどうかは知らないが、この辺の用語の曖昧さはいずれ何とかしてほしいなぁ。Microsoftさん。どうでしょう。


...とここまで書いて、調べてみたら、いつの間にか直ってる!? 最近は「in WCHAR values」とかにちゃんとなってるみたい。いつ直したんだろ。しばらく前まではこんなんなってなかった気が…


MultiByteToWideCharの説明に見る説明の変遷
Visual Studio: 「... to a wide character (Unicode UTF-16) string.」「Size, in WCHAR values」
Windows CE 6.0: 「... to a wide-character (Unicode) string.」「Size, in wide characters」
Windows CE 5.0: 「... to a wide-character (Unicode) string.」「The size, in wide characters」
Windows CE 3.0: 「... to a wide-character (Unicode) string.」「the size, in wide characters」
VC++6.0: 「... to a wide-character (Unicode) string.」「the size, in wide characters」


最近はこんな感じで誤解のないようより厳密に用語を変えたっぽい。
UnicodeUnicode UTF-16
wide characters → WCHAR values

*1:せめて間違うにしてもBytes Of Markとかにしてくれぃ