用語解説

フラグメント(#)とは?ページ内リンクが飛ぶ仕組み

「目次のリンクを押したらページの途中まで一気にスクロールした」という体験は、URLの#から始まるフラグメントの働きによるものです。この記事では、フラグメントが何を指し、なぜページ内ジャンプが起きるのかを、専門用語を最小限にして説明します。

フラグメントとは何か

フラグメントとは、URLの末尾にある「#」記号と、それに続く文字列のことを指します。たとえば example.com/guide#section3 というURLでは、#section3 の部分がフラグメントです。

フラグメントはサーバーに送られない、というのが大きな特徴です。ブラウザがページを読み込むときに使うのは#より前の部分だけで、#以降はブラウザ内部での移動先を指定するために使われます。

そのため、フラグメントが指すのは「どのページを開くか」ではなく「開いたページのどこを表示するか」です。同じページ内の特定の位置を示す目印だと考えると分かりやすいでしょう。

なぜページの途中まで飛ぶのか

HTMLの中には、見出しや段落などの要素にid属性という名前を付けられる仕組みがあります。フラグメントは、このidと対応しています。

URLの#のあとに書いた文字列と同じidを持つ要素がページ内にあると、ブラウザはその要素が画面の上端付近に来るように自動でスクロールします。これがページ内ジャンプの正体です。

対応するidが見つからない場合は、ジャンプは起きずにページの先頭がそのまま表示されます。リンクを押しても何も動かないように見えるときは、idの綴り違いが原因のことが多いです。

実務ではどこで関係する?

フラグメントは言葉の意味だけ覚えても、HTML共有の判断にはつながりません。実務では「表示に関係する話か」「検索に関係する話か」「アクセス制限に関係する話か」を分けて考えると整理しやすくなります。

フラグメント(#)について迷ったら、相手が安全に開けるか、検索に出してよいか、ブラウザや環境差で壊れないかを順番に確認します。用語理解は、その判断を早くするための道具として使います。手順が決まったら、HTML/ZIPをアップロードして共有URLを発行し、相手に確認してほしい観点と期限を添えて送ります。

  • 表示の話: HTML/CSS/JS、パス、ブラウザ互換性を確認する
  • 検索の話: noindex、canonical、sitemap、robots.txtの役割を分ける
  • 制限の話: URL共有、パスワード、メール認証、会社ドメイン認証を混同しない
  • 運用の話: 期限、差し替え、削除、共有メッセージまで決める

ページ内リンクを作る手順

目次から各セクションへ飛ぶリンクを作るには、飛び先に名前を付け、その名前をリンク先に書く、という2つの作業をセットで行います。

  1. 飛び先になる見出しなどの要素に、重複しない名前(id)を付ける
  2. 目次側のリンクの行き先を、#に続けてその名前と同じ文字列にする
  3. 名前は半角英数字を基本にし、大文字と小文字の違いも一致させる
  4. 実際にリンクを押して、意図した位置までスクロールするか確かめる
  5. 見出しが多いページでは、主要な見出しすべてに名前を付けておく

URL共有とフラグメントの相性

フラグメント付きのURLをそのまま誰かに送ると、相手はページを開いた瞬間に指定の位置まで移動した状態で見られます。長いマニュアルやFAQで「この項目を見てほしい」と伝えたいときに便利です。

ただしフラグメントはブラウザの履歴に残るものの、サーバー側のアクセス記録には#以降が現れないことがあります。どの位置が見られたかを正確に把握したい用途には向きません。

使うときの注意点

フラグメントはあくまで表示位置の指定であり、コンテンツの公開範囲を制御する仕組みではありません。#を付けて特定の位置を隠したつもりでも、ページ全体はそのまま閲覧できます。

見せたくない部分がある場合は、フラグメントではなくページそのものへのアクセス制御を考える必要があります。たとえばギガサイト便でHTMLを共有すると、URLだけでなくパスワードやメール認証といった認証方式を選べるため、関係者だけに見せたい確認用ページを扱うときに役立ちます。

よくある質問

フラグメントとアンカーは同じ意味ですか

ほぼ同じ意味で使われます。URLの#以降の文字列をフラグメント、飛び先になる要素やその仕組みをアンカーと呼ぶことが多く、合わせてアンカーリンクと表現されます。文脈によって呼び分けられているだけで、指している現象は同じです。

#を付けてもページが移動しないのはなぜですか

#のあとに書いた文字列と一致するidがページ内に存在しない場合、ジャンプは起きません。idの綴り間違いや大文字小文字の不一致が主な原因です。飛び先の要素に正しい名前が付いているかを確認してください。

フラグメントはサーバーに送られますか

通常、#以降の部分はサーバーへ送信されず、ブラウザ内部だけで処理されます。そのためサーバーのアクセスログには現れにくく、どの位置が表示されたかをサーバー側で記録するのは難しいと考えておくのが安全です。

フラグメントで一部分だけ非公開にできますか

できません。フラグメントは表示位置を指定するだけで、コンテンツの公開範囲を変える機能はありません。見せたくない部分があるときは、ページ自体へのアクセス制御で対応する必要があります。

実務ではどこで関係する?はHTML共有で必ず理解しておく必要がありますか?

細かな仕様を暗記する必要はありません。ただし、検索に出るか、閲覧者を制限できるか、表示が崩れないかに関わる用語は、共有前の判断材料として押さえておくと安全です。

関連記事

用語解説

ドメインとは?URLの住所をやさしく解説

取得・設定の前に知っておきたいドメインの基本を整理。サブドメインや独自ドメインとの違いに戸惑っているWeb初心者が、URLの構造を正しく読み解くための入門知識として読める記事です。

5分で読める
用語解説

URLの構造とは?スキーム・ホスト・パスの意味を解説

スキーム・ホスト・パス・クエリと、URLを構成するパーツが何を意味するのかを分解して解説。開発やSEO設定でURLを操作しなければならない人が、構造を正しく理解するための土台になります。

5分で読める
用語解説

HTTPステータスコードとは?主要な番号の意味

200・301・403・404・500など、よく見かける番号が何を伝えているのかを体系的に整理。エラーの原因調査やサイト改修で「ステータスコードの意味が分からない」と感じたときに役立つ入門解説です。

5分で読める
用語解説

404エラーとは?ページが見つからない原因と仕組み

リンクをクリックしたらページが見つからないと表示された――その原因が404なのか、そもそも何が起きているのかを整理。リンク切れや削除後のURL管理を考えるための基礎知識として読めます。

5分で読める
用語解説

403 Forbiddenとは?アクセスが拒否される意味

「アクセスが拒否されました」と表示されたとき、404との違いや認証・権限設定のどこに問題があるのかを切り分けるための知識を整理。設定ミスを調べるときの手がかりになります。

5分で読める
「用語解説」の記事をもっと見る →