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

    KAB-studio.h


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

    送信日： 2002/08/19(Mon) No.171
    配信数： 3650 ( Mag2 + Pubzine )
＊    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine ( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                        来週はお休みです                        */

　８月２６日配信分の KAB-studio.h はお休みします。夏休みって事で。
　次の配信は９月２日になります。
　その他、かぶスタそのもののお休み等については、文末の次週予告を参照
してください。

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

・ホットハーブに１話追加！
　三人合体ホットハーブに１話追加しました！　２章最終回！
[ 三人合体ホットハーブ ]
http://www.kab-studio.com/Comic/HotHerb/

・#pragma twice 縮刷版更新
　１７０号に達したので KAB-studio.h と #pragma twice の縮刷版を更新
します。ダウンロードはダウンロードルームにて。
[ ダウンロードルーム ]
http://www.kab-studio.com/Freeware/index.html#MailMagazine


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

2002/08/11 (Sun)
　ひーこら言いつつほとはー完成。３時半からお仕事。が、寝ちゃうんで帰
る。ふらっと見つけたカレー屋。主人公＝自分？　栞の声に違和感が……。

2002/08/12 (Mon)
　Kanon アンソロジードラマＣＤいい感じ。派遣先は休みだけど休出。ただ
ひたすらテスト。攻性モード。

2002/08/13 (Tue)
　テストとドキュメント作成が中心。仕事減らしてもちょっときつい。大人
になるってどういうこと？　夏休みのおしらせ。

2002/08/14 (Wed)
　午前中は急いでお仕事。午後はサーブレットのデバッグ。久々定時上が
り。 .hack//SIGN のゲームシステムがちょっと謎。プレステ２版 Kanon が
なかなか進まない……。

2002/08/15 (Thu)
　デバッグ＆修正。ひと段落ついたからか眠い。 Kanon 同人誌。 CppUnit 
に悪戦苦闘。人はすぐ壊れる。８月が！

2002/08/16 (Fri)
　かなり眠かった。どこにも寄らずに帰ってほとはー２の１０。アーカイブ
を InternetDisk に移行。明日の予定はカレーと同人誌。

2002/08/17 (Sat)
　秋葉原へ！　同人誌買いあさり。イタイのも……。ぐろ〜ぶおんふぁいと
サントラが一番の当たり。マンボウのカレーが一番。しっかり休みましょ
う。 Kanon 話ｘ３。


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

■　第四章　ふたりの勇者　−１７−

「名前を聞いておこうか」
「名前ですか……それは無意味ですね。これから死ぬ人間に何を言えばいい
というのですか」
「あいにく俺は不老不死でね、死にたくても死ねないのさ！！」
　雅樹が赤い炎を飛ばす。青年は跳び、銃を雅樹へと構えた。雅樹は見上げ
て、振りかぶる。
　雅樹の体が浮く。強い震動が地面を揺るがす。遠くの戦場で土煙が上がっ
ているのを舞は見た。
「！！」
　落ちてくる青年を見た。銃口は常に雅樹を向いていた。雅樹は舞の身を案
じた。自分が撃たれるだけなら、問題はない。問題はないのだから。
　雅樹の体を無数の弾丸が貫通した。背中から肉と骨が飛び散り、鮮血が宙
を舞った。舞の瞳から涙が溢れ、青年の目が悦びを顕わした。
　舞が叫び声を上げる前に、雅樹は踏みとどまった。体から滝のように流れ
落ちる血液と体液がアスファルトを満たしていく。青年は一瞬目を疑った
が、それに笑みで応えた。
「不老不死というのも、あながちはったりではないようですが、では……」
　青年はアーミーナイフを取り出す。カーキ色の鞘から抜き放たれる抜き身
の剣。その剣を見て舞はとっさに攻撃準備に移る。
　刺すような視線。それは雅樹のものだった。雅樹の顔は苦痛に歪み血を滴
らせていたが、そのプレッシャーに舞は素直に従った。舞が少し後ろに下
がったとき、青年は踏み出した。
「……これは、どうです！？」
　袈裟掛けに振り降ろされる巨大なナイフを躱し、雅樹は右ストレートを放
つ。だが、そのスピードは青年が躱すに十分のものだった。半歩バックス
テップしつつ返す刀を大きく跳ね上げる。再び舞う血と強い手応えに青年は
言い尽くせぬ快感を感じていた。
　跳ね飛んだ左手、だが痛みはさほど感じない。今まではこのことを忌み
嫌っていた。だが、視界の左隅に見える舞の姿は雅樹を変えていた。青年が
ナイフを返す状況も、雅樹はとても遅く感じられた。
　ナイフが振り降ろされた瞬間を雅樹は逃さなかった。右足から踏み込み体
を捻り右手を突き上げる。その右手は狙い違わず直にナイフを掴んだ。
　血の滴る右腕に隠れた雅樹の顔から笑みがこぼれたのを、青年は見た。
　燃え上がる蒼い炎がナイフを包み込む。瞬時にひびが入り砕け散るナイフ
を手放し、やけどを負った右手で銃をとるが、スライドは後退していた。マ
ガジンを換える暇もなく赤い炎をまとった右手が振りかぶられる。
　雅樹は冷静だった。畑の方を見れば近づきつつあるリシュネの背後から農
家の納屋が飛んで来ていた。雅樹は後ろへと下がり、それから数秒後に何が
起こりつつあるのか知った青年がこれを機に後退する。納屋は大きな放物線
を描いて林へと突っ込み、木々をバネにして高く舞い上がった。雅樹は見上
げ、最短距離へと跳び退こうとするが、体はそれに応えられなかった。
　宙を舞い、体を捻りつつ右手を振りかぶる。だが、雅樹の右腕は動かな
かった。
                                                              (続く)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『来週は夏休み〜』
「今年度は、他に２回休みがあるみたいだよ」
『あれ？　いつもはお正月だけだよね』
「今年度は月曜が１週多いから、年５３号出ることになっちゃうから」
『３回休んで年５０号、っていうのも変な話よね……』
「火美ちゃんは他にいつ休むのがいいと思う？」
『ってゆーか』
「ってゆーか？」
『５月に一度旅行あったじゃない、あのとき休めば良かったんじゃない？』
「そういえばそうだね……」
『行き当たりばったりってダメねー……』
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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

　Version 9.10
ショートサーキット

「さて、まずは前回の続きから」

    if  ( 
            !m_wndToolBar.CreateEx() 
            ||
            !m_wndToolBar.LoadToolBar()
        )
    {
        TRACE0("Failed to create toolbar\n");
        return -1;      // 作成に失敗
    }

『なに？　よくわかんないんだけど、つまり上のがエラーになると下のが呼
ばれないってこと？』
「そういうこと。まず、このふたつの結果と if との関係をまとめると」

               上の結果  下の結果   || の結果    if
両方とも成功：     0         0           0      入らない
上のだけ成功：     0       0 以外      0 以外   入る
下のだけ成功：   0 以外      0         0 以外   入る
両方とも失敗：   0 以外    0 以外      0 以外   入る

「っていう関係になります」
『もちろん ! のあとのだよね』
「もちろん。 ! が掛かってない時には成功した時は 0 以外だからね」
『で、上がエラーになるってことは』

下のだけ成功：   0 以外      0         0 以外   入る
両方とも失敗：   0 以外    0 以外      0 以外   入る

『の時だよね』
「そう。で、これを〈上のだけ呼んだ状態〉の表に書き換えると」

上のまず失敗：   0 以外      ？        0 以外   入る

『？？？　下の結果が？なのは分かるけど、なんで || の結果とか？じゃな
いの？』
「だって、ほら。もう一度見て」

下のだけ成功：   0 以外      0         0 以外   入る
両方とも失敗：   0 以外    0 以外      0 以外   入る

『あ！　？のとこが成功でも失敗でも、結果変わらないんだ！』
「そゆこと。こういう理由で、 || 演算子は〈左側が 0 以外だと、右側は
無視する〉っていう仕様になってるんです」
『だから下の方が呼ばれない！』
「これを【ショートサーキット】って言います」
『ショートサーキット？　短い……コース？』
「ショートサーキットっていうのは電気の用語で、プラスとマイナスを直に
くっつけちゃうこと。ほら、〈電気回路がショートした〉とか言うでしょ」
『あのショートと同じなんだ』
「用語的にはね。つまり、呼ぶ必要のない || の右側は飛ばしちゃおうって
こと」
『へー、便利っていえば便利ね』
「うまく使えばね。たとえば……」

    // int *pi; 
    // ってしてあって、どこかの int 変数を指してると思ってください。
    if  ( 
            ( pi == NULL )
        ||
            ( *pi != 100 )
        )
    {
        // pi が指す変数の値は 100 じゃないです。
    }

『むむ、ちょっと難しいかも』
「ここでは本当は」

    if( *pi != 100 )
    {
        // pi が指す変数の値は 100 じゃないです。
    }

「だけしたいんです」
『これならわかるよ。 pi ってポインタが指す変数が 100 じゃなかったら 
if の中に入るんだね』
「そういうこと。ところが、もし pi が NULL だと」

    if( *pi != 100 )

『のとこがエラーになっちゃうね』
「だから、実際には」

    if( pi != NULL )
    {
        if( *pi != 100 )
        {
            // pi が指す変数の値は 100 じゃないです。
        }
    }
    else
    {
        // pi が NULL ってのはおかしくない？
    }

「って書きます」
『 NULL かどうかチェックしてからってわけね』
「で、これを一緒にしちゃったのが」

    if  ( 
            ( pi == NULL )
        ||
            ( *pi != 100 )
        )
    {
        // pi が指す変数の値は 100 じゃないです。
    }

『えーっと、 pi が NULL なら 0 以外になって、それだと || の右側に関
係なく 0 以外になるから *pi != 100 が呼ばれない、と』
「そゆこと。ま、厳密には同じじゃなくて、２重に if してるのの else の
場合、つまり」

    else
    {
        // pi が NULL ってのはおかしくない？
    }

「の場合も if の中に入っちゃうけどね」
『 NULL の場合もってことね』
「それに、このショートサーキットだと || の右側が呼ばれない場合があ
るって事が分かりにくいから、僕はあまり勧めないかな」
『分かりにくいとまずい？』
「たとえば最初の例の場合だと」

    {
        TRACE0("Failed to create toolbar\n");
        return -1;      // 作成に失敗
    }

「って感じに if の中にはいると return() するけど、プログラムによって
はしないこともあるでしょ」
『うん、あるだろーね』
「その場合、ショートサーキットが機能すると、 || の右側が処理されない
から、あとあと影響するような関数を呼んでたりすると」
『その関数が呼ばれないで次へ行っちゃう……げ、それちょっとヤバそ
う！』
「そういうのを気を付けることが重要なんだけど、ショートサーキットを使
うと分かりにくいから、バグの温床になりかねないかな」
『だったらどうするの？』
「さっきの２重の if にするの」
『あー』
「見栄えは良くないけど、この方が分かりやすいよ。 NULL の場合に別の処
理をさせることもできるし」
『見栄えよりも分かりやすさ？』
「そゆこと。と、最後に、ショートサーキットの機能を持つ演算子が || の
他にあるから紹介しておきます」
『 && のこと？』
「げ、なんで分かったの？」
『だって || と && ってペアじゃん』
「まぁそうだけど……当てずっぽう？」
『もちろん』
「もちろんって……じゃあ火美ちゃん、どういう時にショートサーキットす
るか考えてみて」
『げ！　それってかなりむつかしくない？？』
「ま、できなくてもいいからとりあえずやってみて」
『……えーっとぉ、 && って Version 6.10 ( No.110 ) で出てきたよね。
そんときは……』

    TRACE
        ( "%d, %d, %d, %d\n"
        ,  0 && 0, 0 && 1, 1 && 0, 1 && 1 );
    // 0, 0, 0, 1

『この条件を縦に並べると……』

0 && 0 : 0
0 && 1 : 0
1 && 0 : 0
1 && 1 : 1

『あ、判った。 && の左側が 0 になったら右側飛ばすでしょ』
「げげ！！」
『げげってなによげげって』
「あ、いや……うん、合ってるよ。よく分かったね」
『だって、左側が 0 の時は、右側が 0 でも 0 以外でも、結果 0 だもん。
だから右側は飛ばせちゃうんだよね』
「そのとおり……」
『ってことは、 && を使う時もショートサーキットに注意しなきゃいけない
わけね』
「そゆこと。ま、特に面倒じゃなかったり、すると見にくくならないんな
ら、 if を２重にするとかした方がいいかな」

/*
    Preview Next Story!
*/
「こういうプログラミングの話って……どう？」
『つまんない』
「げ」
『面白いって思わないとダメ？』
「うーん、今の段階ではそれも困るかも」
『ならいーじゃん』
「うーん」
『というわけで次回』
＜ Version 9.11 ツールバーリソース ＞
「につづく！」
『そう、こういうのの方が面白そう！』
「それが普通なのかもしれないけど……」


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

・夏休み！
　８月２６日から８月２８日までお休みを頂きます。
　まずこの日の KAB-studio.h はお休みします。
　ホームページもお休みします。チョー普通な日記はこの３日間更新しませ
ん。ホットハーブも追加しませんので。
　次の週からはいつもどおりに戻りますんで１週間我慢してねー。


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

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
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 - 2002 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com
*/
////////////////////////////////////////////////////////////////////

