誌上セミナー ●情報化講座 (10) |
監修 :
田中 成典 教授
関西大学
総合情報学部 |
![](image/65-P08-01.gif) |
|
|
●デザインパターンとは
ソフトウェア設計において、ある問題を解決するための手順や方法を整理して、再利用しやすいようにしたパターンのテンプレートのことです。
パターンは、オブジェクト指向に基づいて記述され、基本要素として、パターン名・問題・解法・結果からなり、オブジェクトを組み合わせて作成されています。デザインパターンを利用することで、再利用性が高く、柔軟な設計を行うことができます。デザインパターンの起源は、建築家Christopher
Alexander が建築技法として形にしたアイデアですが、建築の分野では反応がなく、ソフトウェアの分野に大きな影響を与えています。
●オブジェクト指向とは
ソフトウェア開発・設計などで、処理の機能よりも処理の対象物に重点を置く考え方のことで、プログラムの機能をオブジェクトという単位でまとめて記述していく方法のことです。
既存のオブジェクトであれば、それを機能させるよう定義するだけで利用でき、内部構造などを知る必要が無いことから再利用が容易であり、これが最大の利点と言われます。オブジェクト指向の記述をサポートしたプログラム言語はJava,C++,VB.NRT,
Rubyなどが挙げられます。
●デザインパターンの種類
デザインパターンにはいくつか種類がありますが、その中でも特に有名なものとして、GoF(と呼ばれる4人)著作「オブジェクト指向における再利用のためのデザインパターン」があり、目的に応じた基本的な23のパターンが紹介されています。
また、IFC 2xはISO国際規格/STEPに準拠した規格(ISOのPASを取得)となっています。
生成に関するパターン
Abstract Factory , Builder , Factory Method , Prototype , Singleton
構造に関するパターン
Adapter , Bridge , Composite , Decorator , Facade , Flyweight , Proxy
振る舞いに関するパターン
Chain of Responsibility , Command , Interpreter , Iterator , Mediator
, Memento , Observer , State , Strategy , Template Method ,
Visitor |
●オブジェクトのインターフェイス規定
デザインパターンにおいては、オブジェクトの操作は、インターフェイスを介して行います。特定の具象クラスを使用すると柔軟さが失われますので、具体的な処理内容は、インターフェイスを実装したオブジェクトで定義するようにします。インターフェイスは、名前・型・戻り値から宣言されます。
●デザインパターンのCALS関連システムでの利用
電子納品・電子入札・情報共有システムにおいては、共通の部分や複数の機能が存在します。
たとえば、ユーザからの複雑な要求があったり、自治体ごとにサービスや情報公開方法が異なったりするといったような場合です。そこで、その機能をクラスとして表現した場合、共通の処理を用いた拡張や再利用は困難となってきます。このような際、機能の切り替えや拡張を容易にするために、システム設計に「コンポジション」や「継承」を用いることで、様々なサービス提供につながっていきます。
継承:
スーパークラスの機能を受け継ぎ、それを再利用することです。必要部分の多くを既存のクラスから継承することで、大幅に手間を省くことが出来る反面、スーパークラスへの依存度が高まる為、スーパークラスの変更があった場合や、継承部の変更を行なう場合の柔軟性を考え、次のコンポジションの方法が推奨されます。
コンポジション:
継承の代替案であり、オブジェクトをまとめたり、合成したりすることで、新しい機能を得る方法です。
※これらは、再利用を目的として作成されるデザインパターンでは、重要な技法です。 |
CALS関連システムにおいて利用が有効だと思われるパターンは下記の通りです。
1) |
Strategy:
モジュールの独立度を重視してシステムの切り替えを行うパターンです。内容は、それを実装したクラスで定義して、処理はインターフェイスで記述します。電子納品のCAD図面がバージョンや適用基準・要領によって書き方が異なる場合、データのチェックや処理の仕方、そして再利用する方法が重要となります。Strategyパターンを使用すると、処理方法の切り替えが多い電子納品・電子入札システムの切り替えが容易に有効となります。
|
2) |
Chain of Responsibility:
ある処理を持ったオブジェクトをつなぎ合わせて、複雑な処理要求に対処するパターンです。たとえば、電子納品のファイル命令規則であったり、禁則文字チェックというファイル形式のチェックを行う際は、チェック処理のつながりであるチェックシステムを使用します。Chain
of Responsibilityパターンを使用すると、処理が分担している電子納品・電子入札システムでの機能に有効となります。 |
3) |
Decorator:
内容とそれを修飾する飾りを同一オブジェクトとして表現するパターンです。電子納品システムにおいては、表示部分のレイアウトを変更したり、再利用をしたりすることが必要となります。Decoratorパターンを使用すると、表示方法をユーザによって変化させたり、または、同一レイアウトを用いて統一したりすることが可能となり、メールの署名や書き出しフォーマットといった確認などのメールの統一と再利用も可能となります。 |
4) |
Adapter:
あるオブジェクトのインターフェイスを異なるインターフェイスへ変換するパターンです。たとえば、既存の電子納品や電子入札システムなどに新しい機能を追加するといったように、システムのインターフェイスと利用するインターフェイスが異なることがよくあります。Adapterパターンを使用すると、運用中のシステムに影響が少なく、機能を追加できるため、テスト済みの既存システム信頼性を保つことができます。 |
●当社での利用事例
FORUM8では、任意形立体骨組み構造を対象とした、3次元解析プログラム「UC-win/FRAME(3D)」において、多くの場面でデザインパターンを採用しています。
一例を挙げますと、UC-win/FRAME(3D)にはコピーという機能があり、そこで、Prototypeパターンを使用しています。Prototypeは、原型となるインスタンスを管理して、新たなインスタンスはコピーして作成するパターンです。
具体的には、荷重ケースのコピー、断面のコピー、アウトラインのコピー、M−φ特性のコピー、ヒステリシスのコピー、横拘束材料のコピー、材料のコピー、ばね特性のコピー、地震波のコピーなどで使用しています。
|
参考 : ケンセツ21 CALS/JAPAN 情報化講座 デザインパターン入門
|
|
(Up&Coming '08 盛夏の号掲載) |
![FORUM8](../image/f8title-s.gif) |
|
![お問合せ窓口](/side001-2.gif)
![](/image/TOPimages/uc146.gif)
![](/image/TOPimages/20120116-06-2.gif)
![](/image/TOPimages/20120116-07-2.gif)
![](/image/TOPimages/imvr201403261830.gif)
![](/image/TOPimages/20120116-12-2.gif)
![](/image/TOPimages/20140326-kokudo.gif)
>> 製品総合カタログ
![](/image/TOPimages/20120116-08-2.gif)
>> プレミアム会員サービス
>> ファイナンシャルサポート
|