開発日誌>2008年10月

開発日誌: 2008年10月



August Framework - 2008/10/26 (日) by myun2

どうもこんばんわ。最近プロジェクトの活発度を下げまくりのミューです。(何

・・・いや、つっても開発自体はやってるんすけどね・・・。それもcommitもちゃんとしているんすけどね。
ただ、修正対象のリポジトリがopen-mglの方であるため、こっちの活発度は下がる一方という・・・。

August Framework」と言うものを作ってます。 (・・・リンクを張ったものの、中身は空です。:何)先日話した「AGH」の、open-mglでの実装系です。

af-test1.zip

実行してみると、大した事の無いプログラム(表示される数字の奴をドラッグ出来るだけ)なのですが、これが実は結構手間隙掛かってます・・・。 ステップ数的にも大した量はないんですけどね。かれこれ一週間近く掛かってます・・・。

何が一番大変かって、デバッグが一番苦労しましたね。 まずデバッグし辛い。DLLなので毎回ビルドしなきゃいけない。それからAGHは、MFCのようにメソッドをどんどんオバーライドしていく方式なので、 そこにステップインして行くのも難しかった。それからマクロ。agh_ScreenBase.hを見てもらえると分かると思うのですが、真中らへん以降からがマクロの嵐!!ステップインし辛いというか、出来ないと言うか・・・大変でした。

こういった、MFCのようにガンガンメソッドをオーバーライドするタイプのライブラリをあまり作ったことが無い、と言うのも苦労する羽目になった理由の一つです。 virtualが付いてるとか、付いてないとか、<基底クラス名>::メソッド名とか、「そりゃあおめぇ、基底クラスのメソッド呼ばれて当然だろ・・・」なんて初歩的なミスも・・・。 て言うかいつも純粋仮想関数ばっかで、あんまvirtualメソッド宣言してオーバーライドってした事が無かったので、そこらへんもノウハウが無くて苦労させられた理由の一つですねー。 まぁどれにせよ、どれをとっても、今まで余りやってなかった事で、更にDLLだとかやり辛い条件が重なり、非常に苦労させられた感じでした。

# あー、あと、最近仕事でJavaばっか使ってたからついついJavaのつもりで・・・と言うのも理由の一つですね。

でー、あー・・・あ、そうだ。August Frameworkがどれだけ優れているか、って話でもしましょうか。(何


さっきまで散々言ってたように、August Frameworkは、MFCのようにガンガンメソッドをオーバーライドしていくタイプのプログラムです。
その先駆け(?)であるMFC。設計と言うか、発想と言うか、考え方自体は非常に良いとこついてると思うのですが、いかんせんそっから先が悪かった・・・。 CWinAppを継承したクラスがあり、CMDIFrameWndを継承したメインクラスがあり、CMDIChildWndを継承したクラスがあり、CViewを継承したクラスがあり・・・と幾つものクラスを作らねばならず・・・。

・・・いや、分かるよ!?そうしない事には確かに無理。けれども───

結果的に言えば、Windows SDKプログラミングを無理やりその「ガンガンメソッドをオーバーライドしていくタイプ」(なんて言うんだろね?こういう設計)に ネジ込もうとしたのが良くなかったのかも知れない。いや、もしくはMDIとSDI、+ダイアログベースを無理に共通化したのが良くなかったのか・・・? まぁ何れにせよ、MFCは使い辛いものになってしまった。

実際の使用者側のソースコードはこの程度。どうです?簡単でしょ?

あ、そうそう。MFCと違って、大体のやりたい事はライブラリ側に揃ってる(わざわざユーザが一つの事を実現するためにあくせくする必要が無い)事も勝ってる所です。 ・・・揃ってる、って言うかこれから揃わせます。「こんな事したいんだけどー」ってのがあれば、言ってくれれば多分誰かが実装してくれます。(何
まぁもし仮になかったとしても、簡単にオーバーライドで実装可能なようにします。MFCみたいに、キモくオーバーライドする羽目にはならないようには設計します。(笑


まぁそんな感じですねー。近況。
とりあえず August Framework が、やっとこさまともに動き出して、個人的には一段落、一息、一安心、と言った感じです。
暫く休業期間に入るやも知れません。(何

などと事前にサボり宣言をしつつ・・・ではでは。


AGH 2008/10/02 (木) - myun2

前回の日誌にて書いていた「UI関連のコントロールを統一インターフェース化」ですが、
名前が付きました。AGHと言う名前です。 Abstracted GUI Headers の略で「抽象化されたGUIのヘッダー群」と言う意味になります。

YukiIL変換系も一筋縄では行かず、結局の所、今はこちらを実装しています。
コンボボックスなんて高等なコントロールはまだまだ全然先の話ですね・・・まずは画像表示、 マウスイベントのハンドル辺りを作っています。

ちなみにソース自体は Open-MGL の方で管理しています。

http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/AGH/include/agh.h?root=open-mgl&view=log

まだまーだ作りかけ。・・・まぁこれから実装していくのです。