過去や、今のろくでもない雑記をみたい方は try.htmlや try03.htmlへ
えー、目標の一つに「OS2界最高のフリーソフト作者となる」と言ってますが、冗談ぬきで、死ぬまで「まいった」をしない限りは他人がどう言おうと「負けてない」訳ですよね。実は20年後にはwindow族は滅びていると思っていますし(というのもpcが滅んでいるから。私の予想では例のNetworkComputerの世界になっていると信じているので。)その頃Win族を使っている人はいないでしょう。で、しぶとくwarpを使っていれば、とにかく「勝ち」ではあるんじゃないかな。
等と、考えたのは、20年後にまさかCD化されるとは思わなかった「富樫雅彦」のアルバムがCD化された訳で、いやー、ファンやってて良かったー、と思ったのでありますよ。特に、この20年の時を越えて初CD化された時代のファンでありますので、なおさら。あきらめないで良かったー、と思うのであります。同様にマイブームとして20年の時を越えて、「プログレ再突入」「マイク・オールドフィールド再突入」等をやらかしたりで、世間では20年の時を越えて「TurboPascal3.0aの無料配布」等涙なしでは語れない時代がやってきてます。と言うことで、Warpでもフリージャズでも(Jazzだって絶滅の危機に瀕しているジャンルですしね)20年後の復活を楽しみに細く長く生きる積もり。なんかブラジルの「勝ち組」みたいですね。(苦笑)
最初にお断りしときますが、「星虫」について喋っていますけど、まったく「星虫」と違った話を勘違いしている可能性もあります。後、記憶によれば、「星虫」の続編があったはずで、これを読んでいないので、さらに評価が偏る可能性があります。また、ネタバレになるかもしれないので、気になる方はかっとばして読んで下さい。m(_._)m
最近思ったのが、私にはキャラ萌えという概念が理解できないのではないか、という事です。というのも各地で話題の「星虫」なんですが、あれ、私まったく面白くなかったのでありますね。そもそも、ヤングアダルト系としてはあんなもんか、という気もするのでありました。で、なんでこんなに(一部地方で)騒がれているのか、考えてみるに、評価されている軸が「お兄ちゃん」な異星人との恋物語なんじゃねぇのか、という気がしてしょうがない訳です。
ちなみに、「妹萌え」属性も私には分からない世界で、自分の様な不完全な属性に興味を持つ生き物ってのは私にとっては想像の埒外で、さらに血縁が付いて来るとなれば、もう「死んでくれ」という自己嫌悪の延長的な憎しみが来るのは間違いないでしょう。(爆笑)
誤解してほしくないのは、「星虫」が悪い小説ではないという事。結構こまやかに、異星人/妹との交流を丁寧に書いている小説ではあるのです。が、別にこれなら異星人を出す必要ないじゃんとSF者なら思うはず。最後にファーマーの「恋人たち」にしろ、とは言わないが、SF者な私としては、世界をひっくり返す力が欲しくてSFを読んでいるのであって、別に「ちょっと異常ないい話」を読みたい訳じゃないノヨネ。そういう意味で、これだけあっと言わせる設定を使っていながら、結局人情話に収束してしまうのは納得いかない。「認知論」とか「意識と宇宙」とかの話と絡む話になるはずなんだけど、こうなっちゃーねー。(なお、全てのSFファンが私のような人間ではありません、むしろ少数じゃないのかな?)
同様に、私のお気に入りの作家は最近では「スティーブン・バクスター」「イアン・マクドナルド」「グレッグ・イーガン」とナル訳ですが、この人たち、見事に人物描写が魅力がない(=キャラが立ってない)。でも、それを上回る世界描写が魅力なんですね、私にとって。また、中核をなしているSFのアイデアも魅力的なんであります。というか、ここが私のツボを突いてくる訳で、「堀晃」のように、世界を描写するための装置としてキャラクターを作るタイプの作家に弱いらしい。バクスターのマイベスト「虚空のリング」の人物描写なんてひどいよ。1章毎に性格がころころ変わってる(爆笑)しかし、そのひどさも「銀河系を投げつける、暗黒物質生命」vs「その銀河を真っ二つにする宇宙紐を作るバリオンの王侯ジーリー」なんて世界描写で全て(俺的には)帳消し。帳消しなんだってば。で、この世界描写が私の「ツボ」を突くのであります。(爆笑)結局、私が自分の事を肯定的にみれない(大好きなんだけどね、自分の事は)から、キャラ萌えという方向には興味が無くなって行くのではないのか、と思うのでありました。マル。
畠山@SRAさんから、防備録の疑問について指摘がありました。それによると・・・・
防備録での ] 何故か、ウインドウについて操作する場合のhandleはWinCreateWindow ] で生成するハンドルではなく、メッセージのハンドラーに与えられるハ ] ンドルじゃないと上手くいきません。 ですが、 hwndFrame = WinCreateWindow() で取得するフレームハンドルを、ウィンドウプロシジャで 参照していたりしていませんか? 上の hwndFrame は、WinCreateWindowが完了した時点で はじめて確定するわけですが、ウィンドウプロシジャは それ以前に(WinCreateWindowの延長で)呼び出されます ので、その時点では、hwndFrameには無効なハンドルが 入っていることになります。
との事でした。うーん、よく理解していないのですが、WinCreateWindow中で既にメッセージハンドラーが回っている、と理解してよろしいのでしょうか。とすれば、こうなるのは、自明な事ではあります。けれど、こういう形で動くのであれば、どういう時にhwndFrameを使うのか、自分の使い方を考えねばなりませんなぁ。(^^;
同じく、WM_Destroyについても、畠山さんの所には問題ないよし。これも上と同様な現象のような気がしますね。指摘された事項について本当に畠山さんの意図がわかっているのか不安がありますが・・・
なにはともあれ、畠山さん、ありがとうございました。m(_._)m
VirtualPascalのキーを紛失しました(^^;)。私はEarly Experimentというのに参加しているため、β版から使え、50$安くい換わりにマニュアル無し、というプログラムに参加していました。が、残念ながら、このキーがHDDのクラッシュと同時に無くなっておりました。ひえー。ううむどうもVP1.1で不満はないんですが、TListにバグっぽいものがあるのとAnsiStringが使えるのが魅力なんで、VP2.0に乗り換えようカナァと考えていた矢先の事故。再発行は認めてもらえるのでしょうか。奇絶・怪絶・また壮絶!
おとなしくvp2.1買えよ、という説もあるんですが($150だし)。でもねぇ、とりあえず、今年はコンビニエンスパックを買わねばならないし、どうしたもんでしょうか。同様に、HDDを増設して、LinuxでDelphiというのも、魅力ではあるのですが。特にLinux2.4ではHPFSを読み書き出来るから、事実上Warpで開発して、Linuxで走らす、という技も可能なんだよね。おそらくVP2.1はLinux上のDelphiにパッチを当てるのが出来るようになっていると思うので、(希望的観測)Linuxで動かさなくても、Delphiは必要になると思うのですが。まぁ、その時でも遅くないか。AnsiStringはいまいち便利過ぎて恐い気もするし。
スランプです。やることははっきりしているのですが、やる気が出ません。まず
・ddpmの設定用ダイアログの設計
・エセeffの2window化への設計
・rtoyの改修
等とやらねばならぬことは多いのですが、結局めんどくさいのです。そして、大変だからこそ、やる気がしないという(ワハハハ)
大変、という意味には2種類あって、純粋に作業量が大きいという事と、エレガントな実装を思い付かないという事と両方ですね。自分はあまりアマグラマとしては上等な部類ではないので、「エレガントな実装」というのは非常に重要です。自然な実装方法であれば、後々の拡張性も高く、ソースコードの可読性も高く、結果としてメンテナンスコストも低くすみます。だけど大体、こういうエレガントな実装方法って考えることが多くてなかなかコード書きまで行けないという致命的な弱点があります。しかし、コードを書く手間をけちってデータ構造等を決めてしまうと、後々の拡張の際の例外手続き等が大きくなるため、結果としてより一層の時間がかかったりするのであります。
実際、ddpmの前身のcalenderという作品(未公開)がありまして、機能的には全く同一なんですが、あまり先のことを考えないで走って作ったため、結局ボツ。データ構造を考え直して、ddpmとして作り直しました。(ddpmにもsubmemoと呼んでいる表示行の実装方法が思い付かないで走っているので、後で苦労しました)ちなみにcalenderを作ったのはプロトタイプとして様々な知見が得られたので非常に有効でしたよ。:-)そういう意味では、今エセeffの実装方法、ちょっと限界の様な感じでありまして、今、基底クラスの幾つかを作り直してます。(^^;)これでも、ちょっと危ない感じなんで、2ウインドウのエレガントな実装ではまっている状態です
そうそう、それで、アマグラマの方にお聞きしたいのですが、自分で作るフレームワークなりクラスって再利用してます?結局、自然なモデリングとか考えてくると、微妙にクラスの考え方が違ってきたりするので、自作のクラスってあまり再利用できません。(再利用をメインに考えていないから、ろくなドキュメントがない、って説も有力ですが)これって私だけなんでしょうか(^^;)
等と考えている前に、仕事しろ、って突っ込みは禁止:-P
えー、単継承しかない、ObjectPascalでどうやってデリゲーションタイプのフレームワークを作るのか、非常に謎でありましたが、Javaプログラムデザインををつらつらと見ていると。おお、あるじゃないですか、Javaのデリゲーションの技が。なるほどー、メッセージに対応したオブジェクトを用意しておくわけですね
こんな、感じ
AbstractHandlerObject:=MessageArray[MessageNumber];
メッセージに対応したオブジェクトを取り出して
AbstractHandlerObject.Open(MessageStruct);
オブジェクトの仮想化したOpenで動作を指定する
なるほど、確かに、こうすりゃ出来ますね。問題は複合継承が可能なら、これでもハンドラーのオブジェクトからAbstractHandlerObjectを継承すれば、親のオブジェクトのインスタンスにアクセスするのは簡単ですが、単継承しかない、わがObjectPascal軍団としては非常にややこしい、というか、事実上オブジェクト生成時に親のselfを渡して上げるくらいしか手がないですね・・・後は、共通にアクセスする外部変数を作る、ってのも手ですが、SDIの様にいくつものウインドウが開く場合、結構大変な気もするし・・・・という訳で、引き続きご意見募集中です。 ちなみにめちゃめちゃ本気です
ここらで、まじめにPMプログラミングの話。私は今までFrameWindow:=WinCreateStrWindow(Window・・・・で、作ったフレームのハンドルに対してWinQueryWindowPos(FrameWindow、とかすればウインドウ全体の大きさが分かる、と思っていたのです。というのも自分の理解によれば、ハンドル、とはウインドウの種々のデータに対するポインターで、要はオブジェクト指向の理念が無かった時代のオブジェクト代替である、と思っていたのです。要するに、FrameWindow.WinCreate(ほにゃとか書きたい訳だろう、と考えていた訳です。
ところがところが、これじゃ上手くいかないのですね。何故かメッセージハンドラーに渡されるウインドウハンドルじゃないと上手くいかないのです。なんで?なんで、WinCreateXXXXで帰ってくるFrameWindowじゃ駄目なんだ?
このメッセージハンドラに現れるウインドウハンドル、お前は一体何者?
その他、「フレームハンドル、お前は何の役に立つのだ?」とか、(というのも、このフレームハンドルを使っているのって、最後のWinDestroyWindowだけですよ)「WM_DESTROYって役に立たない気がする」とか(というのも、ハンドラーにWM_Destoryを書いても、ウインドウハンドラに対して、WinDestroyを投げてもPMのウインドウは死なない。ウインドウハンドラの外で初めてWinDestroyを使われるから?)PMの奥深さを学びました(爆笑)。ううーむ、PM、お前は何を考えておるのじゃ
広く識者の意見を求める次第であります。