PR

 ここ数カ月の間,筆者はVisual Studio 2005 Team Edition for Database Professionals(以下,Team Data)の機能について調べてきた。ここでは少し大きな視点から,データベース開発には直接関係のない仕事をしている開発チームのメンバーにとって,Team Dataがどんな役に立つのかを解説してみたい。筆者がこれまで述べてきたように,データベースの開発と管理は往々にして,アプリケーションの開発とはみなされない。だが,アプリケーションの多くは何らかの形のデータベースを持っており,アプリケーション・チームのメンバーの多くはそれを使って作業しているのだ。

 自分がデータベースにアクセスするクライアント・アプリケーション,あるいは中間層アプリケーションを担当する開発者であると想像してみてほしい。その場合,皆さんはデータベース・サーバー上でアプリケーションのコードを記述したり,データベース構造を定義する直接的な責任はない。だがデータベースにアクセスする最善の方法を選択するために,データベース・スキーマを理解しておく必要はある。アクセスを容易にするストアド・プロシジャやビューはあるか,どのテーブル構造やリレーションシップにアクセスする必要があるのか,そしてクエリーを作成するのとストアド・プロシジャやビューに要求を出すのとどちらが能率的なのか,ということを知っておかなければならない。

 データベースにアクセスするコードを記述する際には,知っておくべきことはさらに多くなる。開発マシンは,データベースの最新バージョンを搭載しているのか? 自分の記述したコードが問題なく実行されることを保証するテスト・データのサンプルはあるのか? などである。

 Team Dataは,アプリケーション開発者のこうした質問に答えてくれる。Team Foundation Server (TFS)のようなバージョン管理システムにデータベース・スキーマを保存することで,簡単にデータベースの最新バージョンにアクセスして,自分の開発マシン上に代表的なデータベースを作成できるのだ。データベースの正確な構造を確認することも可能だ。そして,あらかじめ定義されたデータ生成プランを使ってそのデータベースをポピュレートすることによって,データにアクセスするコードを開発している際に,そのコードがアプリケーション・データベースに対して正常に機能していることを確認できる。コードの開発や変更を行う際には,新しい単体テストを作成したり,既存の単体テストを使うことによって,他のアプリケーションやデータベースを壊していないことも確認できる。

 TFSを使っている人は,アプリケーション開発チームにおいて,より中心的な存在になれる。アプリケーションを実装するのに必要な,基本的なバージョンのデータベース・オブジェクトを作成して,そのあとデータベース専門家が検証し,必要であれば変更できるように,そのコードをシェルブ(shelve)できる(シェルブに関して説明しているmsdnのページ)。この機能を利用すると,T-SQLについて最小限の知識しか持っていないアプリケーション開発者でも,必要なデータベース・オブジェクトを効果的に設計できる。そのあとで専門家が,設計されたデータベース・オブジェクトを使って,データベースの要求を満たせるように実装を調整することが可能だ。このプロセスのほうが,別のチームが開発することになる新しいオブジェクトの仕様を正式に提出するよりも,能率的かもしれない。

 データベースの構造が変化するにつれて,データベースにアクセスするアプリケーションのコードが壊れていないかどうかを確認するのが難しくなることがある。基本的な形のテスト駆動開発は,アプリケーション開発チームに巨大な生産性の向上をもたらし,この問題をいくらか和らげることができる。データベースに変更が加えられて,その変更によって,アプリケーションのテスト実行中にある領域のコードが壊れた場合,テスト実行者はワーク・アイテムを割り当てて,データベース変更の影響を受けたすべてのコードを修復するだけで済む。読者の皆さんは開発者としてそのワーク・アイテムを受け取って,そのデータベースの最新のバージョンを引き出す。そして単体テストとデータ生成プランを参照して問題を発見し,データベースの正しいバージョンにしたがって修正する。

 このプロセスは,アプリケーションの変更に関連するあらゆる影響の特定と解決を可能にするので,データベースの変更がアプリケーションに及ぼす影響を大幅に軽減できる。このシナリオはさらに,テスト実行者がデータベースの最新バージョンやデータベース単体テスト,そしてデータ生成プランにアクセスできることの重要性を示している。これらすべての部品をアプリケーションの全体テストのアーキテクチャに統合できるこの機能によって,破壊的な変更を見逃す可能性が減り,アプリケーション内のありとあらゆるデータベース関連問題を容易に特定したり,解決できるようになるのだ。

 データベースは往々にしてアプリケーション障害の要因の一つとなるため,開発チームの全メンバーが確実に,可能な限り能率的な方法でデータベースに取り組めるようにすることが重要だ。Team DataやTFSといったツールは,プロセスの実装を容易にし,プロセスの一貫性を維持するうえで役に立つ。データベースが全体的なアプリケーション開発プロセスに与える影響を決して見くびってはいけない。自分のアプリケーション内にデータベースがあるなら,心配しなくても遅かれ早かれそのデータベースを使う日が来るからだ。