狠狠撸

狠狠撸Share a Scribd company logo
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
様々なレイヤでの関係性の改善 「パタン?ランゲージによる住まいづくり」 日本の建築家中埜博氏による記録 実際に家を立てる場所で,原寸大の設計を行う 地面に杭を打って原寸大の図面を引く 家具と同じ大きさの段ボールを配置する その場で建築するという発想 パターンランゲージは単なる事例集ではない 様々なレイヤでの関係性改善への取組みの集合
パターンの応用
ウォード?カニンガム Wiki の開発者,現在 Eclipse 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 によるタイトル カード間のリンク 図を挿入できる
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/

More Related Content

The Timeless Way of Programming between Wiki and XP