月別アーカイブ: 2010年04月

4 posts

VB6プロジェクトのアップグレード 5

ひたち海浜公園の水仙、見ごろでした

VB6のアップグレードの目処はついたのですが、細かいところに手間取っています。

一つは、古いプログラムでもFarPoint社のSpreadを使っているのですが、行と列の番号が1からスタートしていますし、
新しいものでは0からスタートしています。
従って、細かく調べないと新旧プログラムの計算結果が大きく異なります。

それは少し丁寧にプログラムを比較していけばいいことですが、
計算結果の微妙な相違を突き止めるのはもっとやっかいです。
このプログラムでは、お金の計算をしています。
1円1銭ほど細かい必要はありません。
概算でいいのですが、それでも二つのプログラムが少しでも違えば突き止めなければいけません。

どれだけ大きなお金の計算になるか分からなかったことと、
多分当時のデータ型の制限でお金の計算にダブル(Double)を使っています。
.NET環境では色々な種類のデータ型が用意されていますので、最終的には新しい環境で最適なデータ型を選択したいと思いますが、とりあえず二つの開発環境での計算結果の相違についての究明が急務です。

孫のこと

コーちゃん。バイバイ。
コーちゃん。バイバイ。

1歳半の孫がいます。初孫です。
「バイバイ」とか「あっち」とか、
やっといくつかの単語を発声する程度ですが、
こちらのいうことはおおよそ理解しているようです。

私のお気に入りです。
「孫はかわいい」とよく言いますが、私も例外ではありません。
孫の名前は「コー」ちゃんです。
とても活発な子です。

自分の子供を育てたときは、
日常に精一杯でまったく気づきませんでしたが、
ときどき見る孫では日に日に進歩する子供の成長にとても感動しています。

生後8ヶ月過ぎたとき、嫁が2日続けてコーちゃんを我が家につれてきました。
今日突然手をたたきます。
嬉しそうに笑顔で何度も何度も手を叩きます。
昨日そんなことはしていなかったのに。
昨夜、息子が教えたのだそうです。
ついこの間やっと首が座って、椅子に座れるようになったところなのに、
「わずか一日で新たなことを身に着ける」知能の素晴らしさをみた思いです。

生後8ヶ月くらいでハイハイを始めます。
まだ腕の力が弱く腕を交互に繰り出すことができないため、
前に進むことが出来ません。
四つんばいになって、前ではなくむしろ後ろに進みます。
しかしその時期を過ぎると「ハイハイ」が出来るようになります。
どんどん突進します。
前にあるものは山超え谷超えです。
何が何でも前に進みます。

ハイハイし、ソファーによじ登りました。
私は「コーちゃんは随分成長したな」と感心してみていました。

ソファーから降りるときです。
頭から降りるのではなく、向きを変えて足から降ります。
当然といえば当然ですが、私はとても驚きました。

私はプログラマですから、プログラムのことを考えます。
ロボットで前進プログラムを書いたとして、
「降りるとき向きを変えて足から降りるプログラムはどのように書けばいいのだろう」
結構難しいプログラムです。

孫は簡単にクリアしています。

10ヶ月過ぎた時です。
彼は紐が好きで壁から下がった紐をぎこちなく左右に引っ張ります。
紐の先にビニールの袋がブラ下がっていて、
紐を引っ張るとその袋がチャラチャラと音を立てます。
それが面白いらしいのですが、
しばらく遊んでいてその紐を私に渡すのです。

私は「とんでもないことだ」と驚嘆しました。

「自分」だけでなく、「相手」という認識をしています。
猿はこのように自分の遊びをまわりの猿に手渡すことがあるのでしょうか。
人間の脳はわずか生後10ヶ月で「他者」への意識があります。
もう猿がいくら頑張っても届かない知能を身に付けているのではないでしょうか。

一月くらい前彼の家に用事で行き、
ついでに彼を連れて2時間程散歩しました。
私は彼を気にいっていますし、彼も私のことを気にいっていると思います。
散歩から帰って私は「バイバイ」して我が家に帰ろうとすると、
彼はべそをかいて泣き出しました。

おっぱいがほしいとか、手をはさんで痛いとか、
生理的な欲求や不快感から泣き出すことは理解できます。

しかし、「爺さんと分かれるのが悲しい」は生理現象ではありません。
大きな心理的発達があるのでしょう。

数日前にコーちゃんと母親が我が家に来ました。
私は、彼のためにボーロという小さな丸いお菓子を用意していました。
彼はそれが好きでパクパクしています。
やがて、母親が「あーん」と「頂戴」のしぐさをします。
コーちゃんは小さな手に一つボーロを掴んで、母親の口に近づけます。
母親が食べようとすると、素早く手を引っ込めてボーロを母親でなく、
自分の口に入れ「キャッキャ」といって喜びます。
このいたずらの脳の仕組みはいったいどうなっているのでしょうか。

日曜日家内と二人でコーちゃんのうちに行きました。
動物の絵本を見ていると、
犬の写真があって、それをみて彼はちいさなベロを長く出し何かを言います。
「何だろう」と思っていましたが、犬のまねをしているのです。

「なるほどそういうことか」
私が早速ベロをだして「ワンワン」。
コーちゃんはキャーキャーいって興奮します。

べろを出して
べろを出して

私たちソフトウェアのプログラマは、
ほんのちょっとしたロジックにどれだけの時間をかけているのでしょう。

子供は躊躇なく物事に突進し、
大きく目を見開いて真正面から相手をみて、猛烈な勢いで情報収集します。
そして脳をフル回転して常にプログラムを修正発展させていきます。

人間の脳は信じられないほどすばらしい仕組みです。

VB6プロジェクトのアップグレード 4

[VB6プロジェクトのアップグレード]は目処がついた。と思っていたのですが…

[Microsoft.Office.Interop]を使って、アプリケーションのデータをWordに書き出すこともExcelに書き出すこともできました。
これで終わりと思ったのですが、グラフを書く作業が残っていました。

VB6ではOLEオートメーションを使って、ここにExcelグラフを表示していたのですが、
VS2008ではOLEオートメーションはもはやサポートされていないようです。
[Microsoft.Office.Interop]を使う可能性を色々調べたのですが、結局どうすればいいか分かりませんでした。

VBアプリからVSTOをコールする方法があればこれがベストなのでしょうが、解答を見つけられませんでした。

となると残された方法は、クリスタルレポートかMicrosoftレポートのグラフを使う方法です。

色々試みてMicrosoftレポートでグラフを書くことができました。
しかし不満があります。できればクラス等のプログラムのデータを直接使いたいのですが、うまくいったのは一度DBに書き出してこれを使う方法です。
Microsoftレポートは、プログラミングの余地があまりありません。それにどうしたことかウィザードでデータセットにデータを読み込むことができませんでした。
ここを自前のコードに書き換えてなんとかグラフを表示することができました。

最低限の要求を確保しましたので、もう少しクリスタルレポートとMicrosoftレポートを研究したいと思います。

また、この場合やはりVSTOは使えないのか。
どうしても分からないときは、私はMSDNのフォーラムに質問を出します。
問題を整理してこのフォーラムに質問したいと思います。

VB6プロジェクトのアップグレード 3

プログラムのデータをWordおよびExcelドキュメントとして、書き出すプログラムを書き換えました。

VSTOに興味があってVSTOを使いたいと思っていたのですが、プログラムからこれらのドキュメントを作成する方法がわからなく、また単純にこれらのドキュメントを作成するときにVSTOがいいのかどうかも分からなく、結局従来の[Microsoft.Office.Interop]を使ってプログラムを書き換えました。

VSTOは基本的にスタントアロンでWordやExcelを起動して、そこから様々な操作をするため仕組みだと理解しています。
最近はOffice開発での参考資料は殆どVSTOのもので、VSアプリケーションからOfficeドキュメントを作成する参考書はあまりありません。
2、3参考書を新たに購入しましたが、余り役にたちませんでした。


結局Wordの書き出しは、昔のVisual Studio に付属していた[Microsoft Office 2000/Visual Basic プログラマーズガイド]が一番役に立ちました。

Excelの書き出しは、FarPointのSpreadを使えば命令一発でいいのですが、書式も書き出すとなると色々調べなくてはいけないので、
昔のプログラムを少し修正するのが一番簡単との判断でExcelファイルを一から作成することにしました。

VB6プロジェクトのアップグレードは、気になっていたところは大体解決したので、
あと1ヶ月程度で満足いく程度の完成度にできると思います。