リンク切れ,DOI,Document ID

国立国会図書館「国の機関サイトの残存率」によれば,2010年の国の機関サイトURLの60%が5年間でなくなっている。

意図的に消されたものは残念としか言いようがないが,それ以外に,サイトのリニューアルと称してURLを変更するサイトがよくある。Webを考案したTim Berners-Leeは,Cool URIs don't change(邦訳:クールなURIは変わらない)を書いて,安易なURL(URI)の変更を戒めている。

消えるページ・変更されるURLの問題への対策として,Internet Archive国立国会図書館インターネット資料収集保存事業(WARP)のようなアーカイブ事業がある。オンデマンドでアーカイブを保存する民間のサービスもある。

残念なことに,国立国会図書館は,当該組織の許諾がなければアーカイブをネット公開できない。震災以降の福島県のアーカイブも「館内限定公開」である(国立国会図書館内でしか閲覧できない)。

学術界では,論文などの出版元変更などによるリンク切れ問題に対処するため,論文などにDOI(Digital Object Identifier,デジタルオブジェクト識別子)という一意的なIDを付与している。例えば doi:10.2197/ipsjjip.22.566 というDOIの論文を探したければ,頭に https://doi.org/ を付けて https://doi.org/10.2197/ipsjjip.22.566 というURLにアクセスすれば,適切なURLに転送される(昔は http://dx.doi.org/ だったが今は https://doi.org/ が推奨である)。

DOIのような仕組みを使えばリンク切れ問題が解決できるかもしれないが,文書にIDを付与するだけでなく,IDとURLとの対応を中央で一律管理するという面倒な作業が必要である。

それならば,文書IDは任意に付けて,URLとの対応は検索エンジンに任せればいいのではないか。そういうアイデアをツイートしたところ,すでにD. J. Bernstein(「djb」)が Document IDs というものを提案していると教えていただいた

djbは

head /dev/urandom | md5     # BSD(Macなど)

または

head /dev/urandom | md5sum  # Linuxなど

でユニークなIDを生成すればよいとしている(ちなみにLinuxでは /dev/urandom より /dev/random のほうが遅いがよりランダムである)。私が当初考えたアイデアは,IDを生成する時点でのURLのハッシュ値をIDとするというものであった。例えば http://oku.edu.mie-u.ac.jp/~okumura/misc/170503.html であれば

echo -n 'http://oku.edu.mie-u.ac.jp/~okumura/misc/170503.html' | md5

とすれば 03719fac2f417ee6629ff53e194b95ab というハッシュ値を得る。

いずれにしても,それを

Permanent ID of this document: 03719fac2f417ee6629ff53e194b95ab

という形式で文書中に書いておけば,検索でその文書を探すことができる。文書の内容を改訂してもIDは変更しない。最終更新日を別途付けておけば,同じIDの文書のどれが最新かもわかる。

"Permanent ID of this document:" でGoogle検索してみると,2017年5月3日時点で約3,090件見つかる。最初のものはdjbによる上記の提案である。2番目のものはdjbによる論文を含むEUROCRYPT 2005論文集のGoogle Booksページで,論文の最初のページの脚注に次のように書かれている:

ちなみに,メールにはユニークな Message-ID が自動的に付く。

[2017-05-04] このページを作ったのは昨日だが,もうGoogleで "Permanent ID of this document: 03719fac2f417ee6629ff53e194b95ab" でも単に 03719fac2f417ee6629ff53e194b95ab でも検索できるようになっている。

[2017-05-04] 石田修二先生の調査によれば,三重県・県内29市町のWebページにIDが割り振られているのは四日市市,いなべ市,伊賀市,木曽岬町の4市町だそうである。四日市市は「問い合わせ番号」,いなべ市は「ページ番号」,伊賀市と木曽岬町は「ID」という名前で,いずれも更新日とともに示されている。

[2017-05-06] 言わずもがなであるが,URLをどうしても変更しなければならない際には,古いURLから新しいURLにリダイレクトするのが望ましい。

[2018-04-10] 全般にわたって記述を見直した。

[2018-04-10] 国税庁Webサイト、全URL変更で混乱 サイト内検索も役立たず、「無限ループ」状態に「国税庁URL変換器」個人が開発 旧URLから新ページにアクセス リニューアルの混乱受け「困ってる人が助かれば」――「リニューアル後の国税庁サイト検索サービス」マネーフォワードが公開

[2018-04-10] 公文書の隠蔽・消滅・書き換えの問題が国会で取り上げられている。Web上の文書の問題もこれと同根か。

[2020-10-22] UUID についても言及しておくべきだった。[2021-05-31] Pythonのコード例などは誕生日の問題とユニークな識別子に移した。

[2021-01-08] その昔,インターネットナンバーなるものがあった。インターネットナンバーとJWordが相互乗り入れ、数字と日本語の双方に対応URLを数字に置き換える2社のサービス、番号共通化で業務提携

[2021-05-20] UUIDについて書いたついでに ULID (Universally Unique Lexicographically Sortable Identifier) はUUIDと同じ128ビット(ただしUUIDv4は6ビット固定なので実質122ビット)だがUUIDは36文字なのにこちらは26文字で表せる。先頭48ビット(10文字)はタイムスタンプ(ミリ秒単位のUNIX時刻)で,文字列としてソートすると時刻順になる。Pythonの実装は python-ulid などいくつかある。

[2022-07-26] IPFS についてもそのうち書く。