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

    KAB-studio.h


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

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

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

・ほとはー１話追加
　三人合体ホットハーブに６の１２を追加。６話最終回！
[ 三人合体ホットハーブ ]
http://www.kab-studio.biz/Comic/HotHerb/index.html


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

2003/11/09 (Sun)
　午前中はかぶヘッダーの送信予約と銀行振込。午後に会社。開いてなかっ
たから２時から（爆）。最近汗をよくかく。 ToHeart マルチシナリオをク
リア。結構普通？　ラポートのアンソロがもう売ってない……。

2003/11/10 (Mon)
　ソースコードのレビューとかデバッグとか。外注との連携で１日が終わ
る……ほとはーヒット数高い。でもこれだけで食っていくのは大変？　やれ
ばできる？

2003/11/11 (Tue)
　午後から設計担当の人に色々訊く。新しい電球で色味が変わる？　冬コミ
どうしよう、申し込み用紙のためだけに行くか？　日記遅くてゴメン。

2003/11/12 (Wed)
　午前中は説明会と日程折衝。午後は……。まんがタイムきららを買いそろ
える計画。サーバーダウンとか地震とかの不安。バイオノート５０５いい感
じ。リブレットの次はこれ？

2003/11/13 (Thu)
　会社を休む。体調絶不調。 ToHeart あかりシナリオクリア。いい感じ。
ほとはーをちょこっと修正。寮はあと２年いられるらしい。なんか久しぶり
に休日っぽい……。

2003/11/14 (Fri)
　１日中、分析担当者のヒアリング。そのあと徹ゲー。マリオカートＤＤが
いい感じ。帰ってから……寝てない。

2003/11/15 (Sat)
　寝ずにそのまま仕事。マージとかデバッグとか色々。さすがに眠い。やっ
ぱり疲れてる？　精神的には結構なんとかなってるんだけど……。


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

■　第九章　四人　−９−

　空見ヶ原。
　その名の通り、この森の中では唯一と言っていいほど、空を見上げられる
場所。木々の生えていない、やや傾斜のある野原。
　その場所を見下ろすことができる、離れた場所の大木に、雅樹と赤葉がい
た。太い枝の上で、赤葉が雅樹に寄り添っている。
　ただそれだけで十分だった。
　ただそれだけがかけがえのないものだった。
　なぜなら、もう私達の人生は最期となるのだから。
　眼下、野原の向こう側に、鷹人と穂香の姿が見える。ふたりは雅樹達と違
い、村人達に指示を出してせわしなく動いている。
「手伝わなくていいの？」
「手伝わない方がいいんだ」
「そっか」
「納得するな」
　ふたりはほほえんだ。
「結局、説得には失敗しちまったなぁ」
「そりゃあのふたりだもの、やっぱり自分よりこの村の方が大事なのよ」
「村の方が、か……」
　雅樹の気持ちは、わかる。
　だから、言葉は足さない。
「もし生き延びることができたら、下で暮らそうね」
「ああ」
　ふたりは、手を強く握りかえした。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『……なんか、かぶスタそのものの存続の危機って気がする……』
「……」
http://www.kab-studio.biz/index.html
_______________________________________________________________[KCM]

////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 12.09
バイナリーモードで書き込む！

「前回は、改行文字とバイナリーモードについて説明しました」
『バイナリーモードだと \r\n がそのまま来るんだよね』
「でも、バイナリーモードの本当の目的は、文字列以外のデータを読み書き
すること」
『そういえばそう言ってたよね、文字列以外の時に、 0x0D が消えちゃった
らまずいから、って』
「そう、そのためのバイナリーモード。というわけで試してみます。まずは
簡単に、 int のデータひとつを書き込みます」

void WriteBinaryFile()
{
    // ファイルを開きます。
    FILE *pstFile
        = fopen( "Binary.aaa", "wb" );
    if( !pstFile )
    {
        TRACE( "ファイルが開けない！\n" );
        return;
    }

    // 0x0000ABCD を書き込みます。
    int i = 0x0000ABCD;
    fwrite( &i, sizeof( i ), 1, pstFile );

    // ファイルを閉じます。
    fclose( pstFile );
    return;
}

『フツーのランタイム使ったのだね』
「でも fwrite() は初めてだと思うよ」
『あ、ホントだ』
「 fwrite() は、バイナリーデータを書き込むランタイム。引数をひとつず
つ見ていこうか」

    fwrite
        ( &i
        , sizeof( i )
        , 1
        , pstFile 
        );

「第１引数の &i は、書き込むデータのアドレス」
『アドレスなんだ』
「そう。 fwrite() は〈メモリ上のデータを何バイト書き込むか〉っていう
ランタイムだから、書き込むデータがあるアドレスを渡します」
『データそのものじゃないんだね』
「第２引数の sizeof( i ) は、データのサイズ」
『 sizeof でサイズそのまま渡してるわけね』
「そう。ここで 4 が返るから、第１引数で指定したアドレスから 4 バイト
分を書き込む、ってなります」
『そか、書き込むデータのサイズ、って単純に考えない方がいいんだ』
「それはそれでいいと思うよ。場合によるっていうか……」
『？』
「第３引数と一緒に考えた方がいいかも。第３引数は、データが何個並んで
いるか」
『？』
「たとえば i が int の配列だった場合」
『あ、そのときにはその数だけ第３引数に渡すんだ』
「そういうこと。でも、これは第２引数との関係によるかな。第２引数は
データ全体のサイズって考え方もあるから、第２引数で配列全体を渡すこと
もできます」
『そういう場合、第３引数は？』
「もう全体のサイズを渡してるから、 1 」
『んー、第２引数と第３引数を掛けたら全体のサイズになればいいんじゃな
いの？』
「結局はそういうことになるね。この辺は場合場合によるかも。第１引数で
文字列を書き込むんなら、第２引数は sizeof( char ) 、第３引数は」
『文字数？』
「っていうのが自然かな」
『その方がわかりやすそうだね』
「と、話を戻して、第４引数はファイルポインタ」
『いつものだね。これだけで書き込めるんだ』
「で、書き込んだデータは Binary.aaa に書き込まれたから、このファイル
をバイナリーモードで開いて確認してみます」
『何その aaa って拡張子』
「これは好きなようにしていいよ。バイナリーファイルの場合、そのアプリ
専用の拡張子を付けることが多いから。他では使わないからね」
『そういえばそういうファイル結構あるね』
「今回も、 VC のバイナリーエディタで開くだけだから、関連づけとか関係
ないから」
『あ、そうだ、開かなきゃ。ん、こんななってたよ』

000000  CD AB 00 00

『おー、 0x0000ABCD だから……って、逆……あ、バイトオーダー！』
「そういうこと。実際には int の中では逆順に並んでいるから、それをそ
のまま書き込むと」
『ファイルの中でも逆になっちゃうってわけね』
「バイトオーダーは、大まかにはＯＳごとに違うものだから、ウィンドウズ
でファイルを作ってウィンドウズで開くなら問題なし」
『でも、他のＯＳで作ったら……って、ウィンドウズ用のアプリなら他じゃ
動かないでしょ』
「それは確かに言えるんだけど、そのファイルをいろんなアプリで共有する
ようになったら問題になるでしょ。たとえば音楽ファイルとか画像ファイル
とか」
『 mp3 とか avi とかってこと？　そか、いろんなＯＳで共通のファイルだ
と、バイトオーダーが違ったら読み込めなくなっちゃうんだ』
「だから、そういう一般に公開されたファイルは、仕様のところにちゃんと
バイトオーダーとか書いてあるから」
『普通はどっちなの？』
「特に決まってないかも。ちゃんとした組織が作ってないときには、作った
人が勝手に決めちゃうこともあるし」
『何も考えずに作ったら広まっちゃった、って感じね』
「ウィンドウズは逆順の【リトルエンディアン】だけど、これが特別とも言
い切れないし。それともうひとつ、サイズの問題もあります」
『サイズ？』
「普通に int で書き込む場合、 int も環境によって違うから」
『これもＯＳが変わると駄目なんだ』
「そういうことを考えて、バイナリーとしては書き込まないっていう方法も
あります」
『バイナリーでは書き込まない？』
「そう、文字列として書き込むってこと」

void WriteTextFile()
{
    // ファイルを開きます。
    FILE *pstFile
        = fopen( "Text.txt", "w" );
    if( !pstFile )
    {
        TRACE( "ファイルが開けない！\n" );
        return;
    }

    // 0x0000ABCD を書き込みます。
    int i = 0x0000ABCD;
    fprintf( pstFile, "0x%08X", i );

    // ファイルを閉じます。
    fclose( pstFile );
    return;
}

『さっきと…… fwrite() の代わりに fprintf() 使ってる』
「 fprintf() は sprintf() のファイル版」
『うん、使い方一緒っぽい』
「で、このデータを書き込んだ Text.txt を開いて」
『バイナリーで？』
「ううん、テキストモードで、というか普通にエディタで」
『ほい。あ』

0x0000ABCD

『って普通に書かれてた』
「そういうこと。テキストとして普通に書き込めばバイトオーダーは関係な
いから」
『ＯＳが変わっても大丈夫……文字コードは？』
「文字列を書き込むときは、テキストもバイナリーもどっちも文字コードは
考えなきゃいけないから同じ」
『改行のは？』
「それは重要かもね。その前に、このデータをどう書き込むかっていうのも
あるし」
『どう書き込むか？』
「書き込むデータがいっぱいあった場合、１行１データにするかとか」
『それはわかりやすいね』
「そのほかには、【,】（カンマ）で区切る【CSV】（シーエスブイ）形式と
か」
『それってよく見るね』
「あと最近だと XML とか」
『それもよく聞くけど、よくわかんない……』
「その辺はちょっと上級になるからとりあえずいいかな。そういうふうに、
文字列として書く場合にはどういうふうに各データを区切るかが重要かも」
『え？　それってバイナリーでも同じでしょ？』
「 int ……は固定じゃないにしても、 short とか long とか、 float と
か double とかは、サイズが固定だから」
『そか、そのサイズで見ればいいだけなんだ。でも文字列だと……桁が大き
くなったり小さくなったり』
「そういうこと。 0 を入れたりして固定長にすると、大きな数はデータ的
に常に大きくなっちゃうし」
『それは無駄だね』
「そういうこともあって、どう区切るかが重要かな。まぁプログラム次第か
も」
『……質問！』
「はい火美ちゃん」
『テキストにするかバイナリーにするかって、どう決めるのがいいの？』
「明確な決め方はないけど……まず、圧縮とかが必要な音声・画像は」
『バイナリーね』
「テキストじゃしようがないからね。次に、フォーマットを公開した方がい
いデータなら、テキストの方がいいかな」
『公開っていうと？』
「そのファイルを使うアプリを作ってください、みたいにする場合」
『自分以外の人が作る場合ってことね』
「テキストならテストデータも作りやすいし、使う側も修正しやすいしね」
『それ考えると、自分で作るときにもテキストの方が良さそうだね』
「ただ、逆に修正が掛けにくいっていうのは、バイナリーのメリットかも」
『修正が掛けにくい？』
「ユーザーが勝手にデータを修正して、それを読み込んだらうまく動かな
い、とか」
『……それってこっちのせいじゃないじゃん』
「それはそうなんだけど、クレームの数は少ないに越したことはないから」
『それはそうだけど……』
「ま、そうは言ってもテキストの方が色々な面で楽かな」
『やっぱそうなるよねー』
「でももう少しだけ、バイナリーでの読み書きについて見ていきます」
『げ』

/*
    Preview Next Story!
*/
『難しくはないんだけど、バイナリーってなんか抵抗あるかも』
「難しいって感じちゃうのはそれが原因かもね」
『これも慣れれば大丈夫？』
「いろんなランタイム使っていけば大丈夫になると思うよ」
『やっぱそれしかないよね』
「というわけで次回」
＜ Version 12.10 複数のバイナリーデータの読み書き ＞
『につづく！』
「ちなみに僕もあまり慣れてないから」
『え”』
「結局あんまり使わないんだよね、バイナリーモード……」


////////////////////////////////////////////////////////////////////
/*                ２００３年１１月２４日（月）の更新              */
http://www.kab-studio.biz/index.html

・ほとはー１話追加予定
　三人合体ホットハーブに７の１を追加予定。


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

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.biz/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.biz/Freeware/index.html#MailMagazine


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

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

