パターン言語

パターン言語とは、専門分野において、優れたデザインプラクティスや有用な組織のパターンを記述する方法です。 この用語は、建築家クリストファー・アレクサンダーによって造られ、1977年のAパターン言語「Aパターン言語」によって一般化されました。

パターン言語は、一連の相互接続パターンを通して、人間の努力の特定の分野において生きがいをもたらすものの深い知恵を表現しようとする試みでもあります。 Alivenessは、「名前のない品質」の1つのプレースホルダ用語です。さまざまな形態の間でも、正確で経験的に検証可能な完全性、精神、または恵みの感覚です。 この設計アプローチの主張者の中には、普通の人々が非常に大きくて複雑な設計上の問題を解決するためにそれを使うことができると主張しています。

パターンとは何ですか?
設計者が家、コンピュータプログラム、またはランプのいずれかを設計するとき、問題を解決する方法について多くの決定を下す必要があります。 1つの問題は、その典型的な場所(構文)で文書化されており、辞書に見られるように、野生の中で最もよく認識されている良い解決策で(文法)を使用します。 そのような各エントリは単一のデザインパターンです。 各パターンには、名前、説明的なエントリ、およびいくつかの相互参照があります。これは辞書のエントリによく似ています。 文書化されたパターンは、なぜその解決策がパターンの文脈において良好であるかを説明しなければならない。

“ドア”や “パートナーシップ”のようなエレメンタルなパターンやユニバーサルなパターンは、経験や実践の要素として使用されているような、デザインの多目的な理想であり、アーキテクチャ、医学、ソフトウェア開発またはガバナンスなどが含まれます。パターンは、人間の環境を特徴付ける自然発生的なパターンのパターンなど、発明されたり発見されたり調査されたりする可能性があります。

すべての言語と同様、パターン言語には語彙、構文、文法がありますが、パターン言語は通信以外の複雑なアクティビティにも適用されます。 デザインのパターン言語では、パーツは次のように分解されます。

言語記述 – 語彙 – は、関心のある分野の問題に対する名前付きの、記述された解決策の集合である。 これらをデザインパターンといいます。 したがって、たとえば、アーキテクチャの言語は、決済、建物、部屋、窓、ラッチなどの項目を記述します。
各ソリューションには、構文が含まれており、ソリューションがより大きく、包括的で抽象的な設計に適合する場所を示す説明が含まれています。 これにより、ソリューションが他の必要なソリューションのWebに自動的にリンクされます。 たとえば、部屋には光を得る方法、人を出入りさせる方法があります。
このソリューションには、ソリューションが問題を解決する方法や利点を生み出す方法を記述した文法が含まれています。 したがって、利益が不要な場合、ソリューションは使用されません。 おそらく、デザインのその部分は、お金や他のリソースを節約するために空のままにされるかもしれません。 入室するのを待つ必要がない場合は、待合室を置き換えることができます。
言語記述では、文法や構文が他の名前付きソリューションとのインデックス(多くの場合、アルファベットのパターン名の索引付き)を使用するため、設計者はある解決策から関連する必要な解決策まで迅速に考えることができ、 クリストファー・アレクサンダーの著書「パターン・ランゲージ」のパターンは、アルファベット別の索引を付けてサイズ順に小さくなっています。
言語指数における関係のウェブは、設計プロセスを通じて多くの経路を提供します。
設計者は、理解している問題のどこからでも未知の部分に向かってプロセスを開始できるため、設計作業が簡単になります。 同時に、多くのプロジェクトでパターン言語がうまく機能していれば、最初に設計問題を完全に理解していないデザイナーであっても、設計プロセスを完了し、その結果を使用できると信じる理由があります。 たとえば、スキーヤーが雪を降ろして機器を保管する必要があります。 汚れた雪やブーツクリーナーは外にいなければなりません。 装置は注意が必要なので、ラックは内側にある必要があります。

多くのパターンが言語を形成する
話し言葉を有効にするためには、単語が文法的にも意味的にも関係しなければならないのと同じように、パターンパターンを形成するには、デザインパターンを位置とユーティリティの順番に関連付ける必要があります。 Christopher Alexanderの作業は、デザイナーが問題(おそらく商業的な割り当て)をして解決策を選択し、次に大きなソリューションの結果生じる新しい小さな問題を発見する分解プロセスを記述しています。 場合によっては、小さい問題には解決策がなく、別の大きな解決策を選択する必要があります。 最終的に残りの設計上の問題はすべて、ビルダーによる即興によって解決されるほど十分に小さいか、または日常的であり、「設計」が行われます。

実際の組織構造(階層、反復など)は、問題に応じて設計者の裁量に委ねられます。 これにより、設計者は明示的に、小さな部分から始めてデザインを探索することができます。 これが起こると、設計者は問題が実際にはより大きなソリューションの一部であることに気づくのが一般的です。 この時点で、デザインはほとんど常により良いデザインになります。

したがって、言語において、各パターンは、他のパターンおよび言語全体との関係を示さなければならない。 これにより、デザイナーは言語を使用して、解決しなければならない関連する問題について多くのガイダンスを得ることができます。

外部の専門家がパターン言語を適用するのが最も難しい部分は、実際には解決すべき問題の信頼できる完全なリストを得ることです。 もちろん、この問題に最も精通しているのは、デザインを必要とする人々です。 したがって、アレクサンダーは、非常に実行可能な大規模な初期ソリューションを形成し、設計の有用性を最大化し、設計の再作業を最小限に抑えるための強力な方法として、関心のある権限のあるユーザーによる現場即興を有名に主張しました。 実際に、アーキテクチャのユーザーに力を与える欲求は、アレキサンダーが最初にアーキテクチャのためのパターン言語プロジェクトに着手する原因となっていました。

コンテキストにおける設計上の問題
設計パターンの重要な側面は、優れたシステムを貧弱なシステム(家、コンピュータプログラム、または日常使用のオブジェクト)とは異なる重要なアイデアを特定して文書化し、将来の設計を支援することですシステム。 パターンで表現されたアイデアは、その文脈の中で非常に異なるシステムに適用されるのに十分一般的であるべきであるが、建設的な指針を与えるのにまだ十分に具体的であるべきである。

パターンに含まれる問題と解決策が適用される状況の範囲をコンテキストと呼びます。 各パターンの重要な部分は、この文脈を記述することです。 例は、パターンが非常に異なる状況にどのように適用されるかをさらに示すことができる。

たとえば、アレキサンダーのパターン「A PLACE TO WAIT」は、手術中の待合室と同じようにバス停に対処しながらも、有用で建設的な解決策を提案しています。 Gamma et al。による「Gang-of-Four」の本のデザインパターン プログラミング言語およびプログラムのアプリケーションドメインから独立したソリューションを提案しています。

それでも、パターンに記述されている問題と解決策は、一方の側で抽象度と一般性のレベルが異なり、他方の側で特異性が異なる可能性があります。 結局、これは作者の好みに依存します。 しかし、非常に抽象的なパターンであっても、通常、本質的に絶対的に具体的で具体的な例が含まれています。

パターンは実際の世界でどのくらいの距離で証明されているかによっても変わる可能性があります。 アレクサンダーは、各パターンにゼロ、1つまたは2つの星の評価を与え、実際の例でどのように実証されたかを示します。 一般的には、すべてのパターンに現実的な例が少なくともいくつか必要であると主張されています。 しかし、まだ実装されていないアイデアをパターンのような形式で文書化することも考えられます。

アレクサンドルの本のパターンは、町や町を造る方法、個々の建物や部屋の内部を扱う方法など、規模の程度も異なります。 アレクサンダーは、大規模な世界の建設的な要素として低スケールの人工物を見るので、階層型ネットワークに接続することができます。

力のバランス
パターンは、それが解決しようとしている問題、これらの問題が発生している状況または状況、および提案された解決策が推奨される条件を特徴づけなければならない。

多くの場合、これらの問題は、異なる利益または「力」の衝突から生じる。 パターンは対話として現れ、力のバランスをとり、最終的に決定を下すのに役立ちます。

例えば、無線電話を示唆するパターンが存在する可能性がある。 力は、コミュニケーションの必要性と同時に他のことをやり遂げる必要がある(調理し、本棚を検査する)。 非常に具体的なパターンは、単に「ワイヤレス電話」になります。 より一般的なパターンは、「ワイヤレスデバイス」または「セカンダリアクティビティ」であり、セカンダリアクティビティ(電話で話すこと、またはジーンズのポケットを調べるなど)が他のアクティビティに干渉しないことを示唆しています。

「二次的活動」パターンの力は、「無線電話」のものと非常によく似ています。 したがって、競合する力は、パターンで表現されたデザインコンセプトの本質の一部として見ることができます。

パターンには独自の根拠があります
通常、パターンにはいくつかの値を参照する根拠が含まれています。 クリストファー・アレクサンダーにとっては、建築と触れ合う人々を考えることが最も重要です。 彼の重要な価値の1つは、これらの人々をより生き生きと感じさせることです。 彼は「名前のない品質」(QWAN)について語る。

より一般的には、それを使用しようとする人、またはそれが影響を受けるすべての人によって良いシステムが受け入れられ、歓迎され、喜んで日常生活の豊かさとして受け入れられるべきだと言えるでしょう。 たとえば、通りのカフェについて議論するとき、アレクサンダーはゲストの可能な欲望について話しますが、歩いているだけの人々も言います。

同じ考え方は、電話や自動車などの技術装置、プロジェクトを担当するチームのような社会構造、またはコンピュータプログラムのユーザーインターフェイスにも適用できます。 例えば、ソフトウェアシステムの品質は、ユーザがシステムを楽しんでいるか苦労して過ごしているかを観察することによって評価することができる。

人間の生活への影響に焦点を当てることで、技術の変化から独立したパターンを特定し、「時代を超越した品質」(Alexander)を見つけることができます。

一般的な構造とレイアウト
通常、パターン言語やコレクションの作者は、それが含んでいるすべてのパターンの一般的な構造を選択し、それぞれをコンテキスト、問題文、解決法などの一般的なセクションに分割します。

クリストファー・アレクサンダーのパターンは、例えば、それぞれ短い名前、格付け(最大2つの ‘*’記号)、感作画像、文脈記述、問題文、例と説明を含むテキストの長い部分、解決策ステートメント、スケッチ、およびさらに参照してください。 この構造とレイアウトは、「アレクサンドリア形式」と呼ばれることもあります。

アレキサンダーは特殊なテキストレイアウトを使用して、パターンのさまざまなセクションにマークを付けます。 たとえば、問題文と解答文は太字で表示され、後者は常に「Then:」というキーワードで始まります。 一部の著者は代わりに明示的なラベルを使用します。これにより、ある程度の重複が作成されます。

意味のある名前
デザインがチームによって行われるとき、パターン名は彼らが共有できるボキャブラリーを形成するでしょう。 これにより、パターン名を覚えやすく、また説明的にする必要があります。 アレクサンダーの作品の例としては、窓がどこに入るべきかを定義するウィンドウプレイス(WINDOW PLACE)と、バス停や病院の待合室の特性を定義するのに役立つ待機場所(A PLACE TO WAIT)があります。

連想ネットワークにおける集約(パターン言語)
Alexanderが考案したパターン言語には、あるパターンから別のパターンへのリンクが含まれているため、プロジェクトで1つのパターンを適用しようとすると、そのコンテキストで役立つと思われる他のパターンにプッシュされます。

Alexanderの本では、そのようなリンクは「参照」部分に集められ、リンクされたパターンの「文脈」部分にエコーされます。したがって、全体の構造は有向グラフです。 「参考文献」にリンクされているパターンは、通常、よりスケールの大きい問題の一部として示唆される、より小さなスケールの問題に対処します。 たとえば、「PUBLIC OUTDOOR ROOM」パターンには「STAIR SEATS」という言葉があります。

パターンの説明がなくても、有意義な名前とともに、次のメッセージが表示されます。人々が時間を過ごすことができる場所以外の場所(「PUBLIC OUTDOOR ROOM」)を建てるには、階段で囲むことをお勧めします(「STAIR SEATS “)。 オフィス(「ワークショップとオフィス」)を計画している場合は、ワークスペースを小規模グループ(「小規模な作業グループ」)に配置することを検討してください。 アレクサンダーは、ネットワーク内の接続は、パターンそのもののテキストよりもはるかに意味があると考えることができると主張している。

Alexanderの本のリンクは、明らかに階層的なネットワークになっています。 アレクサンダーは、文法の階層に平行して描かれています。それは、彼がパターン言語を話す一つの議論です。

リンクの背後にある意味論的根拠は変わるかもしれないが、リンクのアイデアは一般的にパターン作成者の間で受け入れられる。 しかしながら、ガンマ(Gamma)らのような一部の著者は、 デザインパターンでは、パターンのリンクをほとんど使用しません。おそらくパターンのコレクションにはあまり意味がないからです。 このような場合、我々はパターン言語ではなくパターンカタログを話すだろう。

使用法
アレキサンダーは、自分のシステムを使っている人々に、自分のパターンで自分の言語を広げるよう奨励しました。 これを可能にするために、彼の本は厳密に建築や土木工学に焦点を当てていない。 彼はまた、パターン言語の一般的な方法についても説明します。 本Aパターン言語の元のコンセプトは、3リングバインダーの形で公開され、後でページを簡単に追加できるということでした。 これは出版には実用的ではないことが判明した。 パターン言語のアプローチは、さまざまな分野の専門知識を文書化するために使用されてきました。 いくつかの例は、建築パターン、コンピュータサイエンスパターン、インタラクションデザインパターン、教育パターン、ソーシャルアクションパターン、およびグループ促進パターンである。 パターン言語のアプローチは、共有の重大な問題に取り組んでいる多様な人々やコミュニティの行動を調整することによって、市民の知性を促進する方法としても推奨されています。 アレキサンダーのパターン言語の使用や新しく作成する仕様は依然として影響力があり、彼の書籍は無関係の分野の専門家によってスタイルについて参照されています。

UMLやフローチャートシンボルコレクションなどの表記はパターン言語ではないことに注意することが重要です。 彼らはアルファベットともっと密接に比較することができます:それらのシンボルはパターン言語を文書化するために使用できますが、それらは単独では言語ではありません。 レシピやその他の一連のステップは、開始から終了までの正しいパスが1つしかなく、パターン言語でもありません。 しかしながら、新しいレシピを設計するプロセスは、パターン言語の使用によって利益を得ることができる。

パターンの簡単な例
名前:ChocolateChipRatio
コンテキスト:あなたは家族や友人のための小さなバッチでチョコレートチップクッキーを焼く
最初にこれらのパターンを考えてみましょう:SugarRatio、FlourRatio、EggRatio
問題:チョコレートチップのクッキー生地に対する最適比率を決定する
解決策:ほとんどの人がチョコレートをチョコレートチップクッキーの最高の部分とみなしてください。 チョコレートが多すぎると、クッキーが一緒に保持されるのを妨げ、その魅力が低下することもあります。 小さなバッチで調理しているので、コストは考慮されません。 したがって、実際に頑丈なクッキーをもたらすチョコレートチップの最大量を使用してください。
次に検討する:NutRatioまたはCookingTimeまたはFreezingMethod

原点
建築家であり作家のクリストファー・アレクサンダーは、用語パターン言語を作り出しました。 彼はそれを使って、建物や町の設計と建設の一般的な問題とその解決方法を指摘しました。 本書で提案されている解決策には、都市や町の構造から部屋の窓の配置までの提案が含まれています。

「パターン言語」アプローチの枠組みと哲学は、1970年代後半にカリフォルニア州バークレーの環境構造センターでクリストファー・アレクサンダーと5人の同僚によって書かれた「パターン言語」という本で広く普及しました。 パターン言語は最初のパターン「独立した地域」(最も一般的なもの)から最後のものまで253の「パターン」を含んでいるが、「あなたの人生からのもの」アレクサンダーの著書「時代を超越した建物」は、モチベーションと目的について、仕事の 以下の「パターン」と「パターン言語」の定義は、Aパターン言語から言い換えられます。

「パターンとは、ビルディング・コンテキスト内で繰り返される問題に対する永続的な解決方法を注意深く記述したもので、建物に生命をもたらす構成の1つを記述しています。この問題へのコアソリューションであり、これまで何度も何度も同じことをやっていなくても、何百万回も使用することができます」

パターン言語は、互いに呼び出すパターンのネットワークです。 パターンは、デザインに関する洞察と知識を覚えているのに役立ち、ソリューションを作成するために組み合わせて使用​​できます。

アプリケーションドメイン
クリストファー・アレクサンダーのアイデアは、他の分野でも採用されてきました。パターンAの本に書かれているように、アーキテクチャに対するパターンの本来の応用よりもはるかに重大です。 最近の例には、ソフトウェア工学のソフトウェア設計パターン、より一般的にはコンピュータサイエンスのアーキテクチャパターン、およびインタラクションデザインパターンが含まれます。 教育的パターンは、教授における優れた実践を文書化するために使用される。 2008年には、より多くのパターンを含むウェブサイトとともに、持続可能な発展、民主主義、そして積極的な社会変化を促進するための情報とコミュニケーションを利用するための136のパターンを含む、コミュニケーション革命のためのパターン言語、「解放の声」が出版されました。 デッキ「Group Works:会議やその他の集まりに命を吹き込むためのパターン言語」が2011年に出版されました。最近、パターンもシステムアーキテクチャ設計に導入されました。 チェス戦略と戦術には、開幕からチェックメイトに至るまでの多くのパターンが含まれます。

Wikiの発明者であるWard Cunninghamは、Wikisとパターン言語の間に深い関係があり、「パターンの効率的な共有と修正を容易にするツールとして開発された」とMichael Mehaffyの論文を共著した。