GoLinksについてはすでに世の中に多数の運用例があり、例えばこれらの記事が参考になります。自分や組織だけのShort URLを作れるシステムです。ウェブブラウザのアドレスバーにgo/blog
と入力したらこのブログにリダイレクトさせたりできます。
また、GitHubを探せばOSSプロジェクトもたくさんあるでしょう。Webサービスも見つかります。
- GitHub - GoLinks/golinks: GoLinks also known as go links, golinks, go/links, or go-links. Intuitive, easy-to-remember short links, shared by teams.
- GoLinks® | Knowledge Discovery & Link Management Platform
今回は、これを自作した話です。車輪の再発明ではありますが、完全に自分好みの仕様で設計できたり、突然のサービス終了リスクに身構える必要がなくなります。また、今の時代はこの手の小さなツールはほとんどをClaude Codeが書くので再発明のコスト自体も小さくなりつつあります。
ということで、できました。ここ一週間くらい毎日使っています。これのおかげでブラウザのブックマークバーがすっきりして、次になんとかしたいのはブックマークレットだ、という感じになっています。生活に密着していていい調子です。
http://go/
の解決はChrome拡張機能で行う- background.jsで chrome.declarativeNetRequest という技術を使ってリクエストを横取りしている
- popup.htmlでの操作をトリガーとして、chrome.declarativeNetRequest.updateDynamicRules が実行され、拡張機能内部でのリダイレクトルールが書き換えられる。リダイレクトのマッピングはすべてここで事前登録されるため、アクセス時には無駄な処理は走らない。
- Short URLの名前とリダイレクト定義はCosenseで行う
- コードブロック記法でタブ区切りで書いてテキストファイルとして配信する。今回はCosenseを使うことでサーバーを用意する手間が省けた。(任意のサーバーでテキストファイルを配信できればよいので自由度が高い)
- 例: https://scrapbox.io/api/code/daiiz/GoLinks/redirects.txt
- 存在しないShort URLにアクセスしたときは定義用のCosenseページを開く
- その場で新規登録できる
- 厳密にはリダイレクト定義ファイルで
404
の遷移先を指定できるようにしてある
パブリック系のリソースに割り当てたgo/
の他にも、TeamJ用のj/
や、自分限定の d/
*1 などもあります。go系はgo/tenbyo
*2 やgo/code
*3 など、出先でMacBookでデモするときにシュッと開けて嬉しいものを登録しています。クエリパラメータにも対応しているので、go/blog?q=京都
のようにこのブロクの記事検索画面に誘導することもできて便利です。
アドレスバーに入力するだけでなく、aタグでの遷移も問題なく動きます。
プライベートな用途では、j/wiki
でTeamJ専用のCosenseを開いたり、d/money
でマネーフォワードの特定の画面を開いたりできます。また、手書きのノートにd/Phonno
や d/snapshots
と書くだけでどのプロジェクトの話をしているのかが明確になります。
さらに、ファンとして応援している櫻坂46関連のコンテンツにすぐに辿り着けるのも最高です。これらは配信サービス名と番組名の組で覚える必要があるため、嬉しい悲鳴ではありますが、追いかけるものが増えるほど厳しくなっていきます。このように普段の呼び方で登録しておけばOKです。
自分が欲しいアプリを自給自足できる世界、いいですね!