URL構造を理解する 🔗
毎日インターネットを使いながらURLを見ていますが、各部分が何を意味するのかよく分からないかもしれません。URLの構造を理解すれば、Web開発がずっと簡単になります!一つずつ見ていきましょう。
URLを日常生活に例えると?
URLを郵便住所に例えてみましょう。
郵便住所の話 📬
日本 東京都 新宿区 西新宿 1-2-3 ABCビル 5階 501号室
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
国 都道府県 区 町 番地 建物 階 部屋番号
URLも似ています:
https://www.example.com:443/products/shoes?color=red&size=10#reviews
↓ ↓ ↓ ↓ ↓ ↓
プロトコル ドメイン ポート パス クエリ文字列 ハッシュ
URLの定義
URL (Uniform Resource Locator)
- インターネット上のリソース(ページ、画像、ファイルなど)の場所を示すアドレス
- 「Webアドレス」または「リンク」とも呼ばれます
URL全体構造を一目で見る
https://user:pass@www.example.com:443/products/shoes?color=red&size=10#reviews
└──┬─┘ └────┬────┘└───────┬───────┘└┬┘└──────┬──────┘└────────┬────────┘└──┬──┘
プロトコル 認証情報 ドメイン ポート パス クエリ文字列 ハッシュ/フラグメント
一つずつ詳しく見ていきましょう!
1. プロトコル (Protocol) 🔐
Webサイトに接続する方法
https://example.com
└──┬─┘
プロトコル
主要なプロトコル
HTTP (HyperText Transfer Protocol)
http://example.com
- 通常のWebサイト接続方法
- セキュリティなし ⚠️
- データが暗号化されない
- 最近はほとんど使用されない
HTTPS (HTTP Secure)
https://example.com
- セキュリティのある Webサイト接続方法 🔒
- データが暗号化される
- 現代のWebサイト標準
- 鍵アイコン 🔒 表示
その他のプロトコル
ftp://example.com # ファイル転送
mailto:user@email.com # メール送信
file:///C:/folder # ローカルファイル
ヒント
常にHTTPSを使用しましょう! 特にログイン、決済、個人情報入力時はHTTPSかどうか必ず確認してください。
2. ドメイン (Domain) 🌐
Webサイトの名前
https://www.example.com
└──────┬──────┘
ドメイン
ドメイン構造
www.example.com
└┬┘ └──┬──┘└┬┘
サブ 名前 TLD
ドメイン (トップレベルドメイン)
トップレベルドメイン (TLD - Top Level Domain)
.com → 商業的(最も一般的)
.net → ネットワーク
.org → 組織/非営利
.edu → 教育機関
.gov → 政府
.io → IT/スタートアップ(人気)
.co.jp → 日本企業
サブドメイン (Subdomain)
www.example.com → Webサイト
blog.example.com → ブログ
api.example.com → APIサーバー
admin.example.com → 管理ページ
実際の例
https://blog.example.jp
└┬┘ └───┬──┘└┬┘
サブ メイン TLD
ドメイン ドメイン
3. ポート (Port) 🚪
サーバーのどのドアから入るか
https://example.com:443
└┬┘
ポート
デフォルトポート
通常は省略されます(自動的に追加されます):
http://example.com → http://example.com:80 (自動)
https://example.com → https://example.com:443 (自動)
一般的なポート番号
| ポート | 用途 |
|---|---|
| 80 | HTTP (Web) |
| 443 | HTTPS (セキュアWeb) |
| 21 | FTP (ファイル転送) |
| 22 | SSH (リモート接続) |
| 3000 | 開発サーバー (Node.js) |
| 3306 | MySQLデータベース |
| 5432 | PostgreSQL |
| 8080 | 代替HTTP |
開発中は?
http://localhost:3000 # React開発サーバー
http://localhost:8080 # Spring Boot
http://127.0.0.1:5000 # Flask/Python
4. パス (Path) 📂
Webサイト内の特定のページやフォルダ
https://example.com/products/shoes/nike
└────────┬────────┘
パス
パス構造
/products/shoes/nike
└┬┘ └┬┘ └┬┘
カテゴリー 詳細 ブランド
実際のフォルダ 構造のように考えましょう:
Webサイト
├── products/
│ ├── shoes/
│ │ ├── nike/
│ │ └── adidas/
│ └── clothes/
└── about/
実際の例
https://github.com/facebook/react
└──────┬──────┘
パス
/ユーザー/リポジトリ
5. クエリ文字列 (Query String) 🔍
追加情報や検索条件
https://example.com/search?q=javascript&sort=popular&page=2
└──────────────┬──────────────┘
クエリ文字列
構造
?key1=value1&key2=value2&key3=value3
└┬┘ └──┬──┘ └──┬──┘ └──┬──┘
開始 最初 区切り 3番目
(キー=値) (&) (キー=値)
実際の使用例
検索
https://google.com/search?q=javascript
└─────┬────┘
検索語: javascript
フィルタリング
https://shop.com/products?category=shoes&color=red&size=10
└────────────┬────────────────┘
カテゴリー:shoes, 色:red, サイズ:10
ページネーション
https://blog.com/posts?page=2&limit=20
└──────┬──────┘
2ページ目、20件ずつ
注意事項
日本語や特殊文字はエンコードが必要です:
元: ?q=javascript
エンコード: ?q=javascript
ヒント
URL Encoderで簡単にエンコードできます!
6. ハッシュ/フラグメント (Hash/Fragment) #️⃣
ページ内の特定の位置
https://example.com/docs#installation
└─────┬────┘
ハッシュ
用途
1. ページ内移動
<a href="#section1">セクション1に移動</a>
<h2 id="section1">セクション 1</h2>
2. SPA (Single Page Application)
https://app.com/#/home
https://app.com/#/profile
https://app.com/#/settings
特徴
- サーバーに送信されない
- ブラウザでのみ使用
- ページをリロードせずに移動
実践例
例1: ショッピングモール 🛍️
https://shop.example.com/products/electronics/laptops?brand=apple&price=1000-2000&sort=price#reviews
プロトコル: https
ドメイン: shop.example.com
パス: /products/electronics/laptops
クエリ文字列:
- brand=apple (Apple製品のみ)
- price=1000-2000 (価格範囲)
- sort=price (価格順でソート)
ハッシュ: #reviews (レビューセクションに移動)
例2: 検索エンジン 🔍
https://www.google.com/search?q=web+development&hl=ja&page=1
プロトコル: https
サブドメイン: www
ドメイン: google.com
パス: /search
クエリ文字列:
- q=web+development (検索語)
- hl=ja (日本語)
- page=1 (最初のページ)
例3: YouTube動画 🎥
https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=30s
プロトコル: https
ドメイン: www.youtube.com
パス: /watch
クエリ文字列:
- v=dQw4w9WgXcQ (動画ID)
- t=30s (30秒の時点から再生)
URLパーシングツールの使用
URL Params Parser
- URLを貼り付けると各部分を自動分析
- クエリ文字列パラメータのリストを表示
- エンコード/デコードの自動処理