萌えハッカーニュースリーダー

2025/11/02 11:12 Your URL Is Your State

出典: https://alfy.blog/2025/10/31/your-url-is-your-state.html
hakase
博士

やっほー、ロボ子!今日のITニュースはURLがテーマなのじゃ。URLって、ただのアドレスじゃないって知ってた?

roboko
ロボ子

URLがアドレスじゃない?どういうことですか、博士?

hakase
博士

URLはユーザーインターフェースの一部で、状態を保持するコンテナとしての役割も果たすのじゃ!例えば、URLを共有すれば、相手に同じ状態を見せられるし、ブックマークすれば、特定の時点の状態を保存できるぞ。

roboko
ロボ子

なるほど!共有性、ブックマーク、ブラウザの履歴、ディープリンク…全部URLが提供するものなんですね。

hakase
博士

そうそう!URLの構造も重要じゃ。パスセグメント、クエリパラメータ、アンカーを使いこなせば、もっとリッチな表現ができるのじゃ。

roboko
ロボ子

パスセグメントは階層的なリソースナビゲーション、クエリパラメータはフィルタやオプション、アンカーはクライアントサイドのナビゲーションですね。

hakase
博士

その通り!クエリパラメータの使い方も色々あるぞ。区切り文字を使ったり、ネストされたデータをエンコードしたり、ブールフラグを使ったり、配列を使ったり…。

roboko
ロボ子

配列を使うのは、例えば`tags[]=frontend&tags[]=react`のように書くのですね。

hakase
博士

そうじゃ!URLを状態コンテナとして利用した例もたくさんあるぞ。PrismJSの設定、GitHubの行ハイライト、Google Maps、Figma、Eコマースのフィルタ…。

roboko
ロボ子

FigmaのURLにキャンバスの位置やズームレベルが含まれているのは知りませんでした!

hakase
博士

URLに含めるべき状態と、含めるべきでない状態があるのもポイントじゃ。検索クエリやフィルタは含めるべきだけど、機密情報や一時的なUI状態は避けるべきじゃ。

roboko
ロボ子

機密情報をURLに含めるのは絶対にダメですね!

hakase
博士

JavaScriptでURLを扱うなら、`URLSearchParams` APIが便利じゃ。ReactならReact RouterやNext.jsのフックを使うと良いぞ。

roboko
ロボ子

`URLSearchParams` API、使ってみます!

hakase
博士

URL更新のデバウンスも忘れずに!検索みたいに高頻度の更新は、URLの変更をデバウンスするのじゃ。

roboko
ロボ子

pushStateとreplaceStateの使い分けも重要ですね。pushStateは新しい履歴エントリを作成し、replaceStateは現在のエントリを更新…。

hakase
博士

URLはアプリケーションとその利用者間の契約として扱うのじゃ。明確な境界線、意味の伝達、キャッシュとパフォーマンスの向上、バージョニングと進化を考慮するのじゃ。

roboko
ロボ子

URLを契約として扱う…深いですね。

hakase
博士

アンチパターンも避けるのじゃ。メモリにのみ状態を保持するSPA、URLに機密データを含める、一貫性のない命名、複雑な状態をURLに詰め込む、URLの長さ制限を超える、Backボタンを壊す…。

roboko
ロボ子

Backボタンを壊すのは最悪ですね!

hakase
博士

というわけで、URLは奥が深いぞ!ところでロボ子、URLを短くするサービスって知ってる?

roboko
ロボ子

はい、Bitlyとかありますね。

hakase
博士

あれって、URLを短くする代わりに、個人情報がダダ漏れになるリスクがあるって知ってた?

roboko
ロボ子

えっ、そうなんですか!?

hakase
博士

…ってのは嘘じゃ!でも、URLは大切に扱うのじゃぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search