Metalinkを活用した手間知らずのダウンロード
Metalinkとはオープン標準の1つだが、その目的はダウンロード作業を簡単化、高速化、高信頼化させることにあり、やや大げさに言えば、個々のユーザが確保した通信帯域を最後の1ビットまで利用し尽くすことを目指している。ところで、Metalinkのことをありふれたダウンロードアクセラレータの類と同じだと思ったら、それは大間違いだ。これは様々なダウンロードクライアントを統括して運用する一種のフレームワークとして機能するものであり、古くから使われているHTTPやFTP方式を始めBitTorrentを用いたファイルのダウンロードにも対応している。
Metalink標準では、従来の固定化された情報しか提供できないURLを.metalinkファイルで置き換えているが、その実体は単純なXMLファイルにすぎない。このファイルには、ダウンロード対象のアプリケーションを収めている全てのミラーサイトが登録される。またMetalinkのサポートする通信方式には、HTTPおよびFTPミラーやrsyncが含まれているが、その他にも、BitTorrent、ed2k、magnet linksなど一部のP2P方式にも対応している。一例としてOpenOffice.org metalink を見てみると、その中には50以上のHTTPとFTPサーバおよび1つのトレントがリンクされていることが分かるはずだ。
ここで従来型のハイパーリンクを使用したOpenOffice.orgのダウンロード途中でサーバがダウンしたとしよう。手元に残された未完の転送ファイルについてはダウンロード操作を途中から続行できるかもしれないが、使用するダウンロードクライアントによっては不可能かもしれない。それに対してMetalinkを用いた場合は、仮に1つのサーバがダウンしても他のミラーへの切り換えがクライアントソフトウェアにより自動的に行われ、転送途中で中断されていたファイルのダウンロードがそのまま続行されるのだ。つまりこの機能は、リストアップされたすべてのサーバがダウンしない限り目的のファイルが入手不可能になることは無いという意味において、ダウンロード処理の信頼性も高めてくれる。
metalinkを介して取得したファイルについては、自動的にダウンロード後の検証が行われる。そのためにMetalinkでは、MD5SUMとSHA1SUMのチェックサムおよびPGP署名の検証機能をサポートしているが、これらの情報を格納しているのが.metalinkファイルだ。なおここで言うチェックサムとは、個々のファイルを識別するための指紋のようなものである。転送中にエラーが生じた場合、あるいは第三者が意図的に悪意あるファイルとすり替えたような場合、そのチェックサム情報は正しい値を示さなくなる。こうした現象が何かのファイルで生じた場合、通常であれば、接続先のミラーを変更するなどして当該ファイルのコピーを新たにダウンロードし直さなければならない。ところがMetalinkを用いた場合、ダウンロードするファイルがトレントに対応していれば、トレントの分割ファイルの利用ないしチェックサムを用いたダウンロード結果の検証が自動的に行われるのだ。その結果、ダウンロードした全体のごく一部だけにエラーが生じていたのであれば、当該ファイルの全体ではなく、必要な部分だけをMetalinkが再ダウンロードしてくれる。
metalinkファイルの作成法
Metalinkを用いたファイルのダウンロードを行うためには、あらかじめソフトウェアの提供側が.metalinkファイルを作成し、XMLファイル形式でダウンロードサイトを一覧してそれぞれの優先順位を指定しておく必要がある。こうしたファイルの作成は手作業でもこなせる程度の単純なものだが、Metalink Creatorを利用すれば、そうした処理をオンライン上で自動処理させることも可能だ。後者の場合、必要な情報を入力するだけで独自のmetalinkを簡単に作成することができる。
こうしたオンラインツール以外にも、Metalinkのサイトにアクセスすれば、同様の処理が行えるクロスプラットフォーム対応のアプリケーションやPerlスクリプトがいくつか用意されている。
ソフトウェアの提供側は.metalinkファイルの作成後、WebサーバにMIMEタイプを設定する必要があるが(”application/metalink+xml”)、この情報はユーザがダウンロードクライアントを用いてmetalinkを開く際に参照される。この情報を設定しなかった場合、ユーザ側がMetalink URLをクリックするとクライアント画面上でこの.metalinkファイルはテキストとして表示されるが、metalinkのURLを指定すればMetalinkクライアントは所定の動作を行ってくれるはずだ。
個々のダウンロードサイトに対しては、ソフトウェアの提供側が優先順位を指定することができる。トレントの優先順位を高めておく(あるいは最大化しておく)と帯域幅を節約できるが、仮にそうした設定下ですべてのシードが利用できなくなった場合でも、自動的にFTP/HTTPへの切り換えが行われるので、それだけでデータ転送が不可能になることはない。
Metalinkの使用法
Metalinkを用いたダウンロードと言っても、操作自体は通常のダウンロードクライアントを用いた場合と大差ない。必要な準備は、Metalinkをサポートしたダウンロードマネージャを用意しておくだけだ。Linuxユーザであれば現状で、コマンドライン形式のaria2クライアント、GUI形式のwXDownload FastクライアントおよびFlashgot Firefoxプラグインが使用できる。KGet2に関しては、KDE4でのmetalinkへの対応が予告されている。その他のプラットフォームについても、対応したクライアントが用意されているので、必要なものを入手しておけばいいだろう。
ダウンロードクライアントの準備ができたら、次に行うべきはダウンロードしたいプロジェクトがmetalinkをサポートしているかを確認することだ。例えばOpenOffice.orgなどは既に7月の段階でMetalinkをサポートしている。またpackages.roも、いくつかのメジャーなディストリビューションやアプリケーションに対してはMetalinkに対応済みだ。
Metalinkの利用範囲はISOやソフトウェアパッケージのダウンロードだけではなく、パッケージのアップデートにも広がりつつある。これは将来的な計画だが、Arch Linuxはパッケージ管理アプリケーションのpacmanをMetalinkに対応させて、アップデート処理の高速化と高信頼化を図るとのことだ。
実装が見送られた機能
今日に至るもMetalinkの認知度はそれ程高くはないが、Anthony Bryan氏が最初にこのユーティリティを作成したのは11年も前のことだ。その当時、各種のダウンロードマネージャに同標準を実装してもらうに当たって、プログラムに要する手間が膨大である割には大部分のユーザにとって利用度が低いと判断された機能については、いくつか実装を見送ることになった。例えば、負荷に応じて特定のミラーを選択するという処理も、その際に省略された機能の1つだ。これはサーバの負荷状況を反映したmetalinkを作成して、優先順位の設定を調整するという機能である。その他の構想としては、MetalinkヘッダにあるURL情報をアップデートさせて、ミラーの削除や追加が行われていないかをクライアント側でチェックするという機能も考えられていた。
省略された機能の中には、ダウンロードファイルとして利用可能なバージョンをMetalinkに一覧すると同時に、対応している言語やオペレーティングシステムの情報も取得させるという処理も含まれていた。この場合、事前に保存しておいた設定ないしコマンドラインスイッチの指定に従って、ダウンロード時に必要なバージョンのフィルタリングを行うのである。例えばFirefoxのダウンロードページを見てみると、提供されている3種類のプラットフォーム版のダウンロード用リンクが、すべての対応言語別に1つずつ一覧された状態になっていることが分かるだろう。これらのリンクの総数は膨大な数に上るはずだが、Metalinkを用いれば1つにまとめることが可能であり、その際の各ダウンロード時にどのバージョンが取得されるかは、クライアントの言語設定とオペレーティングシステムによって自動判定されるという仕組みになる。
Bryan氏の考えとしては、Metalinkの普及度が高まった暁にはこれらの機能の再実装に着手しても良いが、それを実現するためには各種のダウンロードクライアントやソフトウェアの提供元による協力が必要になるとのことだ。
まとめ
実際に私がMetalinkを使ってみた結果、かなりの好印象を感じることができた。これを利用できるユーザは、いちいち最速のミラーを探したり、ダウンロード結果を検証する煩わしさから解放されるはずだ。いくつかのファイルを複数のソースから同時に選択しておけば、利用可能な帯域幅を最大限有効に活用することもできる。またユーザによる細かな設定は一切不要なので、初心者であっても混乱することはないだろう。今後より多くのディストリビューション、ソフトウェアの提供元、ダウンロードクライアントがMetalinkを介したダウンロードに対応することを希望する次第である。