様々なレイヤーのArchived website の統合インターフェイスを志向するMementoプロトコル

 過去のエントリでMementoの以下のようなウェブアーカイブに係る取り組みについて紹介しました。

 上だけでも結構すごいと思うのですが、いよいよ本丸ということで、Mementoが公開しているMementoプロトコルのドラフトを読んでみました。

 

 がっ!
 ようわからん・・・( ̄Д ̄;;

 
 頑張ってみましたが、私の知識ではちょっと理解するに及びませんでした。そこでMementoの以下のMementoプロトコルの紹介と

 MementoのHerbert Van de Sompel氏の一年前のスライド(以下)を手がかりに軽く紹介したいと思います。

 
 完全に理解しているわけでもないの紹介するのは少々躊躇われますが、Mementoプロジェクトが志向していることがよくわかるプロトコルです。紹介せずにいられない。

Mementoプロトコルを一言でいえば

 様々なレベル、手法でアーカイブされている過去のウェブ情報に一元的にアクセスさせるためのHTTPを拡張したフレームワーク
です。
標題にある通り、アーカイブされたウェブサイトの一元的なインターフェイスを提供を試みるHTTPプロトコル拡張というべきかもしれません。
 様々なレベル、手法といってもいろいろとありますが、Herbert Van de Sompel氏が上のスライドで挙げた例を参照すると以下のようなものでしょうか。現時点では、もちろん全てがMementoに対応しているわけではありません。

  • Internet Archiveなどのウェブアーカイブプロジェクトが保存した過去のウェブサイト
  • WikiやWordpressなど、バージョン管理システムを搭載しているCMSの差分情報
  • Googleなどが持っているキャッシュ

 つまり、Mementoは、Internet Archiveや世界の国立図書館のウェブアーカイビングプロジェクトだけを対象としているのではなく、検索エンジンのキャッシュやCMSの差分情報など普段、ウェブアーカイビングの文脈では語られにくいコンテンツもラップして統合的なアクセスを試みようとしていることになります。先日紹介したMementoの“SiteStory Web Archive”もそういった様々なウェブアーカイブの1つにサーバーサイド分散型セルフウェブアーカイブ というレイヤーを1つ追加しようという試みなのでしょう。

Mementoプロトコルしくみ

  
 簡単に説明するとHTTPのリクエストに以下のようなAccept-Datetimeヘッダを含めて、あるURLの特定の時点のページをサーバー側に要求を投げ、サーバー側とコンテンツのネゴシエートをする仕組みです。Mementoはこのネゴシエートする対象を様々なレイヤーにひろげようと考えているようなのです。

GET /memento/timegate/http://www.yahoo.co.jp/ HTTP/1.1
Host: purl.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20100101 Firefox/19.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
(省略)
Accept-Datetime: Sat, 18 Aug 2007 12:00:00 GMT
Connection: keep-alive

 
 リクエストを投げた後のフローですが、一番シンプルなケースの場合、オリジナルのURL(URL-R)とアーカイブされたそれぞれの時点のウェブサイト(URL-M)の間にTimeGate(URL-T)というリソースをおいて、このTimeGateでコンテンツをネゴシエートして、求める時点のウェブサイト(URL-M)に誘導します。
オリジナルのURL(URL-R)とアーカイブされたそれぞれの時点のウェブサイト(URL-M)の間にTimeGate(URL-T)というリソースをおいて、このTimeGateでコンテンツをネゴシエート
from Memento Guide: Introduction
  もう少し複雑な例として、TimeBundleとTimeMapを含めたフローもあります。Mementoプロトコルを読んでいて躓いたのは、実はこのTimeBundleとTimeMapでして、あまり詳しい説明ができません。こういうのがあるんだという紹介だけですまさせていただきます。

from Memento Guide: Introduction
 

まとめ?

 以前、「Web情報を保存するとは何かの続きの続き」というエントリを書いた事がありますが、あのエントリで書いたある程度の解はMementoプロトコルかもしれません。どこまで普及するかわからないプロトコルですが、非常に興味深い試みだと思います。IETFのインターネットドラフトとして公開されているのも興味深いですね。RFC化を目指しているのでしょうか。どうせなら、今、ちょうど議論されているHTTP2.0に組み込むよう働きかけたらどうだろうかと勝手ながら思ったりします。 
 

【参考】サーバー・クライアント間のリクエストとレスポンスの大まかなフロー

  
 Memento拡張のヘッダを入れ込んだHTTPでのリクエストとレスポンスのフローを1つ見てみたいと思います。
 ちなみにMementoプロトコルは以下のFirefoxのアドオンをインストールすることで使用することができます。

 今回はMementoでYahoo!Japan(http://www.yahoo.co.jp/)の2007年9月18日時点のウェブサイトにアクセスするとします。この場合、最終的にはInternet Archiveが保存した以下の2007年8月23日時点のウェブサイトが表示されるわけですが、そこまでの大まかなクライアント側とサーバー側のリクエストとレスポンスのフローを紹介します。

(1)リクエスト(クライアント側)

 クライアント側からTimeGateのあるhttp://purl.org/に対して以下のようなリクエストを投げています。2007年9月18日時点のYahoo!Japanのトップページほしいと言っているわけですね。

GET /memento/timegate/http://www.yahoo.co.jp/ HTTP/1.1
Host: purl.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20100101 Firefox/19.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
(省略)
Accept-Datetime: Sat, 18 Aug 2007 12:00:00 GMT
Connection: keep-alive

 「Accept-Datetime: Sat, 18 Aug 2007 12:00:00 GM」が肝です。

(2)レスポンス(purl.orgサーバー側)

  purl.orgサーバーは02(Moved Temporarily)を返しつつ、http://mementoproxy.lanl.gov配下のTimeGateへ誘導します。

HTTP/1.1 302 Moved Temporarily
Date: Thu, 28 Mar 2013 15:21:19 GMT
Server: 1060 NetKernel v3.3 – Powered by Jetty
Location: http://mementoproxy.lanl.gov/aggr/timegate/http://www.yahoo.co.jp/
Content-Type: text/html; charset=iso-8859-1
X-Purl: 2.0; http://localhost:8080
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Length: 299

 

(3)再度のリクエスト(クライアント側)

 クライアント側から(2)で誘導されたTimeGateのあるhttp://mementoproxy.lanl.gov/へ改めてリクエストを出します。(1)と同じようなリクエストですね。

GET /aggr/timegate/http://www.yahoo.co.jp/ HTTP/1.1
Host: mementoproxy.lanl.gov
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20100101 Firefox/19.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
(省略)
Accept-Datetime: Sat, 18 Aug 2007 12:00:00 GMT
Connection: keep-alive

 

(4)レスポンス(mementoproxy.lanl.govサーバー側)

  mementoproxy.lanl.govサーバーは以下のようなレスポンスを返します。

HTTP/1.1 302 Found
Date: Thu, 28 Mar 2013 15:21:20 GMT
Server: Apache
Vary: negotiate,accept-datetime
Link: ;rel=”original”,;rel=”timemap”;type=”application/link-format”,;datetime=”Wed, 20 Nov 1996 06:53:42 GMT”;rel=”first memento”,;datetime=”Sun, 05 Aug 2012 00:00:00 GMT”;rel=”last memento”,;datetime=”Sun, 12 Aug 2007 04:46:13 GMT”;rel=”prev memento”,;datetime=”Mon, 27 Aug 2007 07:53:33 GMT”;rel=”next memento”,;datetime=”Thu, 23 Aug 2007 00:35:41 GMT”;rel=”memento”
Location: http://api.wayback.archive.org/memento/20070823003541/http://www.yahoo.co.jp/#

Content-Length: 0
Keep-Alive: timeout=15, max=98
Connection: Keep-Alive
Content-Type: text/plain; charset=UTF-8

 2007年9月18日時点のYahoo!Japanのトップページがないので、保存されているページのうちで近い日付のものをネゴシエートしています。そして、最終的に、以下のURL、つまり、2007年8月23日にInteret Archiveが保存したのものが一番望む日付に近いよとクライアント側に返します。
http://api.wayback.archive.org/memento/20070823003541/http://www.yahoo.co.jp/
 

(5)Internet Archiveへのリクエスト(クライアント側)

(4)を受けてクライアントはInternet Archiveに2007年8月23日時点のYahoo!Japanのトップページをリクエストします。

GET /memento/20070823003541/http://www.yahoo.co.jp/ HTTP/1.1
Host: api.wayback.archive.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20100101 Firefox/19.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: wayback_server=37
Accept-Datetime: Sat, 18 Aug 2007 12:00:00 GMT
Connection: keep-alive

 

(6)Internet Archiveのレスポンス(api.wayback.archive.orgサーバー側)

  Internet Archiveのapi.wayback.archive.orgサーバーは以下のようなヘッダーを返します。

HTTP/1.1 200 OK
Server: Tengine/1.4.3
Date: Thu, 28 Mar 2013 15:21:21 GMT
Content-Type: text/html;charset=euc-jp
Transfer-Encoding: chunked
Connection: keep-alive
Memento-Datetime: Thu, 23 Aug 2007 00:35:41 GMT
Link: ;rel=”timebundle”, ;rel=”original”,;rel=”memento”; datetime=”Thu, 23 Aug 2007 00:35:41 GMT”, ;rel=”last memento”; datetime=”Mon, 18 Mar 2013 14:17:56 GMT”, ;rel=”first memento”; datetime=”Wed, 20 Nov 1996 06:53:42 GMT”, ;rel=”prev memento”; datetime=”Sun, 12 Aug 2007 04:46:13 GMT”, ;rel=”next memento”; datetime=”Mon, 27 Aug 2007 07:53:33 GMT” , ;rel=”timemap”; type=”application/link-format”,;rel=”timegate”
(省略)

 「Memento-Datetime: Thu, 23 Aug 2007 00:35:41 GMT」を返しています。 Memento-Datetimeはその時点のウェブサイトを持っていることを意味しています。あとは、2007年8月23日時点のYahoo!Japanのトップページを受け取るためにクライアント側とサーバー側でやり取りを繰り返します。

関連エントリ

Mementoのサーバーサイド分散型ウェブアーカイブ "SiteStory Web Archive"

 先のエントリで、MementoによるInternet ArchiveとUK Archiveの統合検索について紹介しました。今回はそのMementoのサーバーサイド分散型ウェブアーカイブ “SiteStory Web Archive”を簡単ですが、紹介します。ちなみにMemento自身はこれを”Transactional archiving”と呼んでいるようです。

 
 なお、「サーバーサイド分散型ウェブアーカイブ」とは、ウェブサイトを置いているサーバー自身にウェブサイトを保存する(セルフアーカイブする)仕組みを指しており、Internet Archiveのような集約型ウェブアーカイブと対照して、便宜上この場で使わせていただいている言葉です(先のエントリでも便宜上使用しましたが)

SiteStoryによるウェブアーカイブのしくみ

 紹介する、といいつつも、カレントアウェアネスの以下の記事の「ユーザがアクセスした際にそのコンテンツを保存するという“Transactional”なウェブアーカイブ」という紹介でほぼ説明し尽くされています。

 ウェブサイトのユーザーからアクセスされたタイミングでその時点のコンテンツがサーバー(Apache Web Content Server)内に保存されます。プロキシのキャッシュを永続化するようなしくみでしょうか。アクセスが多いコンテンツほど保存され、また、高い頻度で保存されます。

ウェブサイトのユーザーからアクセスされたタイミングでウェブサイトをサーバーに保存する。保存されたウェブサイトはMememntoのHTTP拡張プロコロルを使う他のユーザーによって利用される
SiteStoryによるウェブアーカイブのイメージ

 
 ウェブサーバーに保存されたウェブサイトは、ウェブアーカイブ用フォーマットの国際規格でもあるWARC形式としてダウンロードすることができるほか、Internet ArchiveのWayback Machineに送信する機能も備えているようです。

SiteStory Web Archiveの実装方法

 以下で詳しく紹介されていますが、mod_sitestoryというApacheのモジュールを追加することで実装することができるようです。SiteStory専用のサーバーを用意する必要があるようでして、私自身はまだ試していません。

 

SiteStoryによってアーカイブされたコンテンツの利用

 サーバーに蓄積された過去のウェブサイトは、Mementoが考案したプロトコル”HTTP framework for time-based access to resource states“(過去のコンテンツにアクセスするためのHTTP拡張みたいなものでしょうか)を利用してアクセスをします。現時点では、このMementoプロトコルを実装しているブラウザなんてありませんので、Mementoが公開するFirefoxのプラグインをインストールしてMementoプロトコルを使えるにしなければなりません。

SiteStoryのデモ

 SiteStory Web Archiveを実装しているウェブサイトがどれだけあるのかよくわかりませんが(おそらくほとんどないでしょうぁ・・・)、SiteStory Web Archiveでアーカイブされたデモコンテンツが公開されています。

 
 先に紹介したFirefoxのプラグインをインストールして以下のURLをアクセスしてみてください。2009年9月20日まで遡ることができるようです。

 
 日付とその日のBBCのウェブサイトのトップページを写したおじさま(ロス・アラモス研究所のHerbert Van de Sompel氏)の写真を見ることができます。写真は毎日更新されているようですね。うーん、これはこれですごいことだ。Herbert氏の経歴を見ると、OAI-PMHの仕様策定に絡んでいたり、現在だとOpen Annotationに絡んでいたりと、いろいろなところでこの方の実績や取りんでいるプロジェクトに出くわしているみたいで、「はぁ、凄い方だ」と思わず溜息。

2013年3月5日の画像
2013年3月5日

 

2011年2月24日の画像
2011年2月24日

 

2009年9月29日の画像
2009年9月29日

関連エントリ

今年、Web Payments(Web上のオープンな金銭取引の標準化)が大きく動く?

 これまでW3CのComunity Groupレベルで検討が進められていたWeb Payments(Web上のオープンな金銭取引の標準)が2013年になって、少し、もしかすると大きく進展することになりそうです。W3Cが力を入れるようになったということなのでしょうか。

 W3CのブログとW3C Wikiによると、Web Paymentsについて、W3Cは今後以下のような活動を予定しているそうです。

  • W3C Advisory Committeeでの報告(2013年6月か7月。開催地は東京?)
  • 外部有識者の招聘
  • ニーズを調査するための開発者を対象としたアンケートの実施
  • キーステークホルダーとの直接的なコンタクトDirect contact with key stakeholder groups (who?)
  • Web Paymentsのスコープが明らかにできた段階で、2013年後半にWeb Paymentsに関するワークショップの開催
  • 公式の報告書の発行

 
 Payment Task Forceなんて、いつの間に立ち上がっていたのだろうか・・・。Wikiの履歴を見る限り、2013年になってからのようですが。
 どちらにしても特定のプラットフォームに依存しなくても、Web上のお金のやり取りができるようになれば、プラットフォーム非依存なコンテンツの流通に大きく寄与すると思われますので、期待したいところです。

関連エントリ