OSSのもう一歩先

OSS(オープン・ソース・ソフトウェア)のもう一歩先とは、ソースコードの共有だけでなく、ネットワークで今実行されているコードまで公開されるようになったことを指している。そのようなサービスは、OSS開発やWikipediaと同じように、「御伽とバザール」で「目玉の数さえ十分あれば、どんなバグも深刻ではない」と描かれている、国や企業を超えた世界中の不特定多数の集合知で品質を保証し高めていくことができる。OSSは「ソースコード」が対象である。Wikipediaは「データ」が対象である。今度は「サービス」が対象になる。

これまでもソースコードが公開されていれば、それと突き合わせてサービスを解析できた。しかし、サーバで動いている実行コードは公開できないので、ソースコードが本当に今動いているものと同じかどうかは保証されていなかった。両者が同じであると保証されている「透明性」は、攻撃者のインセンティブが大きい希少な資産を取引したり大量の資産を預けるサービスなら絶大な効用がある。利用者なら自分の貴重な情報や資産がどう扱われるかやトラップが含まれていないかを確認できるし、開発者なら実行されているものを触りながら脆弱性調査を行なったり、参考にして次の創造を行うことができる。「目玉の数さえ十分あれば、どんなバグも深刻ではない」のだ。

実例を挙げる。

etherscan https://etherscan.io/address/0x7a250d5630b4cf539739df2c5dacb4c659f2488d#code

ブロックチェーンのEthereumのモニタリングサイトで、スマートコントラクトのソースコードが表示されている。Ethereumのノードに含まれている実際のバイナリコードと、ソースコードコンパイルして生成したバイナリコードを突き合わせて、両者が一致した場合だけソースコードを登録できる。つまり、ここに掲載されているソースコードは、ブロックチェーンで今実行されているコードと同じであることが保証されている。ライセンスは、OSSで主流のMIT系ではなく、GPLGNU General Public License)が多い。

過去の似たようなもの

ソースコードと実行コードが一致している例は、他にもある。まず手元で動かすOSSやソースインストールしたソフトウェアだ。もう一つはブラウザで実行されているアプリケーションである。ブラウザのページで右クリックすると、「ページのソースを表示」や「検証」というメニューが出てくる。HTMLがテキストデータであることやJavaScriptJIT(ジャスト・イン・タイム)であることは慣れてしまっているのであまり意識することはないが、実はそうとう考えて作られているものだ。このおかげで気に入ったページがあれば、どのようにHTMLやスクリプトを作るか調べられるし、コピーして思い通りに改変して自分のページを作れる。例え著作権が付いていても学ぶだけならいくらでもできる。

ブラウザ以外でこういった機能を持っているクライアントソフトは少なかった。HTML以外の文書処理用途のツールはバイナリフォーマットが多かった。JavaScriptと同じようなスクリプトベースでも、AppleScriptソースコードを隠して実行専用にするかどうかを選べるようになっている。テキストデータやJITであることは、実行速度が遅くなるデメリットがある一方で、OS(オペレーティングシステム)やCPUフリーなポータビリティを持たせて配布できることや、他のソフトウェアや機械が二次利用できやすいというメリットがある。しかし、ソースコードをデフォルトで公開する機能はエンジアリング面では何も意味がない。さらに、利用者や他の開発者にとっては便益があっても、そのコードを書いた著作者にとっては不利益も大きい。著作権自然権として扱われている国なら、AppleScriptの方が適切な選択でウェブの方が異様だろう。とはいえ、ブラウザが突然変異で生まれた異端児というものではなく、ティム・バーナーズ・リーがウェブのソースコードGPLを選ぼうとしたように、ウェブが作られた頃に盛んだったフリーソフトウェア運動が背景にあるのはほぼ間違いないだろう。

フリーソフトウェア運動

1980年代にリチャード・ストールマンが始めたフリーソフトウェア運動は、当時UNIX保有者のAT&T社がUNIX人気の高まりを受けてそれまでソースコードの共有や改変に寛容だった姿勢を翻して独占を強めたので、自由なOSを作ろうとしたことが発端である。GNUシステムという名前が付けられているが、"GNU's Not UNIX"(GNUはさらに再帰することと動物のgnuダブルミーニング)の略である。初めにエディタ(Emacs)を作り、それからコンパイラGCC)、シェル(bash)などを作っていき、最後にカーネルLinux)を搭載することでGNUシステムが一通り完成した。この過程でフリーソフトウェアの考え方が精緻化されて、ブラウザがページのソースを表示するような行為の意義がいくつも文書化されている。そして、その哲学をライセンスとして表現したものが、GPLとなる。GPL著作権を裏返して、ソフトウェアの利用者がソースコードを閲覧して改変することや、同じGPLにすることを条件に配布を自由に認めるものだ。つまり、著作者の独占権利を放棄するものとなる。なぜこういったことを行うかは著作権や特許を否定する「ソフトウェアに所有者がいるべきではない理由」がそのものズバリとなるが、コモンズというものを理解する方がもっと容易である。

なお、フリーソフトウェアとはOSSの1世代前の名称である。OSSは、フリーソフトウェア運動に関わっていた何名か(「御伽とバザール」の著者であるエリック・レイモンド、オライリー出版の創業者でweb2.0提唱者でもあるティム・オライリーなど)が、フリーソフトウェアを世の中にもっと広めるためにリブランディングしたものである。

コモンズとは何か

コモンズは、多数者が利用できる共有資源を指す。牧草地に複数の農民が牛を放牧したときに起こることを例にした経済学の「コモンズの悲劇」が有名だ。所有者が誰もいないオープンアクセスで完全に市場に任せられた状態だと、各々が利益を最大化するために資源を狩り尽くしてしまう。ゆえに、多数の人々で平等に保有または利用できる資源は、市場に任せずに行政がコントロールする必要があるという教訓になる。

しかし、クリエイティブ・コモンズの発案者である法学者のローレンス・レシッグは、コモンズは創造のイノベーションを起こすためには欠かすことのできないものだと主張している。コモンズの悲劇は、対象の資源が非競合のものなら起こらない。非競合とは誰かがいくら使用しても減らないアイデアやデジタルデータのような類のものである。コモンズの悲劇が起こらない例として、特許法が施行されたときに国務長官だったトマス・ジェファソンが手紙で書き記したアイデアについての考察が示唆深い。

  1. イデアは不完全な排除性を持っている。誰にも言わなければ秘密にしていられるけど、一度誰かにしゃべったらそれを取り返すことはできない。
  2. イデアはあなたが消費してもわたしの消費分は減らない。あなたが私のろうそくから自分のろうそくに火を付けても、私のろうそくが暗くなったりしないように。
  3. イデアは人から人へ世界中に自由に伝わる。火と同じようにあらゆる空間に広がることができる。
  4. つまり自然の中においては、発明は財産権の対象とはなりえない。

トマス・ジェファソンが以上のようにアイデアの性質を解説している背景は、イノベーションの促進のためには財産権のような考え方で制限をつけずにフリーのままにしておくべきリソースがあるということだ。創造という行為は何かをもってきて自分の才能と混ぜ合わせて新しいものに作り変えることだからである。例えば科学技術の進歩は積み重ねそのものだ。先達の研究者の発明を礎に、次の研究者が次の発明に発展させる。もし、ニュートン万有引力の法則が著作権や特許によって独占されて利用できなかったら、アインシュタイン相対性理論も生まれていなかった。また、芸術でもさまざまな先達の表現者の著作物に触れることで感性を養い表現技法を学び、次の表現者が次の著作物を生み出す。科学技術も芸術も突然変異で生まれることはなく、人類の歴史で連綿と続く文化的土壌の上に次のものが創造されて進歩してきた。そのためにはリソースがフリーであること、つまり、コモンズであることが欠かせない。

ローレンス・レシッグは、リソースがフリーである状態とは以下のどちらかの条件を満たしているものだと定義している。

  1. 人がそれを他の人の許可を得ずに使えること
  2. 必要とされる許可が中立的に与えられていること

共産主義はリソースを国がコントロールする。資本主義はリソースを市場がコントロールする。コモンズとは、そもそも「誰もコントロールしていないリソース」であると定義している。創造という行為は何かをもってきてそれを新しいものに作り変えることなので、誰もがフリーでアクセスできるコモンズが創造の自由をもたらしイノベーションの土壌になるのである。そして、これがフリーソフトウェア運動やGPLの思想の根底にあるものにも通じている。そこにあるのは、先達への敬意と創造の自由による学芸のさらなる発展である。

創造者のインセンティブか、創造の自由か

コモンズは、創造の自由をもたらしイノベーションの土壌になる。しかし、コモンズで問題になるのが、創造者のインセンティブだ。いくら創造が過去の資産の上に積み重ねられたもので本当の意味で初めの創造者など現代にはいないといっても、もし後発の進歩に貢献した次の創造者がなんの報酬も得られなければ、その労力に値するインセンティブはどこにあるのだろう?自分が苦労して生み出したものがコモンズとしてフリーなリソースになってしまうなら、創造しようとする新参者が減ってしまう。創造者のインセンティブを確保するためには、創造物から経済的報酬が得られるように一定のコントロール著作権、特許など)が創造者に与えられる必要があるわけである。フリーソフトウェアOSSにリブランディングした理由の一つも、産業界から強い抵抗がありGNU共産主義のレッテルを貼られたことを問題視し、創造者への制限が強すぎるコピーレフト(コピーライトの裏返し)のアクを弱めることだった。

この問題を解決するために、創造のインセンティブを作り出すには十分だけどコモンズをダメにするほどは大きくない独占権を創造者に与えるようにして、創造者のコントロールと利用者のフリーの折衷点を見つけることが課題となる。著作権という独占権を与える根拠として、アメリカでは産業・文化の振興が主な目的となっていて、他の国のような元来人格に備わっているものとする自然権とは異なる思想になっている。アメリ憲法の著作条項は著作権が期間限定のものであることが明記されている。期間限定の理由は、創造した後に創造者が経済的報酬を享受しつつ、期間が過ぎたらコモンズにして次の創造者の自由を確保するためである。そこにある考え方は、「創造者と利用者のどちらも新しい創造から生まれる利益をすべて獲得できないことが学問の進歩に寄与する」というものである。

さらに、アメリカの著作権法は、著作者に複製権・二次的著作物作成権・頒布権・公の実演権・公の展示権という5種類の権利を認めつつ、フェアユースという概念がある。これは、社会の善になると看做せる一定の条件を満たしていれば、著作権者から許可を得なくても著作物を再利用できることを示した法原理である。これにより、研究や報道や本稿のような解説などで第三者が著作物を利用することは著作権の侵害にならなくなる。著作権を保ちつつ、コモンズもダメにしないという折衷点になるのである。昨年決着したAndroid訴訟は、GooglejavaAPIを複製したとしてOracleが訴えていたが、このフェアユースを根拠にして棄却された。フェアユースは長らくアメリカだけの独特のものだったが、テック分野の発展に欠かせないものとして、近年シンガポールイスラエル、韓国などが続々導入している。自然権の考えが強い日本でも、AIの競争力を向上する事由などから、「著作物の表現を享受しない利用」に限定して認められている。

また、創造者の権利の強化も進められている。アメリカの著作権の期限は初めは14年だったが、改正を重ね期限はどんどん伸びている。前項でトマス・ジェファソンのアイデアの話を持ち出したが、あれは財産権に対して特許が保護する発明とは本来どういうものなのかという話をしているだけで、アイデアが保護できないという話ではない。特許はできるし、産業や文化の発展に伴い、ソフトウェア特許ビジネスモデル特許、さらにはデジタル・ミレニアム著作権法などの新しい種類が増えている。ソフトウェア特許は、ソフトウェアにおけるニュートン万有引力の法則が利用できずにアインシュタイン相対性理論を生み出せなくなるようなことに作用する一方で、うまくいけば創造者に莫大な富をもたらす。また、特許の独占があるからこそ、それを回避するために新たな技術が誕生するという妙な副作用もある。lzwがソフトウェア特許を申請して自由に使えなくなったので、フリーソフトウェア運動からgzipが誕生したように。

以上のように、創造者のコントロールと利用者のフリーの折衷点が図られてきた。OSSもまさにそのバランスを取るためにフリーソフトウェアの定義を緩めたのである。著作物の派生物について創造者がライセンスを自由に定められるMIT系のライセンスなども対象に含めて、コピーレフトを選択肢の一つに格下げすることで。Linuxでもシステムコールを呼び出すアプリケーションがGPLに含まれるかどうか議論があったが、アプリケーションの創造者のコントロールを選択して、アプリケーションはGPLの対象外であると最終的に整理している。なお、フリーソフトウェアも有償販売はもともと認めていて、フリーの言葉は「自由」を指しているのに「無料」に誤解されてしまうということもOSSへリブランディングした理由である。

再び現代へ

ざっとフリーソフトウェア運動を中心に、これまでの歴史を遡ってきた。その後ウェブからモバイルやクラウドの時代を経て、飛躍的にインターネットは進歩した。OSSもビジネスとコモンズのせめぎ合いをしながら成長を続け、産業界の中にも広く普及し社会のインフラの一つになっている。そして、ソースコードやデータだけでなくサービスまでコモンズになる芽が育ってきている。

とはいえ、Web3と呼ばれるようになったこのようなジャンルがなんでもかんでも適応されていくとは私はあまり考えていない。データを誰でも閲覧できたりソースコードと実行コードが同じと保証されている「透明性」を実現することは、コストや不便が大きい。ゆえに、それに見合う希少な資産を取引したり大量の資産を預ける金融領域から進んでいるのだと理解している。さらには多くの場合、「透明性」だけを理由にサービスをコモンズにする意義は不足しているだろう。「透明性」だけならAPIを通したデータ公開でもある程度できる。所有の許可や取引を行うルールが中立的に定められ実行されている「中立性」、単一障害点がなくなり緊急時でも動き続けられる「分散性」、24時間365日世界中のどの地域からでも利用できる「アクセス可能性」、ノンバンクピープルのような人でも誰でも利用できる「無許可性」といった他の効用も大きく期待できる場合に、金融領域のサービスをコモンズにする意義が増す。

インターネットやソフトウェアでコモンズが躍動する条件

多くの識者が指摘しているように、インターネットやソフトウェアのジャンルでコモンズが躍動する条件がある。ここでは、参考文献に挙げたものを土台にして、私見で4点を挙げる。

  • 用途: 一つのことだけをうまくやるというシンプリシティ
  • 範囲: エンド・トゥー・エンドが対象になり広いこと
  • 増幅: たくさんの人や機械やソフトウェアが利用することで梃子の効果が生まれるもの
  • 利用方法: オープンでフリーなリソースであること

1つ目から3つ目はどれかが該当していればよいものだが、要するに、ネットワークやソフトウェアの構成スタックの下の層であるほど、コモンズである意義が生まれやすいということだ。それを土壌に個人や企業や国が特定目的に統合した上位のアプリケーションを作り、創造者のインセンティブである著作権や特許を課す。

また昔話に戻るが、例えばウェブは、ティム・バーナーズ・リー自身が作ったものは、エンド・トゥー・エンドで働くhtml/http/uriの3つのプロトコル/スペックだけとも言える。それらはシンプルかつオープンにしていろいろな人や機械やソフトウェアがいろいろな活用を広範にできるように、彼は初めから考えて設計している。だから、htmlはテキストデータなのである。そして、htmlがそうなっているので、その中に記述するJavaScriptJITが適している。一方で、エンド・トゥー・エンドの先のエッジ領域になるブラウザやwebサーバは、プロトタイプ程度しか彼は作っていない。他の人たちがMosaicApacheのようなプロジェクトを立ち上げ、リッチで堅牢なソフトウェアを作っていった。さらにその上に、個人や企業や国がさまざまなサービスやコンテンツを作り、それによってウェブがますます伸びるという成長になったわけである。当時はgopherのようなウェブ以外にもたくさんの文書共有システムがあったが、その中からウェブが選ばれていったのは、コモンズの考え方による設計だったことが大きいだろう。

「資産」のコモンズという新しい土壌

インターネットやソフトウェアにおけるコモンズはインフラ層から普及が始まったが、時を経るにつれ、スタックの上層に少しずつ広がってきているということに着目すべきである。Web3の本質は、お金や権利や個人情報といったさまざまな有形・無形の「資産」がインターネットの上位層にコモンズとして備えられるようになることだと私は考えている。サービスを推進しているコミュニティがトークン発行することによる収益化や個人主権の回復・エンパワーメントなども盛んに論じられていて、私もまさにそういったことが魅力だと感じているが、それらを可能にしているのはインターネット上に「資産」のコモンズという新しい土壌ができつつあることだからである。

私有財産なのにコモンズとはどういうことだ?という疑問が起こるかもしれないが、ローレンス・レシッグのコモンズの定義を思い出してほしい。「2. 必要とされる許可が中立的に与えられていること」なので、特定の時点で特定のリソースが特定の人に占有されていることは、コモンズの定義の中に包含されるのである。周波数を例にすると、周波数そのものは自然物であるが、誰かが使えばその時点では占有が発生している。解放すれば、また誰でも使える状態になる。その占有の許可と取引を行うルールが中立的に定められているのであれば、コモンズである。つまり、スマートコントラクトのストレージという「共有プール」に存在している一部の資産が特定の時点で誰かのものであっても、スマートコントラクトにより中立的にルールが定められて占有や取引が行われているのであれば、コモンズと言えるのではないだろうか?また、「1. 人がそれを他の人の許可を得ずに使えること」について、例えば個人情報そのものは本人の端末に保存されていても、そのプルーフデータはスマートコントラクトの共有プールに置かれていて、誰でも他の人の許可を得ずにマスキングされた部分的な個人情報を使えるルールが定められているならば、コモンズと言えるのではないだろうか?ローレンス・レシッグは、法律とソフトウェアという2つの「コード」がインターネットのルールを左右していると論じている。法律という「コード」の中で、新しい技術によって発生した生産物の財産権や著作権といった扱いがどうであるべきかの議論は、各国ごとに変わるものだし私はあまり通じていないので、本稿では行わない。ここでは、あくまでソフトウェアを積み重ねたグローバルなインターネットという「コード」の中で、「資産」がコモンズになり始めているという話をしている。

螺旋の階段

しかし、一方的に広がり続けているわけでもない。コモンズの適性が高く実際にコモンズが広がり続けてきたインフラ層でも逆回転の動きが指摘されている。AWSのstrip-mining問題のように、OSSを自社製品に統合したりOSSからフォークしたクローズドなソフトウェアの方が大きな発展を遂げることにより元のOSSが痩せ細るという、まさしく「コモンズの悲劇」問題である。ソフトウェアは本質的には非競合の性質のリソースだが、著作権や特許のような独占権やビジネスによる壁によって競合性を持ったリソースにもなりうるのである。また、記憶に新しいlog4j脆弱性問題は、「目玉の数が足りていない」弱いOSSが問題を起こした時の影響の甚大さを示唆したものだった。OSSのエコシステムが大きくなり、すでにメンテナンスされなくなったり開発体制が貧弱なOSSでも、多くの企業や国のシステムで使われるようになっているからである。OpenCollectiveのようなサポートサービスもいろいろ生まれているが、すでにメンテナンスされなくなったものをボトムアップからどうにかするのは難しい。log4j問題の後を受けて、OSSエコシステムが社会インフラとしてクリティカルなものになったので、もっと持続的で安定したものにするために、もっと国や企業でコントロールしようという動きも始まっている。

ソースコードやデータだけでなくサービスまでコモンズになり始めている一方で、フリーソフトウェアOSSにリブランディングしたように、AWSlog4jが新たな現代のOSSの問題を提起しているように、創造者のコントロールと利用者のフリーのせめぎ合いや、市場や国のコントロールとコモンズのフリーのせめぎ合いは今後も続くだろう。こういったことは専制体制と民主主義がシーソーゲームのように人類の歴史を紡いできたことと同じような話なのかもしれない。どちらかが強くなれば、何かが失われる。それを回復するために反発作用が起こり、今度はそちらが強くなるので、またもう片方が回復に動く。その繰り返しである。それらは競合性の性質を持ったリソースゆえのゼロサムゲームの場合もあるが、フェアユースのように、既存の効用も維持しつつ失った効用を回復して「1 + 1 = 3」になるような新しいアイデアが生み出されることもある。そのような新しいアイデアにより、両者が止揚され、新しいバランスができることで、少しずつ進歩しているのではないだろうか。螺旋の階段のように、ぐるぐる回りながら、しかし、少しずつ上層に上がっていっているはずだ。

ONE MORE BUT GREAT STEP

参考文献

本稿を書くために多大な影響を受けた書籍を紹介する。いずれもオリジネーターや中心メンバーが著述していて、それぞれの研究や活動における思想や哲学が凝縮している。特に、本稿は一つ目に挙げたコモンズから多くをなぞっていて、二次創作物のようなものである。

ちょうど20年前の出版だが、驚くほど現在のWeb3を取り巻く規制論議とリンクしている。歴史の螺旋の階段をぐるっと一周して、高さは違うけど平面の緯度経度は同じところにいる気分になる。

フリーソフトウェア運動や初期OSSの中心メンバーたちがOSSを論じたエッセイ集。コモンズとは何かを学ぶために、1章「はじめに」(クリス・ディボナ/サム・オックマン/マーク・ストーン著)と5章「GNUシステムとフリーウェア運動」(リチャード・ストールマン著)。コモンズをどのように設計するかを学ぶために、8章「Linuxの強味」(リーナス・トーバルズ著)がお勧めである。また、GPLOSSの定義については、12章「「オープンソースの定義」について」(ブルース・ペレンス著)が詳しい。

ウェブを創造したときに考えていたことや開発経緯がふんだんに著述されている。これだけ翻訳版のリンクが出てこなくて原著になっているが、邦題は「Webの創成」である。

Unixの設計思想をまとめている。ソフトウェアエンジニアなら全員読むべきだと思う。

Ethereumの技術解説はもちろんのこと、1章では何を目指してEthereumを設計したかが著述されている。