
金子勇とWinnyの夢を見た 第3話 金子勇の経歴 その3
※この記事は、Advent Calendar 2023 『金子勇とWinnyの夢を見た』の四日目の記事です。
Winny作成
2002年1月から『戦略ソフトウェア創造人材育成』プログラムの講師となり教える立場になったのですが、就任してからしばらくはヒマだったそうです(※1)。彼は、東京大学に通うために引っ越したのですが、その際にこだわったのはインターネットの回線速度でした。彼は、それまで使用していたISDN回線(最大64Kbps)より高速なADSL回線(下り最大50Mbps、上り最大5Mbps)が使用できる部屋を選びました。
その頃、研究者、IT技術者の間だけでなく、世間一般でもP2P技術への関心が高まりつつありました(※2)。参加している学生もP2Pプログラムを作成したいという話もあったので、教える立場としてプログラムを作ってみようということも動機の一部だったかもしれません。金子さんは、わざわざ手に入れた高速な回線を活用するため、P2Pシステムに挑戦します。
金子さんは、グリッドコンピューティングの経験はあってもネットワーク・プログラミングやP2Pについての知識はありませんでしたので、すべて1から自分で考えることになります。
2002年4月1日、金子さんは2ちゃんねるの「MXの次はなんなんだ?」というスレッドでWindowsネイティブのファイル共有ソフトの開発を宣言しました。
暇だからfreenetみたいだけど2chネラー向きのファイル共有ソフトつーのを作ってみるわ。もちろんWindowsネイティブな。少しまちなー。
2ちゃんねるは匿名掲示板なので、発言者を特定するために最初の書き込み番号で呼び合うのが習慣になっていました。この宣言が47番だったので、以後「47氏」と呼ばれるようになります。
2001年11月28日に京都府警が、WinMXで市販ソフトを配布していたさいたま市の専門学校生と東京都杉並区の大学生を著作権侵害として逮捕していました。2ちゃんねるでは、逮捕を回避するための新しいソフトについの議論がありました。
2002年4月30日に2ちゃんねるに投稿された47氏の書き込みがあります。
まぁ、そろそろ匿名性を実現できるファイル共有ソフトが出てきて現在の著作権に関する概念を変えざるを得なくなるはず、あとは純粋に技術力の問題であって何れ誰かがその流れをブレイクさせるだろうとは思ってたんで、だったら試しに自分でその流れを後押ししてみようってところでしょうか。
純粋に暇つぶしの腕試しです。
私なんてたいしたこと無くて、この程度作れる人は日本人でもかなりいるはずですが、実際に表にブツを出す人少ないんで、こういう方面でも日本人にがんばって欲しいというのもあります。
この記事からは「現在の著作権法は変える必要がある。それとは別に、匿名性を備えたファイル共有ソフトの開発に日本の技術者が取り組み、臆することなく公開してほしい」という、極めて正当な発言と読み取れます。しかし、当時の著作権関連で係争していた人達から見れば、「著作権に対するテロ行為の宣言」と曲解されてしまいました。
2002年5月6日、高速性と匿名性の両立を目指したファイル共有ソフトWinny(Ver.1系列)が2ちゃんねるのDownload板にベータ版が公開されます。そして、12月30日には正式版が公開となります。新しいソフトの公開を2ちゃんねるは歓迎し、利用者はどんどん広がっていきました。
著作権を侵害するファイルの共有を目的としていた一部の利用者は、自分の身元がばれないよう完璧な匿名性を期待していました。匿名性の機能が備わったWinnyを使って、多くの著作権のある音声や動画ファイルが共有されるようになりました。
まずは試して、問題があれば改良するというプログラミングスタイルで、最初にリリースされたソフトはバグが多かったそうです。Winnyの利用者が増えていくにつれて、何度も動作の不具合の修正やチューニングが行われ、また利用者からの様々な要望を盛り込んでいきました。
2ちゃんねる以外でも評判が広がり、ネットランナー(1999年創刊)が「2002年ベスト・オブ・悪用厳禁ツール」として紹介するなど、2ちゃんねるを超えてユーザーを増やしていきました。
2003年4月5日、Ver1.14でWinny1の開発は終了します。
Winny2
Ver.1系列でもBBS機能はあったのですが、2ちゃんねるのようなBBSの実現とGUIを変更したWinny2は、2003年5月5日に公開されました。Winny2の構想は、情報共有とファイル共有のコラボレーション、いわゆるP2Pグループウエアです。
Winny2のBBS機能は、スレッドのアクセスコントロールをどのようにするかという問題がありました。そこで、スレッド内に書き込まれた記事を管理するために、最初にスレッドを作成した人に限り匿名性を犠牲にして、作成者のIPアドレスをデータの中に書き込み管理する仕組みを作りました。このロジックは未完成で、更に検討が必要と金子さんも考えていました。しかし、著作権違反のファイルをアップロードしていた利用者が、この仕組みを理解せずにスレッドを作成してしまったため、後の逮捕に繋がります。
開発環境は、それまではMicrosoft Visual C++を使用していましたが、Winny2β4からリッチなGUIが作成できるBorland C++Builderに変更されました(※3)。Visual C++の方がより最適化されたバイナリが作成できたため、ファイル共有の性能としては、Winny Ver.1系列の方が優れており、2006にドリームボートが製品化したSkeedCastにはVer.1系列のコードをベースにして、Winny2の機能がバックポート(移植)されています。

2003年11月27日、金子さんの自宅が家宅捜査された日に、約1年半のWinnyの開発が終了することになります。Winnyの最初の公開からWinny2の最後のバージョンまでの1年半で238回ものバージョンが公開されました。
※1 『金子勇@SkeedCastは、根っからのプログラマ』, 高橋マサシ, 2008-12-12, リクナビNEXT Tech総研
※2 NTTネットワークサービスシステム研究所 星合隆成,NTT技術ジャーナル, 2004.3,
※3 Aki@めもおきば, 1年半で283回のアップデートを実施 大規模P2Pネットワーク「Winny」のバージョンアップ史 , 2023-03-07, Winnyとは何だったのか v2.0b7.1, https://logmi.jp/tech/articles/328470