• Like
The Timeless Way of Programming between Wiki and XP
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

The Timeless Way of Programming between Wiki and XP

  • 19,028 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
19,028
On SlideShare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
230
Comments
1
Likes
20

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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