AI先生のロボットキャラクター
第2章 - セクション2

パスとURLの理解

HTMLで他のファイルを参照するためのパス(道筋)とURLの基本構造について、相対パス・ルートパス・絶対パスの3種類の違いとその使い分けを学びます。

女子生徒のアイコン

HTMLでリンクや画像を使うとき、ファイルの場所を指定しますよね。あれってどういう仕組みなんですか?

AI先生のアイコン

それは「パス」と呼ばれる仕組みで、コンピューターやWeb上でファイルの場所を示す「道筋」のようなものなんだ。

男子生徒のアイコン

道筋?住所みたいなものですか?

AI先生のアイコン

まさにその通り!住所が家の場所を示すように、パスはファイルの場所を示すんだ。今日はこのパスの仕組みと、URLの構造について詳しく学んでいこう。

パスとは?- デジタル世界の住所

パスは、コンピューターやWeb上でファイルやフォルダーの場所を指定するための「住所」のような仕組みです。

パスの概念
my-website/ ← ルート(最上位)
index.html
pages/
about.html ← ここから参照
contact.html
img/
logo.png
hero.jpg
相対パス
現在のファイルからの位置
../img/logo.png
「一つ上の階層のimgフォルダー」
ルートパス
ルートからの完全な位置
/img/logo.png
「ルートのimgフォルダー」
絶対パス
完全なURL指定
https://example.com/img/logo.png
「外部サイトも含む完全URL」

パスを理解することで、以下のことができるようになります:

  • 正確なファイル参照 他のHTMLファイルや画像ファイルを確実に呼び出せる
  • サイト構造の設計 整理されたフォルダー構成でファイルを管理できる
  • リンク切れの防止 ファイルの場所が変わっても適切に対応できる
  • 効率的な開発 チーム開発でも一貫したファイル参照ができる

パスの種類

パスには大きく分けて「相対パス」「ルートパス」「絶対パス」の3種類があります。それぞれの特徴を見てみましょう。

相対パス - 現在の位置を基準とした道筋

相対パスは、現在のファイルの位置を基準としてファイルの場所を指定する方法です。

相対パスの書き方

相対パスの表記方法
📍 現在の位置: pages/about.html
ここから他のファイルへのパスを考えてみましょう
同じpagesフォルダー内のファイル
contact.html
pages/about.html → pages/contact.html
親フォルダーのimgフォルダー内のファイル
../img/logo.png
../ は「一つ上の階層へ」という意味
pages/about.html → my-website/img/logo.png
親フォルダー(ルート)のファイル
../index.html
pages/about.html → my-website/index.html

相対パスの具体例

pages/about.htmlから他のファイルを参照する実際のHTMLコード例を見てみましょう:

<!-- pages/about.html の中身 -->
<!DOCTYPE html>
<html>
<head>
    <title>私について</title>
</head>
<body>
    <!-- 同じフォルダーのファイル -->
    <a href="contact.html">お問い合わせ</a>
    
    <!-- サブフォルダー内のファイル -->
    <img src="../img/logo.png" alt="ロゴ">

    <!-- 親フォルダー(ルート)のファイル -->
    <a href="../index.html">ホーム</a>
</body>
</html>

相対パスの特徴

  • 移植性が高い サイト全体を別の場所に移動しても動作する
  • 簡潔な記述 ドメイン名などを書く必要がない
  • ローカル開発に適している 自分のパソコンでテストしやすい
  • 階層構造に依存(注意) ファイルの位置関係が変わると修正が必要

ルートパス - サイトのルートからの指定

ルートパスは、Webサイトのルート(最上位)からの位置でファイルを指定する方法です。/(スラッシュ)で始まり、サイト内のどのページからでも同じ表記で同じファイルを指せる便利な方法です。

ルートパスの書き方

ルートパスの表記方法
ルートパス
/ で始まる → サイトのルートからの位置
/index.htmlルートのindex.html
/pages/about.htmlpagesフォルダーのabout.html
/img/logo.pngimgフォルダーのlogo.png

ルートパスの具体例

同じサイト構造で、ルートパスを使って参照する場合:

<!-- どのファイルからでも同じ書き方 -->
<!DOCTYPE html>
<html>
<head>
    <title>サンプルページ</title>
</head>
<body>
    <!-- ルートパス -->
    <a href="/index.html">ホーム</a>
    <a href="/pages/about.html">私について</a>

    <!-- 画像もルートパスで指定 -->
    <img src="/img/logo.png" alt="ロゴ">
</body>
</html>

ルートパスの特徴

  • 位置に依存しない どのファイルからでも同じ表記で参照できる
  • 分かりやすい ファイルの位置が一目で分かる
  • 同一サイト内専用 同じサイト内のファイルのみ参照可能
  • サーバー環境が必要 ローカルでは正しく動作しない場合がある

絶対パス - 完全なURL指定

絶対パスは、プロトコルから始まる完全なURLでリソースを指定する方法です。主に外部サイトのリソースを参照する際に使用します。

絶対パスの書き方

絶対パス(完全URL)の表記方法
完全URL(絶対パス)
https:// で始まる → 他のサイトのリソースも参照可能
https://example.com/about.html
https://cdn.example.com/img/logo.png
https://www.google.com

絶対パスの具体例

外部サイトのリソースを参照する実際のHTMLコード例:

<!DOCTYPE html>
<html>
<head>
    <title>絶対パスの例</title>
</head>
<body>
    <!-- 外部サイトへのリンク(絶対パス) -->
    <a href="https://www.google.com">Google</a>
    <a href="https://github.com">GitHub</a>

    <!-- 外部CDNの画像やリソース -->
    <img src="https://cdn.example.com/img/logo.png" alt="CDNの画像">
    
    <!-- 外部のCSS・JavaScriptライブラリ -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css">
</body>
</html>

絶対パスの特徴

  • 完全なURL指定 プロトコルから始まる完全なURL
  • 外部リソース参照 他のサイトのファイルやCDNリソースを参照可能
  • インターネット接続が必要 オフラインでは動作しない
  • セキュリティ考慮 外部サイトのため、安全性の確認が重要

3つのパスの使い分け

実際の開発では、用途に応じて3つのパス形式を使い分けることが重要です。

推奨される使い分け

パスの使い分けガイド
相対パス
ローカル開発
自分のパソコンでのテスト
静的サイト
シンプルなHTML構成
近接ファイル参照
同じフォルダーや近くのファイル
ルートパス
大規模サイト
複雑なフォルダー構造
共通リソース
CSS、JavaScript、画像など
動的サイト
WordPressなどサーバー環境での運用
絶対パス
外部サイトのリンク
Google、SNSなど他のサイト
CDNリソース
外部のライブラリやフォント
API呼び出し
外部データの取得
パスの使い分け
  • 相対パス ローカル開発・プロジェクト内のファイル参照に最適
  • ルートパス サーバー公開時・サイト内の統一的なファイル参照に便利
  • 絶対パス 外部サイト・CDNリソースの参照専用

実践的な例

以下のような場面での使い分けを見てみましょう:

<!DOCTYPE html>
<html>
<head>
    <title>パスの使い分け例</title>
</head>
<body>
    <nav>
        <!-- 同一サイト内 → 相対パス -->
        <a href="about.html">私について</a>
        <a href="pages/portfolio.html">ポートフォリオ</a>
        <a href="../index.html">ホーム</a>
        
        <!-- 同一サイト内 → ルートパス -->
        <a href="/index.html">ホーム(ルートパス)</a>
        <a href="/pages/about.html">私について(ルートパス)</a>
        <a href="/contact.html">お問い合わせ</a>
        
        <!-- 外部サイト → 完全URL -->
        <a href="https://www.github.com">GitHub</a>
        <a href="https://www.twitter.com">Twitter</a>
    </nav>
    
    <main>
        <!-- 同一サイト内の画像 → 相対パス -->
        <img src="img/profile.jpg" alt="プロフィール画像">
        
        <!-- 同一サイト内の画像 → ルートパス -->
        <img src="/img/logo.png" alt="サイトロゴ">
        
        <!-- 外部CDNのアイコン → 完全URL -->
        <img src="https://cdn.jsdelivr.net/gh/devicons/devicon/icons/html5/html5-original.svg" alt="HTML5アイコン">
    </main>
</body>
</html>
女子生徒のアイコン

WordPressなどの動的サイトでは、ルートパスがよく使われるって本当ですか?

AI先生のアイコン

その通り。動的サイトはサーバー側でページを生成することが多く、テンプレートや共通リソースをどのページからでも同じ表記で参照できるルートパス(/で始まる)を使うことが一般的だよ。

男子生徒のアイコン

ルートパスを使えばテンプレートの保守や資産管理が楽になる、ということですね?

AI先生のアイコン

そうだね。ただし、サブディレクトリで運用する場合や環境ごとにルートが変わると問題になることもあるから、デプロイ先の設定に合わせてベースパスを確認することが重要だよ。

URLの構造を理解する

Webサイトにアクセスする際に使用されるURLは、複数の要素から構成されています。

男子生徒のアイコン

URLってよく見ますが、あの長い文字列にはちゃんと意味があるんですか?

AI先生のアイコン

そうなんだ!URLは実は複数の部品が組み合わさっていて、それぞれに重要な役割があるんだよ。詳しく見てみよう。

URLの構成要素

URLの構成要素
https://www.example.com:80/pages/about.html?lang=ja#section1
https://
www.example.com
:80
/pages/about.html
?lang=ja
#section1
プロトコル
ドメイン名
ポート番号
パス
クエリパラメータ
フラグメント
プロトコル

通信の方式を指定します。Webサイトでは主に以下を使用:

  • https:// セキュアな通信(暗号化あり)- 現在の標準
  • http:// 通常の通信(暗号化なし)- 徐々に廃止傾向
  • ftp:// ファイル転送プロトコル

プロトコルは「どのような方法で通信するか」を決める重要な部分です。現在はセキュリティの観点から https:// が標準となっており、個人情報の入力があるサイトでは必須です。

ドメイン名

サーバーの住所を人間が読みやすい形で表現:

  • www.example.com 一般的なWebサイト
  • subdomain.example.com サブドメインを使用
  • example.co.jp 国別ドメイン

ドメイン名は、数字の羅列であるIPアドレス(例:192.168.1.1)を人間が覚えやすい名前に変換したものです。インターネット上での「住所」の役割を果たします。

ポート番号

サーバー内での通信窓口を指定:

  • :80 HTTP通信のデフォルト(通常は省略される)
  • :443 HTTPS通信のデフォルト(通常は省略される)

ポート番号は通常省略されますが、開発環境や特別な設定のサーバーでは明示的に指定することがあります。

パス

サーバー内のファイルやリソースの場所:

  • / ルートページ(通常はindex.html)
  • /about.html aboutページ
  • /img/logo.png imgフォルダーのlogo.png

パスは今回の学習の中心となる部分で、サーバー内のどのファイルやディレクトリを指しているかを示します。

クエリパラメータ

サーバーに追加情報を送信:

  • ?search=html 検索キーワードを指定
  • ?page=2&limit=10 ページ番号と表示件数
  • ?lang=ja 言語設定

クエリパラメータは ? で始まり、& で複数の情報を繋げることができます。動的なWebサイトでよく使用されます。

フラグメント

ページ内の特定の場所を指定:

  • #header ページ内のheader要素へジャンプ
  • #top ページの上部への移動

フラグメントは # で始まり、同一ページ内の特定の要素にスクロールする際に使用します。目次やページ内ナビゲーションで活用されます。

理解度チェッククイズ

AI先生のアイコン

理解度を深めるために、パスとURLに関するクイズを用意したよ。しっかり考えてみてね!

パスとURL理解度クイズ

以下のファイル構造で、pages/about.html から img/logo.png を参照する相対パスはどれですか?
website/
├── index.html
├── pages/
│   └── about.html ← ここから参照
└── img/
  └── logo.png
img/logo.png
../img/logo.png
/img/logo.png
./logo.png
ルートパスの特徴として正しいものはどれですか?
現在のファイルからの相対的な位置を示す
「../」を使って上の階層を表現する
サイトのルートから完全な位置を示し、「/」で始まる
同じフォルダー内のファイルのみ参照できる
URLの構成要素で、サーバーの住所を表すのはどれですか?
プロトコル(https://)
ドメイン名(www.example.com)
パス(/pages/about.html)
フラグメント(#section1)
外部サイトへリンクする場合、どのような形式で書くべきですか?
相対パス(../external-site.html)
ルートパス(/external-site.html)
完全URL(https://www.external-site.com)
ファイル名のみ(external-site.html)
相対パスの利点として最も適切なのはどれですか?
外部サイトも参照できる
サイト全体を移動しても動作する
URLが短くて覚えやすい
セキュリティが高い

まとめ

男子生徒のアイコン

パスって最初は難しそうでしたが、住所みたいに考えるとわかりやすいですね!

AI先生のアイコン

そうだね!パスの概念がしっかり理解できれば、リンクや画像の設定で迷うことがなくなるよ。

女子生徒のアイコン

相対パス、ルートパス、絶対パスの使い分けも、用途がはっきりしてよくわかりました。

AI先生のアイコン

次は実際にaタグを使って、学んだパスの知識でリンクを作ってみよう。きっと今日の学習が活かされるはずだよ。

パス活用のポイント
  • 相対パス 同一サイト内のファイル参照に使用。移植性が高く開発効率が良い
  • ルートパス サイト内の統一的なファイル参照に便利。サーバー環境で威力を発揮
  • 絶対パス 外部サイトやAPIエンドポイントの指定に使用。完全URLで記述
  • ファイル構造の設計 階層を整理してパスを分かりやすくする
  • 用途による使い分け 内部リンクは相対・ルートパス、外部リンクは完全URLを基本とする

次回は、今日学んだパスの知識を活用して、実際にaタグでリンクを作成していきます。

学習チェック

このレッスンを理解できたら「完了」をクリックしてください。
後で見直したい場合は「未完了に戻す」で進捗をリセットできます。

レッスン完了!🎉

お疲れさまでした!