プログラム

125件の投稿

LINQ in Action 2

ここ数年はパッケージソフトの開発を中心に仕事をしてきて、直接関係ないことはあまり勉強していませんでした。
今回LINQを勉強し、実はOOPとデータとの関係は、ORMとしていくつかの提案があることを始めて知りました(Javaの世界が先行しているようですね)。LINQも確か2005年にマイクロソフトから開発仕様のアナウンスがあったようですね。

それはともかく、[LINQ in Action]は入門書としては大変よくできていると思います。まだ読み進めて100ページにも満たないのですが、読者がLINQをはじめて勉強していることを意識して、順を追って、「後でもっと詳しく説明するからね」という調子で、説明します。コードも必要なものを丁寧に載せています。

初めて知りましたが、VS2008(C#3.0およびVB.NET9.0)のメインの強化点はLINQだったようですね。
LINQのためのC#およびVBの主な強化点は、
 暗黙に型づけされたローカル変数
 オブジェクトの初期化
 ラムダ式
 拡張メソッド
 アノニマス型
です。これを武器にOOPとSQL、OOPとXMLの融合を試みます。

私は現在2章のC#とVBの言語拡張の部分を読んでいますが、だんだん難しくなってきました。一読では全部を理解することはできないのでしょう。

この本は約500ページですが、私は今はXMLには関心がないので、300ページ辺りのSQLの部分まで読もうと思っています。今月中にここまで読んで、開発に応用したいと思います。
予定では。

LINQ in Action

16日思ったより早く、アマゾンから[LINQ in Action]が届きました。早速読み始めました。平易な英文で、辞書なしで拾い読みです。日本語訳の「プログラミング LINQ」よりよほどよさそうです。

なるほど。
まずオブジェクト指向言語(以下OOPといいます)が良いものだという前提で話をすれば(私もOOPはいいものだと思っています)、OOPでリレーショナルデータベースを扱おうとしたり、XMLを扱おうとすると、それぞれのデータソースに対して、それぞれ異なるプログラムを書かなければいけないし、そもそもOOPとリレーショナルデータベースあるいはOOPとXMLは異質なものでしょう。ここにインピーダンスミスマッチがあるのです。

すなわち、
“Data != Object” だし、”XML data != Object”だし、さらにいえば”XML data != Relationa Data”でしょう。
なるほど。

最初の十数ページを読んだところです。
よさそうです。

開発環境をどうするか

Housingの開発にあたって、先ず開発環境をどうするかが問題になります。「パーキング~」はVS2005(VB.NET)+Accessで開発しました。

いろいろ考えた末に言語はVS2008(VB.NET)、データベースはSQL Serverを使うことにしました。本当はC#を使いたかったのですが、「パーキング~」の資産が沢山あって、それを使わない手はないし、C#への書き換えに時間をとられたくないし、開発期間を長くしたくないしという判断が大きく働いて、しぶしぶVBを使うことにしました。

ただし、VBからC#への書き換えはSharpDevelopが使えます。SharpDevelopは簡単に相互変換をやってくれます。ですから本当は、書き換えに時間がかかるというより、C#に慣れるのに時間がかかりそうだというのが本当のところです。

予断ですが、SharpDevelopはなかなかいいと思います。インストール仕様のWIXもVSより進んでいます。なんといっても無料だし、時間があればSharpDevelopでの開発をしたところですが、予想外の出来事があるかもしれないと、VS2008に収まりました。

一方データベースは、扱い安さからいえばAccessですが、データも本格的に構築しなければなりませんので、Sql Server Expressを使うことにしました。ただし開発環境では、メンテのしやすさからSQL Server Developerを使います。

出来るだけ一直線で開発したいのですが、今LINQが気になっていて、すこし勉強しています。マイクロソフトの「プログラミング LINQ」の日本語版を買って読み始めましたが、驚くほど翻訳が悪い。何を言っているか分からない。この原書を取り寄せようかとも思ったのですが、アメリカ・アマゾンではそもそもこの本の評判がイマイチなので、「Linq in Action」を読むことにして、注文しました。

LINQが使えるのかどうか少しだけ勉強して、開発にできるだけ傾注したいと思います。

Housing開発/再開発

アパートの賃貸管理ソフトの開発を、実は約6年前に着手しました。いろいろあって、結局駐車場の賃貸管理ソフトの開発に方向転換して、「パーキング~」として発売ができるところまできました。

そこで、初めに返ってアパートの賃貸管理ソフトの開発に再度挑戦することにしました。

このブログではその奮戦記を書きたいと思っています。開発はおよそ2年見ています。

どのようなことになりますか。

ソフトウェアの開発 Etc

一般の人は知らないことですが、一つのパッケージソフトを完成させるのには、考えもしなかったことに時間をとられます。

何かの役に立つプログラムを開発するのですから、そのことに時間を取られるのは当然ですが、予想外に時間をとられるのが、マニュアルやヘルプの作成であり、製本やCDのラベルのデザインやパッケージとしての体裁作りです。

その中に、インストールプログラムの作成があります。

ソフトウェアの開発では、開発者が書いたプログラムだけでそのソフトが動作する訳ではありません。Windows等コンピュータそのものを動かしている基本ソフトもそうですし、プログラムの開発に係るソフトもそうですし、場合によってはサードパーティから買い込んだソフトがあって、初めて動作します。

開発環境で動作確認した後、パッケージにしてお客様のコンピュータにインストールするわけですが、このとき早い話が開発環境と同じ環境(内容)をお客さまのコンピュータに構築することになります。

これがことの始まりです。

ソフトは常に進歩しています。同じ名前でのソフトもバージョンがどんどん変わっていきます。ソフトの開発者はそれを余り注意もしないで様々なソフトのご厄介になりながら開発していくことになります。

あるソフトAがCというソフトのバージョン2(今C2と書きます)を使って開発し、AとC2をあるコンピュータにインストールしたとします。続いてソフトBがC1を使って開発し、同じくそのコンピュータにインストールします。

このときCはCなので、C2はC1に上書きされC2はなくなってしまいます。するとAがあてにしていたC2はなくなっているのでAがうまく動かなくなる可能性があります。

さらに悪いことには、何かの都合でBのソフトを削除したとします。このときなにかの不具合で、Bが使っていたC1も削除してしまうと、曲がりなりにもそれをあてにしていたAは動かなくなってしまうという訳です。

多少極端に話しましたが、かってはこのようなことをしていました。

数年前にマイクロソフトは、方針を変えました。コンピュータの中にインストーラというソフトが常駐し、誰かがソフトをインストールしようとすると、このインストーラが交通整理をします。

インストールしようとするソフトの拡張子がmsiでは、このような仕組みでソフトをインストールしています。ところでこのインストールパッケージ(msi)ファイルを作るのが結構厄介です。

msiを作ることをサポートするソフトがありますが結構高価なのです。マイクロソフトもこのツールを出していますが強力ではないので、本気で自分でインストールパッケージをつくるとなると、本気モードでかからなければいけません。