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

    KAB-studio.h


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

    送信日： 2001/06/18(Mon) No.112
    配信数： 3790 ( Mag2 + Pubzine )
＊    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine ( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////

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

・更新なし。
　Flash にかまけてたらなんか更新遅れ目(汗)。


////////////////////////////////////////////////////////////////////
/*                        チョー普通な日記                        */
http://www.kab-studio.com/nikki2/

2001/06/10 (Sun)
　作曲に走ったり Flash に励んだりと創作意欲大爆発。代わりにホット
ハーブがおざなり……。アニメとかはちょっとぱぱっと。そんだけ Flash
にのめり込んでる？

2001/06/11 (Mon)
　Java は 3DCG と XML 。 XML はツリーを散策しなくて住む SAX の方が楽
かも。勤務地ほぼ決定。どきどき。ごはんは煮込みハンバーグ。そして突然
の FTP トラブル。ヒット数高いってプレッシャーやね。

2001/06/12 (Tue)
　 Java は MySQL と XML 。タダでデータベース立てられる時代……。 XML
は前できなかった新規ファイル保存。勤務地関係でちょっと。 Win32API で
構造体のサイズを渡す理由。最後は曜日のずれ(汗)。

2001/06/13 (Wed)
　 Java は 3DCG と XML 。 DTD と XSLT が例通りに動かない〜。それにし
てもタダばっかし……。 Flash 休止の決定。ホットハーブ一本に絞りま
す。お金の問題もあるし。

2001/06/14 (Thu)
　 Java はデザパの復習、 javadoc でドキュメント作り、そして講座を開
く(汗)。 Java はポリモーフィズム必須なのに、なぜかあんま注目されてな
いのはなぜ？　六本木を後にする想い。新しいノートＰＣのお勧め。お金が
きつい……。

2001/06/15 (Fri)
　 Java は大講座大会。まわりの人にオブジェクト指向関係を中心にざっぱ
り解説。結構分かってくれたかな？　六本木最終日ってことで飲みへ。なん
で日記も大遅刻(汗)。そして Codian のシェルエクステンションについて。
結構眉唾物かも……。

2001/06/16 (Sat)
　カレールゥ失踪事件。昼間はかぶヘッダーにぷらとわにホットハーブ。相
変わらず仕(私)事に励んでます。そして Win2K でまどかぶが文字化け。そ
ろそろバージョンアップ時？


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

■　第一章　予言と運命　−５−

「家に入るのは久しぶりだけど、うまくやってるみたいじゃない」
　美咲は、もう少し散らかしていると想像していたが、そういった感じは全
く見受けられなかった。別段、急いで片づけた形跡もない。
「二人とも手伝ってくれるからな」
「そんな、父さんががんばってくれてるから」
「聞いてはいたけど、今日見てみて、やっとほっとしたな」
　でも、ちょっと寂しいかな……。
「……で、いい加減話してくれないか」
「ダメよ、舞が帰ってきてから話すわ」
「でも、大事なことなんでしょ？」
「大事なことだからよ。洗礼を受けたのは舞だけなんだし」
　洗礼、それは伝承としてしか残っていなかった。もしかしたら、単に苦痛
を与えるだけの修行の場ではないか、そうとさえ思われていた。
「舞には能力も、天賦の才能もあるわ」
「だが舞は……継ぐ気はないそうだ」
「知ってるわ、けど……」
　誰かが継がなくてはならない。そうとなれば、舞か奨か、どちらかしかい
ない。
「俺は、継いでもいいけど……」
　でも、舞が継ぐべきなのは明白だった。あまりにもうってつけすぎる。高
すぎる能力が、舞を縛っていた。
「それはともかくとして、話は聞いておきたいな。まだ帰ってくるまでには
時間あるし」
「……分かったわ」
「そうか」
「その前に紅茶でも」
「私が煎れた」
「あ、そう……」
　美咲がダイニングの椅子に座り、元々座っていた奨が姿勢を正し、ティー
カップを三つテーブルに置いてから、正も座る。
「一週間前の朝、碧き泉が突然光り出したの」
「泉が光った！？」
　そんな話、聞いたことがない。
「そう、で、昔の文献とか日記とか引っぱり出して調べたのよ、そしたら、
こんな伝承があったのよ……」


                   碧き泉光る時、始まりの日
       これより拾弐度目の満月、その元で闇、再び蘇るであろう


「ねえ……母さん知らなかったんなら、伝承じゃないんじゃない？」
「う”、鋭い……ってそれはともかく、まだ続きがあるのよ」


      しかしまた、四つの力現れ、闇の者と闘う運命に有り
       すなわち、四色の泉に力を授けられし四つの光なり


「四つの力……」
「ってことは、その中の一人が舞だってことか？」
「それはそうでしょ。私が舞にこだわったわけ、わかったでしょ？」
「でも、舞には酷すぎない？　なんだかんだ言ってもまだ十七歳なんだよ」
「もう泉のことを蒸し返さないで欲しい、って気持ちは解らなくもないわ。
私だって、今回みたいなことが起きるとは思ってもみなかった。でも……」
「運命、か……」
　奨が両拳とテーブルに叩き付ける。跳ね上がった紅茶がテーブルを濡らし
た。
「いつだって、いつだって運命だ……もう舞を放っておいてやれよ……昨日
のことだって……」
「この前のこと？」
　奨の言葉に動揺しつつも、美咲は正に訊く。
「昨日、舞が発砲事件に巻き込まれた」
「は、発砲事件って……」
「何者かは分からないが、公園でいきなり銃を乱射したらしい。その場に居
合わせた舞が、その者達に式を使ったんだ」
「それじゃあ、もうここには」
「でも、新聞にもニュースにも載ってなかったんだ」
「……本当なのね」
「ああ、早く言おうと思ってたんだが」
「舞の学校はどこ！！」
　美咲は立ち上がり、そう叫んだ。
「ど、どうしたんだ美咲」
「何言ってるの！！　闇の者って言ってもどんな存在なのか全く見当も付か
ないのよ！　もし昨日のそれが闇の者の仕業だったのなら」
　真っ先に家を飛び出したのは奨だった。
「今車を出す。少し待ってくれ」
　自転車を駆り舞の高校へと走っていく奨を、美咲は心配そうに見送った。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『あら、更新なしが２回続いちゃうね』
「そういうときもね」
『そういうときは、大風呂敷にこれからの予定をどうぞ！』
「……ホットハーブしかないんじゃないかな」
『例の４コママンガね。ホントにスタートするのかな』
「何羽かできてるみたいだし、始まるのは始まるでしょ」
『プログラミング関係はないの？』
「ぷらとわがあるからいいんじゃないの？」
『いいのかなー』
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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

　Version 6.12
演算子を気に掛ける！

「さて今回から、演算子関係でバグの出やすい部分や見つけ方とかを具体的
に紹介していきます」
『バグの出やすいとこってあるんだ』
「あるよー。まず重要なのは、基本型に演算子を使うって事は、関数を呼ぶ
ことじゃないってこと」
『何言ってんの、当たり前じゃん』
「まぁそれはそうなんだけど、その当たり前の事にいろんな問題があるんで
す。たとえば、書き間違い」

void CDebugDlg::OnButton1() 
{
    int i = 0;
    if( i = 0 )
    {
        TRACE( "Hit!\n" );
    }
}

「あ、これすんごく分かりやすいね……」
『え、何が？』
「って、気付かないの？」
『え”……………………あ！　if( i == 0 ) じゃないの！？』
「そうです。これだとどうなると思う？」
『え？　んー、普通 if の中で = なんて使わないし……』
「 i = 0 すると i に置き換わるから、その i が if に掛けられる、つま
り if( i ) と同じ事になるから」
『 i は 0 だから、 if の中に入らない！』
「そゆこと。で、重要なのは、 = が１個か２個かでここまで変わるってこ
と。メンバ関数ならそういうことないでしょ」
『そりゃ、関数の名前違っちゃうことになるんだからそうだね』
「演算子はシンプルだから、その分ちょっとした間違いが大きな問題になり
かねないから。それに、関数と違ってブレークポイントを付けられないで
しょ」
『そっか、関数が呼ばれるんなら、関数の中にブレークポイントを付けとけ
ば呼ばれるときにチェックできるんだね』
「これは変数にアクセスする時すべてに言えることなんだけど、関数呼び出
しと違って〈感知できない〉から、チェックが難しいんだよね」
『だから、色々気を付けなきゃいけないってことね』
「そういうこと。まずは、演算子そのものが結構危険なものだって認識を持
つことが大事かな」
『はーい』
「そしたら、どういう部分について気を付けて、どういうことをすればいい
のか見ていきます。まず今の例みたいな、 if や while の場合」
『 = と == ね。でも気を付けるしかないでしょ？』
「そうでもないよ。有名な方法でこういうのがあります」

void CDebugDlg::OnButton1() 
{
    int i = 0;
    if( 0 = i )
    {
        TRACE( "Hit!\n" );
    }
}

『あ、 if の中身、左右逆だ！』
「 == なら普通に比較するから問題なし。 = だと定数値に代入しようとす
るから」
『コンパイルエラーになるわけね、なるほど』
「ただ、僕はあまり使ってないけど」
『え、そなの？』
「だって見にくいし」
『見にくい？』
「変数が左にある方が読みやすいと思うから。この手の問題は、読みやすさ
が下がれば下がるほど見つけにくくなるから、僕としては、ね」
『なんか微妙なところ……』
「書き間違い問題には & と && や | と || とかあったりするから、そう考
えると見やすさ重視かな」
『こういうの違ってても、コンパイルエラーになんないんだね……』
「あとは、 if の話に戻ると、 == を使わないで直接 if に掛けるとかって
方法もあるかな」

void CDebugDlg::OnButton1() 
{
    int i = 0;
    if( i )
    {
        TRACE( "Hit!\n" );
    }
}

「でもま、今読みやすさが重要だって言ったけど、この if の使い方も、
 0 か 0 以外かって、結構混乱しやすいと思うんだよね」
『つまり、 i がどうだったらどうするのか、とかだよね。これって頭こん
がらがるよねー』
「他にも < か > かとか」
『そうそう、〈５以下か１０以上〉とか、この前 || 使った方法教えても
らったけど、自分でやってみるとすんごくこんがらがる！』
「僕は数直線を想像するようにしてます」
『数直線？』
「定規の目盛りみたいなの。たとえばこんな感じ」

void CDebugDlg::OnButton1() 
{
    int i = 13;
    if( ( i <= 5 ) || ( 10 <= i ) )
    {
        TRACE( "Hit!\n" );
    }
    // Hit!
}

「この if の中身、 5 >= i とか i >= 10 とかしても動くでしょ」
『そだよね。でもこう書いた理由があるってことだよね』
「そう。たとえば定規で」

      ++++++++++++++++++++++++++++++++++++
           -10   -5    0    5    10                  

「って右側が大きい数になるように定規を置いたとき、この例で当たるのの
範囲は」

      |||||||||||||||||||||||     ||||||||
      ++++++++++++++++++++++++++++++++++++
           -10   -5    0    5    10                  

「の | がある範囲が当たりだよね。 i <= 5 || 10 <= i は、その通りに並
べてるわけ」
『 5 >= i や i >= 10 だと確かにこの図と違ってきちゃうね』
「 5 >= i || 10 <= i だと」
『書けない……』
「まー 5 >= i || i >= 10 でもいいけど、数学だと右に大きな数が来るこ
とが多いから」
『グラフなんかも左から右って多いしね。あとさ、この数直線って、結構分
かりやすいかも』
「そだね、それをそのままプログラムに置き換えると、僕が書いたようにな
るかな」
『実際に、書けるかな……』
「大丈夫だよ。 > や >= は使わない、って憶えとけば」
『そっか、右の方が大きな数字になるから > は >= は絶対使わないんだ』
「それさえ憶えてれば大丈夫でしょ」
『あ、あと、たとえば for で５周させたいとき……』

void CDebugDlg::OnButton1() 
{
    for( int iF1 = 0; iF1 < 5; iF1++ )
    {
        TRACE( "%d ", iF1 );
    }
    // 0 1 2 3 4 
}

『これは iF1 < 5 だけど、 iF1 <= 4 でも iF1 != 5 でも５周するで
しょ。どれ使うのがいいの？』
「これは難しいかなー。まず、〈５周〉ってことが分かりやすいように、
 iF1 <= 4 を使わないことが多いかな」
『 5 って数字が書いてあった方が分かりやすいってことね』
「 iF1 < 5 か iF1 != 5 は難しいところかな。 iF1 < 5 だと〈 5 未満の
間〉、 iF1 != 5 だと〈 5 にたどり着いてない間〉って意味になるから、
その意味に合った方を選ぶのがいいかなー」
『意味？』
「そう、これ大事。〈意味〉、英語で〈セマンティクス〉って言うんだけ
ど、プログラムって、字面の奥に隠された〈意味〉が存在するんだよね」
『普通の言葉で言うと、〈アリガト〉が感謝なのか皮肉なのか、って違いみ
たいな？』
「そこまでは細かくないけど、それに近い感じ。 < と != 、機能的には同
じでも意味が違ってくるし、それがプログラムの読みやすさに大きく関わっ
てくるから」
『そうなんだね。 for だと……結局どっちがいいってわかんないね』
「まーね。僕が < の方を使う理由は、万が一 iF1 が ストップさせる数字
を飛び越えちゃった時でも止まるようにしたいから」
『そっか、 != だと iF1 が 4 の次 6 になったら無限ループしちゃうん
だ』
「滅多にないけど、ループの中でうっかり iF1 に足してたりすると」
『なんかありそう……。あとさ、こういうのはどう？』

void CDebugDlg::OnButton1() 
{
    for( int iF1 = 1; iF1 <= 5; iF1++ )
    {
        TRACE( "%d ", iF1 );
    }
    // 1 2 3 4 5 
}

『こんな感じに 1 からってのはどう？　見やすさは一番じゃないかなーと
思うんだけど』
「５周ループって使い道だけならいいけど、 iF1 を配列とかに使えない
よ？」
『そういえば。これも 1 から始まっててさっきのと結果違うし』
「配列を使うか使わないかで使い分けると混乱すると思うから、僕は 0 か
らって方を勧めるかな。でもこっちの方が分かりやすいってこともあるから
その辺は臨機応変」
『臨機応変って言ったらなんでもそうなっちゃうじゃん』
「ま、そうだけどね。残りは次回！」

/*
    Preview Next Story!
*/
『なんだかんだ言って……』
「ん？」
『水希ちゃんのプログラムってよく考えられてるってゆーか』
「四六時中プログラムのことばっか考えてると、ね」
『それもちょっと……』
「だから、火美ちゃんは聞いて憶えて考えて選んで使えばいいわけ」
『……いーの？それで？』
「というわけで次回」
＜ Version 6.13 手抜きをするな！ ＞
『につづく！』
「ノウハウを教えていかなきゃ、いいプログラマー増えないでしょ」
『なんかもったいないなー』


////////////////////////////////////////////////////////////////////
/*              ２００１年６月２５日（月）の更新予定              */
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 - 2001 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com
*/
////////////////////////////////////////////////////////////////////




