<< Domain-Driven Design を読み終えて | main | システム設計のパターン言語 >>

アーキテクトは「パターン言語」を使う

ソフトウェアの設計で「パターン」をうまく使えば、よい仕事ができる(はず)。

Fowler アナリシスパターン
Fowler PoEAA
Evans Domain-Driven Design
Hruby ビジネスパターン
ニコラ Streamlined Object Modeling
Hay Data Model Patterns
GoF デザインパターン
...

数え上げれば、きりがない。

個々の「パターン」を、勉強したり、実際に使ってみたり、というは、多くの技術者がやっていることだと思う。

でも、それで、設計スキルが向上したかは、かなり疑問。

なぜ、実証済みの「パターン」を使っても、良い設計にならない?
理解力不足? 使い方がまちがっている?

答えは、原点の C. Alexamder の 「パターン言語」にある。

Alexamder は、

◎ いろいろなパターンを組み合わせて「言語」として使う
◎ パターンの組み合わせ方は、多重のネットワーク構造 (つまりとっても複雑なからみ合い)
◎ パターンを使い続けることで、全体として良い設計に育っていく

ということを説いている。

パターンを組み合わせて「言語」として使う


「パターン」を、設計を表現する「言語体系」の「単語」にあたるもの。

だから、ひとつひとつのパターン(単語)を覚えて、断片的に使っても、設計にはならない。

多様なパターン(単語)をうまく並べて、文として表現してはじめて、設計の表現手段になる。

だから、 Observer パターンとは、とか、Value Object パターンとは、とか、個別に議論しているうちは、設計の議論をしていることにならないということ。

パターンの組み合わせは多重のネットワーク構造


パターンとパターンの関係は、単純なツリー構造ではない。

パターンをひとつのクラスとしてクラス図を描くと、とっても、複雑にからみあった全体像になる。

継承で整理したり、パッケージ分割して整理して、階層構造や依存関係を明確にして、全体がすっきり整理したい、というのが技術者として自然な発想かもしれない。

でも、自然言語で、こういう単語の関連の整理や、文法規則の明文化が、とっても難しいように、「パターン言語」で、パターン間の関係(単語間の関係)を、すっきり、単純化することは、できない。

むしろ、単純化できないから、豊かな表現力を持っている。それが「言語」の強みというわけだ。

パターンを使いつづけることで、全体として良い設計に育っていく


これは、Alexander が、特に「街づくり」のパターンで言及している。

ひとつのパターンを一回使えば、良い都市設計ができるわけではない。

「街づくり」に関する、さまざまなパターンを、機会があるたびに、地道に使うことを繰り返していくと、街全体が、ここち良い環境に育っていく、という発想。

りファクタリングしながら、ソフトウェアを育てていくことに通じる発想。

ソフトウェアの世界では、語彙も語法も未整備


「パターン」ものは、たくさんでているけど、それでも、まだ、ソフトウェア設計を表現するには、語彙が足りないような気がする。

少なくとも、GoF のデザインパターンだけで語れる範囲なんて、ほんと限定的。

アーキテクチャレベルのパターンから、コードの書き方スタイルのレベルまで、世の中にでているものをかき集めれば、それなりにカバーはできているのかもしれない。

でも、そういうボキャブラリ(パターン)を一通り覚えて使える技術者は、それほどは、多くない。ハードルが高い。

そして、Alexamder のパターン言語、建築の世界でもそうだと思うが、パターンとう単語を「組み合わせて使う」、語法にあたるものが、とても原始的な状態にある。

人間が言語を使い始めた時は、たぶん、単語を個別に叫ぶだけで、語順もなにもなかったはず。

それが、少しずつ、主語と述語と目的語みたいな感じで、使うことが、共通の約束ごとになってきた、ようやく、言語として、豊かな表現力を持つようになってきたんだと思う。

「パターン(単語)」の元ネタは、それなりに揃ってきているかもしれない。

これからは、その単語の組み合わせた使い方、つまり「パターン言語」を、どうやって整備していくかが課題なんだと思う。

たぶん、単語を、断片的に叫ぶことから始めるのが、自然なんだろうな。
そうやって、単語をお互いに言い合いながら、だんだん、語法が表れてくる、ということなんだろう。

まずは、断片的な単語(パターン)を、単独で使うことから、パターンどうしを関係づけて、設計を表現することから、はじめてみようと思う。

コメント
コメントする









この記事のトラックバックURL
トラックバック
calendar
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< September 2018 >>
システム設計日記を検索
プロフィール
リンク
システム開発日記(実装編)
有限会社 システム設計
twitter @masuda220
selected entries
recent comment
  • 番号より名前。 ニーモニックコードより名前。 【パターン】
    師子乃 (03/10)
  • Smart UI が優れている?
    masuda220 (03/10)
  • Smart UI が優れている?
    kagehiens (03/09)
  • オブジェクト指向プログラミングの教え方?
    masuda220 (12/05)
  • オブジェクト指向プログラミングの教え方?
    ZACKY (12/04)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    masuda220 (08/14)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    kompiro (08/14)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    masuda220 (06/13)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    JHashimoto (06/13)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    masuda220 (02/28)
recent trackback
categories
archives
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM