#daiizメモ

ときどきいいことを書きます

独自のGoLinksを実装して運用している

GoLinksについてはすでに世の中に多数の運用例があり、例えばこれらの記事が参考になります。自分や組織だけのShort URLを作れるシステムです。ウェブブラウザのアドレスバーにgo/blogと入力したらこのブログにリダイレクトさせたりできます。

また、GitHubを探せばOSSプロジェクトもたくさんあるでしょう。Webサービスも見つかります。

今回は、これを自作した話です。車輪の再発明ではありますが、完全に自分好みの仕様で設計できたり、突然のサービス終了リスクに身構える必要がなくなります。また、今の時代はこの手の小さなツールはほとんどをClaude Codeが書くので再発明のコスト自体も小さくなりつつあります。

ということで、できました。ここ一週間くらい毎日使っています。これのおかげでブラウザのブックマークバーがすっきりして、次になんとかしたいのはブックマークレットだ、という感じになっています。生活に密着していていい調子です。

  • http://go/の解決はChrome拡張機能で行う
    • background.jsで chrome.declarativeNetRequest という技術を使ってリクエストを横取りしている
    • popup.htmlでの操作をトリガーとして、chrome.declarativeNetRequest.updateDynamicRules が実行され、拡張機能内部でのリダイレクトルールが書き換えられる。リダイレクトのマッピングはすべてここで事前登録されるため、アクセス時には無駄な処理は走らない。
    • Image from Gyazo
  • 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*2go/code*3 など、出先でMacBookでデモするときにシュッと開けて嬉しいものを登録しています。クエリパラメータにも対応しているので、go/blog?q=京都のようにこのブロクの記事検索画面に誘導することもできて便利です。

アドレスバーに入力するだけでなく、aタグでの遷移も問題なく動きます。

Image from Gyazo

プライベートな用途では、j/wikiでTeamJ専用のCosenseを開いたり、d/moneyでマネーフォワードの特定の画面を開いたりできます。また、手書きのノートにd/Phonnod/snapshotsと書くだけでどのプロジェクトの話をしているのかが明確になります。

さらに、ファンとして応援している櫻坂46関連のコンテンツにすぐに辿り着けるのも最高です。これらは配信サービス名と番組名の組で覚える必要があるため、嬉しい悲鳴ではありますが、追いかけるものが増えるほど厳しくなっていきます。このように普段の呼び方で登録しておけばOKです。

Image from Gyazo

自分が欲しいアプリを自給自足できる世界、いいですね!

*1:daiizの"d"です。

*2:点描画変換ツール

*3:GitHubのリポジトリリストページ