孫のこと

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

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ヶ月程度で満足いく程度の完成度にできると思います。

イントラネットのようなインターネット

インターネットを使って、完全非公開のシステムを「簡単に、安価に」つくりたいのです。
WEBサーバーは確保しています。
ユーザはコンピュータの知識がなく、ユーザにクライアントソフトをインストールしてもらうことはできません。
サイボーズがこの用件を満たしているのでしょうが、サイボーズを買う金はありません。

何度も書きましたが私はこの分野は素人ですので、手探り状態でいろいろ調べています。

まず、サーバーにユーザ名とパスワードが無ければログインできないようにすることは考えられます。
最悪この原始的な方法を採用するかも知れませんが、この方法では管理人がユーザをいちいち管理しなければいけませんので、管理人の負担が大きいと思われます。

次に考えたのは、XOOPS等のCMSを使ってログイン管理をすることです。
これも有力かもしれません。
ただし、完全非公開にしたいので、最初の画面も一般には見えなくしたいのですが、その辺り思惑通りになるのでしょうか。
無料のグループウェア用モジュールがあるので一度試してみたいと思います。

外国製の無料のPHPグループウェアがありますが、意外に設定に手間取ります。
これも一つの候補ですが、ユーザが英語では使ってくれないかもしれません。

ログインだけ、Golgleグループを使いその中から秘密のURLに導く手があるかもしれません。

無料のSaas型のグループウェアがあるようです。
サイボーズも時々無料キャンペーンを実施しているようなので、それを引き当てればいいのですが…
(Saas型グループウェアもクライアントインストールはいけません)

余り時間をかけたくありません。
どれがいいのか数日で決着したいと思います。

XSLT 3

XSLTの話は終わり。と思っていたのですが…

本日Amazonから、注文しておいたO’Reillyの[XSLT Cookbook]第二版が届きました。
700ページを越す大著で、勿論全部目を通してはいませんが、第一章にXPATHの説明があります。
著者の言では、XSLTにおけるXPATHは英語におけるアルファベットのようなもので、
第一版での解説が少なかったと第二版では最初の章で丁寧に説明しています。

どうやら私はXSLT(およびXPATH)1.0でプログラミングに手こずっていたようです。
XPATH1.0と2.0では別物かと思わせるほどの変更があります。
「以下のように[号棟 = ‘2’ And (外壁 = ‘True’ Or 屋上= ‘True’ Or 修理 = ‘True’ Or 塗装 =’ True’)]と式の論理結合ができません」と書きましたが、
2.0では少し異なる部分がありますが、OKのようです。

<xsl:template match=”/画像[号棟 = ‘2’ And (外壁 = ‘True’ Or 屋上= ‘True’ Or 修理 = ‘True’ Or 塗装 =’ True’)]”>
  <xsl:call-templates name=”Display”/>
 </xsl:template>

私は、昔XMLエディタとしてALTOVAの[XML Spy]を購入し、
XMLの専門家ではないので、これで充分ともう10年近くもバージョンアップせずに愛用してきました。
とてもコンパクトで、XMLのデータ構造を視覚的に表現してくれ、編集がとても楽にできます。

[XML Spy]のXPATHプロセッサが古いということが今回分かりましたが、
私はそれを知らないままに、プログラムの苦心をしていたのです。
手元の参考書も皆古いものなので、バージョンアップによる変更を考えてもいませんでした。

もっと調査をしなければいけませんが、前回ご紹介しましたリカーシブコールのプログラムはまったく必要なく、
実に簡単なプログラムで済むようです。

Visual Studioの処理系はXPATH2.0を採用しているようなので、以後VS2008を使おうと思います。
このエディタは[XML Spy]ほどには気がきいていませんが。

余談ですが、私は英語の技術書を読むのは余り苦になりません。
が、時々辞書の力を借りなければいけません。
辞書を引くのはカッタルイので、近年インターネットの辞書を使ってましたが、
これも何とかならないかと思って電子辞書を購入しました。
名詞入れを少し大きくした程度で、沢山の辞書が入っていて、これが一番いいかといつも持ち歩いています。