高品質で変化に強いシステムは,アーキテクチャの良し悪しに依存する。だがアーキテクチャの設計は,外部システムとの連携や性能・信頼性の確保など考慮すべき点が多く,困難を極める。そこで利用したいのが,先人たちが生み出した方式設計のひな型である「パターン」だ。

 ここ数年で,「パターン」という言葉がよく使われるようになった。読者も耳にしたことがあるだろう。

 そもそも「パターン(Pattern)」とは,ある問題の解決策をテンプレート(ひな型)として記述したものである。問題を解決する手順や方法が記されているため,パターンを利用することで,迅速かつ確実に問題を解決できる。採用したパターン名をお互いに伝え合えば,メンバー間のコミュニケーション・ギャップも少なくなる。ただし,何でもパターンになるわけではない。再利用の価値があるものだけがパターンとなる。

 パターンそのものの起源は古く,1970年代に米カリフォルニア大学のC.アレキサンダー教授が著した「パタン・ランゲージ―環境設計の手引」と「時を越えた建設の道」(ともに鹿島出版会刊)という書籍に始まる。この中で,建築のセオリーをいくつかのパターンにまとめ,その有効性を提唱したのだ。

 このパターンを,ソフトウエアの分析,設計,実装に適用したのが「ソフトウエア・パターン」だ。具体的には,「XP(eXtreme Programming)の父」と呼ばれるケント・ベック氏らが,1987年にソフトウエア開発にもパターンが有効であることを初めて発表。この業績が,1993年に発足した「Hillside Group」と呼ぶパターンに関するコミュニティや,「PLoP」というパターンのイベントに受け継がれた。

 そして日本でも,1999年にソフトウエア・パターンのコミュニティ「JPLoP」が発足。2003年には情報処理学会のソフトウエア工学研究会内に,「パターンワーキンググループ」が発足した。ここで,ソフトウエア・パターンに関する様々な研究・啓蒙活動が行われている。

 こうしたコミュニティやワーキンググループ,実際の開発現場において,ソフトウエア・パターンの有効性は既に実証されている。

 ただ注意すべきなのは,すべてが「パターンありき」ではないことだ。筆者も昔そうだったが,パターンを覚えたての頃はとかくパターンを使いたがる。だがパターンは「問題」に合わせて適材適所で利用すべきものだ。何にでもパターンを使えばよいわけではない。重要なのは,パターンの特徴を正しく理解し,システム開発の各場面によって使い分けることである。

 そこでPart4では,基本設計フェーズで利用できるパターンの種類や特徴について解説していこう。基本設計に携わっているエンジニアはしっかりと理解してほしい。ある程度の知識を持っているエンジニアも,復習のつもりで読んでいただきたい。

基本設計で使える3パターン

 一口にソフトウエア・パターンと言っても,開発フェーズごとに利用できるパターンは異なる(図1)。基本設計フェーズで利用できるパターンとしては,(1)「インテグレーション・パターン」,(2)「アーキテクチャ・パターン」,(3)「アプリケーション・アーキテクチャ・パターン」の3つがある(表1)。

図1●分析・設計・実装のひな型となるソフトウエア・パターン
図1●分析・設計・実装のひな型となるソフトウエア・パターン
パターン(Pattern)には様々な種類があり,開発プロセスの各フェーズで適用できる
表1●基本設計フェーズの方式設計(アーキテクチャ設計)で利用できる主なパターン
[画像のクリックで拡大表示]

 これらのパターンは,基本設計フェーズの中でも特に方式設計(アーキテクチャ設計)で利用価値が高い。方式設計では,要件定義フェーズで定義した機能要件や非機能要件,制約条件を実現するために,ハード/ソフトの構造(アーキテクチャ)を明確にし,具体的な実装方針を決定する。ここで,上に挙げた3つのパターンが有効に利用できる(図2)。

図2●方式設計におけるパターンの適用イメージ
外部システムとの連携方法は「インテグレーション・パターン」,対象システムの内部分割は「アーキテクチャ・パターン」,分割した名要素の実装方針は「アプリケーション・アーキテクチャ・パターン」を適用できる
[画像のクリックで拡大表示]

 1つ目のインテグレーション・パターンは,外部システムとの連携方法を決定するためのパターンである。

 方式設計では,最初に外部システムとの連携手段を決定する。外部システムがメインフレームであればELT(Extraction Load Transformation)と呼ぶファイル転送の仕組みを選択できるし,外部APIやプロトコルが明確であれば,外部呼び出しによる連携が可能だ。場合によっては,外部システム側に連携手段を持たせることも検討すべきだろう。こうした外部システムとの連携手段をパターン化したのがインテグレーション・パターンだ。最も代表的なものは,グレガー・ホペ氏の「Enterprise Integration Pattern(EIP)」である。

この先は会員の登録が必要です。今なら有料会員(月額プラン)が2020年1月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら