- Compiler Explorer は当初、すべての状態を URLに直接保存 する方式を採用していた
- URLが長くなりすぎたため、Googleの goo.gl 短縮URLサービス を導入し、この構造は複数回のリダイレクトを経る複雑さを生んだ
- 2018年からはURL長の制限問題と保守の難しさにより、独自の S3 と DynamoDB ベースのストレージ を活用する構成へ移行した
- しかし Google が goo.gl サービスを2025年8月に終了 するため、過去の短縮リンクの永続性を自ら管理しなければならない状況になった
- 現時点までに 12,000 件を超える レガシーリンクを救出 しており、これは プログラミング知識の保存と持続可能なサービス運営 の重要性を示している
Compiler Explorer リンクの恒久保証と歴史
初期設計方式と goo.gl 導入の背景
- 2012年、Compiler Explorer はすべてのコンパイラ状態を URLに直接エンコード する構造を導入した
- 状態情報が増えるほど、URLが過度に長くなる問題が発生
- URLを短くするため、2014年に Google の goo.gl 短縮サービス を適用
goo.gl/abc123 形式の短縮リンクを提供し、クリックすると元の長いURLへリダイレクトした後に状態を復元
- Stack Overflow が短縮リンクの使用禁止(2016年)を行ったことで、従来方式に制約が生じた
- 悪意あるリンクを隠せる危険のため、すべての goo.gl ベースのリンクが影響を受けた
- ユーザーデータを保存したくなかったため、暫定策として
godbolt.org/g/abc123 形式の独自パスを作成
godbolt.org/g/abc123 にアクセスすると goo.gl/abc123 に再度リダイレクト
- この過程で最終的に
godbolt.org の長いURLへ戻る
- 複数のリダイレクトが発生し、構造が複雑になる問題があった
- その後、Google API の利用によってリダイレクト手順の一部を簡略化
独自ストレージ導入とリンク管理
- 2018年からは URL長の限界 とデータ圧縮の不便さが頻繁に問題となった
- S3 と DynamoDB を活用した独自ストレージ構造を実装
- 入力値を ハッシュ化 し、JSON 文書形式 で S3 に保存
- 短縮リンク(
godbolt.org/z/hashbit)にアクセスすると DynamoDB でマッピングを参照
- ハッシュ値に卑語など不適切な単語が含まれる場合、ランダム要素を加えて回避するチェック機能を実装
- ハッシュベースのリンクにおける不適切語の問題を解決し、関連バグも経験(例: issue #1297)
- 現在もなお
godbolt.org/g/abc123 形式のアドレスをサポート
- Google の公式案内にもかかわらず、goo.gl サービスは読み取り専用へ移行しており、2025年8月に完全終了予定
- goo.gl ベースの短縮リンクは今後解決不能になる予定
godbolt.org/g/abc123 形式は 直接管理によって延命可能 なため、これらのリンク構造に対して体系的な救済作業を進めている
レガシーリンクの大規模収集とアーカイブ作業
- 最近、あらゆる可能なソース(検索、データダンプ、ウェブログなど)からレガシーリンクをクロールし、データベース化を進めた
- Google Web Search API
- GitHub API
- 自前のサーバーログ
- archive.org の Stack Overflow データダンプ
- Archive.org に保存されたウェブページデータ
- 約 12,298 件の短縮リンクの復旧に成功
- 内部的には goo.gl の代わりに独自リンクデータベースの利用を開始した(関連PR: #7724)
- 今後も未発見の
godbolt.org/g/abc123 リンクを継続的に収集・確保していく予定
- コミュニティにまだ未登録のリンクがあれば、直接アクセスするか管理者に知らせてデータベース補完を依頼してほしい
プロジェクト哲学とインフラ所有の重要性
- 今回の事例を通じて、重要なインフラを外部サービス(例: Google)の継続性だけに依存することの危険性 が確認された
- 短縮リンク管理とバックアップ構造は暫定策であり、完全に永続的なURLを約束するにはサービス全体を自ら管理する必要 がある
- デジタル考古学のように古いレガシーリンクを救う過程で、一つひとつのリンクが 誰かの知識共有、質問、概念説明の痕跡 であると認識した
- この保存と保全の行為は、プログラミングコミュニティの歴史のアーカイブ にも直結する
- 古い Compiler Explorer のリンクを見つけたなら、今からでも一度ずつクリックしてみることが、インターネット上の知識保存に貢献する道だ
- 今回は サードパーティではなく、自ら制御できるインフラ に依存することで、継続保証の約束を果たせるようになった
Disclaimer
- 本文は人間が執筆したものであり、リンクの推薦と文法チェックの過程で LLM を活用した
1件のコメント
Hacker Newsの意見