『パターン・ランゲージ: 創造的な未来をつくるための言語』を読んで
導入
ソフトウェア開発の際には、さまざまな問題が起こりそれを速く解決することが求められます。
その際に、問題とその解決のパターンがあればいいなと思いました。では、そもそもパターンはどうやって洗い出すんだろう? パターンってなに? という、疑問が生じました。そこから一つの参考するために、『パターン・ランゲージ: 創造的な未来をつくるための言語』を読みました。今回はその内容を僕なりに解釈し、ソフトウェア開発に利用した場合の僕なりの解釈を示します。
「パターン・ランゲージ」の解釈
パターン・ランゲージとは目に見えてる問題部分を場当たり的に改善していくのではなく、問題のその奥にある本質を捉えて改善するために利用するもの。
- 目に見えている問題はわかりやすく、改善されやすい
- 本質になっている部分は説明がつきにくく、改善がされにくい。
そのために、応急処置的な社会になりつつある。
そこで、本質をうまく説明するために、本質を認識するための「型」としてパターンを利用する。パターンは共有される。共有し使われ、いくつのもパターンの組み合わせで語られることから「言語(ランゲージ)」とし、「パターン・ランゲージ」と呼ぶ
「パターン・ランゲージ」の使い方の解釈
何かしら問題解決の要求者と実際にその問題を取り除く専門者がいるとする。
- 要求者の「良い」と思っている事柄を抜き出す。その際に、専門者は要求者の手助けを行う。
- 「良い」とする事柄から共通する部分をみつけ「パターン」として洗い出す。
- その洗い出した「パターン」を言語として、つまり「パターン・ランゲージ」として専門者は要求者と共有する。
- パターン・ランゲージを使用して共に理想のあり方を設計・実施する。
- パターン・ランゲージそれ自体と使われ方は漸進的に見直される。
- 全体として共通のパターン・ランゲージと、要求毎のパターン・ランゲージに分かれる。その場その場の状況に沿ったパターン・ランゲージが創造される。
- その創造も漸進的に行う。
- 要求者の「良い」と思っている部分が本当に正しく「良い」ものかどうかを注意する。
- その「良い」という価値基準を「センター」という。
「パターン・ランゲージ」をソフトウェア開発に置き換えた解釈
- エンドユーザが「良い」と思っている事柄を抜き出す。この時に開発者も正しく「良い」が抜き出せるように手伝う。
- そのなかから共通する部分をみつけ「パターン」として洗い出す。
- その「パターン」を言語として、つまり「パターン・ランゲージ」として開発者はエンドユーザと共有する。
- パターン・ランゲージを使用して共に理想のソフトウェアを設計・実装する。
- パターン自体と、パターンを使った設計・実装自体を漸進的に見直しながら、設計・実装を進める。
- その際に、エンドユーザ固有の状況に則したパターン・ランゲージが生まれる。
- そのパターン・ランゲージに対しても、常に漸進的な見直しを行う。
- そうやって、共通の認識を保ちながら、ともに改善を行い、ともに設計・実装を行う。
- エンドユーザに寄り添った開発が行える。
- 「良い」とするものが本当に「良い」ものかどうかというのを常に気にしなければならない。
- エンドユーザが求めるモノの「全体」を常に意識しながら「良い」と判断をする。
- その判断の軸が「センター」と呼ばれる。
まとめ
パターンの創造とは「良い」ものをしっかりと捉え、その共通点を抜き出すことです。創造したパターンを組み合わせ、問題を解決します。パターンを扱うときにそのパターンの組み合わせでコミュニケーションを行うためにパターン・ランゲージと呼びます。
「パターン・ランゲージ」は説明のつきづらい概念を捉えるメガネです。
本当に「良い」ものは何か、ということに常に気をつけながら、要求者と専門者(要求者と要求者、専門者と専門者でもいい)の認識を一致させ、創造を促すコミュニケーション媒介の一つです。