Tag Archives: 江渡浩一郎

「パターン、Wiki、XP」

0
Filed under
Tagged as , ,

江渡浩一郎さんの「パターン、Wiki、XP」を読み終えました。
当初期待していたことの斜め上を行かれた感じで、楽しく読めました。
読みながらいろいろ考えたことをちょっとメモしておきたいと思います。

私とWiki

Wikiっていう言葉と概念を理解し、考えるのに役立つんじゃないかと思って買って読みました。
個人的にはLotus Notes的な考え方で、Wiki的なツールをいくつか使い続けているのですが、どうにもコレが正解、というのが分からず、なんやかんやと試行錯誤しながら使い続けています。
それでもExcelとかのローカルドキュメントよりは全く使い勝手がよく、また複数人数での作業進捗管理とかも把握しやすいとかは感じているのですが、そのWiki的な魅力ってなんだかもやもやしていて、これをこうつかえるからすごいんだよ!となかなか言えないもどかしさも感じていました。
そこで、Wikiとは結局こういう概念なんだよ、と教えてくれるのでは?とそういう淡い期待を持って本書のページを繰りはじめた次第なのです。
ちなみに今仕事用に使っているのはFreeStyle Wiki(通称FSWiki)というWikiですが、他にもPukiWikiをインストールしてたり、@wikiとかいうサービスを使ったこともあります。

建築とソフトウェア

本書の第1部のタイトルは「建築」、そして第1章のタイトルは「クリストファー・アレグザンダーによる美の原理の追求」です。ソフトウェアの話の本じゃなかったっけ?と表紙を確認したくなるような展開にいきなり驚かされます。
しかし、著者である江渡さんは、Wikiの本質を探るうちに建築家クリストファー・アレグザンダーの思想にたどり着いたというのです。本書は、その到達点から現在へと流れていく一つの思想を追いかける話となっています。

アレグザンダー、セミラティス構造

アレグザンダーという人は知らなかったのですが、彼の試行錯誤していく様子が、かつて自分もソフトウェア開発で経験したことがある苦悩に似ていたりして、勝手に親近感をもつことが出来ました。
それが、本書の20ページの「「都市はツリーではない」―多様な関係性の発見」という項目で語られている「ツリー構造」の限界を知るアレグザンダーです。
初期のアレグザンダーは、形状を要素に分けていくと、それがツリー状になっていることから、システムはトップダウンで要素を分解していくと設計が出来る、みたいな思想になっていました。しかし、その論文を発表した翌年、都市計画でその行き詰まりを感じたアレグザンダーは「ツリー構造」に対する言葉として「セミラティス構造」という言葉を使い、複雑に絡み合った都市を説明するようになるのです。
こういう苦悩って、オブジェクト指向を知った直後にハマる道と一緒だと思ったのです。

ソフトウェアにおけるセミラティス構造

オブジェクト指向ではまず最初にオブジェクトの元となるクラスを定義する必要があります。
そのため全体を眺めて大体のクラス設計の当たりを付け、そこから設計を開始するというのが普通ではないでしょうか?
そして、しばらく設計(and/or 開発)を進めていると、どうしてもクラスをまたいだ設計が必要になってくる。それが「(多重)継承」だったり「テンプレート」だったり「デザインパターン」だったりする概念のもとのような気がするのです。
重要なのは「開発のターゲットとなっている構造が「セミラティス構造」であると分かってやるかどうか」だと思うのです。ただ単に「複雑な構造」と言ってしまうのとは違います。そういう気構えで設計を進めると、オブジェクト/クラスの構造で分けるべき部分と、デザインパターンで繋げるべき部分などがよく見えてくるような気がするのです。
個人的にはこの「セミラティス構造」という言葉にかなりインパクトを感じられました。

そして、XP、Wikiの世界へ

以上のような話はまだまだ第1部の第1章までの話です。
第1部では、この後、アレグザンダーが「6つの原理」を定義したり、建築の「パターンランゲージ」という概念を作り出したり、という話が続きす。
第2部でいよいよソフトウェアの話になっていき、デザインパターン、XP、そして第3章でWikiの話へと続いていきます。
こういう風にきっちりとまとめられると、無駄に歴史を感じてしまい、「昔話」的に思いがちですが、冷静に年号を見ると、まだまだ最近の出来事。AppleのSteve JobsがPARCでAlto上で動くGUIを見てからまだ30年経っていないし、Macintoshが発売されてから25年しか経っていないのです!!
ということはこのときから今までの25年での変化がこれから先に起きることは十分考えられるわけで、むしろそれ以上の変化があるかもしれません。
そんな未来に思いをはせて、コンピュータ業界、ソフトウェア開発の未来にちょっと期待を持てるような気になる一冊です。