Youtube の動画を複数埋め込みをしたページの高速化
Page Speed Insights 対策の一環.他の対策は以下を見てください.
- オフスクリーン画像の遅延読み込み
- 次世代フォーマットでの画像の配信
- ウェブフォント読み込み中の全テキストの表示
- 第三者コードの影響を抑えてください
- LCP (Largest Contentful Paint) について
- CLS (Cumulative Layout Shift) について
Youtube の複数の動画を埋め込むとページ自体が非常に遅くなる(重い)時の高速化(軽量化)の方法.
原因は iframe で各動画を読み込みに行くため.
「youtube 複数 埋め込み 高速化」「youtube 複数 埋め込み 軽量化」で検索すると説明してくれているページが多数見つかる.

目次
高速化の方法は二つ
やり方としては大きく二つあって,
- 最初から iframe を使わないように記述し,クリックで iframe にする方法
- ソースはいじらず,一旦,動画(iframe)をサムネイル(img)に変更しておいて,クリックされたときにまた,iframe に戻す方法
参考にしたページは前者の方法だと,
【デモあり】YouTubeの読み込みを軽くする!複数動画埋め込みページを高速化
後者の方法だと
YouTube動画の埋め込みを軽くする
どちらも分かりやすいので,どちらも試してみたところ,当然ながら体感ではどちらも速くなる.
PageSpeed Insights で計測するとパソコンの方で後者が遅くなる.
chrome の開発者ツールの Network で見てみると,後者の方法は iframe の部分が pending となっている.どうやら途中までは読み込んでいるようだ.
つまり,出来るだけ高速を目指すなら,前者の方法で最初から iframe は書き替えておく方がよいようだ.
ただし,それだと既存のサイトに多数の youtube を埋め込んでいる場合に面倒.
よって,出来るだけ変更作業の負担を軽くする方法はないかを考えると,src やめればいいんじゃないかと気が付いた.
しかし,既に気づいていた先人のサイトを見つけた.
埋め込みyoutubeが想像以上に戦犯級だった件
src を data-src に代えていた.これがいい.
これらの良いところを使わせてもらって作ってみた.
できるだけ Youtube に似せる
先ほどのサイトでは fontawesome を使っているので,再生ボタンが明らかにYoutube のそれと違う.
そこで,YouTube動画の埋め込みを軽くするのページで見つけたYouTube ブランドの 使用についてからアイコンをダウンロードしてきて,出来るだけ本物に近づけることにした.
ソース
上記リンクサイトからいろいろ頂いて作っています.
javascript はこんな感じ.
(2020/04/05 スマホ時に横がはみ出る場合に対応.)
(2020/05/12 縦の長さも横幅を縮小した割合で縮小するように修正.)
(2020/05/21 最大化ボタンを有効化.)
(2020/06/10 自作サムネイルに対応.)
(2020/10/09 サムネイルを高精細な画像に変更.mqdefault.jpg の代わりに maxresdefault を使用)
(2020/10/14 デフォルトは mqdefalut.jpg を使い,高精細にしたい場合は data-img="maxresdefault" と指定して画像を変更できるように変更)
縦長動画のサムネイルにも対応
Youtube のサムネイル画像は自由に変更できるが,個人認証をしないと使えません.
また,標準のサムネイルは問答無用で横長タイプになります.
このライブラリでは縦長動画のサムネイルにも簡単に対応できます.
自動再生
chrome では iframe に allow="autoplay" をつけないと現状では自動再生になりませんでした.
自動的に autoplay を付加するようにしています.
ソースはfastyt.js
上記リンクを右クリックして,「ファイルを保存」するとソースが保存される.
普通に左クリックすればソースを見ることが出来ます.
CSS はこんな感じ.
ソースはfastyt.css
上記リンクを右クリックして,「ファイルを保存」するとソースが保存される.
(2020/05/11 ご指摘を受けて修正.IE で表示が崩れるところがありました.)
再生ボタンのアイコンは youtube からダウンロードしてきた
/images/yt_icon_rgb.png
/images/yt_icon_mono_light.png
を使っています.
javascript と css は自分の環境に合わせて変えて下さい.
あと,jQuery(google) 必須です.
iframe で width と height を入れ,class で fastyt を指定してください.
埋め込み手順・方法
必要なファイルのダウンロード
スタイルシート
fastyt.css
javascript
fastyt.js
Youtube の再生ボタン用画像
YouTube ブランドの 使用について
の真ん中より少し下にある「YouTube アイコン」のところ
これらを自分のサイトの適切な場所に置きます.
該当ソースの変更
動画を埋め込んでいるページを変更します.
以下をヘッダなどに入れます.
以下の動画のタグは埋め込みたい場所に入れます.
width と height は埋め込みたい動画のサイズに変更します.
独自のサムネイルを使いたい場合は,iframe の中に data-thumbnail="サムネイルのURL" のように記述します.(2020/06/10)
高精細画像を表示したい場合は data-img="maxresdefault" を追加して記述する.(2020/10/14)
埋め込みの一例
埋め込み例(youtube最初の動画)
速度(スピード)測定サイト
ご質問等ありましたら,下のフォームからお願いします.