ウィキペディアを「ウィキ」と略してはいけない
「ウィキ」は「wikiシステム」の「ウィキ」だからウィキペデアだけの物ではないのだ!
「wiki」ってどういう意味なんです?
カニンガムが作った「wikiシステム」を使って多くのサイトが作られたんじゃ!
現代のプログラマの仕事に大きくかかわることじゃから、詳しく説明しようかの~!
「Wikiシステム」を作ったウォード・カニンガム
世界中のボランティアによって編集されているインターネット百科事典「Wikipedia(ウィキペディア)」。
2001年に「ジミー・ウォール」と「ラリー・サンガー」によって公開され、ネットの集合知を集めるサイトとして人気を集め、たちまち世界各国語版が立ち上がりました。
このサイトを実現したのが、ウォード・カミンガムによって開発された「Wikiシステム」です。
ネットワークにつながった不特定多数のユーザーによる共同編集を前提としたこのシステムはウィキペディアのほかにも多くのサイトに利用されています。
カニンガムは現代のプログラミングに大きな影響を与える概念やメソッドを生み出したことでも有名です。
最も大きな貢献がオブジェクト指向プログラミングの黎明期に、建築の「パターン・ランゲージ」をソフトウェア開発へ応用したことです。
それは「wikiシステム」の開発にも大きくかかわっていました。
彼がどのようにしてこのシステムを作るに至ったか、詳しく見ていきましょう!
プログラミングの改革者カニンガム
ウォード・カニンガムこと「ハワード・G・カニンガム」は1949年5月26日、インディアナ州ミシガンシティで生まれました。
インディアナ州ハイランドで高校を卒業し、地元の州立総合大学であるパデュー大学に進学します。
ここでプログラマとしての技術を身に付け、コンピューターサイエンスの修士号を取得しました。
1978年に大学を卒業すると妻のカレンとともに、ソフトウェア開発とコンサルタントを手がける会社「カニンガム&カニンガム社」を設立します。
この時期、プログラミングやソフトウェアの世界は大きな変革期を迎えていました。
オブジェクト指向プログラミング
1980年代初頭、ゼロックスのパロアルト研究所のアラン・ケイが「オブジェクト指向プログラミング」を提唱しました。
それまでのプログラミング言語は「手続き型プログラミング言語」と呼ばれるものでした。
手続き型プログラミング言語はプログラムが「実行すべき命令や処理を、順番どおりに記述していくもの」で、代表的な言語にはCOBOLやC言語、Perlなどがあります。
コードを記述しやすく、習得に手間がかからないといったメリットがあります。
これに対し、オブジェクト指向は「相互に作用する『オブジェクト』を組み合わせてプログラムを設計する」方法です。
保守性が高く、再利用しやすいことから、プログラミング効率の良い言語です。
オブジェクト指向言語にはJava、PHP、Ruby、JavaScriptなどがあります。
カニンガムはこの新しいプログラミング法に魅了されました。
建築家アレグザンダーの「パターン・ランゲージ」
話は変わって「クリストファー・アレグザンダー」という有名な建築家がいます。
1970年代、彼は建築家が好き勝手に巨大なビルを立てていくような街づくりに異をとなえました。
彼にとって、街とはそこに暮らす人々が、居心地が良くするため、小さな広場が作り出したり、ちょっとしたベンチを置いたりして、自然に出来上がっていくべきものでした。
そのように街が生成されていく過程で繰り返し現れてくる「パターン」があることに彼は気づきました。
彼は「パターン」をいくつも見出し、それを体系的にまとめて「ランゲージ(言語)」を生み出す、「パターン・ランゲージ」という概念を提唱しました。
アレグザンダーは、人々が「心地よい」と感じる環境を分析して253のパターンを抽出し、活用しやすい辞書のような形にまとめました。
この「パターン」をもとに住民参加型の街づくりを実現する。
カニンガムはこのコンセプトを知り、ソフトウェア開発にも生かせるのではないかと考えました。
「パターン・ランゲージ」をソフトウェア開発に応用
オブジェクト指向プログラミングでも、問題解決の方法にはいくつかの類型があります。
それを再利用可能な「パターン」としてストックしていけば、プログラミングはより効率的になるのではないか。
そして実際に出来上がったプログラムを使用するユーザーに参加してもらい、要望を聞き取りながらプログラミングを行う。
彼はこの考え方を進め、オブジェクト指向プログラミングの会議「OOPSLA」で、共同研究者の「ケント・ベッグ」とともに発表します。
1987年に開催された第二回目のOOPSLAで「オブジェクト指向プログラムのためのパターン・ランゲージの使用」という論文も出しています。
「パターン・ランゲージ」という、ちょっと難しい概念が出てきたが、これが元となってプログラムにおける「デザイン・パターン」が生まれたんじゃ
そのためにはパターンを集めるツールが必要になったんじゃ
画期的なデータベースシステム「ハイパーカード」の登場
ちょうどこのころは「GUI(グラフィック・ユーザー・インターフェース)」が登場し始めました。
ソフトウェア開発の上でもインターフェースの設計は重要事項となります。
カニンガムは、ユーザーにとって使い勝手の良い設計を効率的に行うために、デザイン・パターンの収集を始めました。
そのために、格好のソフトウェアが登場します。
ハイパーテキストを実装したカード型のデーターベースソフト、「ハイパーカード」です。
ビル・アトキンソンの「ハイパーカード」
「ハイパーカード」は1987年にリリースされたAppleのMacintosh用のデータベースシステムです。
「HyperTalk」というスクリプト言語が内蔵され、ドキュメント作成やデータベース構築が可能でした。
テキスト以外にも画像や動画、音声なども張り付けることができます。
そして重要なのは、カードから別のカードへリンクを貼る機能です。
開発者は「ビル・アトキンソン」。
Appleで Lisa や Macintosh といった革新的なコンピュータの開発プロジェクトに携わったエンジニアで、ハイパーカードのほかにも QuickDraw や MacPaint なども開発しています。
ハイパーカードを使ったデザイン・パターンの収集
カニンガムは、早速、ハイパーカードを使って、自分が発見したプログラミング・パターンを整理するためにパターン・ブラウザを作り始めます。
カードに説明文と図、関連カードへのリンクを挿入し、メニューを選ぶと画面上で編集できます。
ハイパーカードで作られたファイルは「スタック」と呼ばれ、これを複数人で編集する実験もしました。
誰かが編集すると、自動的に編集記録は別のカードに残り、リンクが張られます。
その履歴カードを見れば誰がどのように編集したか分かるようになっていました。
今日のウィキペディアの基本的システムと同じ機能が実現したのです。
これを発展させたものが後に「Wikiシステム」となるのです。
アラン・ケイが提唱し、ジョブズが夢見ていた「コンピュータで動画や音楽を扱う」というマルチメディア化の先駆けでもあったんじゃ
WikiWikiWebの誕生
1990年代にはいると、インターネットが普及し始めます。
ウェブサイトが開設され、それを見るためのウェブブラウザも広まったことで、インターネットは一般の人でも手軽に利用できるものとなっていきました。
しかし、初期のウェブページは静的なもので、情報は送り手から受け手へ一方通行でした。
1993年12月、ユーザーが入力したデータを処理してページに反映する「CGI (Common Gateway Interface)」という仕組みを備えた「NCSA httpd 1.0」というWebサーバが登場します。
これにより、カニンガムがハイパーカードで行っていた、デザイン・パターンの編纂をインターネットに移行しようと考えます。
ネットを通じた双方向のコミュニケーションが実現
1995年、カニンガムは Perl と CGI を使って、デザイン・パターンの共同編集を行えるサイト「Portland Pattern Repository」をオープンします。
サイト名は彼が住んでいたポートランドの「パターン貯蔵庫」という意味です。
パターンについて議論するためのメーリングリストを通じてアナウンスをしたことで、多くの人が集まりました。
そこはパターンの共同編集だけでなく、コミュニケーションの場としても機能しました。
ハワイ語から命名
これを実現したプログラムはPealで書かれ、ソースコードはわずか331行でした。
「Portland Pattern Repository」というのはあくまでパターンを収集、議論するサイトの名前なので、それを動かすプログラムには別の名前を付けることにしました。
「quick(素早く)に更新できるサイト」なので「QuickWeb」でもよかったのですが、それでは味気ないということでハワイ語で「素早い」という意味の言葉を使って「WikiWikiWeb」としました。
ハワイのホノルル国際空港(現在はダニエル・K・イノウエ国際空港)内を走っていた「Wiki Wiki Shuttle」というバスから着想を得た命名です。
「WikiWikiWeb」を動かすシステムは「WikiBase」や「ウィキエンジン」とも呼ばれています。
やっぱり「WikiWiki」って言葉が変わった響きだからこそ広まったんじゃないですか?
「QuickWeb」じゃ、イメージ湧きにくいじゃろうな…
カニンガムの法則
カニンガムはWikiシステムで儲けようとは思わず、多くの人に使ってもらおうと、フリーウェアとして公開しました。
これを使って作られたのが「ウィキペディア」です。
設立者のジミー・ウォールは2000年3月に「ヌーペディア」というインターネット百科事典を開設した人物です。
ヌーペディアは無料の閲覧、ボランティアの専門家による執筆と査読といった特徴を持っていましたが、更新が遅くあまり人気にはなりませんでした。
ヌーペディアの編集主幹のラリー・サンガーはWikiを使った、より更新しやすい別のネット百科事典の開設をジミー・ウォールに進言します。
そこで、2001年1月、ヌーペディアを補足するサイトとして「ウィキペディア」がオープンします。
遅々として更新が進まないヌーペディアを尻目に、ウィキペディアはあっという間に規模の面でヌーペディアを圧倒します。
意外なほどの高精度
最初は英語版からスタートしたウィキペディアも20年を経て、325言語、5400万項目という膨大なサイズまで膨れ上がりました。
当初は「素人が編纂する百科事典」と揶揄され、ブリタニカ百科事典などの歴史と権威ある百科事典と比べ低く見られていました。
しかし、2005年の「ネイチャー」誌による調査では、「英語版のウィキはブリタニカと比較して、間違いの数で変わらない」という結果でした。
なぜ専門家による百科事典に負けないほど精度が高まったのでしょう。
間違った投稿をすれば正解を得られる?
精度が高い理由は
インターネット上で正しい答えを得る最良の方法は質問することではなく、間違った答えを書くことである
という言葉で言いあらわされています。
これは、1980年代にカニンガムと仕事をしていた、インテルの元幹部「スティーブン・マクギーディ」が提唱した法則です。
人は、「○○について教えてください」と言われてもめんどくさがって簡単には答えません。
しかし、ネット上で「間違った回答」を見つけると、正しい答えを知っている人は「それは間違っている」と声を上げずにはいられなくなってしまうものです。
フランス語に
「precher le faux pour savoir le vrai(偽りを説いて真実を知る)」
という表現がありますが、昔から人は「間違った主張」には黙っていられないもののようです。
「カニンガムの法則」はカニンガム自身が提唱した言葉ではありませんが、情報の送り手と受け手の共創により正解を導き出すという手法は、まさに彼が追求し続けた方法論です。
この場合はどう聞けばいいですか?
人は他人の間違いをスルーできない生き物ですもんね!
カニンガムが生み出した概念と影響
このようにカニンガムは実践的な方法でオブジェクト指向プログラミングを普及させ、洗練させていきました。
デザイン・パターンの他にも、現代のプログラミングに大きな影響を及ぼした概念をいくつも生み出しています。
オブジェクト指向ソフトウェア設計で使われるブレインストーミングツール「CRCカード」。
アジャイル開発の中心的な手法である「エクストリーム・プログラミング(XP)」。
手間を惜しんだばかりに、後々大きな追加コストを支払う羽目になる「技術的負債」。
これらはすべてカニンガムが生み出し、広めた概念です。
それらには、顧客も開発者も積極的に参画し、フィードバックを得ながら顧客の求めと実際の機能のギャップを埋めていくという、ウィキペディアにも通じる考え方が根底にあります。
彼が生み出した「Wiki」は単なるサイトでもプログラムでもなく、ひとつの思想です。
カニンガムは「Wikiとはどのようなものですか?」という質問に対し、こう答えています。
見知らぬ人が集まり、お互いを信頼して、一人では作成できなかったものを作成する。それが『wiki』です。
自律的に成長していく素晴らしいシステムといえるな!
日本語版の場合、登録者が約200万人で、アクティブユーザーはそのうち15,000人ほどと、統計データに出ておるな
ここはひとつ私も参加して精度アップに貢献してきます!🔥
あとな、ウィキペディアには「自分の組織について編集しない」というガイドラインがあるからムダじゃ!