ObjectSquare [1999 年 10 月号]

[Contribution to Japan PLoP]


RDBアプリケーションのためのデザインパターン

RDB とオブジェクト指向

パターン記述のきっかけ

パターンの紹介

このパターンに期待すること


RDBとオブジェクト指向

リレーショナルデータベースとオブジェクト指向アプローチには、「表を中心とする集合演算」と「オブジェクトの相互作用」という、セマンティクスギャップ(意味的ギャップ)があり、両者のマッピングは水と油などと言われることもあります。確かにオブジェクト指向データベースを適用できれば非常に簡単に永続化をすることができますが、既存システムとの共存やSQLベースの検索ツールへのニーズなどから、RDBを適用するケースはまだまだ多いようです。

データベースの概念スキーマ設計や、論理レベルの実体関連図は、オブジェクト指向アプローチでの分析段階のモデリング(概念モデリングやドメイン分析などと呼ばれる作業)は、非常によく似ています。しかし実装段階になると、RDBは一筋縄ではいきません。特にSQLの文字列を生成するロジックなどは、プログラミング上は、非常に煩わしい冗長な手続きになってしまいます。

一方、オブジェクト指向アプローチは、適切に役割分担されたオブジェクトが相互作用するようにシステムを表現することで、”複雑な問題を単純な解決策に分解しようとする考え方”であるとみることができます。つまり、オブジェクト指向アプリケーションにRDBを適用するのではなく、RDBアプリケーションにオブジェクト指向設計を適用すると考えると、両者のマッピングはあながち不自然であるとも言えません。


パターン記述のきっかけ

このパターンは、パターンを考えようとして作ったものではなく、実際に経験した2つのプロジェクトで構築したアーキテクチャを「パターン」という形式を使ってまとめたものです。基本的な部分は、最初のプロジェクトで考えたものですが、2度目のプロジェクトではそれを再検討し、一部を変更して使いました。実際に2度目のプロジェクトの時には、最初の時に考えた多くのアイデアを再利用できたため、比較的スムーズに仕事を進めることができました。

ここに挙げたパターンは、Gang of Four の23のデザインパターンような、抽象度の高いものではありませんが、少なくとも私の中では「パターン」となっていたものです。喉元を通り過ぎると色々なことを忘れてしまう私としては、そのとき考えたアイデアを将来のために何らかの形でまとめたいと思っていました。ちょうどその頃、Japan PLoP からパターン募集の呼びかけがあったことから、その機会を利用することにしました。


パターンの紹介


このパターンに期待すること

ここの紹介したものはまだまだ完成度が低く、「パターン」などと呼ぶのはおこがましいかもしれません。
RDBとオブジェクト指向のマッピングについては、これ以外にもさまざまな方式が提案されているようで、少なくともここに書かれたものが唯一の正解でないことだけは確かなようです。

このパターンがあなたのプロジェクトでそのまま正解となったり、このパターンを見て「この通りやってみよう」と思っていただければそれはとても嬉しいことです。しかし実際にはシステムによって、色々な要件や前提条件があるはずですから、このやり方ではうまく行かないケースもたくさんあることでしょう。そんな場合でも、このパターンに書いてあることを読んでいただければ、そこを出発点にすることができます。そこには私達が経験し、考えたことが書かれていますので、少なくとも「思考を節約する」ことができると思います。

そして、これよりもっと良いアイデアや改善すべき点があれば、是非教えてください。
Japan PLoP やオブジェクトの広場のメーリングリストを使って、パターンに関する議論ができればと思っています。


© 1999 OGIS-RI Co., Ltd.
Index
Index