////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2003 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com

    送信日： 2003/05/12(Mon) No.206
    配信数： 3180 ( Mag2 + Pubzine )
＊    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine ( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                ２００３年５月１２日（月）の更新                */
http://www.kab-studio.com/

・ほとはー１話追加！
　三人合体ホットハーブに１話追加。攻撃！！
[ 三人合体ホットハーブ ]
http://www.kab-studio.com/Comic/HotHerb/


////////////////////////////////////////////////////////////////////
/*                        ちょお普通な日記                        */
http://www.kab-studio.com/nikki2/

2003/05/04 (Sun)
　ほとはー夏コミ版ラフ、まだできない……。でもすらすら描けてるかも。
コマ割りマンガは楽しい。巨乳女性の水着姿。今日のほとはーは特になし。
そして他の PC へのログオン。 NET USE とか WNetAddConnection() 系と
か。

2003/05/05 (Mon)
　ずーっとうたわれるもの。おもしれー。ムックル萌え〜。昨日の夜にほと
はー夏コミ版完成。そして Java 的思考。コマンドラインは便利です。

2003/05/06 (Tue)
　トウカ萌え〜。クーヤがパシフィカに似てる……。こつこつ同人誌描かな
いと間に合わないな。 Jakarta-common-lang 便利すぎ。月箱やメルブラサ
ントラ購入。そして WNetAddConnection2() 。そして userData 。そして
オフ会もどき。

2003/05/07 (Wed)
　うたわれるものクリア。評価は中の上。いいとこもわるいとこも。ムック
ルは置いとくと、エルルゥがいい……。 Jakarta-common-Validator も便
利。望まれてない未来。そして流し読み。そして２ちゃんケット。

2003/05/08 (Thu)
　仕様が〜、仕様がぁ〜。 <logic:iterate> で囲んだ中に <jsp:include> 
を入れる。バッグとかその他色々購入。佐次カッコイイ。エルルゥ＆カミュ
ゲット。スタックにあるなぁ。琥珀のつぶやき。

2003/05/09 (Fri)
　かなり眠い。 VB の完成。 <jsp:include> でサーブレットを呼べなかっ
た。 JSP のセキュリティ。ダウナー。ＣＧギャラリーのヒット数が高い理
由？

2003/05/10 (Sat)
　ほとはーにかぶヘッダーにぷらとわ。さらにほとはー夏コミ版。手探り状
態。プリンター修理。 XML のタグの順番。そして VS.Net 。何が新しくな
るんだか……。


////////////////////////////////////////////////////////////////////
/*                         風雅、舞い                             */
http://www.kab-studio.com/Novel/Fuga/

■　第七章　告白　−７−

「確かに、その手の情報は見つからないね」
　舞の実家、碧き泉のある家の居間で、少年はリシュネと一緒に古文書を読
んでいた。
「碧き泉とか、他の泉でも」
「うん、ないね。内容は大きく分けて３通り。技術解説、この泉の歴史、そ
して泉そのものに対する研究」
　少年はぱーっとページをめくっていく。それだけで「読んだ」ことになっ
ていた。
「かなり閉じた話ね」
　一緒にいる恭子が口を挟む。
「閉じざるを得なかったんだ。ここには僕らみたいな異能の人間がいたんだ
から、麓の村からも疎まれていたし、なにより」
　少年は本を閉じる。
「少なくとも、ここ千年の間に２１回は攻められているんだ」
「攻められてる？」
「戦争……ってこと？」
　少年はうなずいた。
「理由は様々だけど、それでここに籠城するしかなかったのは確かだね。だ
から、他の泉があるなんて思わなかったし、自分達の戦闘能力を上げること
に夢中になっていたんだ」
　少年は次の本に手を掛ける。
「その結果、最近の５回は、いずれもこの碧き泉の圧勝になっている。そし
て」
　その手が止まる。そのまま、見上げる。４人の視線の先に、美咲がいた。
　美咲の目は、言うな、と威圧していた。懇願していたのかもしれない。
「何度か、この泉の方から攻め入っている」
　美咲は唇を噛みしめた。
「……別に、非難しているわけじゃないんだ。むしろ」
　少年は目をそらして、立ち上がった。
「泉の能力を持つように、僕らも能力を持つ」
　リシュネは目を見開いて少年を見上げた。
「私達……ＡＰのこと？」
「僕の知る限り、泉の能力を持つ者は少ない、そうですね？」
　少年は美咲の方を向いた。その瞳は、真摯だった。
「ええ。私も奨も、泉に入って能力を受け継ごうとしてみた、けど不可能だ
った。舞は……特別なのよ」
「そして、ＡＰには特別な人間でなくてもなることができる。僕や、リシュ
ネみたいに。そして、きっとＡＰはどんどん増えていく」
「増え……る？」
「天地生物科学工業からファインダウト社を興して、AWからＡＰにシフトし
た経緯を見ても、きっと左さんは、ＡＰを増やすことに注力しているんだ」
「な……」
　美咲は「なぜ」という言葉を飲み込んだ。
　なぜ、あなたたちのような存在をこれ以上増やそうとするの。
　だが、その事実に最も戸惑っていたのは、少年とリシュネだった。
「左さんは、何をしようというのだろう」
　その少年の問いかけに、リシュネはうつむいて口を閉じたままだった。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『コミケの話題も結構出てくるようになったね』
「まだマンガの話だけだけどね」
『え？　他……ってことは、プログラムのとかあるの？』
「ウェブアプリとか用意してるらしいよ」
『うぇぶ……あぷりって？』
「ネット上で動くプログラムのこと」
『あ！　ネトゲー！』
「たぶん違う……」
『えー違うのー！　つまんなーい！』
「まぁその他にサンプルコードとかライブラリもあるらしいから」
『ようするにマンガだけじゃないのは確かなのね』
「情報出せるのはもう少し先になるけど、そういう予定もあるから」
http://www.kab-studio.com/
_______________________________________________________________[KCM]


////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.com/Programing/PragmaTwice/

　Version 11.06
Unicode

「今回は、文字コードのひとつ、 Unicode について紹介します」
『ゆにこーど？』
「そう。えーっと、文字コードについて簡単にまとめておくね。主な文字
コードには次のようなものがあります」

ASCII : 日本語のない文字コード。 Unicode 以外はこれを含んでます。
Shift JIS : Windows で日本語を扱うときはこれ。
JIS : 普段は使わないけどメールを送るときにはこれに変換する。
EUC : Unix 用。ホームページの中にはこれで書かれてるものも。
Unicode : ２バイト変数で１文字を扱う。微妙な立場。
UTF-8 : １〜３バイトで文字を表す。これからの本命？

『いっぱいある……』
「って言っても今回はこれらには触れません」
『今回は Unicode なんだよね』
「そう。 Unicode そのものには次のような特徴があります」

・２バイト変数で１つの文字を表現する。
・あらゆる国の文字を（一応）表現できる。
・ C++ では（一応）簡単に使用できる。
・ Windows では NT 、 2000 、 XP が対応している。

「となっています。ひとつひとつ見ていくと」

・２バイト変数で１つの文字を表現する。

『あれ？　Shift JIS も２バイトだったじゃない』
「あれは char がふたつだったでしょ。 Unicode の場合、 wchar_t ってい
う違う型を使います。で、これは」

typedef unsigned short wchar_t;

「ってなってます」
『 unsigned short と同じ、そっか、 short だから２バイトなんだ』
「このおかげで Unicode だとリードバイトとかトレイルバイトを気にしな
くていいんです」
『それいい！　変数の中にリードバイトとトレイルバイトの両方入ってるわ
けだから、区別しようがないんだもんね』
「そういうこと。これがまず Unicode のメリットのひとつ。次は」

・あらゆる国の文字を（一応）表現できる。

『何この〈一応〉って』
「 Unicode は２バイトだから、文字は何種類表せる？」
『 short だから……６５５３５通りだね』
「そう。それだけあるから、日本と言わずありとあらゆる国のありとあらゆ
る文字を表せるんです」
『それってすごい……』
「んだけど、実は６５５３５通りじゃ足りなかったんです」
『へ？』
「漢字みたいにすごく文字が多いものは全部表しきれなかったり、似た字が
ひとつにまとめられちゃったりしたんです」
『似た字がひとつにって……たとえば〈人〉と〈入〉とか？』
「あー、ううん、同じ国の文字はそうならなかったんだけど、日本の漢字と
中国の漢字で、見た目はちょっと違う、くらいのものが……」
『いっしょくた……？』
「そういうこと。これが Unicode が嫌われてる一番の理由かな」
『嫌われてるの？』
「微妙、だけどね。プログラミング言語によってはこれが標準のものもある
し」
『へー』
「さて次」

・ C++ では（一応）簡単に使用できる。

『また一応……』
「とりあえず、実際に使ってみます」

void UseUnicode()
{
    wchar_t pwch[] = L"ABCあいう";
    OutputDebugStringW( pwch );
    // ABCあいう
}

『お！　簡単にできたじゃない。えっと、違ってる部分は……まずさっきの
wchar_t を使ってるね』
「そう、 Unicode は char の代わりに wchar_t を使うから」
『次は……あ、 L って付いてる』
「そう。 "" で囲まれた文字列を Unicode 化する場合には、その先頭に L 
を付けます」
『付けないとダメ？』
「だめ。コンパイルエラーになっちゃうから。 Version 5.06 ( No.071 ) 
で〈 "" で囲まれた文字列は char のポインタになる〉って入ったでしょ」
『うん、言われた。あっ、そっか、それだと wchar_t と違っちゃうから』
「そういうこと。 L を付けると "" が wchar_t のポインタになるんです」
『そうしないと型が違っちゃうわけね』
「そういうこと。あともうひとつ違うところがあるんだけど」
『えーっと……あ！　W が付いてる！』
「そう、いつもは OutputDebugString() なのに OutputDebugStringW() を
使ってます」
『これも Unicode 用、ってゆーか、引数が wchar_t のポインタを受けると
か？』
「そういうこと。だから、 Unicode を使う時にはこっちを使わなくちゃい
けないんです」
『めんどい……』
「ところが、実は面倒じゃないんです」
『へ？』
「 API には実は３種類あるんです。たとえばこの OutputDebugString() の
系統だと」

OutputDebugString()
OutputDebugStringA()
OutputDebugStringW()

「の３種類」
『ウソ。いつのまにそんなに……』
「まず OutputDebugStringW() 、この W が付いてるのは Unicode 用。逆に
OutputDebugStringA() が付いてるのは普通の Shift JIS 用」
『あれ？　OutputDebugString() がそうなんじゃないの？　じゃあなんなの
いったい』
「 OutputDebugString() は実は OutputDebugStringA() にも 
OutputDebugStringW() にもなるんです。実は OutputDebugString は、普段
は #define で OutputDebugStringA() に置き換えられているんです」
『ってことは、 OutputDebugString() を使ってると思ってたら実は
OutputDebugStringA() を使ってたってわけね』
「そういうこと。で」

#define _Unicode

「ってすると、 OutputDebugString() が今度は OutputDebugStringW() に
置き換わるようになるんです」
『おお！　つまり、 OutputDebugString() を使ってれば、いつでも変えら
れるってわけね』
「そういうこと。ちなみにこういうふうに切り替えるために使うマクロにつ
いては Version 6.06 ( No.106 ) を参照ってことで」
『質問！』
「はい火美ちゃん」
『 W とか A ってなんの略？』
「 W は Wide 。２バイトで１文字を表すから〈ワイド〉ってことでそう
なってるみたい。 wchar_t の w もそうだし。 A は ASCII の A 」
『そっちは簡単な理由ね……』
「で、話を戻して。実はこのどっちも使える機能は、 wchat_t にも L にも
あるんです。それを使って書いてみるとこんな感じ」

void UseUnicode()
{
    TCHAR pwch[] = _T( "ABCあいう" );
    OutputDebugString( pwch );
}

『えっと、 wchar_t が TCHAR に、 L が _T() に……あ！　この _T って
よく見かける！』
「サンプルコードとかによく使われてるかな。こうしておけば、 _Unicode 
を #define するだけで Unicode が使えます」
『へー』
「ついでに書くとランタイムにも同じようなのがあって」

strcpy : 標準。一応 ASCII 専用。
wcscpy : Unicode 専用。
_mbscpy : 一応 Shift JIS 用。
_tcscpy : _Unicode が #define されてたら wcscpy 。
　　　　　そうでないなら _mbscpy 。

『つまり、さっきの例で言えば _tcscpy を使うべきってことね』
「そういうこと。そうすれば自動的に切り替えてくれるからね」
『質問！』
「はい火美ちゃん」
『 T ってなんの略？』
「たぶん Text の T 。 _T は _TEXT って書くこともできるから」
『もうひとつ質問！　なんでこれ、今まで教えてくんなかったの？』
「色々理由があって、まずはこれ」

・ Windows では NT 、 2000 、 XP が対応している。

『さっき言ってたのの最後のね』
「これはつまり、 Windows95 とか Windows98 とか WindowsMe では使えな
いってことなんです」
『げげ！　使えないってどういうこと？？』
「 W が付いた API 、あることはあるんだけど中身が入ってないってこと」
『それじゃダメね……』
「だから実際には使えないのも同じ。それに、一番最初から教えるのにこう
いうよく分からないのは含めたくなかったからね」
『確かに _T とかいっぱいあるとわかんないね……』
「というか……まぁ僕の知ってる限り、実際に Unicode 版を使ってるのっ
て知らない」
『便利そうなのに』
「 C++ ではなじみないから、難しいかも。さて、最後に」

    wchar_t pwch[] = L"ABCあいう";

「これが、メモリ上ではどう入ってるのか確認します。ブレークポイント付
けてアドレス調べて、メモリ直接見てください」
『いつものパターンね』
「そうすると」

A     B     C     あ    い    う    \0
41 00 42 00 43 00 42 30 44 30 46 30 00 00 

「ってなってます」
『あ、そっか、２バイトずつってことは、 ASCII の A とか B とかもそう
入ってるんだ。……あれ？』

A
41 00

『ってこと？　なんか変くない？』
「 Version 4.07 ( No.057 ) で説明したバイトオーダーがあるから」
『げ！　こんなとこにもあの面倒なのが！』
「で、バイトオーダーって OS 毎に違うんだよね。その辺もややこしいから 
とりあえず使わない方がいいかも」

/*
    Preview Next Story!
*/
『なんかすごく便利そうだったのに……』
「これは Unicode が悪いって言うより C++ が悪いかな」
『え？　どうして？』
「他の言語だと Unicode が標準っていうのもあるから」
『え〜？　ずるい〜』
「というわけで次回」
＜ Version 11.07 １バイト文字と２バイト文字 ＞
『につづく！』
「まぁいいことばかりじゃないんだよね、これが……」
『そなの？』
「文字コード関係は、はまると怖いよ、ほんと……」


////////////////////////////////////////////////////////////////////
/*                ２００３年５月１９日（月）の更新                */
http://www.kab-studio.com/

・ほとはー追加予定
　三人合体ホットハーブに１話か２話追加予定。次の週は家にいないのでそ
の分も追加するかも……。


////////////////////////////////////////////////////////////////////
/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.com/nikki2/
・購読登録を解除したいときにはこのページで行なってください。
＊http://www.mag2.com/m/0000012198.htm
＊http://www.pubzine.com/detail.asp?id=000590
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.com/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.com/Info/MailMagazine/

    (C)KAB-studio 1999 - 2003 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com
*/
////////////////////////////////////////////////////////////////////

