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

    KAB-studio.h


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

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

////////////////////////////////////////////////////////////////////
/*            かぶスタ移転は８月４日に決まりました！              */

　KAB-studio の移転日が８月４日に正式に決まりました。
　といっても、メルマガの読者方は特に気にすることはありませんが……。
　詳しくは下記ページをご覧ください。
[ 移転のおしらせ ]
http://www.kab-studio.biz/Info/Removal/


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

・ほとはー１話追加！
　三人合体ホットハーブに１話追加。期待してもダメです。
[ 三人合体ホットハーブ ]
http://www.kab-studio.com/Comic/HotHerb/


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

2003/07/13 (Sun)
　ゆめりあみづきシナリオクリア。でもなんかネイトが……。ほとはー夏コ
ミ版２ページ。フロー固定化。フルデジタルは便利だと思う。ほとはー本編
はテレビネタ。アバレンジャーが難しい話へ……。ツッコミシステムをバー
ジョンアップ。ほとんど変わってないけど。 mod_jk に乗り換えたのが良
かった。そしてプラグインと JDBC 。

2003/07/14 (Mon)
　VB プログラミングに四苦八苦。要素数 0 の配列が作れないなんて。ほと
はー本編のラフ。ほとはーの掲示板を作りたいんだけど……誰か起こしてく
れない？（爆）　 referer.log の検索条件。「夏コミ」でヒットしてる。
目論見通り？

2003/07/15 (Tue)
　おね２結構いい。雰囲気が変わってない感じ。 C++ コードが怪しかった
が。 VB のが終わらない。配列に対するアルゴリズムがないのが……。
WOLF'S RAIN のカメラいっぱいってなんか……。

2003/07/16 (Wed)
　かなり眠い。夏バテが原因？　ダイエットしすぎ？　お仕事は VB しつつ
色々工数見積もりとか。メルブラ攻略本高いにゃ。おね２のＥＤをループで
見る……。

2003/07/17 (Thu)
　VB プログラムほぼ完成。コードが汚い……。どこまでできるのかって感
覚がないから。ステルヴィアがかなり良かった……。朝ビックリしたこと。
ほむぺ公開は失敗？　ネットで在宅勤務ってかなり無理かも。かといって
リアルだからというわけでも。そして職場の冷蔵庫。安く上げた方がいいで
しょー。

2003/07/18 (Fri)
　VB プログラムにミスがあったのに気付いて直そうとしたらコード読めな
かった。８月に仕事２本？　月姫ボトルキャップフィギュアがいい感じ。
４連休の予定。そして国外発注のリスク。

2003/07/19 (Sat)
　なんかうだうだ。ぷらとわと風雅、舞い。メインマシンにサーバー環境を
入れて、動かしてる間にサーバーメンテ。新しいマシン買うかな。パスワー
ドの設定がうまくいかず。かぶスタ移転は８月４日。実際に運用してみない
とわからないかも。


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

■　第八章　朱と碧　−４−

　再び地上に出た時も、舞の違和感はほぼ取り除かれていた。
「あたし、もう慣れちゃったのかな」
「ん？」
「あ、ううん、なんでもない。ここって……よく人がいるよね」
「おい、ヒデェこと言うな」
「あっごめん！」
　ごまかしついでに言った言葉だったが、雅樹はそのまま答えていく。
「俺がいたからな」
「何よそれ」
「いや、そういう意味じゃなくてな……おまえ、赤葉様から俺の素性とか訊
くつもりだろ」
「えっ？」
　先ほどの赤葉への言葉にその意志は含まれていなかったが、雅樹に言われ
てそれもありだなと感じた。
「ならいっか。俺が泉の能力を得たのはおまえが生まれるずっと前だった。
そのころは宗教的なもんもあったから信じなかった人間はいなかったし、そ
れ以降は、俺が実際に能力を使うところを見れば」
「泉の能力を信じざるを得ない」
「ここにいるのはここで生まれた人間だけだから、むしろ、生まれた時から
あるものだから気にならない、というところか」
　確かに、自分の母や兄は多少の能力は使えるけど、それはむしろ手品のよ
うなものに似ていた気がする。だから、他の人と違う、それだけが気になっ
ていた。
「だがな、ここだって、入る人間はいないが、出て行く人間はいる」
　誰もいなくなった、泉だけが残る。
「ここは特殊だな。他の泉がどうなってるかは想像もできないが」
「それを見つけるのが、次の仕事ってわけね」
「だな。あー、また碧き泉に戻んのかよ」
「……っていうか、嫌み言う前に、あんたはわかってなかったんでしょ？」
「う”……おう、ここだここだ」
　ごまかしついでに雅樹が入っていったのは、漆喰造りの、村の中では比較
的大きな家だった。
「ただいまぁ！」
「あら朴さん、久しぶり」
　長い三つ編みを揺らして女性が立ち上がる。３０過ぎだろうか、落ち着い
た雰囲気を持っている。
「あいつは？」
「達也かい？　……降りて、いったよ」
「そっか」
　悲しそうな瞳を見て、その達也という人間がこの村を去ったことに気づ
く。
　こうして、泉は枯れていくのかもしれない。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『読者さんが３０００人を切っちゃったのをどう思いますか？』
「いきなり丁寧だね」
『で！？』
「えーっと……うーん、ダウンロードの数とホームーページのを考えると」
『そっちで挽回してるから大丈夫？』
「そういうことに……しておこうかなぁと」
『なによそれー』
「今のところ、てこ入れする余裕がないかなぁと」
『え〜！？』
「何を心配してるのかはわかるけど、今はちょっと辛抱かも」
『……ホントに大丈夫？』
「きっと……」
『う”−』
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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

　Version 11.16
簡単なクラスを作ってみよう！

「前回、 CString の文字列を操作するのには = や += が使えるって説明し
ました」
『ってゆーか、それって前に教わってるよね』
「そう、演算子のオーバーロードっていいます。 Version 5.22 ( No.087 ) 
や Version 7.09 ( No.129 ) で説明してるよね」
『ちょっと駆け足だったけど』
「というわけで、ここで簡単にクラスを作って、どういう仕組みで動いてる
のか試してみようと思います」
『……クラスを作る？　作れるの？』
「もちろん。そろそろ火美ちゃんも簡単なクラスは作れるようになった方が
いいから。簡単なものだけだけどね」
『いきなり難しいのなんて作れないし』
「もちろん。とりあえず簡単なのから。まずは、まったくなんの機能もない
クラス」

// 何もないクラス。
class CNon
{
};

『えらいシンプルね』
「見方としては」

class クラス名
{
    // この中にクラスの機能が入ります。
};

「って感じ」
『クラス名って好きなのにしていいの？』
「他とかぶらなければね。あ、でも、一応最初に C ってつけた方がいいか
な。まぁ僕のスタイルだけど」
『 MFC はそうなってるよね』
「うん、それに慣れちゃってるからね。逆に、 MFC と区別するために C を
付けないいうのもありかな」
『なるほどね』
「次に、この中にメンバ変数を入れます」

// public なメンバ変数を持つクラス。
class CHasMember
{
public:
    int m_iData;
};

「これは、こういう風に使えます」

void Use_CHasMember()
{
    CHasMember cHasMember;
    cHasMember.m_iData = 100;
    TRACE( "%d\n", cHasMember.m_iData );
    // 100
}

『なんか見た目が構造体っぽいね』
「というよりまさにそんな感じかな。 Version 7.07 ( No.127 ) でやった
でしょ」
『そっか、構造体とクラスってほとんど同じなんだもんね』
「だからこういう使い方もできるんだけど……実は、これは悪い例」
『え？　だって構造体はこれでいいんでしょ？』
「構造体は昔の方式だから、仕方ないっていうか……。基本的に、変数へは
できる限り直接アクセスしない方がいいんです」
『直接じゃないってことは？』
「関数を通してアクセスするってこと。こんな感じに」

// メンバ関数を持つクラス。
class CHasMemberFunction
{
private:
    int m_iData;

public:
    // 値を返します。
    int GetData() const
    {
        return m_iData;
    }

    // 値をセットします。
    void SetData( int p_i )
    {
        m_iData = p_i;
    }
};

「こんなふうに、 m_iData に値を取り出すするメンバ関数 GetData() と、
値をセットするメンバ関数 SetData() を用意して」

void Use_CHasMemberFunction()
{
    CHasMemberFunction cHasMemberFunction;
    cHasMemberFunction.SetData( 100 );
    TRACE( "%d\n", cHasMemberFunction.GetData() );
    // 100
}

「っていう感じに使います」
『なんかめんどくさい……これのメリットって？』
「まず、メンバ関数を挟む事でそこにブレークポイントを入れたり 
TRACE() を入れたりできます」
『あ、そっか、変数直接だとそれはできないね』
「どこからアクセスされても、必ずこのメンバ関数は通るから、そこで待ち
かまえておけばどこから呼ばれたかもわかるしね。それに、値を変えたり
チェックしたりもできるから」
『チェック？』
「たとえばマイナスは不可にしたりとか」
『なるほど』
「間に何か挟む事で自由度が高くなるから。で、重要なことがもうひとつ。
private とか public って付いてるでしょ」
『うん、ついてる。つか、さっきは public だけで m_iData の前にあった
のに、今度はそれが private になってて、メンバ関数の前に public が付
いてる』
「そう、そこが重要。ちょっとこれをビルドしてみて」

void Use_CHasMemberFunction_Error()
{
    CHasMemberFunction cHasMemberFunction;
    cHasMemberFunction.m_iData = 100;
}

『げ、コンパイルエラー！』

error C2248: 'm_iData' : private メンバ　
    (クラス 'B1::CHasMemberFunction' で宣言されている）に
    アクセスできません。

「実は、 private が付いてると、外からアクセスできなくなるんです。逆
に public が付いてると外からアクセスできるようになります」
『ってことは、さっき』

    cHasMember.m_iData = 100;

『ができたのは、 public が付いてたからで、それができなくなったのは 
private が付いてるから？』
「そういうこと」
『あれ？　でもそれじゃ、 SetData() は外から呼べないはずじゃん』
「あ、 private や public はメンバ変数やメンバ関数ひとつひとつに対応
してるんじゃなくて、範囲で指定するんです。こんな感じに」

class CHasMemberFunction
{
private:
    // この中のメンバは private になります。
    // だから外からアクセスできません。

public:
    // public が出てきたので private は無効に。
    // この中のメンバは public になります。
    // だから外からアクセスできます。

    // public の範囲はここまで。
};

「っていうふうに、 private や public は、付けたら他のが出てくるまで
ずっと private だったり public だったりします」
『 public の範囲はここまで、ってあるってことは、クラスの中だけしか効
果がないのね』
「そういうこと。あと、何も付けてないと private になります」

class CHasMemberFunction
{
    // ここは private 。
public:
    // ここから public 。
// 以下略。

『ってことは最初の private っていらないんじゃない？』
「そうすることもできるんだけど、わかりにくいからつけた方がいいかも。
〈何も付いてない時には private 〉って憶えるのも面倒だし」
『確かにね』
「あともうひとつ。 GetData() のところ」

    int GetData() const

「 const って付いてるでしょ」
『あ、ホントだ。何度か見た事あるけど……変数に付いてる const と同
じ？』
「意味はね。メンバ関数のところに const が付いていると、そのメンバ関
数ではメンバ変数を書き換えることができなくなります。たとえば」

    int GetData() const
    {
        m_iData = 100;
        return m_iData;
    }

「ってすると」
『あ、コンパイルエラー』

error C2166: 左辺値は const オブジェクトに指定されています。

『左辺値？』
「まぁ、はっきりいって const メンバ関数はかなり難しい話になっちゃう
から、とりあえずは難しい事を考えないで〈値を返すメンバ関数には const 
を付ける〉くらいでいいから」
『 GetData() はただ値を返すだけだから、付ける、と』
「そういうこと。で、今の CHasMemberFunction クラスが、クラスの一番基
本的なものだから、これくらいはすらっと書けるようになって欲しいかな」
『む、努力します……』

/*
    Preview Next Story!
*/
『今までクラスなんて作ってなかったからむずかしー』
「ま、今はクラスを読むために作る、って感じかな」
『自分で作ってみれば解るようになるってこと？』
「そういうこと。どうしてそういう構造になってるかとか」
『理由がわかるから理解できる理由ね』
「この前使ったコンストラクタとデストラクタも」
『自分で作れば理解が深まる、と』
「というわけで次回」
＜ Version 11.17 コンストラクタとデストラクタを作る！ ＞
『につづく！』
「ただあるものを使うよりよっぽど面白いと思うよ？」
『面白い、ねぇ……』


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

