ArchiveBox is Super Cool

Michael Lynch

ArchiveBoxは超クールだ

原文は Michael Lynch により に公開されました。 このブログを購読する

archive.orgのInternet Wayback Machineを使ったことはありますか?1996年からウェブをアーカイブし続けている無料のツールです。たとえば1999年当時のGoogleがどんな見た目だったか見たければ、ちゃんと保存されています

1999年4月22日時点のGoogleをInternet Archiveがキャプチャしたもの

ArchiveBoxは、あなた専用のInternet Wayback Machineのようなものです。無料のオープンソースで、ほとんどのウェブサイトをアーカイブできます。

ArchiveBoxダッシュボードのスクリーンショット

ArchiveBoxはウェブサイトをローカルにアーカイブできる無料のオープンソースツール

なぜアーカイブするのか

1年ほど前まで、ウェブサイトをローカルにアーカイブしようと思ったことはありませんでした。ウェブ上にはサイトをアーカイブして公開コピーを保存してくれるツールがあるのに、わざわざ自分でアーカイブをセルフホストする手間をかける必要があるだろうかと思っていたのです。

ところが昨年、多くのソーシャルメディア企業が強引な囲い込みに動きました。redditは有名ですが、サードパーティ向けAPIを封鎖し、それによってredditをアーカイブしていた多くのサイトが動かなくなりました。そうしたredditアーカイブサイトはあっさりと畳まれ、アーカイブも消えてしまったのです。

運営が持続可能ではないことを示す数々の危険信号があったにもかかわらず、自分がどれほど無料のボランティア運営によるアーカイブサービスに頼り切っていたかに気づかされました。

クラウドベースのアーカイブサービスが永遠にオンラインであり続けるとは当てにできないのなら、大切なものは自分でコピーを手元に残しておくべきだと思うようになりました。

ArchiveBoxのインストール

ArchiveBoxのインストール方法はいくつかありますが、私は推奨されているDocker Composeでの方法を選びました。

mkdir archivebox && \
  cd archivebox && \
  curl -O 'https://raw.githubusercontent.com/ArchiveBox/ArchiveBox/dev/docker-compose.yml' && \
  docker compose run archivebox init --setup

あとはDockerコンテナを起動すれば、ArchiveBoxを立ち上げられます。

docker compose up

ポート8000でローカルのウェブサーバーが立ち上がります。

redditの投稿をアーカイブする

私がredditで一番好きな話の一つに、/r/legaladviceに投稿された隣人が自分自身を「陸の孤島」にしてしまった男の物語があります。

投稿者の隣人は、自宅と公道をつなぐ私道を含む土地を所有していましたが、その私道を含む部分を売却してしまったのです。その結果、隣人は自分が所有していない土地に不法侵入することなしには、自分の敷地に出入りできない状態になってしまいました。隣人はこの問題を、投稿者の私道を使わせろと要求することで解決しようとしていたのです。

/r/legaladvice板を沸かせた雑な手描きの図

この物語は3つのredditスレッドで語られています。

そこで、この3つのURLをArchiveBoxに貼り付けました。

数秒のうちに、ArchiveBoxはこれらの投稿をアーカイブし、ローカルでオフラインでも見られるようにしてくれました。

ArchiveBoxが3つのredditスレッドをダウンロードし、オフラインで利用できるようにした

ArchiveBoxはページをいくつかの形式でダウンロードします。PDF、PNG、WARCなどですが、そのうちの一つにシングルファイルHTMLという形式があり、これはそれまで聞いたことがありませんでした。

シングルファイルHTMLは巧妙な仕組みです。HTML、JavaScript、CSSをすべて1つのファイルにぎゅっとまとめます。画像までbase64エンコードして、同じHTMLファイルの中に埋め込んでしまうのです。

<style>:root{--sf-img-2: url("data:image/gif;base64,R0lGODlhFQAQAIABAICAgP///yH5BAEAAAEALAAAAAAVABAAAAIajI...

この方法でredditのスレッドを読むのはとてもクールです。何しろ速いのですから。テキストが中心のシンプルなページを読み込むのに、redditをはじめウェブ全体がどれだけ遅くなったかにすっかり慣れてしまっていました。事前に生成されたページをローカルで閲覧すると、ブラウジングがどれほど快適になるかを実感できて楽しいものです。

YouTube動画のアーカイブ

YouTube動画のアーカイブにはより特化したツールもありますが、ArchiveBoxにはyt-dlpが同梱されているので、YouTubeのURLを渡すだけでページと動画をアーカイブしてくれます。

もしLonely IslandSNLの名作「Like a Boss」を常に手元に残しておきたいと思ったら、他のウェブサイトと同じようにArchiveBoxに渡せばいいのです。

ArchiveBoxがYouTube動画をダウンロードしたところ

ArchiveBoxは本物のYouTubeの体験を完璧に再現できるわけではありませんが、ページのスナップショットを作成し、動画は別途保存します。

ArchiveBoxはYouTubeページを完璧にはアーカイブできないため、動画プレーヤーの代わりに静止画を表示し、動画自体は別ファイルとして保存する

なぜか見覚えがある

ArchiveBoxのコントリビューターリストを見たとき、一番上に見覚えのある名前を見つけました。Nick Sweetingです。知り合いでした!2019年のPyGothamで会ったことがあるのです。

Nickのトーク動画をざっと見返してみると、なんと同じカンファレンスで5年前に彼がArchiveBoxのデモをしていたことに気づきました。当時私は彼のトークについて書いてさえいたのですが、なぜかArchiveBoxは印象に残らなかったようです。

Nickのトークを見てからの数年間で、ArchiveBoxは明らかに成熟し、私自身もアーカイブの必要性をより強く感じるようになりました。こうして再発見できてよかったと思っています。

参考リンク

  • ArchiveBox - ウェブページのローカルかつプライベートなアーカイブを作成するための無料オープンソースツール。
  • archive.orgのInternet Wayback Machine - 1996年まで遡るウェブの公開アーカイブ。

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント