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

    KAB-studio.h


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

    送信日： 2003/04/21(Mon) No.203
    配信数： 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/04/13 (Sun)
　昨日は実家へ。ＰＣの移行のお手伝い。派遣先から電話……。帰ってから
は昼寝。そのあとダビングしたりバックアップ取ったり。そして Ever17 
Premium Edition 、動物のお医者さん、海外から、専用機お勧め、ほとはー
絶対！

2003/04/14 (Mon)
　午前中は色々。帰りにゼミチョーとごはん食べる。そして感想。「変わっ
てない」そうです。

2003/04/15 (Tue)
　XMLSerializer で改行入れようとしたら入らない〜。無理矢理オーバーラ
イドして解決。 DynaActionForm をコピー。 MUVO の感想。小さいっていい
なぁと。そして LAST EXSILE と　Wolf's Rain 。

2003/04/16 (Wed)
　BaseMarkupSerializer#printText() なんてオーバーライドできないし。
どうしよう。サッカー見つつのんびり。マリみて面白い。どこがって言えな
いけど。そして海外から。お仕事なのね。

2003/04/17 (Thu)
　風花来る。思ったよりも良かったかも。昨日のは xml:space="preserve" 
で解決した。ちゃんと勉強すべき？　kab-studio.biz ドメイン取得。将来
移行予定。ミラーリング。そしてエアマスター。最近格闘技ものにこだわり
がありすぎ。

2003/04/18 (Fri)
　フロッピーのフォーマットがお仕事。カレントディレクトリを勘違いして
た。パスの処理を考えないと。はじめの一歩のスペシャル。秋葉原行きは来
週。マシンのベースが来てから。

2003/04/19 (Sat)
　午前中はのんびりとかぶヘッダー。午後からはほとはーを１話半。神奈川
の歌。ホントの愛。


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

■　第七章　告白　−４−

　リシュネは３０分ほどで戻ってきた。
「早かったね」
　恭子が言う。美咲はすでにいない。
「……読めなかった」
「？」
「難しい字が多くて……」
　ああ、と恭子は納得した。
「昔の文献だものね、旧字体とか使われてるんでしょ」
「それもあるけど、私、完全に日本語使いこなせるわけじゃないから」
「え、そうなの？」
　リシュネを完璧な存在として見ていた恭子にとって、それは意外な事実だ
った。
「私のバージョンだと情報処理能力はあまり強化されてないから。彼ならテ
キスト読めばすぐに取り込める」
「彼って、あの男の子？」
　リシュネはうなずく。
「あなたとあの少年って、能力的に違うってこと？」
「私は実験体だから」
「実験……体……？」
　恭子の声がこわばった。
「でも」
　それをリシュネは感じ取った。
「私は洋一に感謝してる。だって、ＡＰになれなかったら、私、死んでいた
から」
「え？」
　と訊くのを断るように、リシュネは立ち上がった。
「帰る」
「え？」
「メンテナンス受ける必要があるから。飛んで帰れたら、もう少しいられる
んだけど」
「うん、わかった……」
　メンテナンス。私達にとっては食事を取るようなものなのかもしれない。
でも、それはどこででもできることじゃない。
　自由が、ない。
「リシュネ」
　居間から出ようとするリシュネを、恭子は呼び止めた。
「また、来てね。舞も朴さんもいないけど」
「……」
　リシュネは沈黙して、少ししてから、ほんの少し、うなずいた。
　リシュネが扉を閉めてから、少し経って美咲が入ってくる。
「……」
「……？？？」
　美咲にジト目で睨まれても、恭子は理解しかねた。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『ホームページ版の #pragma twice 、人気ないね』
「まぁそれは仕方ないよ」
『なんで？』
「元々の読者は購読してるか縮刷版かは見てるだろうから」
『……じゃあなんでわざわざほむぺ版を？』
「目的は google 」
『あ！　そっか、検索でヒットすればいいんだ』
「コンテンツを増やしていけば」
『どんどんヒットするようになってみんな来てくれる！』
「そうやって新規読者を開拓しようと思って」
『っつーか……そーゆーこと、ここで言っていいの？』
「微妙……」
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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

　Version 11.03
Shift JIS

「前回は、ファイルパスからファイル名だけ取り出すっていうのをしてみま
した」
『と思ったら』

    char ch[] = "C:\\Test\\ソフト.txt";

『が』

フト.txt

『になっちゃったのよねー。なんで？』
「これは、日本語の文字列が特殊だから。日本語を処理することを考える
と、実は文字列処理はとっても難しくなります」
『げげ！』
「でも、避けては通れない部分だから、まず最初に解決しておくことにしま
す」
『……そんなに難しい？』
「ややこしいんだよね、とにかく。苦手な人もかなりいるから、すぐわから
なくても大丈夫だからね」
『フツーのプログラマーも難しい分野なのね……』
「ではさっそくいきます。まず、さっきの文字列」

    char ch[] = "C:\\Test\\ソフト.txt";

「これが、メモリ上にはどう並んでいるかメモリウィンドウで見てみます」

C  :  \  T  e  s  t  \  ソ    フ    ト    .  t  x  t  \0
43 3A 5C 54 65 73 74 5C 83 5C 83 74 83 67 2E 74 78 74 00

『あれ？　ソフトのところ……』
「そう、ふたつずつになってるでしょ。日本語の文字は」

ソ

「だったら」

83 5C

「っていう２文字分、つまり２バイトで表現してるんです」
『なんで２文字分？』
「まずはそこからだね。コンピューターはアメリカでできたものだから、文
字って言ったらもちろんアルファベット」
『そうだね』
「アルファベットって文字数少ないから１バイトで……１バイトで表現でき
る数ってやったっけ」
『えっと、数字だと、 char は -128 〜 127 だよね』
「 unsigned だと？」
『あー、えーっと、 0 〜 255 だったね、 Version 4.06 ( No.056 ) の時
に教わったけど』
「ってことは、１バイトだと２５６文字分表現できるってこと」
『 C が 0x43 、 : が 0x3A 、みたいにってことだよね』
「そうそう。でも２５６文字じゃ漢字は」
『あ！　そっか、漢字なんてすんごく数あるもんね、入りきらないんだ』
「だから、日本語の文字は何バイトかくっつけて１文字を表現するしかなく
て、だから 0x83 0x5C でソを表すってなったわけ」
『なるほどねー』
「ただし！」
『ただし？』
「同じソでも」

0x83 0x5C
0x30 0xBD
0xA5 0xBD
0x25 0x3D

「って色々な数字で表されるんです」
『ど、どういうこと？』
「ソを表示するためには」

[「ソ」を表す数字]
　　　　↓
[変換表で数字を「ソ」に]
　　　　↓
[フォントの「ソ」を使って画面に表示]

「っていう段階を踏みます。ところが、真ん中の」

[変換表で数字を「ソ」に]

「がいっぱいあるんです」
『げ！』
「ある変換表は 0x83 0x5C をソに、またある変換表は 0x30 0xBD をソに変
換するっていう具合に。こういう変換表を【文字コード表】って言います」
『あー、インターネットしてるといっぱいあるよね、 EUC とかシフト JIS 
とか』
「そうそう、それそれ。で、ウィンドウズでは Shift JIS っていう文字
コードが使われてます。だから」

[「ソ」を表す数字 0x83 0x5C ]
　　　　↓
[ Shift JIS 文字コード表で数字を「ソ」に]
　　　　↓
[フォントの「ソ」を使って画面に表示]

「っていう手順で表示されます。インターネットとかの他の文字コードの場
合は」

[ 他の文字コードの「ソ」を表す数字 0x30 0xBD ]
　　　　↓
[ 他の文字コードから Shift JIS に変換 ]
　　　　↓
[「ソ」を表す数字 0x83 0x5C ]
　　　　↓
[ Shift JIS 文字コード表で数字を「ソ」に]
　　　　↓
[フォントの「ソ」を使って画面に表示]

「って感じになります」
『一度 Shift JIS ってゆーのに変換してから表示するわけね。あれ？　こ
の Shift JIS と、さっきあたしが言ったシフト JIS って同じもの？』
「そう、おなじもの。この Shift JIS ＝シフト JIS がウィンドウズで使わ
れてる日本語の文字コードだから、インターネットのとか考える必要がなけ
ればこの Shift JIS のことだけ考えればいいから」
『普通にプログラムしてればそれでいいってことよね』
「今のところはね」
『？』
「本当は Shift JIS じゃなくて MS932 とか Windows-31J とか言わなく
ちゃいけないんだけど……ん、今のは忘れて」
『むー、なんか気になる……』
「もういちどまとめると、ウィンドウズでは日本語の文字は Shift JIS 
っていうのを使ってて、ソなら」

[「ソ」を表す数字 0x83 0x5C ]
　　　　↓
[ Shift JIS 文字コード表で数字を「ソ」に]
　　　　↓
[フォントの「ソ」を使って画面に表示]

「って感じに変換されます」
『うん、そこまでは大丈夫』
「じゃあ、前回の問題について。というより見ればわかると思うけど」

\  ソ   
5C 83 5C

『あ！　なに、 \ は 0x5C 、ソは 0x83 0x5C 、ってことはその２文字目が
\ と同じなんじゃない！』
「そうなんです。だから普通に \ を探していくと、このソの２バイト目と
一致しちゃうんです」
『……よーするに、それが \ じゃなくて、ソの２バイト目ってことがわか
ればいいんだ』
「そういうこと。この Shift JIS の１バイト目を【リードバイト】、２バ
イト目を【トレイルバイト】っていいます」
『りーどばいとととれいるばいと？』
「英語で書くと Lead Byte と Trail Byte 。 lead は〈先行する〉、 
trail は〈ついていく〉って意味があります」
『よーするに前と後ろってことね』
「そゆこと」
『だから、 \ がみつかったときにそれがトレイルバイトかどうかが判れば
いい、ってことだよね。……でも、ピンポイントで見たら、わかんないよ
ね』
「そう、だから前後関係で見ないといけないんです」
『つまり、１バイト前がリードバイトかどうか調べるってこと？』
「まずはそう」
『まずは？』
「そう、まずは、ね。このリードバイトは、 0x81 〜 0x9F と
0xE0 〜 0xFC の間の値って決まってます」
『つまりその間かどうか見ればリードバイトかどうか』
「わからないんです」
『へっ？』
「なぜかっていうと、トレイルバイトは 0x40 〜 0x7E と 0x80 〜 0xFC の
間の値って決まってるからです」
『……重なってる？』
「そういうこと。プログラムで試してみようか」

void OutputLeadAndTrail()
{
    char ch[] = "＝＝";
    TRACE( "%s\n%s\n", ch, &( ch[1] ) );
}

「＝＝は Shift JIS 、つまりいわゆる全角文字で書いてください」
『えーっと、まず普通に表示して、次に……あ、１バイト先から出力してる
んだね』
「そう。で、これを実行すると」

＝＝
＝

『げ！　なに、また同じ＝？』
「 ch をメモリウィンドウで見ると」

＝    ＝    \0
81 81 81 81 00

「ってなってるんです」
『……ってことは、ずらすと……』

＝       \0
81 81 81 00

『ってこと？？？　これじゃリードバイトかトレイルバイトかわかんない
じゃん！』
「というわけで次回に続く！」

/*
    Preview Next Story!
*/
『あーもうなんだか混乱してきた！！』
「こういうのはメモリを見たり紙に書いたりするといいかも」
『今みたいに？』
「頭の中だけで考えると混乱するだけだから」
『へー』
「というわけで次回」
＜ Version 11.04 文字種の判定 ＞
『につづく！』
「だから、 VC って初心者向けかな」
『なんの話？』
「こっちの話」


////////////////////////////////////////////////////////////////////
/*                ２００３年４月２８日（月）の更新                */
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
*/
////////////////////////////////////////////////////////////////////

