URLとは何か

URL(Uniform Resource Locator)は、インターネット上のページ、画像、APIなどの資源がどこにあり、どの方法で取得するかを示す文字列です。ブラウザのアドレス欄に表示されるWebアドレスが代表例です。

ドメインはURLの一部分です。同じドメインでも、パスやクエリが違えば別のページや条件を表せます。

一文でいうと

URLとは、インターネット上の資源の場所と、そこへアクセスする方法を示す住所です。

MDNはURLを、インターネット上の固有の資源を指すアドレスと説明しています。実際には資源が移動したり削除されたりするため、正しい形式のURLでも常に取得できるとは限りません。

個人開発のどこで登場するか

ページへのリンク、画像の取得先、APIの接続先、認証後の戻り先、Webhookの送信先など、Web開発のさまざまな場所で登場します。

URLは利用者へ見せる文字列であると同時に、次のような運用上の識別子にもなります。

  • どのページを正式版として検索エンジンへ伝えるか

  • 開発、Preview、本番のどこへ接続するか

  • エラーがどの経路で起きたか

  • 外部サービスがどこへ結果を返すか

一文字違うだけで別の接続先になるため、画面名だけでなくURLそのものを確認します。

一つのURLを部品に分ける

https://example.com/articles?sort=new#top を例にします。

  • https:アクセス方法を示すスキーム

  • example.com:接続先を示すドメイン名

  • /articles:接続先の中で資源を示すパス

  • ?sort=new:条件などを渡すクエリ

  • #top:ページ内の位置などを示すフラグメント

フラグメントは主にブラウザ側で処理され、通常はHTTPリクエストの対象へ送られません。どの部品がサーバーへ届くかを区別すると、画面遷移やエラーを調べやすくなります。

ドメインやURIと区別する

  • ドメイン:example.com のような階層的な名前

  • URL:スキーム、接続先、パスなどを含む資源の場所

  • URI:資源を識別する文字列を広く指す用語

  • リンク:別の資源へ移動できるよう、URLなどを文書や画面へ結び付けたもの

日常のWeb開発ではURLとURIが近い意味で使われる場合もあります。厳密な分類を先に暗記するより、いま扱う文字列のどの部分を変更しているかを確認します。

URLへ秘密情報を入れない

URLは、ブラウザ履歴、アクセスログ、解析ツール、参照元情報、画面共有などへ残る可能性があります。パスやクエリへ、パスワード、長期間有効なAPIキー、個人情報を直接入れないようにします。

また、URLを文字列の結合だけで作ると、空白、日本語、&、#などが別の意味として解釈される場合があります。利用する言語やライブラリのURL機能で組み立て、入力値を適切にエンコードします。外部から受け取った戻り先URLは、意図した接続先だけを許可します。

次に読む記事

URLのドメイン部分はドメインとは何か、接続先を調べる仕組みはDNSとは何かで説明します。先頭の通信方法はHTTPとは何かとHTTPSとは何かへ進みます。

参考資料