パターンとプラクティスの違いは?

の質問をtwitterで受けた。twitterで返そうと思ったが、140字で返せる気がしなかったので、ここに書いている。
が、早々に困ってしまった。違いを表にまとめようとしたが、挫折してしまった。私が、プラクティスが何を指しており、どのように使用するのかよくわかっていない。(プラクティスと聞いて、思い出す本と言えば、アジャイルラクティスとラピッドデベロップメント)




かわりに、パタン(パタンランゲージ)の特徴を幾つか上げ、そこからプラクティスのとの違いを読み取ってほしい。

パタンの記述対象の範囲は広い。

Search Patterns など UIに関するもの
デザインパターンアーキテクチャパターン、DDDなどソフトウェアの(内部)構造の形成に関するもの
xUnit Patterns など テスト(テスティング)に関するもの
Fearless Change, や組織パターンなど、チーム/組織/コミュニティの形成に関するもの
など多岐にわたる。シェパーティングなど、パタンの記述の仕方のパタンすらある。
本,論文,Webページを合わせるとその全貌を把握するのは難しいほど成長を遂げている。



本家の場合は、住む人と街・家の関係に関するものが記述対象となっている。(記述対象が、街や家の構造に関するものだと、ミスリードと私は考えている。)。
2010のまちづくりの講習では、プロジェクトランゲージというものが出てきた。まちづくりの過程を記述対象としたパタンも上げられる。
http://patterns-wg.fuka.info.waseda.ac.jp/asianplop/proceedings2011/asianplop2011_submission_25.pdf


ラクティスの記述対象はなんだろう?

パタンは他のパタンを繋げて使用されることで力を発揮する

パタンとパタンを繋げてパタンランゲージとなる。

例えば、DDDのValue Object。識別子の有無でEntityと対称的な存在である。Value Objectは、 Side Effect Free Function や Specification との相性が良く、合わせて使うことを検討することになる。
Fearless Change は、組織やコミュニティが段階的に成長していくための道筋をパタンの連なりとして、提示してくれている。


本家では、パタンのつながりを、”ネットワーク”、”シーケンス”と2つの特徴を上げている。空間的なパタンの隣接は、どこを読んでもすぐに読み取れる。パタンを繋げて自然言語で話す際は、自然言語の文法にしがたい、シーケンシャルにつながる。


パタン使用:近未来のヴィジョン(憧憬)を描き、参加者のかかわり合いの度合いを高める

本家のアレグザンダーの設計思想には、「良いまちや家を形づくるには、住む人が積極的に設計に関わること」という前提がある。パタンランゲージの使用目的の一つが、住む人が住みたい街や家を思い描く設計の参加の度合いを高めることにある。Kent Beck, Ward がソフトウェア開発に持ち込んだ際もその節が、論文から読み取れる。

ユーザー・インタフェース設計におけるパターン言語の使用が最初に成功したときは、コンピュータ・ユーザーたちが自分自身のアプリケーションを自らが設計し、プログラミングするという可能性があるのだということに、我々は大変熱狂した。

http://capsctrl.que.jp/kdmsnr/wiki/transl/?UsingPatternLanguagesForOOP


ソフトウェアコミュニティの場合は、その後、本家と異なりユーザ参加型のカラーが薄まり、開発者同士ノウハウ伝達のためというトーンが強くなっている。(もし、ユーザ参加型のパタンを読んだら、記述形式だけでなく、本家を意図を組み込んでいると思われる。DDDの場合、パタンの使用する人自体は、開発側の人中心が想定であるが、ユーザ側に属するドメインエキスパートと開発者のやりとりの描写に力を入れており、本家のパタンの思想が感じられる)


開発者同士ノウハウ伝達を意図する場合、参加者は開発者を指すことになる。ソフトウェアの構造に関するパタンランゲージを体に染み込ませた開発者であれば、良いを設計したい、良いコードを書きたい、良いテストを書きたい、良いUIをつくりたいという憧れに敏感になり、その実現に積極的になり、良い設計をしたり、良いコードを書いたり、良いテストをしたり、良いUIをつくったりする度合いが高くなるだろう。

チーム形成のパタンランゲージの使用を体に染み込ませた開発者であれば、よいチームを形成したいという感情(あるいは意志、参加意識)の芽生えに敏感に察知し、チームづくりのかかわり合いの度合いが高くなり、良いチームを形成する度合いが高くなるだろう。


パタン使用:共通の感覚、共通の語彙

パタン使用:今ある現在をパタンを通じて観て、修復の対象を見つける

暗黙知 -> 形式知の変換プロセスが内包されている。

パタンの記述のフォーマットがいくつか提示されており、パタンの記述のためのパタンがあり、パタン記述を支援するコミュニティが XXXLoP として世界中に立ち上がっている。



脳が疲れた。後で書き直す。