Wiki と XP とととと ととととと ととととととととと とととととと ととととととととと ととととととと ととととととととと ととと と 一
Wikiと XPをつなぐ時を超えたプログラミングの道
独立行政法人 産業技術総合研究所 東京大学大学院 情報理工学系研究科江渡浩一郎
アジェンダ
Wikiの現状:Wikiとは何か,Wikiを巡る混乱Wikiの起源:建築におけるパターンランゲージパターンの応用:プログラミングでの利用へWikiの誕生:Wikiによる文芸的プログラミング
Wikiの進化:コミュニケーションパターンの誕生
Wikiと私の関係
4年間に渡りWikiの研究を続けている2002年 11月,Wikiに興味を持つ2003年 4月,芸大の授業にWikiを取り入れる2003年 8月,Wikiエンジン qwikWebを開発2005年,国際Wikiシンポジウム (WikiSym)で発表
2006年,未来心理にてWiki論文を公開なぜそんなにWikiに注力しているのか
Wikiの現状
Wikiとは何か
Web上のコラボレーション・システム複数人で一つのWebサイトを共同編集できるブラウザから新しいページを作り,編集できるページからページへのリンクを作るのも簡単とてもシンプルでわかりやすいしかし,Wikiをとりまく現状は混乱している
WikipediaをWikiと呼んでいいか
Wikipediaを略してWikiと呼ぶ人がいるWikipediaをWikiと呼ぶなと言う人がいるなぜ駄目なのか,その答えはどこにあるのかWikiはシステムの名前,
Wikipediaは固有名詞だから少年マガジンをマガジンと略してもいいか「システムの名前と混乱するから」では理由にならない
Wikiとブログはどう違うか
Wikiとブログの境目はどこにあるのかWebサイトを作るための仕組みという点では同じ
ブログは一人で書く,Wikiはみんなで書くみんなでブログ,一人でWikiもありうるはずだWikiをブログとして,ブログをWikiとして使う
Wikiやブログはシステムの名前なのか,機能の名前なのか,使い方の名前なのか
Wikiとは何でないか
ブラウザ上でページを編集できればみんなWikiか
ブログもWiki ? 掲示板もWiki ? SNSもWiki?
Wikiに明確な区分を与えることはできるのかWikiを正確に定義することは非常に難しい
Wikiをどう使えばいいのか
Wikiを立ち上げた.どう使えばいいの ?
システムは何も言わない.途方にくれてしまう暗黙のうちに規定された使い方が存在しないWikiとは何かという問いと密接に関わってくる
Wikiの起源
Wikiの発祥を探る
Wikiの発祥を探り,Wikiとは何かを明らかにする
1964年,形の合成に関するノート1977年,パターンランゲージの誕生1987年,パターンのプログラミングへの導入1995年,WikiWikiWebの誕生
クリストファー・アレグザンダー
建築家,パターンランゲージを提唱
元々数学を専攻,後に建築に進む
建築における発注者との受注者の関係を見直した
デザインプロセスの数学的な形式化
「形の合成に関するノート」 , 1964
デザインプロセスを数学的条件の集合に還元するヤカン:水を入れられる,持ち手がある,置ける,丈夫で安く作りたい,見た目を良くする
個々の条件間に相関・相反する関係が成り立つ条件を満す解を探すプロセスがデザインとなる
都市計画への展開
「ヤカン」を「タウン」にすれば都市計画になる
「都市はツリーではない」 , 1965
自然都市と人工都市の比較・分析を行った人間の認識能力の限界から,人工都市は必然的にツリー構造になる
複数の主体が都市の生成に関与し続けることで,自然都市はセミラティス構造を持つことになる
数学的分析によるデザインの限界
複数の主体によって生成される建築
一つの建築もまた都市と同様に作られるべきだ建築を利用する主体が建築の生成に関与し続ける
建築家の役割:利用者が設計に参加可能にする利用者を手助けするのが建築家の役目となるパターンランゲージはそのための道具つまり根幹には「利用者の設計への参加」がある
パターンランゲージの誕生
C. Alexander, "A Pattern Language", 1977
発注者と受注者の垣根を埋めるための共通言語アレグザンダー氏は,家やオフィスというものは,実際にそこにいる人たちの手によって設計され,作られるべきだと提案している.
氏がこう結論付けたのは,ある特定の構造への要求を一番よく知っているのは,彼ら自身だからだ.
[Kent87]より引用
パターンランゲージとは
建築において繰り返し登場する 253のパターンをある定まったフォーマットで記述
パターンは互いに関連,連携し合い,1つの大きなゆるやかな体系をなしている →身の回りにあるものから要素を抽出 デザイン
→繰り返し登場するものを汎用化 パターン化
253 →個のパターン群 パタン・ランゲージ
http://gc.sfc.keio.ac.jp/class/2005_22687/slides/10/4.html
パターンランゲージのカテゴリ
町 (1-94) 自立地域,農業渓谷,田舎町,田園,小高い場所,環状道路,都市の魔力,つながった遊び場,カーニバル,聖域 ...
建物 (95-204) 複合建物,小さな駐車場,通りぬけ街路,つながった建物,座れる階段,夫婦の領土,子供の領土,くるま座,ざこ寝 ...
施工 (205-253) 生活空間にしたがう構造,無駄のない構造,ボックス柱,屋根窓,さわれる花,つる植物,すき間だらけの舗石,自分を語る小物 ...
http://gc.sfc.keio.ac.jp/class/2005_22687/slides/10/5.html
パターンの意味
パターン:「繰り返しによる模様」ではないヒマワリの花,乾いた泥の中のひびわれ自然に潜む一定の形態を生み出すルール個々の形ではなく,形を生み出すルールに着目
ランゲージの意味
ランゲージ:「文字による言語」ではない文字,単語,文,段落,節,文章,本,百科事典
様々な大きさの要素の有機的な関係性の集合数学における条件の集合との対比で捉える厳密な数式とは違い,本質的に曖昧性を含む
パターンランゲージの意味
建築でしばしば登場する形を生み出すルールを,言語的な関連性において集めた物
厳密な定義から,意図的な曖昧性の導入へ数学的な還元プロセスからの「転回」
時を超えた建設の道
生きている花をつくろうとすれば,ピンセットで細胞を一つ一つ物理的に組み立てるのではなく,種から育てるであろう.
そして,花の部分の全一性に遺伝情報が必要なように,建物や町にもそれが必要である.
結局,それは言語(ランゲージ)のような形で存在することがわかる.
「時を超えた建設の道」 , 1993
様々なレイヤでの関係性の改善
「パタン・ランゲージによる住まいづくり」日本の建築家中埜博氏による記録
実際に家を立てる場所で,原寸大の設計を行う地面に杭を打って原寸大の図面を引く家具と同じ大きさの段ボールを配置するその場で建築するという発想
パターンランゲージは単なる事例集ではない様々なレイヤでの関係性改善への取組みの集合
パターンの応用
ウォード・カニンガムウォード・カニンガムWikiWikiの開発者,現在の開発者,現在 Eclipse FoundationEclipse Foundation
http://www.flickr.com/photos/benfrantzdale/208672143/
パターン言語のプログラミングへの導入
OOPSLA,オブジェクト指向についての学会第 2 回 OOPSLA-87,ケント・ベックとウォードによる論文発表
「オブジェクト指向プログラムのためのパターン言語の使用」
オブジェクト指向設計にパターン言語を導入現在のデザインパターンにつながる記念碑的論文
オブジェクト指向の勃興
オブジェクト指向という方法論の誕生ソフトウェア開発の改善手法,熱烈な歓迎ソフトウェアの動作 (ロジック )と操作手法 (インタフェース )の分離
GUI設計という発想が生まれるインタフェースをどうやって設計すればいいのか利用者がどうソフトウェアを利用したいかによるパターンランゲージを使うという発想につながる
最初のパターンの姿
→使いやすいシステム ユーザが自分で設計するまさしくパターンランゲージの応用である
コンピュータ・ユーザーは,自分自身のプログラムを書くべきなのである.
インタフェースにおけるパターン
GUIの設計においてパターンを考えるこれを元にユーザーが自分で設計する非常に使いやすいシステムを作ることができた
1. タスクごとのウィンドウ (Window Per Task)2. ウィンドウに対してペインはできるだけ少な
く (Few Panes Per Window)3. 標準ペイン (Standard Panes)4. 短いメニュー (Short Menus)5. 名詞と動詞 (Nouns and Verbs)
Wikiの前身
1987年,HyperCardの誕生
1984年, Apple社より「Macintosh」が発売1987年, HyperCardの公開カード型のデータベースソフトHyperTalkによってスクリプト可能だったスクリプトとカードをペアで「スタック」と呼ぶ
ウォードは HyperCardに衝撃を受けた彼は HyperCardでパターン・ブラウザを作った
Apple社のケント・ベック
1987年,ケント・ベックは Apple社勤務アラン・ケイの元で Vivarium projectに従事同時期にビル・アトキンソンがWildCardを開発
後に HyperCardとして公開されるウォードは発売前から HyperCardを知っていた
HyperCardの画面
HyperCardの画面
CamelCaseによるタイトル
CamelCaseによるタイトル
カード間のリンクカード間のリンク
図を挿入できる図を挿入できる
HyperCardの画面例からわかること
CamelCaseによるタイトル表記名前と記述とリンクの要素を持つカードの右側にカード間のリンク一覧文中へのリンクの埋め込みは存在しない図を挿入できるWYSIWYGでその場でページ編集可能矢印によるページ移動
HyperCardによるパターンの収集
HyperCardのスタックとしてブラウザを実装このスタックにパターンを収集していった複数人で共有する実験も行った自動的に更新が RecentChangesに記録されるPatterns MLを中心としたコミュニティPortland Pattern Repository (PPR)へと発展
Wikiの誕生
WikiWikiWebの誕生
1991年,World Wide Webの誕生1993年, NCSA Mosaicの誕生, 12月, CGIの誕生
1995年,WikiWikiWebの誕生HyperCardの内容を元にWebサイトを立ち上げた
ブラウザ上で共同で編集できる仕組みを導入したそのWebサイトをWikiWikiWebと名付けたつまり,WikiWikiWebは固有名詞だった以降,混乱を避けるために C2 Wikiと呼ぶ
WikiBase: 一番最初のWikiエンジン
1995年,WikiBaseの実装HyperCardからWebへの進化CamelCaseによるリンクの発明ソースコードは 331行と非常に短い最初のWikiの姿は今も見ることができる
Wikiによる文芸的プログラミング
文芸的プログラミング by Donald Knuth文章にプログラムを埋め込むことで一体化する
HyperPerl, Wikiによる文芸的プログラミングWikiサイトにプログラムを埋め込む
WikiBaseは HyperPerlで書かれていたつまり,WikiはWikiで書かれていた
WikiはWikiで書かれていた
一番最初のWikiはどうやって書かれたの ?最初の一回は手で書いたのだろうCコンパイラは C言語で書かれているのと同じ
誰でもコードを編集できる ? セキュリティは ?全自動でスクリプトが書き換わるわけではないシンプルなコードが最大の防御になっている
プログラムとしてのWikiサイト
一つのWikiサイトが一つのプログラムになるつまり実はWikiサイトは一つのプログラムである
「人の行動のプログラム」をみんなで共同編集そう考えると,Wikiとは何かが納得できる
Wikiの進化
コミュニケーション・パターン実践の場
HyperCardからWikiWikiWebへの進化 →最大の変化 ネットに接続されるようになった情報蓄積と同時に情報交換が行われる不特定多数のユーザが共同でパターンを収集する
コミュニケーションの場へと発展したパターンを収集する方法についてのパターン,メタ・パターンについても収集
コミュニケーション・パターンの誕生
ページ作成にかかわるルール
Thread Mode: 署名つきでの意見交換各自の意見を元に議論をし,蓄積する
Document Mode: 客観的な記述による文書第三者に向けて無記名で書かれる
C2 Wikiでは Document Modeが目標
Thread Modeによる蓄積を Documentへと昇華
Wikipediaの誕生
2001年,Wikipediaプロジェクト開始共同で百科事典を構築するのが目的
Talk:という NameSpaceの導入Thread Modeと Document Modeの明確な分離
この分離がWikipediaの最大の利点ではないか
コミュニケーションパターンを実践している
XP
エクストリーム・エクストリーム・プログラミングプログラミング
ケント・ベックとケント・ベックとウォードの二人が提唱ウォードの二人が提唱
エクストリーム・プログラミング
日本語に直訳すると「極端プログラミング」ずっとコード・レビューし続ける→ペア・プログラミング本体より先にテストを書く→テスト・ファースト
設計者と利用者の関係を見直す
設計者と利用者の間のバランスをとる→利用者が自分で自分の世界を設計する
第 23章「時を超えたプログラミングの道」XP →の目的 利用者と開発者の関係を見直し,新たな社会構造を作る
利用者が同時に開発者でもあるという極端なコンセプトにおいてWikiと共通している
→パターンランゲージの応用 Wikiと XP
つまり,Wikiと XPは分野を超えた兄弟である
Wikiの本質
Wikiの本質とは
Wikiとパターンランゲージは密接な関係にあるプログラミングとWikiも密接な関係にあるWikiはコミュニケーション・パターン実践の場つまりWikiの本質とは「コミュニケーションへのパターンの導入」ではないか
WikipediaをWikiと呼んでいいか
駄目.Wikiがシステムの名前だからではないWikiはかつて固有名詞だったからSONYのWalkmanは後に一般名詞化した「東芝のWalkman, PanasonicのWalkman」などなど
再固有名詞化が許されるか「Walkmanといえば東芝」という状況が許されるか
ブログとWikiの境目はどこにあるか
ブログとWikiの境目はデータの中身にある機能の違いではなく,システムの使い方の違いThread Modeと Document Modeの違いがあるか
コミュニケーション・パターンを実践しているか
Wikiを使いこなすためには
プログラムを共同編集するようにWikiを使うページ名はクラス名のようにつけるコードと同じく,文章も共同所有するリファクタリングをすることが重要
まとめ
Wikiの本質とは,「コミュニケーション・パターンの実践」である
利用者が同時に開発者でもあるような社会構造へ向けての運動である
これからもWikiと XPの関係に注目していきたい
qwikWeb (2003)
メーリングリストとWikiを組み合わせたコミュニケーションシステム
http://qwik.jp/