Software engineering from east direction

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

書評: パターン、Wiki、XP ~時を超えた創造の原則 がすごく面白かった

ソフトウェア設計とは何なんだというような話を社内でモヤモヤ話していました。

その話の流れで、@fuubitさんからアーキテクチャ設計の意味を問う - クリストファー・アレグザンダーの思考の軌跡というブログエントリを紹介していただいて、めちゃめちゃおもろいこれ!非常に興味深く読ませていただきました。

arclamp.hatenablog.com

すごく興味深かったので、ブログ冒頭で紹介されていた江渡 浩一郎さんのパターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)も「これおもしろい!」と当日の夜にさくさく読ませていただきました。(風呂で電子版を1時間弱読んで体内の水分がおしまいになりました)

こちらの書籍が非常に面白かったのでどのような内容が書かれていたか紹介したいと思います。

パターン、Wiki、XP ~時を超えた創造の原則

この書籍は大きく、3部立てになっています。

  1. 第1部 建築
  2. 第2部 ソフトウェア開発
  3. 第3部 Wiki

いきなりソフトウェア開発の話ではなく、建築の話から始まります。ソフトウェア開発のプロセスや設計は大きく建築の世界の概念が参考にされていると聞いたことがある方は多いかもしれません。この書籍では、建築家 クリストファー・アレグザンダー が追求してきた建築設計の理論・概念整理が、ソフトウェア開発で普段聞く概念にどのような影響をもたらしているかという話が展開されます。

パターン、Wiki、XP ~時を超えた創造の原則 という書籍タイトルで想像つくかもしれませんが、デザインパターンやXP(エクストリームプログラミング)といった概念が書籍で取り上げられます。

また、XPが誕生までの過程のなかで、オブジェクト指向についても取り上げられます。

個人的に面白かった点

クリストファー・アレグザンダーの考え方の移り変わり

クリストファー・アレグザンダー氏は、"パタン・ランゲージ"という概念を考えだした方ですが、理論を構築して実践・失敗、そこから学び実践、とされています。本書では、彼の思考の移り変わりを 6 章にわたり非常にわかり易く解説してくださっています。 その中で提唱される原則や設計についての考え方は、普段その影響を受けたソフトウェア開発の舞台にいる我々にとっては「はっもしやこれはあの概念につながっていくのでは!?」と謎解きをしていくような感覚を味あわせてくれました。

クリストファー・アレグザンダーの追求

クリストファー・アレグザンダー氏の追求したものが書籍内では、次のように書かれていました。

彼が建築において追及したいと思っていたのは、「何がものを美しくするのか」という原理でした。 江渡 浩一郎. パターン、Wiki、XP 時を超えた創造の原則 (WEB+DB PRESS plus) (Japanese Edition) (Kindle Locations 401-402). Kindle Edition

ソフトウェア設計について深く考え自分なりの理解・考えを突き詰めてらっしゃる方々を見ていると、(いい意味で)理想や美や調和のようなものへの探求みたいなことを感じていて、そういう姿勢に私はその方の"ソフトウェアエンジニアとしての深さ"を感じて尊敬しています。アレグザンダー氏の追求したものを読んで、「なるほどなぁ」と言葉にならない納得感を覚えました。

老練な親方と新前大工の仕事の進め方

アレグザンダー氏の書籍「パタン・ランゲージ―環境設計の手引」では、老練な親方と新前大工の仕事の進め方という例が出てくるのですが、これはソフトウェア開発においても同様に言えるなと思いました。

決定的な違いは仕事の手順である。老練な大工は、後で修正できないようなことはけっしてやらない。だからこそ、自信たっぷりと着実に仕事を進めていくのである。(中略)新前と親方との違いは、小さな過ちを吸収しながら建てていく方法を、新前がまだ修得していないだけのことである。親方のほうは、自分の作業を続けていれば、必ず後で過ちを修正できることを知っている。この単純かつ本質的な知恵があるからこそ、親方大工の仕事ぶりが、すばらしく、滑らかで、くつろいで、無頓着といってよいほどの単純作業に見えるのである。 江渡 浩一郎. パターン、Wiki、XP 時を超えた創造の原則 (WEB+DB PRESS plus) (Japanese Edition) (Kindle Locations 747-753). Kindle Edition

"老練な大工は、後で修正できないようなことはけっしてやらない"という一文に、そうだよなぁという気持ちになりました。

OOPSLA1996 での基調講演

OOPSLA(Object-Oriented Programming, Systems, Languages & Applications) 19961というオブジェクト指向プログラミングのシステム、言語、アプリケーションをシュダにしたカンファレンスで建築家のアレグザンダー氏が基調講演をされています

その中で次のような話がされたようです。

「生きた世界」(LivingWorld)はどのようにして生成され得るかという問題について扱いました。非常に興味深いことに、この問題は建築家や都市計画家ではなく、聴衆であるコンピュータ科学の領域に属する人々こそが答えを見つけることができるはずだ 江渡 浩一郎. パターン、Wiki、XP 時を超えた創造の原則 (WEB+DB PRESS plus) (Japanese Edition) (Kindle Locations 1990-1993). Kindle Edition

長い歴史のなかで、ひとつの答えを見つけるパスをコンピュータ科学の領域に呼びかけるという、学問はつながる瞬間があるのだなとぞわっとした感覚をもちました。

(主題の内容にはあまり触れなかった)

などと、主題を避けてピックアップしたところでも、各所で琴線に触れる内容で、とても面白かったです。

すごく人に伝えたかったので

第142回 PHP勉強会@東京で周辺の話もまとめた上でお話します。

ソフトウェア設計を少し学んでいる方々にとっては、「あの人がここに影響受けて、更にそれがあの人に繋がり、この概念にうぉぉぉ」という感動があります。まだ読んでないよ〜という方はぜひ読んでみてください!