URL
Uniform Resource Locator
概要(サマリー)
URL(Uniform Resource Locator)とは、Webページや画像、PDFなどの場所を示す、インターネット上の住所のような文字列である。
たとえば https://noveblo.com/glossary/url.html のような文字列がURLである。ブラウザのアドレスバーに入力すると、その場所にあるページへアクセスできる。
URLは単なる名前ではなく、「どの通信方法で」「どのサーバーへ」「どのファイルや機能を取りに行くか」をまとめて表す。Web制作、SEO、API連携、AIコーディングのどれでも頻繁に出てくる基本用語である。
詳細解説
URLとは何か
URLは、インターネット上のリソースの場所を表すための文字列である。リソースとは、Webページ、画像、動画、PDF、APIのエンドポイントなど、ネットワーク越しに取得できる情報のことである。
現実世界で「東京都〇〇区の建物」と住所を書くように、WebではURLを使って「どのサーバーのどの場所にある情報か」を指定する。Webサイトのリンク、画像の読み込み、フォーム送信、API通信などは、ほとんどの場合URLを使って目的地を指定している。
初心者がまず覚えるべきなのは、URLは「ドメインだけ」ではないという点である。example.com はURLの一部であり、https://example.com/products/?page=2 のように通信方式やパス、クエリまで含めた全体がURLである。
URLを構成する主なパーツ
URLは、いくつかの部品に分けて理解すると読みやすい。
https://example.com:443/articles/url.html?ref=search#summary
- スキーム:
https://の部分。通信方法を示す。WebではHTTP / HTTPSがよく使われる - ホスト名:
example.comの部分。アクセス先のサーバー名を示す - ポート番号:
:443の部分。接続先の窓口番号を示す。通常のHTTPSでは省略されることが多い - パス:
/articles/url.htmlの部分。サーバー内のページや機能の位置を示す - クエリ:
?ref=searchの部分。検索条件や絞り込み条件など、追加の情報を渡す - フラグメント:
#summaryの部分。ページ内の特定位置へ移動するために使う
URLのどこがスキームで、どこがドメインやパス、クエリなのかを実際に分けて確認したい場合は、以下のツールを使うと全体像をつかみやすい。
ホスト名は、内部的にはDNSによってIPアドレスへ変換される。つまり、人間が覚えやすい名前をDNSが機械向けの住所へ変換し、その先のサーバーへ接続している。
絶対URLと相対URL
Web制作では、リンク先や画像の場所を「絶対URL」または「相対URL」で指定する。
絶対URLは、スキームやドメインを含む完全なURLである。
https://example.com/assets/logo.png
外部サイトへのリンク、SNSで共有するURL、メールに貼るURL、canonicalなどには絶対URLが向いている。どのページから見ても同じ場所を指せるためである。
相対URLは、今いるページを基準にして場所を指定する書き方である。
../assets/logo.png
同じサイト内の画像やページを参照するときに便利である。開発環境から本番環境へ移すとき、ドメインを書き換えずに済むこともある。ただし、現在地のディレクトリが変わると参照先も変わるため、階層構造を理解して使う必要がある。
URLとURIの違い
URLと似た言葉にURI(Uniform Resource Identifier)がある。厳密には、URIはリソースを識別するための広い概念であり、URLはその中でも「場所」を示すものとして説明されることが多い。
ただし、現在のWeb標準やブラウザ実装では、実務上「URL」という言葉を中心に扱う場面が多い。WHATWGのURL標準でも、現代の実装に合わせてURLという用語を標準化する方向で整理されている。
初心者は、まず「Webページの住所として普段使うのはURL」と覚えれば十分である。仕様書や古い資料を読むとURIという言葉が出てくるため、そのときに「URLより広い識別子の考え方」と理解すると混乱しにくい。
クエリパラメータの役割
URLの ? 以降に付く情報をクエリパラメータ、またはクエリ文字列と呼ぶ。
https://example.com/search?q=url&page=2
この例では、q=url と page=2 がクエリパラメータである。検索キーワード、ページ番号、並び順、フィルター条件などをサーバーやWebアプリへ渡すために使われる。
クエリパラメータは便利だが、ユーザーに見える場所でもある。個人情報、パスワード、APIキーのような秘密情報をURLに含めるのは避けるべきである。ブラウザ履歴、アクセスログ、共有リンクなどに残る可能性があるためである。
URLで注意すべきセキュリティ
URLはWebの基本だが、扱いを間違えるとセキュリティ問題につながる。
- オープンリダイレクト: 外部から渡されたURLへそのまま転送し、フィッシングに悪用される
- XSS: URL中の値をHTMLへそのまま出力し、スクリプトを実行される
- 秘密情報の露出: トークンやパスワードをクエリに入れて、ログや履歴に残してしまう
- パーセントエンコードの誤解: 日本語や記号をURL用に変換せず、壊れたURLや意図しない解釈になる
URLをプログラムで扱うときは、文字列結合だけで組み立てるより、言語やブラウザが提供するURL用のAPIを使う方が安全である。
AIコーディングとの関係
AIコーディングでは、URLの組み立て、分解、クエリパラメータの取得、APIエンドポイントの設計がよく出てくる。AIに依頼するときは、「URLを文字列結合で作る」のではなく、「URL APIやURLSearchParamsを使って安全に作る」と指定するとよい。
たとえば、JavaScriptでは次のようにURLを扱える。
const url = new URL("https://example.com/search");
url.searchParams.set("q", "AI coding");
url.searchParams.set("page", "2");
console.log(url.toString());
URL と URLSearchParams を使うと、クエリの追加や変更を読みやすく書ける。記号や空白を含む値も、URLとして扱いやすい形へ変換される。
AIへ依頼するときは、次のように条件を具体化するとよい。
JavaScriptでURLSearchParamsを使い、検索キーワードとページ番号をURLに追加する例を書いてください。
ユーザー入力をそのままHTMLに出さない注意点も説明してください。
URLは小さな文字列に見えるが、Webアプリの入口でもある。AIが生成したコードでも、外部URLへの転送、クエリの利用、認証情報の扱いは必ず確認する必要がある。
よくある勘違い
URLとドメインは同じもの?
同じではない。ドメインは example.com のようなホスト名の部分である。URLは、https://、ドメイン、パス、クエリ、フラグメントなどを含む全体の文字列である。
URLは大文字と小文字を区別しない?
すべてが同じ扱いになるわけではない。ドメイン部分は通常、大文字小文字を区別しない。一方、パス部分はサーバーや設定によって区別されることがある。運用では小文字に統一するとトラブルを減らしやすい。
URLは長くても問題ない?
無制限ではない。ブラウザ、サーバー、プロキシ、アプリの実装によって扱える長さには上限がある。長すぎる情報をURLへ詰め込むより、必要に応じてPOSTリクエストやサーバー側の保存を検討する。
URLにパスワードやトークンを入れてよい?
入れるべきではない。URLは履歴、ログ、解析ツール、共有リンクなどに残りやすい。秘密情報はURLではなく、適切な認証ヘッダーや安全な保存方法で扱う必要がある。
まとめ
- URLは、Webページやファイルなどの場所を示す住所のような文字列である
- スキーム、ホスト名、ポート、パス、クエリ、フラグメントなどの部品で構成される
- 絶対URLと相対URLは、用途に応じて使い分ける
- URIはURLより広い概念として説明されることがあるが、現代のWeb実務ではURLという言葉が中心である
- URLをプログラムで扱うときは、秘密情報の露出やリダイレクト、XSSに注意する
情報ソース
より詳しくAIに聞いてみよう
- URLを構成するスキーム、ドメイン、パス、クエリ、フラグメントの役割を初心者向けに説明してください。
- 絶対URLと相対URLの違いを、Webサイト制作の具体例で教えてください。
- URLとURIの違いを、厳密な説明と実務での使い分けに分けて整理してください。
- JavaScriptのURL APIとURLSearchParamsの使い方を、短いコード例つきで説明してください。
- URLにユーザー入力を含めるときのセキュリティ上の注意点を教えてください。