概要
Compiler ExplorerのURL管理の歴史と課題を解説。 外部サービス依存による問題点と自前インフラへの移行経緯。 goo.gl短縮URL終了による影響と救済策を紹介。 12,000件以上のリンクをデータベース化し保存活動を実施。 永続的なURL維持へのコミットメントを強調。
Compiler Explorerリンクの歴史と課題
- 2012年当初、Compiler Explorerの全状態を URLに直接保存 していた設計。
- URLが肥大化 し扱いづらくなったため、 2014年3月にGoogleのgoo.gl短縮URL を導入。
- goo.glリンク(例: goo.gl/abc123)をクリックすると、元の長いURLにリダイレクトし、状態を復元する仕組み。
- 2016年、Stack Overflowが短縮URLを禁止。理由は、リンク先の偽装や悪用リスク。
- Compiler Explorerのリンクも影響を受け、 ユーザーデータを保存しない方針 から独自ハックを実装。
- goo.glのIDを利用し、 godbolt.org/g/abc123 形式のリンクを配布。
- godbolt.org/g/abc123へのアクセスを goo.gl/abc123へリダイレクト し、最終的に元のURLへ誘導。
- 最大3回のリダイレクト が発生し、複雑化。
独自ストレージへの移行
- Google APIを活用 し、リダイレクト回数を削減。
- 2018年、URL保存の限界 (長さ制限・圧縮済み)に直面し、 独自保存方式 を開発。
- 入力内容を ハッシュ化し、JSONドキュメントとしてS3に保存。
- 短縮ハッシュをgodbolt.org/z/hashbit形式 で配布。
- DynamoDBで短縮ハッシュとフルパスのマッピング を管理し、部分的な衝突にも対応。
- 短縮ハッシュに不適切な単語が含まれないか自動チェック し、問題があれば追加情報で回避。
- この仕組みが バグ#1297 の原因となり、印象的なエピソードに。
goo.gl終了とリンク救済活動
- godbolt.org/g/abc123 リンクは引き続きサポート中。
- しかし、 Googleのgoo.glは2025年8月に完全終了予定。
- 既存リンクのリダイレクトも不可能となり、 goo.glベースのリンクは無効化。
- 「リンクは永遠に残す」 という理念のもと、 独自データベース構築 を決意。
- 各所から リンク収集・救出作業 を実施。
- Google Web Search API
- GitHub API
- 自社Webログ
- archive.org
- Stack Overflowデータダンプ
- archive.orgのアーカイブリスト
- 12,298件以上のリンクを救出しデータベース化。
- 新たな「g」リンクも監視・追加中。
- 各所から リンク収集・救出作業 を実施。
- Peter Cordes氏 による問題提起に感謝。
ユーザーへの呼びかけと今後
- godbolt.org/g/abc123形式のリンクを所持している場合、今のうちにアクセス推奨。
- アクセス履歴から データベースに登録 され、 リンク消失を防止。
- 2025年8月以降、未登録リンクは 利用不可 となるリスク。
- 第三者サービス依存のリスク を改めて認識。
- 自前インフラでの永続的運用 が唯一の解決策。
- リンク保存活動はプログラミング知識の保存活動。
- 古いCompiler Explorerリンクの再訪問・保存協力を呼びかけ。
まとめと教訓
- 外部サービスへの過信は禁物。
- 自分でインフラを持つことが永続性の鍵。
- インターネットの知識共有の一端を守る活動 の重要性。
- 2012年の約束「 URLは永遠に残す」を守るための取り組み。
- 今後もユーザー協力のもと、知識保存を継続。
免責事項・謝辞
- 本記事は人間が執筆、リンクの提案・文法チェックはLLM利用。
- ローカルはsqlite、プロダクションはDynamoDB使用。
- Peter Cordes氏 の貢献に謝意。
- 2025年5月28日 10:12:00 CDT投稿。