スキルシート一応完成

我ながら反吐の出るようなプログラムになってしまったが、一応終わった。
最近プログラミングをしていると、どこまで妥協出来るか、がある種の勝負になってきている。
一度途中まで作って全部壊して、また途中まで作って全部壊して。
そんな作り方が出来るなら、私のようなオショボショボなオツムでもそこそこ納得のいくものも出来るのかもしれないが、片手間にちょこちょこやるだけではどうしても限界というものがありましてね。
妥協をしつつ、後から振り返ると「うおっ、結構頑張ってるなコレ」と思えるプログラム作りが出来れば、まあ今んとこはいいかという感じ。

どんなもの

こんなの。ファイルは軽いが動作が重いので注意。Cam Studioも軽くしようと部品化しすぎなんではなかろうか。
http://tsuge.cuvel.com/blog/metis/demo070405/metis.swf.html


これはメイン画面。右側のグラフがDirectXを使っていて配布が面倒になっているもの。
動作イメージ
グラフ部分が派手なので、ベトナム人エンジニアがグラフの部分を作って、他を私が作った、というと、私はなんにしてないように見えるな・・。
その方が営業面ではよさそうだし、別にいいけど・・。

課題

入力が面倒くさい。Undo、Redoがメニューにあるのに動かない。変更差分が算出出来ない(のでファイルが変更されています、保存しますか?のダイアログが出ない!)。Softlinkの機能がちゃんと動いてない。
ドラッグ&ドロップで移動することとか出来ないので、構造の変更が面倒くさい。XMLいじればいいだけだからなんとかなるのだが、要は今のところは他のエディタも併用しないとちときつい。WitchTreeとは違い、要素の移動機能は実装したが、これも中途半端。
グラフの部分にDirectX不使用版(GDI+版)が使えるようにしたい。
グラフの色を変えられるようにしたい。
ファイルをドラッグ&ドロップで読み込みたい、XSDをもう少しちゃんと作りたい、XMLのファイル構造も一考の余地あり。
ツールバーとステータスバーも入れて、表示非表示を切り替えられるようにした方がいい。
今は日本語と英語が混在なので、ちゃんと国際化したい。


などなど・・。
とまあ色々やりたい事はあるんだが、仕上げはそのうち。このBlog書いてる時間でいくつか実装出来たかもしれんが・・。
本当は表形式での表示とかもサポートする予定だったんだが、今回なぜ急いだかというと、日本で説明する時にどうしてもこの画面が必要で、エンジニアのスキルシートも2,3用意しておきたかったという営業的な理由があったため。
オフショアをやりつつ、VPNをやりつつ、会社運営をやりつつ、なんとかここまではでっち上げた。
無いよりはマシだろ。と自分を慰めてみる。

分析してみた

総実行ステップは5800くらいだが、自動生成クラスを除けば3800か。publicなClassとInterfaceの総数は40個くらい*1
SoftEtherの作者さんなら一日で作れる程度のステップ数だ。マジかよと思う時もあるが、そういう人も世の中にはいるだろ。
私は一日1000ステップくらいが限界なので、自動生成クラス用部品とか作る事も考えたら10日くらいかかるだろうな。まだまだ生産性が低いのは認識しているんだが、なかなかね。


これに簡単なマニュアルとおショボショボなインストーラ、デフォルトで付属するスキルシートのテンプレートが三つで大体全部。
設計関係のメモは全部ゴミなんでカウントせずだが、指折り数えて見ると結構頑張ったといえるかな。

将来

スキルシートシステムは将来的には三つのシステムを作成する予定で、一つはこのスキルシートクライアント、一つはスキルシートサーバ、一つはスキルシートビューワとなる予定。
RDBXMLが混在していて、サーバと呼ばれるものはRDBXMLを、XSDの通りに変換するProxy的な役割をするもの。
ビューワはお客さん用で、RDBのデータを見るためのもの。
クライアントはメインのシステムで、グラフィカルな表示が出来るもの。


と、青写真だけは例によってちゃんと描いているし、そこまでやればOJTと呼ばれているだけの無計画教育がまかり通る、日本のIT産業の教育体制に問題を感じている人には需要もありそうな気もするんだが。
そういう人は絶対数が少なすぎるから、薄利多売で開発費を回収出来る程売れるかというと難しいし、じゃあ一本1000ドルに設定して売れるかというとこれまた微妙なところだ。
本腰入れて開発する気にはどうしてもなれないから、今年のテーマが「開発をしない」になっている私が、暇を見つけて少しずつ作る形になるだろうな。


いっそオープンソースにしちゃってもいいんだが、これオープンソースにしても企業的にはなんのメリットもねーしなぁ・・。

*1:EventArgsとExceptionがあるからちと多い