◇2002/09の日記◇

New← いんたーみっしょん / 窓プログラム / プログラマへの道 / β2初イベント →Old


2002/09/30 いんたーみっしょん

プログラマーが恐れるモノBEST3!

1. バグ・エンバグ(バグを直したことにより発生する、新たなバグ)
2. マスターアップ
3. 仕様変更


3つの脅威が同時に襲いかかってきて、ヘロヘロになりながらも、どっこい生きてるシェラです、こんばんは。


今回は、窓プログラムのお話はお休みです。
何故かたまたま会場近くにいるのをいいことに、行ってきました、RAG-FES
3つの脅威が、今なお、私の身体を蝕んでいるというのに


まずは、08:15頃に葉月さんと合流。
この時点で、既に会場前は人の波で溢れ、入り口も見えません
カタログ販売&待ち合わせまで、時間に余裕があったので、葉月さんとお茶。
ドキドキです。(ぇー


さらに、09:30頃に田仲ちゃんと合流。
リボンが似合ってます


会場前は、さらに人がスゴいことになっている様子。
とりあえず、カタログを購入し、列の最後を探します。
…………。
どうやら、直線距離で約100m、実際の距離は130m程のところが最後尾
イベントそのものが久々なうえに、これくらいの規模でこんなに人数が集まるモノは未経験だったので、目眩がしてきました。


それでも、なんとか会場に入りましたが、当然、中は重力が違います
バックで流れている、ログイン画面の音楽が、重力増加を促進しているのは、間違いありません


私のお目当ては、もちろん、「さやゴス」
しかし、この状況でさやさや(兄)さんスペースに突貫するのは、自殺行為。
ご挨拶だけはすませ、後ほど落ち着いてからもう一度来ることにして、私は外に避難。


約1時間後……どうにか人の流れも落ち着き、外に出てくる人も多くなってきたので、再び戦場へ
さやさや(兄)さんスペースへ行き、無事、「さやゴス」も購入完了!
と、そこへ……れな(マネージャ)さんキタ―――(゚∀゚)―――!!


その後は、帰るまで、ひたすられな(マネージャ)さん達とおしゃべりしてた記憶しかありません。(汗


残念ながら、用事があったため、アフターイベントはほとんど見ることが出来ませんでしたが、とても楽しい時間を過ごすことができました。
さやさや(兄)さん、れな(マネージャ)さん、シグマレッド、ピンクさん、葉月さん、田仲ちゃん、今日は色々と、ありがとうございました。


そして、参加された皆様、お疲れさまでした!


シェラ0x19歳は、さやさや(兄)様の身体をぺたぺたさわる、れな(マネージャ)様の姿が目に焼き付いて離れません。


2002/09/19 窓プログラム

前回の予告通り、今回は、基本的なWindowsプログラムについてです。
ここでのWindowsプログラムというのは、Windows上での、Windowを使用したGUIプログラムのことです。
長くなりますので、複数回に分けて書いてみたいと思います。


CUIプログラムからGUIプログラムへと移行した人が一番戸惑うのが、メッセージドリブン(イベントドリブン)と呼ばれる、GUIプログラム特有の組み方だと思われます。
これは、OSがメッセージ(マウスが動いた、押された、等々の状態変化)を窓に対して送ってくれるので、プログラムする側は、それに対応するコードを書けばいいと言う、これだけ聞くと、とても簡単そうに聞こえる仕組みのことです。


ところが、実際にはそうは問屋がおろさず、メッセージの数は多い、期待した動きはしてくれない、コンボを覚えていないと繋がらない等、初心者泣かせの仕様になっており、あちこちから怨嗟の声が聞こえてきます。


では、実際に窓を作って、動作を追ってみましょう。


まずは、Windowsプログラムの、エントリポイント
要するに、「ここからプログラムが実行されますよ」という、必須項目です。


int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                      LPTSTR lpCmdLine, int nCmdShow )
{
    return 0;
}
			

この、WinMain関数が、Windowsプログラムのエントリポイントです。


int」は、C言語を勉強していればわかると思いますが、そのマシンにおける、整数の標準サイズです。
今現在、ほとんどの人が使っているマシンは、32bit(=4byte)マシンですね。
つまり、「nCmdShow」には、符号付き32bit整数ですから、-2147483648〜2147483647の間の数が格納可能ということになります。
実際には、ここでは、定義されている値が入ってくるのですが。


なんだかスゴイ数に見えますが、せいぜい+-2ギガです。
符号なし32bit整数でも、4ギガまでしか表現できません。
じゃあ、どうやって4GB以上のHDDの容量を調べるの?」と思った人は、素晴らしい。
が、それはまた別の話なので、別の機会に紹介しましょう。


int」の話は置いておいて、GUIプログラムを始めたばかりの人がここで悩むのは、「int」などではなく、「APIENTRY」と「HINSTANCE」と「LPSTR」という、聞いたこともない型名だと思います。
こんなのは、Cの参考書には載っていないので、途方にくれることでしょう。


実は、VCには便利な機能があり、型や関数名や変数名を右クリックして、「定義位置を表示」を選択してやると、実際にそれらを定義している位置を表示することが出来ます


ではまず、「APIENTRY」の定義位置を表示してみましょう。


#define APIENTRY    WINAPI
			

これを見てわかるように、「APIENTRY」は「WINAPI」と定義されています。
見てもわからないとか言うな


さらに、「WINAPI」の定義位置を表示してみましょう。


#define WINAPI      __stdcall
			

WINAPI」は「__stdcall」と定義されています。
__stdcall」は予約語であり、「__stdcall」の定義位置は表示することができません。


では、「__stdcall」はどういう意味なのかというと、「__stdcallという指定のある関数は、Pascal規約に従いますよ」という意味なのです。
これだけでは、サッパリ意味がわかりませんね。


これは、専門用語で言うところの、「引数のスタックフレームのクリア方法」の違いなのですが、ハッキリ言って、初心者さんはこの意味を理解する必要がありません
ただ、こういう定義があって、何か意味があるんだなということを、常に心に留めておくと、いつか幸せになれるかもしれません


興味のある方は、同様に、「HINSTANCE」と「LPSTR」も調べてみましょう。
新たな世界が開けます


さて、長くなりましたので、続きは次回……。
一体、ここまで読んでくれた人は、何人いるのでしょう?


最後に、このプログラムのVC++6.0用プロジェクトを置いておきます。
こちらからどうぞ。


2002/09/09 プログラマへの道(私見、偏見あり)

まぁ、今騒がれていることに関しては、既にいろいろな所で意見が出ているので、今更多くは語りませんが。
いろいろと勉強になりました。
ご意見ありがとうございました。今後の参考にさせていただきます


なんだかしっかりRO系に分類されているので、自分でもそうだと思いこんでしまっていましたが、そういえばここってプログラム系サイトじゃん
自分がそう言ってるんだから、そうなんです。
まぁ、実際プログラムネタが1/3くらいなので、半々くらいになるように頑張ってみますか。


というわけで、プログラムネタですよ〜。


今も昔も、「プログラムをやってみたい!」と思う人は、その大半が、「ゲームを作ってみたい」という思いがベースになっている感がありますね。
MSXPC-88系X68000FM-TOWNS等にその思いをぶつけ、現在ではプログラムを生きるための術としている人も、少なくないと思います。
というか、「業務用アプリケーションをバリバリ作ってみたい!」という人を見たことがないのですが、いるのかな……?


昔は情報量が少なく、あちこちから情報をかき集めて、自分で調べながらなんとかするしかなかったのですが、最近では書籍が溢れ、インターネットにも情報が氾濫し、ちょっと調べれば簡単なゲームくらいならコピペでも作れるようになりました。
この風潮が、良いことなのか悪いことなのかというのは、難しいところですが。
時代の流れですから、逆らっても意味はありません。
しかしその分、初心者さんにとっては、どこから手をつけていいのかすら、わかりにくくなってしまったような気がします。
何より、理解して組んだソースと、理解もせずにコピペしただけのソースには、雲泥の差があります


ここで、何から始めればいいのかがわからない初心者さん達のために、プログラマへの道の一例を紹介してみます。
あ、ここで触れるのは技術の話であって、連日の徹夜に耐えるプログラマ能力とかの話ではないですよ?


まずは、C言語を覚えましょう。
何故C言語なのかというと、最も一般的だから。
一般的になったのには、やっぱりそれなりの理由があるわけですし、使用している人が多いということは、それだけ情報も入りやすいということです。
C++から入ってもいいのですが、基礎をしっかり把握してからステップアップすることをオススメします。


いきなりWindowsプログラムから入る必要は、全くありません。
見た目は地味なDOSのCUIプログラムでも、まずはじっくり、プログラムの動きを把握しましょう。
ポインタをうまく使いこなせるようになってくると、組むのが面白くなってくると思います。
使いこなせるようになるまでが、苦難の道のりですが


C言語に慣れてきて、余裕が出てきたら、アセンブラの本にも目を通してみると、新たな世界が開けます
アセンブラを覚えるということは、CPUの中で何が行われているかを把握する、ということです。
慣れると、アプリケーションソフトの動きを見るだけで、CPUの中で行われていることが大体想像がつくようになって、自分に嫌気がさします
何しろ、ゲームをやっているだけで、CPUの中でのデータの動きが見えるのですから、興ざめです


このレベルまでくると、もう、こんなアドバイスなんかなくても、一人前のプログラマを目指してやっていけることでしょう。
一つの言語を覚えれば、他の言語も、そう変わらないですしね。
あとは、経験(=知識量)がものを言うことが多いですから、ひたすら量をこなしましょう。


今日はここまで……。
次回は、Windowsプログラムについて語ってみましょうか。


シェラ0x19歳は、これからプログラムをはじめる初心者さん達を応援しています。


SS等の絵がないと見にくいですね〜。
毎行空けたほうがいいかな……?


2002/09/03 β2初イベント

すでにあちこちのサイトで紹介されていますが、さんの「クイズミリONEア」と、詩音さんのβ2ファーストライブに行ってきました。


「クイズミリONEア」は、スタッフ参加でした。
ので、SSがほとんどありません。(泣
かろうじて、こんなSSが……。




グレたさん
「( ´`)y-~~プハー」



グレた澪16歳さん
「(゚Д゚)y-~~ウマー」



煙は捏造の疑いがあります。(マテ


私が担当したのは、第2チェックポイント
折原浩平澪16夫妻のラブビームに耐えるという試練付きです。(何
受け付けた参加者は、1位、3位、4位、7位、17位、18位の方々。
……なんか、上と下に固まってますね。w


残念ながら、今回のイベントの表彰式後に、さんはRO引退宣言をされてしまいました……。
VNI活動は続けていくということですので、これからもよろしくお願いします♪




表彰式後の記念撮影


詩音さんのβ2ファーストライブのほうは……いいSSが取れませんでした。・゚・(ノД`)・゚・
(・∀・)スンスンス-ン♪ ( ゚д゚)ハッ!」が聞けて、大満足でしたが。w
どうしてみなさん、あんないいタイミングでSSを撮ることが出来るのかが、不思議でたまりません。


シェラ0x19歳は、シャッターチャンスを逃さない、スゴ腕の方々を尊敬しています。


さて、9月になりました。
もうすぐ、このサイトも、誕生から1ヶ月が過ぎようとしているわけですが、9月中旬はリアル忙しいために、更新が滞る可能性があります。(死
それでも、暇をみつけては更新する気でいますので、生暖かい目で見守っていただくよう、お願い申し上げます。(礼


(私信)
>「エロゲを投げればヲの字に当たる」素敵な街!(えー)

偶然にも、私もその街に住んでいたりします。w
しかも、多分、チェきたんの家から車で10分前後で辿り着ける罠。(;´Д`)

>ちなみに、シェラさんが所属するギルドとは敵対ギルドですね。
>彼とはいろいろな意味でライバルですねぇ。
>私…一方的に負けてますが…。


いつの間にか敵対ですね……。
おまけに、両方に所属している人がいるような。w
ライバルはいいとして、私のどこが勝っているのか、さっぱりわからないのですが。(汗