AzureusでBitTorrentしよう

BitTorrentはご存じだろう。コンテンツ配信者の帯域幅の逼迫を解消する目的で設計された、高スケーラブルなP2Pファイル共有技術である。BitTorrentでは、ダウンロードするコンテンツを見つけることよりも、むしろコンピュータにBitTorrentをインストールすることと、それを管理するユーザフレンドリなクライアントを見つけることに苦労する。今回、BitTorrentと、非常によくできたAzureusクライアントをちょっと調べてみた。以下に、インストール上のヒントを披露する。

BitTorrentはファイルと帯域幅を共有するP2Pネットワークである。P2Pファイル共有については、ご存じの方も多いだろう。自分のPCにあるファイルをインターネット上の他の人々が使えるようにする技術だ。しかし、帯域幅の共有という考え方は比較的新しい。BitTorrentは、小規模なWebサーバーやファイル・サーバーで非常に大きなファイルや人気の高いファイルをダウンロード用に提供する技術である。提供する側のコンピュータが外部からの複数の接続による過剰な負荷で立ちゆかなくなることや、貴重な帯域幅を完全に使い切ることがないように設計されている。

何かのBitTorrentファイル(torrentとも呼ばれる)をダウンロードするとき、ハイパーリンク先のサーバーからそのファイル全体をゲットすることはない。ファイルを構成する断片が、そのファイルを持つ近傍の複数のBitTorrentサーバーからダウンロードされてくる。BitTorrentを実行するということは、そのコンピュータ自体もBitTorrentサーバーになることを意味する。つまり、他のサーバーからファイルの残りの部分をダウンロードしながら、それまでダウンロードしたファイルの断片を自動的にアップロードすることになるのだ。そのようにして全員が最終的にファイルを手に入れ、メイン・サーバーの負荷はファイルを共有する他のサーバーの帯域幅に助けられて劇的に小さくなる。広い帯域幅と多数のファイル断片を持つサーバーにダウンロードの優先権が与えられるようになっており、その意味でBitTorrentクライアントの構成は民主的である。結局、トータルの効果として期待されるのは、すべてのユーザーがファイルを短時間で確実に手に入れることであり、それはこうした仕組みがあればこそ実現される。

BitTorrentを構成するのは一対のクライアント/サーバー・ソフトウェアとプロトコルである。有名なBitTorrentクライアントがいくつか存在するが、それらはいずれも高度なGUIやダウンロード・マネージャなどで既存のBitTorrentソフトウェアの機能を強化している。

BitTorrentクライアント

オリジナルのBitTorrentクライアントとプロトコルはPythonで書かれており、Python 2.2以上がインストールされたプラットフォームでコマンドラインから実行できる。BitTorrent 4.0をグラフィカル・モードで実行するには、Python 2.3以上とwxPython、それにGTK 2.2以上とpygtk 2.4以上が必要である。

BitTorrentのコードはGPL(GNU General Public License)のもとで提供される。現在使用しているLinuxディストリビューションのパッケージ・マネージャや基本システムにBitTorrentは含まれていなければ、BitTorrentサイトからRPMかtarアーカイブ(source tarball)を入手すればよい。Windows と Mac OS Xについてはバイナリも用意されている。

BitTorrentクライアントは複数存在するが、本稿ではAzureusを中心に説明する。これはGPLのもとで提供されるJavaベースのグラフィカルなBitTorrentクライアントである。Azureus 2.0.22の唯一の要件はJava Runtime Environmentバージョン1.5.0_02以上がインストールされていることだ。現在のディストリビューションのパッケージ・マネージャに含まれていなければ、SourceForgeからzip形式のAzureusアーカイブをダウンロードすればよい。

BitTorrentと法律

BitTorrentは、これを海賊版に関係する次の重要なツールと見る著作権法専門の弁護士の関心を集めている。だが、BitTorrent自体を使うことは違法でない。これは単なるツールであって、「実社会」で正当なユーザーによって正当な使われ方をしている。

しかし、BitTorrentで著作権法を犯してファイルを配布している人々も少なくない。BitTorrentでファイルのダウンロードを開始すると(効率的にダウンロードしたければ)同時にファイルの共有を開始することになり、その結果、法的な問題が派生する可能性がある。BitTorrentを採用することで、著作権法を侵害している人々はそのファイル・ネットワークを分散させてきたが、それがなぜ可能だったかと言えば、著作権所有者(とその弁護士)が、このソフトウェアのエンドユーザーを一人一人追いかけるか、彼らのISPに踏み込むしか手がなかったからである。オーストラリアの最新の訴訟を参照。

BitTorrentを初めて使う人は、違法ダウンロードに手を出さないでほしい。違法なダウンロードを開始することは、それを他の人々と共有することでもある。

BitTorrentとAzureusのインストール

BitTorrentをインストールする前に、上で述べたPython、pygtk、GTK、wxPythonのバージョンを確認してほしい。現在使用しているディストリビューションをアップデートするか、ディストリビューションのパッケージ管理ユーティリティでパッケージを個別にアップグレードしてもよい。

BitTorrentをパッケージ・マネージャからインストールできないときは、source tarballからインストールするのが簡単だ。パッケージを適当なディレクトリに解凍し、the instructionsに従ってそのmimetypeをセットアップする。

BitTorrentと同じように、Azureusもソースからインストールする。具体的には、ダウンロードしたファイルを(bunzip)でunzipし、tarでファイルを抽出する。Azureusは、そのインストール・ディレクトリ内のスクリプト・ファイル(./azureus)から実行できる。もちろん、Java Runtime Environmentをインストールしておく必要がある。

Azureusを最初に実行するとインストール・ウィザードが現れ、基本的なテストを実行するよう指示される。特に重要なのはファイアウォールのテストで、BitTorrentサービスがコンピュータのポートを開いてインターネットに接続できる必要がある。

BitTorrentプロトコルは、より多くのファイルとより広い帯域幅を共有するユーザーを優先する。実際、ファイアウォールがBitTorrentソフトウェア(通常、ポート6881 – 6889で実行される)への接続を禁止している場合は、ダウンロードが非常に遅くなる。

会社のファイアウォールの内側にいる場合や、その他の理由で設定を変更できない場合は、BitTorrentクライアントを使うとかえって非効率で、別の方法があれば、それを使った方がよいだろう。

ファイルのダウンロード

AzureusのGUIはとてもよくできている。BitTorrentプロトコルによるダウンロードの管理と独自のtorrentファイルの作成が可能で、自分のコンピュータのファイルを共有することができる。BitTorrentプロトコルはサーバー側ではなく、クライアント・コンピュータの方で動くため、どんなHTTPサーバからもtorrentファイルを提供できるはずである。

torrentをダウンロードするには、まずそれを見つける必要がある。BitTorrentファイルを提供しているWebサイトは非常に数が多いが、探すtorrentが具体的に決まっているなら、TorrentSpy.comなどの専用検索エンジンを使うとよい。

Azureusをインストールしただけではtorrentファイルは関連付けられない。ダウンロードのために最初にtorrentファイルをクリックすると、ブラウザが操作の種類を訊いてくる。ファイルを開くオプションを選び、使用するアプリケーションとしてAzureusを選択する。Azureusがダイアログを表示するので、そこでファイルの保存場所を指定すれば設定は完了である。

ダウンロード中、Azureus GUIはアップストリームとダウンストリームの帯域幅の状況とファイルのダウンロード率、ダウンロードが完了するまでの予想時間を常に報告する。また、それまでに見つけたダウンロード・ピアの数と、そのうちのどれだけが接続しているか――民主的なBitTorrentネットワークでの「人気度」の指標となる――に基づいてダウンロードの健康状態も報告する。

Azureusは標準のBitTorrentクライアントを機能強化しており、失敗したダウンロードや不完全なダウンロードを再開する機能と、保留中のダウンロードの待ち行列を管理する機能をサポートしている。この点に関してAzureusは、単純なBitTorrentクライアントというよりも、ダウンロード・マネージャの側面を持つ。

帯域幅や接続数をコントロールしたい場合は、Azureus内部のコントロール・パネルからBitTorrentプロトコルの動作を(少なくとも、Azureusに実装されている部分に関して)微調整することができる。

ダウンロード状況を詳細に監視することもできる。Azureusはダウンロードを「断片レベル」で詳細に表示する機能をサポートしており、ダウンロード済みのファイル断片とそれらを送信してきたクライアント、クライアントごとの相対的なパフォーマンスを調べることができる。また、ダウンロードに失敗したファイル断片を表示することもでき、これはファイアウォールの設定が意図したとおりに変更されているか再確認するとき役に立つ。

Azureusによるtorrentの作成

BitTorrentで独自のファイルを配布する場合は、torrentファイルを作成する必要がある。Azureusにはサーバーのためにtorrentファイルとトラッカ(ファイルをダウンロードしているユーザーとファイルおよびその断片が置かれている場所を記録するログ)の作成を支援する簡単なウィザードがある。torrentファイルとトラッカを作成したら、それらをWebサイトにアップロードする。

Azureusは単一のファイルだけでなくディレクトリについてもトラッカの作成をサポートしており、初心者から上級ユーザーまで柔軟に対応できる。これらの強力なオプションは上級ユーザ向けだが、デフォルトのままでtorrentファイルを作成しても特に問題は生じない。

まとめ

Azureusは、ユーザー・インターフェイスを複雑にせずにパワー・ユーザー向けの強力なオプションを提供することで、従来のダウンロードに慣れたユーザーがBitTorrentのダウンロードに円滑に移行できるようにしている。伝統的なダウンロード・マネージャの機能とルックアンドフィールを踏襲しており、ともすれば複雑で混乱しがちな環境を初めて経験するユーザーにうってつけである。

BitTorrentの成功は、オープン・ソース・コミュニティのあらゆる場面で使われていることを見れば明らかである。BitTorrentがこの環境にもたらす効果は、ダウンロードの高速化ではない(状況によってはスピードアップしないこともある)。それよりもむしろ、軽量サーバーが大きなダウンロードや人気の高いダウロードをネットワーク・コミュニティに提供できること、ハードウェア資源(特に帯域幅)を最大限活用できることに意義がある。

BitTorrentのWebサイトは、このプロトコルが「言論の自由のためのツール」(tool for free speech)だと主張している。それが当たっているかどうかは議論の余地があるが、BitTorrentが「帯域幅の自由のためのツール」(tool for free bandwidth)であることは間違いない。

原文