3行でいうと
- 少数で閉じて作る「伽藍」と、公開して多数で磨く「バザール」を対比した
- 「目玉の数さえ十分あれば、どんなバグも深刻ではない」というリーナスの法則
- 未完成でも早く、頻繁に公開し、利用者を共同開発者として扱う
- 表題論考は19の格言でまとめられ、併録エッセイが所有の規範や経済も論じる
向いている人
オープンソース開発の考え方や、その歴史を知りたい人。チームの開発の進め方に、公開とフィードバックの発想を取り入れたい人。
読む意味
GitHubなどに代表される現在のオープンソース開発文化の、考え方の源流の一つを知ることができます。「早く出して直す」という発想は、アジャイル開発にも通じます。
読むときの注意
1990年代末の論考で、バザール方式がいつも成功するとは限りません。書籍版にどの論考が収録されているかは、日本語版ごとに確認が必要です。
どんな本か
オープンソース運動の理論的な指導者の一人、エリック・レイモンドの論考で、1997年に発表され、1999年に他のエッセイとともに書籍になりました。ソフトウェア開発の二つのモデルを対比します。少数の開発者が閉じた環境で計画的に作り込み、完成してから公開する「伽藍」と、開発の途中から公開し、不特定多数の協力者が分散して改良を重ねる「バザール」です。レイモンドは、リーナス・トーバルズによるLinuxカーネルの開発を後者の典型として観察し、自分で保守したメールの取得ツールfetchmailを実験台に、バザール方式は代わりになるだけでなく、より良い結果を生みうると論じました。
最もよく引かれるのが「リーナスの法則」です。コードを公開して多くの人に見てもらえば、一人で長く探しても見つからないバグも、多数の視点からは素早く見つかる、という主張です。それを支える実践が「早期リリース、頻繁なリリース」で、ユーザーのフィードバックを設計に取り込み続けます。賢いデータ構造と単純なコードのほうが、その逆よりずっと良い、といった実務の教訓も含まれます。
論考は19の格言で整理されています。書籍には、オープンソースの世界で功績を尊重する社会的な規範を分析した「ノウアスフィアの開墾」や、ソースを公開しながら事業として成り立たせる方法を論じた「魔法の鍋」なども併録されるとされます。1998年にNetscapeがブラウザのソースコードを公開する決定にも、この論考が影響したと伝えられます。
中身の柱
- 表題論考:伽藍方式とバザール方式の対比と、リーナスの法則
- 実践の原則:早期リリース、頻繁なリリース。利用者を共同開発者にする
- 設計の教訓:賢いデータ構造と、愚かなコード
- 事例:Linuxカーネルとfetchmail、そしてNetscapeのソース公開
- 併録エッセイ:ノウアスフィアの開墾、魔法の鍋、ハッカーの逆襲など
書評データベースの全文を読む
概要
『伽藍とバザール』は、1957年12月4日マサチューセッツ州ボストン生まれで幼少期をベネズエラで過ごし1971年にペンシルベニア州へ移り、ペンシルベニア大学に学び、1980年から1985年にかけて商用ソフトウェアの開発者としてキャリアを始め、1990年にはおよそ1983年から更新が途絶えていた用語集「ジャーゴンファイル」の保守を引き継いで『新ハッカーズ辞典』として出版し、1996年にはオープンソースのメールソフト「popclient」の開発を引き継いでfetchmailと改称したプログラマーでオープンソース運動の理論的指導者の一人であるエリック・S・レイモンドが著した論考であり、1997年5月にリナックス・コングレスで初めて発表され、1999年にO'Reilly Mediaから他のエッセイと合わせて書籍として刊行された。表題の論考は、ソフトウェア開発における2つの対照的なモデルを対比する。少数の開発者が閉じた環境で計画的にコードを完成させてから公開する「伽藍(カテドラル)」方式と、開発途上のコードをインターネット上で早期から公開し、不特定多数の協力者による分散的な改良を積み重ねていく「バザール」方式である。レイモンドはリーナス・トーバルズによるLinuxカーネルの開発を後者の典型例として観察し、さらに自ら開発・保守していたメール受信ツール「fetchmail」の開発過程を実験台として、バザール方式が単に代替可能であるだけでなく、伽藍方式より優れた結果を生み得ることを論証しようとした。
本の構成
書籍版は表題論考「伽藍とバザール」を中心に、関連する複数のエッセイを収録している。代表的な併録エッセイに、オープンソースコミュニティにおける評判や所有権の規範を論じた「ノウアスフィアの開墾(Homesteading the Noosphere)」、オープンソースの経済合理性を論じた「魔法の鍋(The Magic Cauldron)」、1998年前後の「オープンソース」という語の誕生とNetscapeによるブラウザのソースコード公開の経緯を扱った「ハッカーの逆襲(Revenge of the Hackers)」などがある。表題論考自体は、19の格言(レッスン)の形で結論が整理されており、実践的なガイドとしても参照しやすい構成になっている。
主要な内容
レイモンドの中心的主張は、大聖堂(伽藍)のように少数の熟練建築家が緻密な設計図に基づいて建てるソフトウェア開発と、中東の市場(バザール)のように無数の売り手と買い手が雑然と、しかし結果として秩序だった取引を成立させる場のようなソフトウェア開発を対比するところから始まる。従来のソフトウェア工学の常識は、大規模で複雑なシステムほど慎重な中央集権的計画と少数精鋭のチームが必要だと考えてきたが、リーナス・トーバルズが率いたLinuxカーネルの開発は、頻繁なリリースと膨大な数のボランティア共同開発者への呼びかけによって、その常識を覆すように見えたとレイモンドは指摘する。
本書で最も広く引用される命題が「リーナスの法則(Linus's Law)」であり、「目玉の数さえ十分あれば、どんなバグも深刻ではない(Given enough eyeballs, all bugs are shallow)」と定式化される。これは、コードを公開し多くの人にレビューさせることで、一人の天才が長時間かけて発見するような深刻なバグも、多数の視点からは表面的な問題として素早く発見・修正されるという主張である。この法則を実現するための実践原則が「早期リリース、頻繁なリリース(Release early, release often)」であり、未完成であっても定期的に成果物を公開し、ユーザーからのフィードバックを設計プロセスに組み込み続けることで開発速度と品質の両方が向上するとされる。
レイモンドはまた、オープンソース開発における参加者を単なる「テスター」ではなく「共同開発者(co-developer)」として扱うことの重要性を強調する。ユーザーに対して開発の初期段階から透明性を持ってコードとロードマップを共有し、彼らの多様な使用環境・視点をバグ発見や機能改善に活かすことが、閉鎖的な開発体制では得られない品質向上をもたらすという考え方である。加えて「賢いデータ構造と愚かなコードのほうが、その逆よりずっと良い」という格言に代表されるように、優れた設計は複雑なアルゴリズムよりもまずデータ構造の設計から始めるべきだという実務的な教訓も語られる。
併録エッセイ「ノウアスフィアの開墾」では、オープンソースソフトウェアの世界には正式な法的所有権制度が存在しないにもかかわらず、実際には「最初にプロジェクトを立ち上げた者」「保守を引き継いだ者」の功績を尊重する強固な社会的規範(いわば開拓地の土地所有規範に似た慣習)が機能していることを人類学的な視点から分析する。「魔法の鍋」では、ソースコードを無償公開しながらどのようにビジネスとして持続可能なモデルを構築できるかを論じ、サポートサービス、ブランド価値、間接的な収益化など複数の経済モデルを提示する。
具体例
最大の事例はリーナス・トーバルズが1991年に開発を始めたLinuxカーネルであり、当初は個人の趣味的なプロジェクトだったものが、ソースコードの早期公開と世界中のボランティア開発者からのパッチ提供の積み重ねによって、商用UNIXに匹敵する堅牢なOSカーネルへと成長した過程が繰り返し参照される。レイモンド自身が開発したfetchmail(POP/IMAPメールをローカルに転送するユーティリティ)の開発記録も詳細な実証事例として提示され、レイモンドが意図的にバザール方式を模倣して開発者コミュニティを募り、短期間で機能拡張とバグ修正が進んだ様子が記録されている。もう一つの重要な事例が、1998年1月にNetscape Communications社がブラウザ「Netscape Communicator」のソースコードを公開し、後のMozilla/Firefoxにつながるプロジェクトを開始した出来事である。レイモンドの論考はこの意思決定に直接的な影響を与えたとされ、同時期に「オープンソース」という用語がフリーソフトウェア財団の「フリーソフトウェア」という語に代わる、より企業に受け入れられやすい呼称として提唱される契機にもなった。
実践への応用
ソフトウェア開発チームにとって本書から得られる実践的教訓は、まず開発初期段階からコードやプロトタイプを積極的に公開し、外部のフィードバックを取り込むサイクルを短くすることの有効性である。社内開発であっても、機能を少人数で完成させてから大々的に公開する「伽藍」型のプロセスより、未完成な段階で継続的に共有し反復的に改善する「バザール」型のプロセスの方が、問題の早期発見という点で優位になり得る。オープンソースプロジェクトの運営に携わる場合には、貢献者を単なる利用者としてではなく共同開発者として遇し、貢献に対する功績(クレジット)を明確に認める文化を作ることが、コミュニティの持続的な活性化につながるという指針も導かれる。また「まず動くシンプルな実装を作り、その後で最適化する」という発想は、アジャイル開発における反復的リリースの考え方の先駆けとしても実務に応用できる。
位置づけ・評価
本書は、フリーソフトウェア運動の理念的な議論から一歩進めて、オープンソース開発の実証的・経営学的な分析を行った先駆的著作として、ソフトウェア工学とオープンソース運動史の双方で高く評価されている。1998年のNetscapeによるソースコード公開への影響、および「オープンソース」という用語自体の普及を後押しした点で、フリーソフトウェア財団の創設者リチャード・ストールマンが唱える倫理的側面を強調する立場とは異なる、実利・効率重視の「オープンソース」路線を確立した文献として位置づけられる。今日のGitHubに代表される分散型のオープンソース開発文化、プルリクエストによるレビュー慣行、コミュニティ主導のソフトウェア保守モデルの理論的源流の一つとしてしばしば引用される。