2008/08/29

・アニメーションクラスを作っている。 将来的にはSOXクラスに対応させる予定。 3時間ぐらいでひとまずそれっぽいものはできたが、 すでに作ってあるエフェクトクラスと機能がかぶっているのに気がついて、 統合することにした。 簡単にまとまりそうで上手く行かなくて、 一旦パソコンを離れて設計のイメージを練り直し。 こんがらがっていて1時間ぐらいかかったうなっていたら、 寝てしまった。 起きたら1時間半ぐらい経っていて、 しまったと思ったけど、 5分もしないうちにイメージがまとまった。 もしかしたら、 最初から寝てまともな頭にしたら早かったのかも。

・『アペポペ』に関しては、 上手く行っていないと思ったら、 即座に直すようにしている。 複雑が巨大になるにつれ、 手が完全に止まる可能性が高まるからだ。 そのせいでゲームらしい部分がなかなかできてこない。 「今後の作品の基盤としての『アペポペ』」がコンセプトになりつつある。

・改めて作り直して、 結局この日はそれで終わった。 リファクタリングするより最初から作ったほうが早かった気もするけれど…。 手直しの方が性にあっているのかも。 なんとなくでしかないけど、 堅牢になる気がするんだ。 確実だしね。 それにどう直すかを思考錯誤しているときに、 良い設計が見つかることが多い。 要するに、 最初の設計が下手なのだろう。

・一晩かけてだいぶできてきた。 呼び出しが少しだけ複雑だが、 柔軟で小さいクラス群になりそうだ。 拡張性も確保できた。 表示データの構造体と、 それを入力として受け取る拡大や回転などの演出プラグインクラス群、 という構成。 CっぽいようなC++っぽいような不思議な実装になった。 データ定義と相性もまずまず。 登録するときにnewを使っているのでリアルタイムで重たいのが欠点。 これは固定にするなどして解消できるから、 また空いた時間にやろう。

・C++のコピーコンストラクタの概念を初めて知った。 仕事を含め、 今までそれで問題がなかったのは、 クラスのコピーや代入を全くしないプログラムを書いていたからだ。 なぜ、 今回知ったかと言うと、 抽象クラスのコンテナ配列をメンバに持つクラスをコピーする設計にしたため(文字数の割にプログラマ以外には理解不能な一文)。 抽象クラスのリストで持つ以上、 基底クラスのポインタで保持する必要があって、 作ってみたらデバッグで落ちて発覚した次第。 あ、 ここでコピーコンストラクタなんだなと分った。 必要に迫られて学ぶのは、 時間的に切迫するものの、 理解が早いし忘れないので、 効率は良いです。 代入演算子も一緒に定義した。 コピーコンストラタの中身だけど、 C++で型情報を変数に格納し、 その変数を使ってnewさせる方法を知らないので、 クラス自身を動的に確保するClone仮想メソッドを作って実装した上手くいった。 正攻法かどうかは不明。

謝辞
Picnic CSS
T.T
©
Shirado Masafumi