Software engineering from east direction

六本木一丁目で働くソフトウェアエンジニアのブログ

パターン・ランゲージを分野を超えた流れから捉える | 書評「パターン・ランゲージ: 創造的な未来をつくるための言語」

「パターン・ランゲージ: 創造的な未来をつくるための言語1」という書籍が面白かったので、振り返りがてら書評を書いていく。

TL;DR

  • 「パターン・ランゲージ: 創造的な未来をつくるための言語[^1]」という書籍は、建築・ソフトウェア・政治など様々な分野から、パターン・ランゲージについての考えを聞くことができる
  • パターン・ランゲージを3つの世代という時間軸で整理している点が(個人的に)新鮮だった
  • ソフトウェアにおけるデザイン・パターンの課題感と、よりクリエイティブでより根源的な「デザイン・プリンシプル」(設計原理)を学ぶ重要性

この書籍に至るまで

https://www.amazon.co.jp/dp/4766419871

(この書籍名に引っかかった方であれば、これから紹介する書籍もすでに読んだことがある方かもしれません。) 以前、江渡 浩一郎氏の「パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)2」という書籍を読み、建築家のクリストファー・アレグザンダー氏の考えがソフトウェア業界にどのように適用されていったかという歴史の線に興味を持ちました。

khigashigashi.hatenablog.com

その後、長坂 一郎さんの「クリストファー・アレグザンダーの思考の軌跡―デザイン行為の意味を問う3」を読み、アレグザンダー氏の考えの変遷を線で捉えることができました。

https://www.amazon.co.jp/dp/4395320465

そこから、ソフトウェア設計における「デザイン・パターン」というものを、出自から見直すことで、さらに有効に使えるのではないか、という仮説を持って、いくつか関連の発表を通じて、自分の中の頭の整理をつけてきました。

なんとなく頭の中にもやもやと浮かんでいる、パターン・ランゲージの構造とデザインパターンの構造の差異について、その分野のエキスパートの方々はどう捉えているのだろうかと思い、この書籍を手に取りました。

非常に内容が詰まっているのですが、個人的に琴線に触れた部分を一部ピックアップして、関連書籍とどう紐付いてそうかについても紹介してみたいと思います。

パタン・ランゲージをさらに大きな流れで捉えられる書籍

書籍を読み始めてから、一気に止まらず読み進めて、2日で一気に読み終えました。この書籍は、建築家アルグザンダーの考えたパタン・ランゲージだけを扱っているわけではないことに大きな特徴があります。

パターン・ランゲージは、1970年代に建築家クリストファー・アレグザンダー氏によって、住民参加型の町づくりを支援するために提唱された方法です。町や建物に繰り返し現れる特徴を「パターン」と捉え、それを「ランゲージ」として記述・共有することを提案しています。

これについて、編者である井庭 崇氏は、パターン・ランゲージに3つの世代があると説明しています。

建築家アレグザンダー氏が提案された段階である「パターン・ランゲージ1.0」、その後ソフトウェアの分野で応用・展開された段階を「パターン・ランゲージ2.0」、その後人間行為のパターン・ランゲージという新しい応用の段階を「パターン・ランゲージ3.0」と呼んでいます。

この書籍は、これらの大きな流れをとりまく話を、編者の説明と各分野のエキスパートの方々同士でのトークセッションという形で進められます。そのため、建築・ソフトウェアにおけるパタン・ランゲージという話は他書籍でも楽しめますが、井庭さんがまとめてらっしゃる「プレゼンテーション・パターン4」や「コラボレーション・パターン5」といった人間行為におけるパターンについても語られています。

この書籍の進み方

この書籍は、下記の目次で進められます。

  • 序章 創造的な未来をつくるための言語 ーパターン・ランゲージ入門ー(井庭 崇)
  • 第1章 建築におけるパターン・ランゲージの誕生(中埜 博・井庭 崇)
  • 第2章 建築からソフトウェアへ ーパターン・ランゲージの展開ー(江渡 浩一郎・中西 泰人・井庭 崇)
  • 第3章 制作言語=政策デザインのパターン・ランゲージを作る(竹中 平蔵・井庭 崇)
  • 第4章 パターン・ランゲージとネイチャー・オブ・オーダー(中埜 博・羽生田 栄一・井庭 崇)

目次から分かる通り、建築・ソフトウェア・政策デザインと、様々な分野におけるパターン・ランゲージが考察されています。

パターン・ランゲージの世代ごとの使われ方の着目

パターン・ランゲージは3世代があるという点については、冒頭で紹介しました。この世代の整理において、どのような使われ方をされているかについても、「序章 創造的な未来をつくるための言語 ーパターン・ランゲージ入門ー」にて、簡潔に整理してくださっています。

建築における1.0の段階では、デザイナー(建築家)とその結果を享受するユーザー(住民)の橋渡しをするために考案されたとされています。

ソフトウェアに展開された2.0では、熟練したデザイナー(エンジニア)とそうでないデザイナー(エンジニア)の差を埋めるために用いられるようになったとのことです。これが、ソフトウェアの世界におけるデザイン・パターンについての使われ方の端的な整理として表現されています。

そして、人間行為に着目した3.0では、人々が暗黙的に持っている「経験」に光を当て、それを捉え直し、語り合うことを支援するために用いらます。

筆者自身が普段使うのは、パターン・ランゲージ2.0の代表的なもののひとつ、デザイン・パターンですが、この整理は納得感がある良い説明だと感じました。実際に、Gang of Fourの「オブジェクト指向における再利用のためのデザインパターン6」の第1章 概論においても次のように記述されています。

経験豊富なオブジェクト指向設計者は実に良い設計をする。一方、初心者は利用可能な豊富な機能に惑わされ、結局のところ、彼らが以前から用いているオブジェクト指向ではないテクニックにすがる傾向がある。初心者が「良いオブジェクト指向設計とは何か」を学ぶには多分な時間がかかるのである。つまり、経験方法な設計者は、初心者が知らない何かを知っているのである。それは何なのだろうか。

熟練したデザイナー(エンジニア)とそうでないデザイナー(エンジニア)の差を埋めるためという課題感が前段にあったことは汲み取れると感じます。

さらに、本書籍では、パターン・ランゲージ2.0に次のような解説を加えています。

熟練者の技を学ぶためには、パターンを読んで学ぶとうことが中心的な使い方となったのである。そこにはユーザーは登場せず、デザイナーとユーザーのコラボレーションも視野から外れてしまった。

実際、建築におけるデザイン・パターンでは、ユーザーとの共通語彙となっているが、ソフトウェアにおけるパターンは、ユーザーとのコラボレーションで使われるものではない

この差異についても、デザイン・パターンの輪郭をくっきりさせる上で非常に重要な点と言えそうです。

パタン・ランゲージの書式における重要度

「第4章 パターン・ランゲージとネイチャー・オブ・オーダー」において、クリストファー・アレグザンダー氏のもとで学び、日本でもアレグザンダー氏と一緒に活動された建築家である中埜氏が次のように語っていました。

みなさんは、パターンの書式の三本柱である「問題」「解決」「コンテクスト」を知っていると思いますが、そのなかの「コンテクスト」がいちばん大切なのです。「状況」や「問題条件」「環境」などと訳されるのですが、どれもぴったりこない。基本的には「コンテクスト」とは、パターンとパターンがどのように自立しつつ、相互に関係しているのか、そしてそのためには、パターン自身がどのようにジャンプをして、さらによい解決につなぐことができるのか、というリンクのことです。

パターン・ランゲージには、すべてのパターンにおいて、統一されている書式があります。クリストファー・アレグザンダー氏自身の書籍の翻訳本である「パタン・ランゲージ―環境設計の手引7」の「本書の使い方」とにて、パタンの使い易さ・わかり易さのために、同一の書式にまとめている点について言及しており、最初にその書式を説明することから始めています。この書籍内の翻訳では、コンテクストを前後関係と訳していますが、パタンに前後関係があることに重要な目的があると説明しています。

このような書式を用いたのは、2つの重要な目的のためである。第1に、パタン相互に関連性をもたせ、253パタンの集合を1つの全体、つまり1つの言語(ランゲージ)として把握し、無数の組合わせを可能にするためである。第2に、パタンの根底にある本質を見失わずに、読者自身が、各パタンの問題と解答を判定し、修正できるようにするためである。

そういえば、Gang of Fourの「オブジェクト指向における再利用のためのデザインパターン[^6]」の「6.3 パターンのコミュニティ」において、パターン・ランゲージ1.0と違っている点について説明していますが、その中の一つに次のような説明をしています。

  1. Alexanderのパターンは扱う問題を強調しているが、我々のデザインパターンは解決法についてより詳細に記述している。

パターン・ランゲージ2.0においては、解決法を強調したという結果となっている点も、世代間の違いとして捉えられるかもしれません。

ソフトウェアにおけるパターン・ランゲージの課題

「第4章 パターン・ランゲージとネイチャー・オブ・オーダー」において、情報システムの観点からパターン・ランゲージを探求・活動されている羽生田 栄一氏は、次のように語っています。

他方で、そのソフトウェアは何を目指すのか、どのようなユーザーがどのような環境で使うのかを想像しないまま、エンジニアの技術的な基準のみでデザイン・パターンが適用されてしまいます。それでは、まさにいま中埜さんが言われたように、悪いパターン、「いきいき」していないソフトウェアになってしまいます。そうならないようにはどうすればよいのかを、ITの世界でも考え始めています。

悪いパターン、「いきいき」していないソフトウェア になってしまうという状況にならないための一つの指針として、デザイン・パターンを構成する、よりクリエイティブでより根源的な「デザイン・プリンシプル」(設計原理)をエンジニアがしっかりと学び、身体化することを上げています。つまり、ソフトウェアの設計・開発ではここだけは押さえないと美しくならない、という身体感覚を持つことが必要だと示しています。

まとめ

パターン・ランゲージを、過去・現在・未来と大きな時間軸で、いろいろな分野を渡りながら感じられる点がとても面白かったです。この書籍は章ごとに、パターン・ランゲージにそこまで詳しくない聴講者向けに概要が最初から説明されるので、他の関連書籍を読んでいなくてもパターン・ランゲージの世界を楽しめるものになっていると思います。