2013-07-03

ファイル転送とか万能ソフトウェアとか

今考えているとりとめのないモヤモヤとした思いを書いてみる。

先日、本の虫: xkcd: ファイル転送(と、その解決手段としてのTCP simultaneous openの可能性)で、インターネットができてから何十年も経つのに、いまだに特定の二者間で第三者サーバーを介さずにファイル転送をする簡単な方法がない現状について書いた。

Sharefestというものがある。これは、WebRTCを利用して、ブラウザー上でBitTorrentプロトコルもどきを実装したものだ。まあ、面白い試みではある。ただ、その「面白い」というのは、「HTMLのtable要素で絵を作った」とか、「CSSで絵を作った」という試みに対して感じる「面白い」と同等の感想であって、実用的とか使いたいといった感想ではない。

ピクセル単位で表現された画像が使いたければ、BMPやJPEGやPNGのような画像フォーマットがあるし、ベクトルで表現された画像が使いたければ、SVGのような画像フォーマットがある。これらの画像フォーマットはすでに実績があり、仕様が環境やプログラミング言語非依存で詳細に説明されており、独立した自由なソフトウェア実装も複数存在する。

もちろん、WebRTCはブラウザー間の通信を目的として設計されたAPIであり、WebRTCをBitTorrentプロトコルもどきの実装に使うのは、tableやCSSを画像表現に使うよりは、まともだと言える。問題は、そもそもなんでそういう実装をしなければならないのかという事だ。

BitTorrentプロトコルが使いたければ、単に既存のBitTorrentプロトコルを実装したソフトウェアを使えばいいのだ。あるいは、ブラウザーでBitTorrentプロトコルをサポートすればいいのだ。BitTorrentプロトコルはすでに実績があり、仕様が環境やプログラミング言語非依存で詳細に説明されており、独立した自由なソフトウェア実装も複数存在する

Sharefestは、ソースコードがApache 2.0で公開されているので、自由なソフトウェアであるが、実績、ドキュメント、複数の独立した実装などという点で、既存のBitTorrentプロトコルに劣っている。

もちろん、既存のBitTorrentクライアントが、初心者には使いづらいという現状はあるかもしれない。また、特定の二者間でのファイル転送といった用途に手軽に使えるよう作られていないという現状もあるかもしれない。しかし、だからといって、ブラウザー上に実装されたWebRTCをJavaScriptで操作して劣化BitTorrentプロトコルの実装を作りましたというのはなにかおかしい。

そもそも、なぜ人は、単独で何でもできる万能ソフトウェアを欲しがるのだろうか。UNIXの、「ひとつのことのみうまくやる」という思想はどこへ消えたのか。検索をうまくやるgrepや、テキスト置換をうまくやるsed、複数のファイルをうまくまとめるアーカイバーとしてのtarや、ファイル圧縮をうまくやるxz。複数の機能が欲しい時は、これらを組み合わせればいいのではないか。

現実は、そのようにはなっていない。すべてのテキスト処理が行えると豪語するEmacsや、すべてのオンライン処理を担おうとしているブラウザー、クソバカがクソ画像一枚を送るのにも使うマイクロソフトのクソ不自由なクソExcelなど、単独で何でもできる万能ソフトウェアがもてはやされる。

ところで、最近書いたブログ記事に、本の虫: 自由ソフトウェア財団がBitTorrent Syncを高優先度ソフトウェアプロジェクトに指定というものがある。BitTorrent Syncとは、複数のコンピューター間でファイル共有を行う不自由なソフトウェアだ。自由ソフトウェア財団は、BitTorrent Syncの自由ソフトウェアによる実装が取り急ぎ必要だとしている。先日はBitTorrent Syncなんて誰が必要としているのかと疑問だったが、現状でファイル転送を第三者サーバーを介さずに手軽に行う方法がない以上、案外必要なのかもしれない。

この記事に特に結論はない。

No comments: