PR

 実行環境の違いをアプリケーションでどのように吸収するか,というテーマでした。可能であれば,方法4が最もスマートな方法といえるでしょう。一般にデータアクセス部分は「DAO」(Database Access Object)というデザイン・パターンを用いてデータ格納先の違いを吸収します(別掲記事「データアクセス・パターン」では,Martin Fowler氏のパターンを解説)。DAOインタフェースの設定が実装にどのような影響を与えるかを表1にまとめました。DAOインタフェースはデータアクセス層で設定されるものと,ビジネス層で設定されるものとがあります。前者は実装が容易で独立性も高い半面,特定の実装に依存した最適化を図りづらくなります。一方の後者は,データアクセスの抽象度を上げて,実装詳細を隠蔽できます。これにより思い切った最適化を行うことも可能です。

表1●DAOインタフェースの設定方法と実装への影響
[画像のクリックで拡大表示]
表1●DAOインタフェースの設定方法と実装への影響

 DAOでデータ格納先の違いを吸収するのが基本となりますが,無理して吸収しようとすると問題がでてくることがあります。今回紹介した方法1では,RDBMSの高度な機能が使えない,といった問題が表面化しました。方法1で実装していると,おそらく「処理性能が低い」というトラブルを引き起こしたことでしょう。ケースによってはアプリケーションで無理して吸収せず,実行環境ごとのアプリケーションを作成することも考えましょう。

宇野 るいも(本名:花井 志生/はない しせい)
日本IBM グローバル・ビジネス・サービス ソフトウェア・エンジニアリング ITスペシャリスト
1991年日本IBM入社。アセンブラ/C/C++を中心とした,組み込みシステムの開発を担当。現在はJava EEを利用したシステム開発における,システム設計および実装作業,トラブル時の火消しとして,インスペクションやチューニング作業を中心に担当。「Strutsプログラミング講座」(アスキー)など,主にJava EEに関連した書籍の執筆多数