特集:第3回 Visual Studio .NETプログラミングの勘どころ(5/6 ページ)

» 2004年08月11日 08時45分 公開
[石井宏治,ITmedia]

JET(MDB)

 レンタルサーバの制限などでMSDEを導入できない、という場合にはAccessのデータベースエンジンであるJETを検討するのもよい。JETを勧めると、軽く笑われて「何を言っているんだ」といわれることが多いが、その技術的背景と制限をしっかりと理解しておけば、JETも軽視したものではない。

 JETを使ったクライアント サーバ型のアプリケーションで速度が振るわないのは、主にJETがファイル共有型のデータベースであるからだ。データベースファイルをネットワークで共有するモデルのデータベースでは、高い性能は望めない。しかしASP.NETで使う限りにおいては、JETのデータベースファイルであるMDBファイルはASP.NETから見て常にローカルに置くことが可能だ。

 もちろん、オンラインバックアップなどの機能を備えていないため、MSDEやSQL Serverが使える環境であればその方がよりよいことに間違いがない。基幹処理などの、とても重要なプロジェクトには使いたくない。またJETは同じマイクロソフト製品とはいえ、SQL Serverと互換性がないため、MSDE/SQL Serverにアップグレードするにはコードを変更する必要がある。今後、Accessはバージョンアップしても、そのエンジンであるJETにはもう大きく手を入れる予定がないことも知っておいたほうがよいかもしれない。

 それだけの制限を理解したうえで使うのであれば、特にASP.NETの開発においては、JETで驚くべき性能を実現してくれるだろう。ぜひパフォーマンスを追求してみるべきだ。

 Microsoft Exchangeサーバのメール用データベースがJETをベースにしていることはよく知られた話だ。また、このExchangeサーバ用にチューンされたJETエンジンは、SharePoint Portal Server 2001でも利用されていた(SharePoint Portal Server 2003においてはSQL Serverに変更された)。

 重く複雑なSQL文を使っておらず、ISAM的な使い方が中心で、かつローカル ファイルのアクセスだけの場合には、JETはほとんどの場合に十分な性能を実現するだろう。

XMLでもっと軽いデータベースを実現

 Webサイト上であれば、もっと処理の軽いデータベースが必要な場合も多いだろう。データベースとしてのリレーショナルなどの機能はほとんど必要ない。件数も数十、数百件といった場合だ。データベースが使えればコードをよりシンプルにできるのに、というだけの時だ。小規模な製品情報、サイトのナビゲーション構造、プログラムのための設定データなど、そのような用途は意外に多い。

 そういった場合にはXMLを使おう。XMLでデータを保持し、ADO.NETのDataSetとして読み込む。DataSetにいちど読み込んでしまえば、すべてのアクセスはメモリ上で行われ、SQLほどではないにしても簡単なインデックスやフィルター、ソートなどを行うことができる。読み込みだけのデータならば、コード内容は非常に簡単だ。クラスの静的コンストラクタ、あるいはglobal.asaxの中でアプリケーション起動時にいちどだけ呼び出されるApplication_Startで読み込んでしまえばよい。

 ASP.NETのCacheとCacheDependencyクラスを合わせて使えば、ファイルが更新されたら読み直す、といった処理も容易だ。普段はキャッシュから読み込んでいるので高速だが、XMLをアップロードすれば即サイト内容へと反映されるのは意外と便利だ。ただし、あくまでもかなり軽量のデータベース代替手段であり、例えばASP.NETプログラムからの書き込みがある場合には注意が必要になる。排他制御などはもちろんのことだが、XMLファイルがあるディレクトリに書き込み許可があるかどうかにも注意しよう。特にセキュリティ上の理由から、既定ではすべてのディレクトリが読み込みのみになっているはずだ。

 同様にディレクトリへの書き込み許可は必要になるが、書き込み、特に追加ではなく更新型の書き込みが多い場合にはあまりXML利用はすすめられない。JETなどの方法を検討した方がよい。

 またこの方法では運用サイトへコピーする際、いっしょにコピーしたいXMLなどがあれば、ソリューション エクスプローラでそのファイルを選び、プロパティを表示させて「ビルド アクション」を「コンテンツ」にしておけば、Visual Studioの「プロジェクトのコピー」コマンドがいっしょにコピーしてくれる。

コード品質のためのツール

 昨今、テストドリブン開発やXPといった開発手法が注目されている。コードの規模が指数的に増えやすい現代のアプリケーション開発において、利用する開発手法にこだわらずコード品質を保つためのツールは積極的に利用するべきだと筆者は考える。残念ながらVisual Studio自身にはその分野のツールは付属していないが、フリーで便利なツールがあるので紹介しておこう。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ