考え方とかパーツとか。
埋め込みは便利だけどデメリットもある
簡単な話。
WEBサイト(ページ)のクオリティ診断基準のひとつに読み込みの速度がある。
Youtubeを埋め込むと遅くなる。
高速化の構想と条件
なんで遅くなるかって、動画を読み込んでるのが原因。
高速化というのはページにアクセスして表示が完了するまでの時間が関わるので、その後に読み込む分には何も問題ないよね、ということになる。該当箇所をクリックしたときにiframeを出力して再生させたらいいという感じに。
動作的には、普通に埋め込んだ場合はサムネイルが表示されていてクリックしたら再生する。なので、例えば最初は画像(サムネ)を表示させておいて、クリックしたらiframeを出力(+自動再生)すれば操作的に違いはないですね。
構築に使うURLとか
目についたこの動画をサンプルにやっていくとする。
共有URL
https://youtu.be/RT0hj02Aokc
埋め込み
<iframe width="560" height="315" src="https://www.youtube.com/embed/RT0hj02Aokc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
埋め込みの肝になる動画のURL
https://www.youtube.com/embed/RT0hj02Aokc
サムネイル
120x90
https://img.youtube.com/vi/RT0hj02Aokc/default.jpg
320x180
https://img.youtube.com/vi/RT0hj02Aokc/mqdefault.jpg
480x360
https://img.youtube.com/vi/RT0hj02Aokc/hqdefault.jpg
640x480
https://img.youtube.com/vi/RT0hj02Aokc/sddefault.jpg
1280x720
https://img.youtube.com/vi/RT0hj02Aokc/maxresdefault.jpg
ID部分を置換すれば他の動画に対応できる。
構築イメージ
以下の2つを抑えておく必要がある。
- 動画のID取得
- 設置位置
これをどうやって指定するか。wpとかの記事内であれば通常の埋め込みコードを貼って、記事情報をphpで処理してから出力してしまえばいいのでどうとでもできる。そういうのじゃない場合はjsなど後付の処理しかできないので、iframeである埋め込みコードは使えない。
ということで、削りに削ってこんな感じになるんじゃないかなって。
<div class="youtubeFastJs" data-url="https://youtu.be/RT0hj02Aokc"></div>
複数設置を考えて、idじゃなくてclassを付ける。
urlはdataで登録する。サムネのサイズ指定ができるようにしてもいいけど個別の指定になるから任意に留めとくのが無難かなとか。
本当は動画IDだけあればいいんだけど使い勝手的に共有URLがボーダーラインか。動画IDはURLのパラメータからも拾えるけど不要なものも色々くっついてソースコードが汚くなるので除外したい気持ち。
自動再生はどうすんの
ページを読み込んだら勝手に再生されるやつ。
iframeを貼っちゃえよって気持ちではあるけど、高速化をしたいなら「ページの読み込みが完了したらiframeを出力して再生する」をやっていくことになる。
通常の埋込と差別化するためにclassなりdataなりを仕込まないといけない。classだと他との競合があると怖いのでdataが無難か。
<div class="youtubeFastJs" data-url="https://youtu.be/RT0hj02Aokc" data-autoplay="true"></div>
拡張性
サムネの件、自動再生の件、考えてたら色々出てくる。そうするとdata属性でやっていくよりも一般的なjQueryのプラグインやらjsのライブラリやらと同じようにjs側でオプションを指定して制御するのが良さげな気がしてきた。どうなんですかね。
まとめ
やることはさして難しくない感じなんで、時間があれば作れると思う。
というか、パッケージされたものは既にあると思うんで、探してきて使うのが手っ取り早いかも。
そこまで込み入ってないから自分で作ったほうが融通が効いていいかもしれない、みたいな感じ。
コメント