まどかの | 自 | 己 | 満 | 足 | 日記 |
0009
|
2001/10/21 (日)■ | |
今日はお買い物 | ||
今日は、久しぶりに駅前の方に買い物に出かけました。買い物といっても本屋を回るだけですが(^^; 毎月買っているCマガジンを買って、知り合いが執筆しているページのあるゲームラボも買って、あとはActiveX関連の参考書を立ち読みして帰りました。 そうそう、それと、富士見ファンタジア文庫の「フルメタルパニック」って本を探してました。この本の主人公のモデルが、社長と仲良しの社長さんの会社で働いている人だということで、大変興味があります。 その社長さんにもその人の話を聞いたのですが、なんともおもしろすぎる人なので、是非読んでみたいです。 昨日は見つけることができなかったので、「ここで売ってるよ」とか「この人が書いてるよ」とか情報を持っている人は教えてください(^^; で、今日本屋を回った一番の目的は、一昨日の日記にも書きましたが、ListBoxをサブクラス化したActiveXを作った場合のバグについて調べたかったからです。しかし、どの本を見ても、この現象について書いてある本はありませんでした。 で、家に帰ってしばらく考えて、ある解法を見つけました。 その解法とは簡単に言うと、VBのようなコンテナを利用せずに、自前でメッセージ返信処理をするということです。 もともと、ActiveXの基本クラスであるCOleControlクラスには、コンテナにメッセージ返信機能が無い場合に備えて、コンテナと同じメッセージ返信機能を持つ「リフレクトウインドウ」を作成する機能を持っています。 コントロールはコントロール自身のウインドウを作成するときに、コンテナにメッセージ返信機能の有無を問い合わせて、その機能が無ければ、リフレクトウインドウを作るといった行程を踏みます。 通常コンテナとなるVBなどはメッセージ返信機能を持っているので、リフレクトウインドウを作る必要も無いし、コンテナは複数のコントロールに対してメッセージの返信をすることができるので、コントロールひとつに対してリフレクトウインドウを作っていたのでは非効率です。 しかしながら、肝心のコンテナのメッセージ返信機能が正常動作しないのでは、自分でリフレクトウインドウを作らざるを得ません。というわけで、リフレクトウインドウの作り方です。 以下の方法はMFCのCOleControlクラスのソースを解析していて見つけた強引な方法なので、正しい手順ではないかもしれません。あらかじめご了承ください。 やり方は至って簡単で、コントロールのクラスで、 COleControl::OnSetClientSite() をオーバーライドし、その中で親クラスの OnSetClientSite() を呼び出した後、 m_bMsgReflect = FALSE; と1行加えるだけです。 ソースは以下のとおり。 void CListBoxExCtrl::OnSetClientSite() { // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください COleControl::OnSetClientSite(); m_bMsgReflect = FALSE; } COleControlクラスではOnSetClientSite関数内でコンテナに対して返信処理の有無を問い合わせ、結果をm_bMsgReflectに保存します。 そして、コントロールはその結果を元にリフレクトウインドウを作成するかどうかを判断するのです。 というわけで、コンテナを調べた結果を無視して、FALSEにしてしまえば勝手にリフレクトウインドウを作ってくれて、万事解決と。 ちなみに、私の作ったActiveXコントロールは"ListBoxEx"というコントロールではありません(^^; すでにVBのクラス機能を使って拡張リストボックスを作っている人がいますから。 それにしても、意外と簡単でしたね。でも、この方法はどこにも公開されていないのですよ。 そもそも私はWindows2000の環境でしかチェックしていないので、もしかしたら2000特有のバグかもしれません。もしこの現象で頭を悩ませている人の助けになれば幸いです。 それでは、おやすみなさい。 |
0008
|
2001/10/20 (土)■ | |
毎週恒例ゲームの日 | ||
どうも、いつもと同じように休日をすごしたまどかですぅ。 今日は彼女とプレステ2のCAPCOMvsSNK2をやったり、ゲームキューブのルイージマンションやったりゲームな一日をすごしました。 毎週ちょっとずつしか進めないルイージマンションですが、やっと最後のボスまでたどり着きました。たどり着いたところで、今日は終わりでしたが。 それにしてもゲームキューブは良いゲーム機です。なんと言っても絵がキレイ。あと、起動時間も速いし、ゲーム中のローディング時間もほとんどありません。快適に遊べます。 素晴らしいゲーム機として実感したゲームキューブですが、ゲームキューブ発表当時、任天堂がROMカートリッジ方式を止めて、メディアを8cmDVDに変えると聞いた時は、ちょっとショックでした。 任天堂はデータ読み込みが速いというROMカートリッジの良さを大事にして、NINTENDO64まで容量の少なさを犠牲にしてまで、ゲームを遊ぶときの快適さを追求してきました。 実際プレステなどのディスクメディア特有のローディング時間はプレイヤーにとって不快の種となっています。イベントがある時に待ちが入ると、ゲームのリズムが狂ってしまいますよね。 こうした経験から、ディスクメディアに移行した任天堂のゲームキューブも、時々待ちが入るんだろうなぁと想像していたのですが、ゲームキューブと一緒に買ったルイージマンションをやって、キリのいいところまで遊び終えた時、ふとあることに気づきました。 「Now Loading....... なんて出たとき無かったよな……」 そう、ルイージマンションではデータ読み込みによる待ち画面が無かったのです。 これにはさすがに驚きました。すごいです。任天堂。ほんとは裏でちょっとずつ読んでいるのでしょうが、全然気になりません。というか、気が付きません(^^; ディスクメディアに移行してもROMカートリッジと変わらぬ快適さとは、さすが任天堂と言わざるを得ないですね。 ゲームキューブでは、これから11月にスマブラDXでるし、ゼルダも出るらしいし、今から楽しみです。特に私はゼルダが大好きなので、すごく楽しみです。 というところで今日は終わりにして、明日は久しぶりに本屋とかをまわろうかな。 それでは、おやすみなさい。 |
0007
|
2001/10/19 (金)■ | |
ボーリングしました | ||
今日は出向先の開発部で毎月恒例のボーリング大会に参加してきました。最初は調子が良かったのですが、疲労がたまっているせいか、ゲームごとに悪くなっていって、結果はダメダメでした(^^; 出向初はじめて3週間くらいですが、だいぶみなさんと話ができるようになりました。誰がどんなことやっているのかはまだ知らないことが多いのですが、顔は憶えてもらったと思います。 さて、仕事のことですが、今のところほんとに順調で、しかも予定期間の約半分の早さで進んできているのでいい感じです。時間が空いても仕事はたくさんあるので、いろんなもの作ってます(^^; とりあえず、今のところ役に立っているようなので、嬉しいです。良かった。 空いた時間の仕事にVB用にActiveXコントロールを作ってます。今日まではListBoxコントロールの機能拡張したものを作ってました。ちなみにActiveXはVCで作っています。 作り方としてはLISTBOXクラスのラッパーという感じで、当たり前ながら、AddItemなどのメソッドは自分で実装しないといけません(^^; 今回追加した機能はリストボックスの各行に任意の前景色と背景色を設定できるようにするのと、文字列と同じようにイメージもリストに追加できるようにしました。 VBのListBoxコントロールとほぼ同じのインターフェースでできたので結構満足してます。ただ、MFCのバグなのか、ActiveXコンテナとなるVBの方のバグなのか、まだわからないのですが、作ったコントロールをひとつのフォームに複数置くと、OCM_MEASUREITEMというメッセージが正常に送られてきません。全てのOCM_MEASUREITEMメッセージが最後に追加したコントロールに飛んでいってしまいます。 普通CreateWindowなどでListBoxを作成した場合、項目の高さや領域の内容を設定するためにWM_MEASUREITEMというメッセージを受け取るようにして処理するのですが、ActiveXの場合、まずこのWM_MEASUREITEMがActiveXのコンテナ(今回の場合はVB)に送られ、次にコンテナが各コントロールに対してOCM_XXXXXXというメッセージに変換して送ります。なので、ActiveXコントロールはWM_MEASUREITEMをOCM_MEASUREITEMという形で受け取るように作らないと正常に動作しません。 しかし、今回の場合はコントロールにメッセージを送る側であるコンテナがおかしいようなので、どうしようもないのかなぁ。MicrosoftのサンプルActiveXでも同じ現象が起こったので、ActiveX側の問題ではないような感じだし…… VBをSP5にしても状況は変わらないし…… でも、VBのリストボックスは正常に動作してるし…… やっぱりActiveX側の問題かなぁ。なんか足らないことがあるんだろうな。きっと。 誰かこの問題について情報がある人は是非教えてください(^^; 送る側がどこに送るのかがわかっていないようなので、もしかしたら、ActiveX側ではコンテナに自分を識別させる特別な処理を行わないとだめなのかもしれない。その特別な処理が何なのかはさっぱりわかりませんが(^^; AvtiveXがネットとかにもあんまり出回ってないのは、こういう問題があるからなのかなぁ。情報も少ないし、わかりやすい参考書もないし…… ふぅ。難しいね。 でも、ActiveXを作るのは楽しいし、今までに無い便利なものを作っているのでやりがいもあるし、ノウハウも得られるので、良いこと尽くめかもしれない(^^; ああ、楽しめる仕事ができてよかったなぁ。 もし、就職前の学生さんがこれを読んでいるのなら、就職先を考える前に、まず「自分の好きなこと」をよーく考えましょう。これなら一生やれるというくらい好きなことを。そして、やりたいことが決まったら、それをやっている会社を探しましょう。その方がきっと効率も良いはずだし、何よりもやる気になるよね。 専門学校の学長がよく言ってました「自分の好きなことを仕事にできなければ、人生は地獄だ」と。これはゴーリキという人の格言らしいいんですけど、その通りですよね。 私の場合、幸いにも趣味のプログラムがそのまま仕事になってしまったので、言うことなしです。ただ、私は会社でプログラム、家でもプログラムというプログラムばかですが(^^; 会社でプログラムをするときは当たり前ですが、プロレベルのクオリティを要求されます。そうした中でプログラムを組んでいると、自然にプログラム技術が上がり、プログラムに対しての気の配り方が変わります。 すると、趣味のプログラムもおのずとレベルが上がってきます。そして、趣味のプログラムで確立した新しいインターフェースを仕事のプログラムで活用する。うーんなんて良い循環なんだ。 このままの環境でいられるようにがんばるぞ。 |
0006
|
2001/10/18 (木)■ | |
今日は早く寝よう | ||
どうも、案の定寝坊して遅刻しかけたまどかですぅ。 いつもの時間には遅れてしまいましたが、いつも早めに出ているので、その時間に遅れても間に合うようです。よかった。明日は余裕で行けるようにがんばろう。 で、今日は何をしたかというと、昨日ちゃんとできなかった拡大ルーペ処理の実装の続きをちょっとやりました。 昨日はとりあえず拡大描画できるようになったけど、小さい画像を見るとおかしくなるというところまでやりました。そして、今日はそのバグ修正です。 バグの原因はほんとに単純なもので、ソースを見直すと間違いは一目瞭然でした(^^; というわけで、比較的短時間でキリのいいところまでつくることができて満足です。 しかし、昨日見つかった、大きい画像を拡大ルーペで見ると描画が遅くなるという問題が残っています。 現在拡大処理には、StretchDIBitsを使っていますが、どうやらこれは転送量に関係なく転送元の画像の大きさに比例して処理速度が遅くなるようです。これじゃ使えませんねぇ。 というわけで、拡大処理を自前ルーチンでやることに決めました。補間拡大ではないので結構簡単にできるかなぁ。 明日仕事したら休みなので、今度の日曜日にはやり始めた同人ゲームの続きやって、減色教室の続きや、気分がのってきたらJAVAでもやろうかな。 それでは、おやすみなさい。 |
0005
|
2001/10/17 (水)■ | |
むぅ。時間が無い…… | ||
うう、現在午前2時45分。今日は家に帰ってきて、ちょっと余裕があったので、MP3聴きながら、減色教室のルーペ拡大描画の実装をやっていたのだが、考えていたよりも手間がかかって、いろいろ悩んでいるうちにこんな時間になってしまった。 とりあえず拡大描画はできたが、小さすぎる画像を見るとおかしくなるとか、拡大描画のGDIが遅いとか、いろいろ問題は残っている。ふぬぅ。 あとはこれ書いて洗濯物を部屋の中に干して、ごみ片付けて終わりだな。 というわけで、明日寝坊しそうな可能性大なまどかでした。 めちゃ短いですが、今日は時間が押しているということでご勘弁。 |
0004
|
2001/10/16 (火)■ | |
本を読む時間があるということ | ||
どうも、まどかですぅ。 今日今やっている出向先での仕事のスケジュール表をもらいました。各仕事ごとに担当者と作業予定期間と実際に完了した実績がわかりやすく表になっていました。はじめにきっちり予定が立てられているプロジェクトはやっぱりやりやすいですね。プロジェクトマネージメントの良い勉強になります。 で、その予定表を見ると、私の作業予定が来年の2月までバッチリ入ってました(^^; 今年中に出向を終えるということは不可能ということですね(^^;;;; 今のところ私の仕事は順調で、与えられた作業期間の半分をちょっと過ぎたところで、ほぼ完成といったところまで来てます。この分だと余裕でデバッグができるので、ちょっと安心してます。 まだ、私の作った部分を他の人のプログラムで使うテストが全然できない状態っぽいので安心はできませんが。仕様変更があったり、機能追加があったりするしね。まあ、早くできそうだから、まだ対応できるけど。 実は今やっている仕事では、今までの経験を生かしつつ、高速化を含めて、自分の中で新しい試みを試しています。 それは、今までやろうと思っていたけど、機会が無くてできなかった高速なアルゴリズムを使ってみたり、今度減色教室で使おうと思っているインターフェースを実装してみるなどなど…… 楽しんでやってます。 もちろん上司の許可は得てますよ(^^; 打ち合わせのときに、「こんなやりかたがありますよ」「あんなアルゴリズムが高速ですよ」と自分のやりたいことをアピールし、「じゃ、それやってみようか」という具合に。 出向先の会社は比較的開発者のやりたいことを自由にやらせてくれる開発方針で、技術者としてはほんとに仕事がやりやすい環境です。でも、私もやるからには、それなりに結果を出す自信があるから、提案しているのですが。 最近は忙しいけど、自分の中では順調に仕事ができているので、非常に気分がいいです。平和だなぁって感じ。 そうそう、今日この日記で書こうと思っていたことを書かないとね。 最近出向で向こうの会社に通勤するのに、1時間半ほど電車に揺られていきます。これくらいの時間電車に乗るのは学生時代と全然変わらないので、たいしたことは無いのですが、問題は途中で乗り換えが必要なことです。 学生時代は電車1本の通学だったので、折り返しで戻ってしまうことはありましたが、電車では寝てれば良く、楽でした。 でも今回は本数の少ない路線ということも重なって、寝過ごしたりしたら帰って来れません。これは危険です(^^; ということで、通勤途中に寝ないように、本を読むことにしました。 本といっても小説のように続きが気にならない雑誌や参考書です。 実は私は本を大量に買う質でして、1ページでも自分が気になる情報が載っていればすぐ買います。本はすべて自分の創作活動の資料として考えてます。立ち読みで済ましてしまえばいいのかもしれませんが、私の場合忘れてしまうことが多いため、必ず自分の手元に置くようにします。 でも大量に買いすぎるし、読む暇がなくて買ったは良いけど、袋に入ったまま積んである本がたくさんあります(^^; しかし、資料なんだし、いつか読むこともあるだろうと、相変わらず買いつづけてます。 そんな私ですが、この度、この買いつづけた資料を有効活用する時がやってきました! そう、この買っても時間が無くて読めない資料たちを今こそ読むのです(^o^ なんて効率の良い時間の使い方でしょう。眠らないので、帰る手段がなくなる心配もなくなるし、資料を読むことで知識も増える。いいですねぇ。まさに一石二鳥!! あ、という間にもうこんな時間になってしまいました。うう、これでは私のやる気も睡魔に負けてしまう。 というわけで、今日はこの辺でお別れです。 明日はなに読もうかな(^^ |
0003
|
2001/10/15 (月)■ | |
社長レベルの会話 | ||
どうも、突然ですが、今日は良いことがありました(^o^) 現在私は、うちの会社と付き合いのある、ある某有名会社の工場の開発部に応援社員として、週3・4日出向していまして、今日が今週唯一うちの会社の方で仕事をする日だったので、気合を入れて仕事をしていました。 今日1日しかないのでがんばって仕事をした結果、とりあえず自分が納得するところまでできたので気分がいいです。 そんな中、突然社長から今日の夕方から空いてる? との誘いが…… 私は社長と飲みながら話をするのは嫌いじゃないので、二つ返事でOK。そして、私を誘った理由を聞くと、今日社長の知り合いの社長さんと飲むそうで、私と気が合いそうな人だから紹介したいとのこと。 私にとって社長レベルの人と会わせていただくのは願っても無いことで、嬉しい限りです。実際会ってお話しても、私の期待に応えてくれた素晴らしい人でした。4時間ほどお話をして(といっても私はほとんどニコニコしたり感心しながら聴いていただけですが(^^;)、今日の飲み会は終わりました。 話の内容は社長同士が話す「仕事のありかた」といったものでしたが、今の私ではほとんど考えないような内容の話だったので、良い経験になりました。 話の中で向こうの社長から「うちに出向に来ない?」とのお誘いがありました。私としても知識を広げられるし、おもしろそうなことをしている会社なので、行って仕事をしてみたい気はあります。 ですが、私はうちの会社(社長)も好きなので、ちょっと複雑。まあ、向こうに転職するわけではないので大丈夫なのですが(^^; うちの社長いわく、今の私の立場に立てば、是非出向に行ったほうが経験になっていいが、社長の立場にすれば、ほんとはどこにも出したくないと言ってくれました。 感動しました。今の自分の仕事が認められているんだなぁと。ますますやる気になりました。 社長たちの知り合いには、やはりすごい人が多く、会ってみたい人ばかりです。いつか機会があれば会わせていただけるそうで、今から楽しみです。その人に会うまでに、その人が私に会ってみたいと思うような自分になれればいいなぁ。難しいけど(^^; と、飲み会の話はこれくらいにして、明日からはまたはじまる出向先での仕事に頭を切り替えないとね。 出向先での仕事は、いままでうちの会社で得た知識を生かせる仕事なので、がんばり甲斐があります。 まあ、知識を生かせるというか、以前を作ったものを超えるものがつくれるといった、いわゆる”リベンジ”の場を与えてもらったようで、わくわくしています。常に上を目指すプログラマのサガですね。 さらに、その仕事が他のところとの競争みたいな話になっているので、ますます燃えてます(^^) 奴より速く、そして奴よりも強く…… って感じで。実際には”より高速に、より精度を高く”ですが。目指すところがあるのは良い気分です。 全然話は変わりますが、最近ファームウェアの開発で敗北を味わいました。仕事としては大丈夫なのだそうですが、自分に与えられた期間内にプログラムを完成させることができませんでした。 その期間というのは、私が出向に行くまでで、幸い私の代わりに上の人が引き継いでくれて完成に至ったのですが、とても悔しいです。 後で見せてもらった上の人のソースコードをしっかり解析して、反省し、次にはこんなヘマはしないと誓いました。 ファームの開発はメモリとスピードとの戦いなので、常に最適化が要求されます。私は多いメモリと速いCPUでの開発に慣れてしまっているようで、一応最適化はしたつもりだったのですが、詰めが甘かったです。 教訓「ソースコードの流用は最適化にはつながりません」 これは当たり前ですが、同じようなことをするのに、前のプログラムで上手くいったソースをそのまま持ってきても最適化にはつながりません。もちろん、ほんとに同じ処理ならそれでいいのですが、”同じ”ではなく”同じような”時の場合、最適化とはその場合での工夫をすることで初めて最適化と呼べます。 考えることを途中で放棄してては、決して良いものはできません。これが私の敗因だと思いました。 次にファームの仕事が私にまわってくるのはいつかわかりませんが、その時は負けません。 |
0002
|
2001/10/14 (日)■ | |
もうくじけそうな私…… | ||
いやぁ、昨日から始めたこの自己満足日記ですが、いきなり挫折してしまいそうな勢いです(^^; さて、早速”今日の想い”ですが、今日は日中彼女の自転車(2台)のパンクを直しに行ったり、回転寿司食ったり、ゲームキューブの「ルイージマンション」で遊んだりと、毎週恒例の週末の過ごし方をしてました。 で、午後10時ごろ帰宅して、のんびりしてこのまま寝ようかと思っていたのですが、どうもテレビがおもしろくないので、のんびりな気分にもなれず、開発中の「減色教室」の続きをやることにしました。 減色教室のコーナーで次に公開するバージョンの目標は、画像のプレビューウインドウに拡大表示機能をつけるというのに決めていたので、拡大表示機能を実装し始めたのですが、キリのいいところまでできるのが、何時になるかといったことが問題になってきました。明日からまた仕事が始まるので、早く寝ないとね。 しかしながら、やはりがんばってキリのいいところまでやらないと、後々困るので、がんばりました。 で、ついさっきキリのいいところまでできたんだけど、もうこんな時間(2:30)だ。 早いとこ、これアップして寝ることにしよう。 今日実装したのは、3モード予定している拡大モードのひとつである「拡大ルーペモード」のウインドウ表示部分までで、実際に拡大された画像を描画するところまでは至ってません。 ほんとは「拡大ルーペモード」を完全に実装するところまでやりたかったんだけどなぁ。はぁ……また今度にします。 |
0001
|
2001/10/13 (土)■ | |
自己満足日記のはじまりです | ||
どうも、まどかですぅ。 今日から始めました「まどかの自己満足日記」。これは私自身の自己満足だけのためにあるものです。 1日に起こった出来事や思ったことを後で思い出してニヤニヤするために始めました。 そもそも、日記とはそういう目的のためにあるようなものですよね。ただ、この日記は他の人も見るかもしれないというところが実際の日記帳とは異なりますが。 ここでは、主に、今日はこんなことがしたかったけど、時間的にできないので、せめてそのやりたかった”想い”だけでも書き残したいといった、”今日の想い”を書いていきたいと思います。ちょっとややこしいですが。 では、さっそく”今日の想い”です。 今日はお休みなので、家でのんびりしていました。お昼まで十分寝て、起きてからは最近ちょっとやる気になった「JAVAで掲示板を作る」ができる環境を整えました。 JAVAで掲示板を作る場合は、普通のブラウザで動作する、いわゆる「JAVAアプレット」ではなく、サーバー上で動作するJAVAプログラム「サーブレット:Servlet」というもので実現します。 このサーブレットを実行するには、サーバー側にこのサーブレットを実行できる機能がなければなりません。 ちょっと話が難しいので、気になる人は、ネットで「Apache Tomcat サーブレット」といったキーワードで検索してみてください。それらしい情報が手に入ります。 で、サーブレットを作るのにもまた必要なものがあって、普通のJAVAプログラムに必要なJDKとサーブレットを作るためにさらに必要なJSDKです。これらをインストールして、コンパイルを楽にするためにパスを通して、テスト実行をするためにHTTPサーバのApacheをインストールして、サーブレットを動作させるためにTomcatをインストールし、ApacheからTomcatを呼び出せるようにいろいろ設定して……結構大変でした。 とにかく、JDKとJSDKとApacheとTomcatを入れたらネットに接続しなくてもサーブレットの開発・実行テストができるわけです。 で、作ったサーブレットをこのHPが置いてあるプロバイダのサーバーに置けば自分の掲示板を自分のHPで利用することができるわけです。ただ、プロバイダのサーバーがサーブレットに対応していればの話ですが。 私の入っている「ぷらら」はどうなんでしょ? ぷららのページには「JAVA OK」って書いてあったけど、サーブレットじゃないかもしれないし。まあ、もしぷららで動かなくても知り合いに自宅でHTTP(WEB)サーバー立ち上げようとしている人がいるので、その人にスペースを借りて運用する予定です。 さて、そもそもなんで私が「JAVAで掲示板を作る」に興味を持っているかというと、私は仕事でWindows系のプログラマをやってまして、まあ趣味もプログラムなんですけど、プログラマなんだし掲示板くらい作ったことないとね。ということで、作ることを決心しました。決心したといってもそんなに強い意志ではありませんが。 また、会社で社内掲示板を立ち上げるという企画も立ててまして、今のところ会社のために作るという方の意味合いのほうが強いです。完全ボランティアで。 でも、社命ではないので、ほんとにのんびりと作っていく予定です。 さあ、今日の残りはなにしようかな。 趣味で作っている減色ツール「減色教室」のつづきもあるし、最近始めた同人ゲームの続きもしたいし。 やりたいこといっぱいです。 |