[PR] 本記事にはプロモーションが含まれています。

【HTML】iframeの使い方|GoogleマップやYouTubeの埋め込み、title・loading・sandboxとスマホ対応

HTML

Googleマップの地図やYouTubeの動画を自分のページに表示するときに使うのが、iframe タグです。この記事では、iframe の仕組みと、埋め込みのコードの取り方、よく使う属性、スマホ対応、気をつけたいことをまとめます。

iframeとは

iframe(inline frame)は、ページの中に「別のページを表示する窓」を作るタグです。窓の中には別のサイトのページがそのまま動いているので、読者は自分のページを離れずに、地図を動かしたり、動画を再生したりできます。

Googleマップを埋め込む

埋め込み用のコードを取る

Googleマップを埋め込むときは、アドレスバーのURLではなく、埋め込み用のコードを使います。

  1. Googleマップで場所を開く
  2. 「共有」を押し、「地図を埋め込む」を選ぶ
  3. 大きさを選んで「HTMLをコピー」を押す

コピーされるのは、次のような iframe のコードです(src の長い部分は「…」で省略しています)。読みやすいように属性ごとに改行し、title を足しています。

HTML
<iframe
  src="https://www.google.com/maps/embed?pb=…"
  title="東京タワーの地図"
  width="600"
  height="450"
  style="border:0;"
  allowfullscreen
  loading="lazy"
  referrerpolicy="strict-origin-when-cross-origin">
</iframe>
iframeの使い方:埋め込み用のコードを取る

属性の意味

属性意味
src窓の中に表示するページのURL
title何の窓かを表す説明。画面読み上げソフトが読み上げるので、付けておく
width・height窓の幅と高さ
style="border:0;"窓のまわりの枠線を消す
allowfullscreen全画面表示を許可する
loading="lazy"画面に近づいてから読み込む。ページの下のほうにある地図や動画は、付けておくとページの表示が速くなる
referrerpolicy埋め込み先に、どのページから表示されているかをどこまで伝えるか

YouTubeを埋め込む

YouTubeも、動画の下の「共有」→「埋め込む」で iframe のコードを取れます。VIDEO_ID の部分が動画ごとのIDになります。

HTML
<iframe
  src="https://www.youtube-nocookie.com/embed/VIDEO_ID"
  title="YouTubeの動画:動画のタイトル"
  width="560"
  height="315"
  allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
  allowfullscreen
  loading="lazy">
</iframe>

YouTubeの埋め込み画面で「プライバシー強化モード」をオンにすると、youtube-nocookie.com のURLになり、再生されるまで読者のCookieを使わないようになります。allow は、埋め込んだページにどの機能を使わせるかの指定で、YouTubeが出すコードのままで構いません。

スマホではみ出さないようにする

width="600" のままだと、画面の狭いスマホでははみ出します。CSSで幅を画面に合わせ、aspect-ratio(縦横の比)で高さを決めると、形を保ったまま縮みます。

CSS
/* class を付けた iframe だけに当てる */
iframe.embed-video {
  width: 100%;          /* 画面幅に合わせる */
  height: auto;
  aspect-ratio: 16 / 9; /* 動画は 16:9 */
}
iframe.embed-map {
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;  /* 地図は 4:3 など */
}

使うときは、iframe に class="embed-video" や class="embed-map" を足します。iframe { … } のようにページのすべての iframe に当てると、広告など iframe で表示されているほかの部品の形まで変わってしまうので、class で対象を絞ります。

気をつけたいこと

埋め込みを断っているサイトがある

どのページでも埋め込めるわけではありません。多くのサイトは、他のサイトの iframe の中で表示されないように、X-Frame-Options や Content-Security-Policy の frame-ancestors という設定をしています。その場合、窓の中は空白やエラーの表示になります。地図や動画のように「埋め込み用のコード」を用意しているサービスだけが、埋め込みできると考えておきます。

信頼できないページは sandbox で制限する

窓の中のページは、JavaScriptを動かしたり、リンクで移動させたりできます。自分で管理していないページを表示するときは、sandbox 属性を付けると、こうした動きをまとめて止められます。必要なものだけを sandbox="allow-scripts" のように許可します。GoogleマップやYouTubeのように動作に JavaScript が必要なものは、各サービスが出すコードのまま使います。

埋め込み先は読者のCookieを使うことがある

GoogleマップやYouTubeを埋め込むと、読者がそのページを開いただけで、埋め込み先のサービスに接続し、Cookieが使われることがあります。ブログのプライバシーポリシーに、外部のサービスを埋め込んでいることを書いておくと安心です。

WordPressでは

WordPressでは、YouTubeなどの動画は「埋め込み」ブロック(「YouTube」ブロックなど)にURLを貼るだけで埋め込めます。段落に動画のURLだけを1行で貼っても、自動で埋め込みに変わります。Googleマップのように対応していないものは、「カスタムHTML」ブロックに iframe のコードを貼ります。

自分で用意した動画を自分のサーバーから配信する場合は、iframe ではなく video タグを使います(「audioタグとvideoタグの使い方」)。HTML全体の基本は「HTMLの基本|タグの書き方とよく使う5つのタグ」で紹介しています。

まとめ

  • iframe は、ページの中に別のページを表示する窓を作る
  • GoogleマップやYouTubeは、「共有」→「埋め込む」で出るコードを使う。title を足しておく
  • スマホではみ出さないように、CSSで width: 100% と aspect-ratio を指定する
  • 埋め込みを断っているサイトもある。信頼できないページは sandbox で制限する
  • WordPressでは動画はURLを貼るだけ、地図はカスタムHTMLブロックにコードを貼る

ほかの開発・プログラミングの記事は、開発・プログラミングメモの目次から、テーマ別に探せます。

このブログは、にほんブログ村と人気ブログランキングに参加しています。記事が役に立ったら、下のランキングのバナーのどれかを押して応援してもらえると励みになります。

ブログランキング・にほんブログ村へにほんブログ村

サーバー構築・運用ランキング プログラムランキング

HTML
watasoftdevをフォローする

コメント