HTML

The HTML autoplay attribute asks a media element to start playing automatically, but modern browsers often block it unless conditions like muted or user interaction are satisfied.

autoplay

autoplay<audio> / <video> を「読み込めたら自動で再生してほしい」とブラウザに要求する属性です(ただし音声ありの自動再生は多くの環境で制限されます)。

このページでできるようになること

まずは直感:autoplay って何?

ざっくり言うと、autoplay は「このメディア、最初から流しておいて」を“お願いする”スイッチです。

正確な定義(仕様に沿った説明)

何のために存在するか

autoplay は、メディア要素が再生可能になった時点で、再生を開始することをブラウザに要求するための属性です。ただし、ブラウザの自動再生ポリシーやユーザー設定により、要求が拒否されることがあります。

何に適用されるか(対象)

autoplay<audio><video> に指定します。画像や <iframe> などには使いません。

できること / できないこと(制約)

できること
  • 再生可能になったら自動再生を“試みる”ようブラウザに伝える
  • muted と組み合わせて、無音の自動再生を成立させやすくする
  • ファーストビューのループ動画やヒーロー背景動画などを、操作なしで動かせる可能性を上げる
できないこと(重要)
  • 必ず再生させること(拒否される場合がある)
  • ユーザー操作を“したことにする”こと(権限や制限の回避はできない)
  • 音声ありの自動再生を確実に通すこと(環境依存が大きい)

影響範囲(レイアウト/描画/ユーザー操作/アクセシビリティ)

レイアウト
autoplay 自体はレイアウトを変えませんが、再生開始でフレームが更新され、背景動画などでは見た目の印象が変わります。
描画
再生が始まれば動画フレームが描画されます。始まらない場合はポスター(poster)や初期表示が維持されます。
ユーザー操作
音声あり自動再生は拒否されがちです。必要なら「再生ボタン」などユーザー操作の導線を用意します。
アクセシビリティ
勝手に動く/点滅/音が出るコンテンツは負担になります。音は自動で鳴らさない、必要なら停止/一時停止できるUI(controls または独自UI)を検討します。

基本の書き方(最短の型)

最小サンプル(コピペ用)

HTML

<video autoplay muted playsinline loop>
    <source src="movie.mp4" type="video/mp4">
</video>

まずは「autoplay + muted」をセットで覚えるのが最短です。スマホで画面内再生を期待するなら playsinline も一緒に検討します。

よく使う指定/典型パターン

無音で自動再生したい(背景動画など)
<video autoplay muted playsinline loop>
ユーザーが操作して再生する前提(安全)
autoplay は付けず、再生ボタン(controls または独自UI)を用意する
停止/一時停止のUIを必ず出したい
controls を付ける(自動再生の可否とは別に、操作手段を提供できる)
読み込みを節約したい
preload="none"(ただし自動再生したいなら相性が悪い場合がある)

コピペで動く最小デモ(このページ内で表示)

外部動画ファイルなしで挙動を確認できるように、canvas.captureStream() の映像を <video> に流し込みます。無音の方は通りやすく、音あり(muted OFF)は拒否される可能性があります。

デモA:autoplay + muted(通りやすい)

ポイント:無音での自動再生は許可されやすい(ただし保証ではありません)。

デモB:autoplay(音あり想定 / 拒否されがち)

ポイント:音声あり自動再生は制限されやすく、play() が Promise reject になることがあります。

デモ出力
(ここに結果が表示されます)

JavaScript

const out = document.querySelector("#demoAutoOut");

function log(msg) {
    const t = new Date().toLocaleTimeString();
    out.textContent = "[" + t + "] " + msg + "\n" + out.textContent;
}

function setAttr(el, name, on) {
    if (on) el.setAttribute(name, "");
    else el.removeAttribute(name);
}

async function safePlay(video, label) {
    try {
        const p = video.play();
        if (p && typeof p.then === "function") {
            await p;
        }
        log(label + ": play() OK / muted=" + video.muted + " / autoplayAttr=" + video.hasAttribute("autoplay"));
    } catch (e) {
        log(label + ": play() BLOCKED / " + (e && e.name ? e.name : String(e)));
    }
}

仕様として押さえるポイント(初心者が事故りやすい所)

autoplay は「保証」ではなく「要求」
属性が付いていても、ブラウザや端末の設定、ユーザーの操作状況によって再生が拒否されることがあります。実装では「再生できなかった時の見え方」を用意します。
音声あり自動再生は拒否されがち
多くの環境で、ユーザー操作なしの音声再生は制限対象です。自動再生が必要なら muted を付け、ユーザー操作で音をONにする導線を設計します。
autoplay="false" の罠(boolean属性)
autoplay は boolean属性なので、属性が存在すると真扱いです。OFFにしたいなら属性を外す(またはJSで removeAttribute("autoplay"))が基本です。
preload と「すぐ再生」の期待
preload="none" は読み込み節約に寄ります。自動再生してほしいのに読み込みを止めていると、当然うまくいきにくいので目的を揃えます。
モバイルでの見え方:playsinline
スマホで「画面内で流したい」なら playsinline を検討します(環境差はあります)。

実務での使いどころ(どう判断して採用するか)

採用してよい典型

避けた方がよい典型

よくある事故と回避策(動かない/うるさい/重い)

症状:自動再生されない
原因候補:音声ありでブロック / 省電力・節電 / ユーザー設定。回避:まず muted を付ける、失敗時に再生ボタンを出す、video.play() の reject をログする。
症状:見た目は動くが音が出ない
原因候補:muted で開始している。回避:音ONはユーザー操作で切り替える(クリックで muted=false)。
症状:ページが重い
原因候補:動画が大きい / 自動で先読みしすぎ。回避:短尺・軽量化、必要なら preload を見直す、そもそも自動再生をやめて静止画にする。
症状:スマホで意図と違う表示(全画面になる等)
原因候補:環境差、playsinline 未指定。回避:playsinline を検討し、端末で確認する。

試験対策(HTML5プロ レベル1):ここがひっかけ

boolean属性の判定
autoplay は boolean属性なので「有無」が本体です。autoplay="false" のような“値でOFF”はひっかけになりやすいので、OFFは「属性を外す」と覚えるのが安全です。
対象要素
autoplay<audio>/<video> の属性です。別要素に付けても意味がありません。
実装ポリシーによる“動かない”はあり得る
仕様の理解としては「自動再生を要求する」ですが、実務では“拒否されることがある”のが普通です。試験ではこの差を言葉で整理できると強いです。

FAQ(よくある質問)

Q. autoplay を付けたのに再生されません。
A. 音声ありの自動再生がブロックされている可能性が高いです。まず muted を付け、失敗時にユーザーが押せる再生ボタンを用意します。
Q. autoplay="false" にしたのに自動再生されます。
A. boolean属性なので、属性が存在する限り真扱いです。OFFにしたいなら autoplay 自体を外します。
Q. 無音で自動再生して、ユーザー操作で音を出したいです。
A. 無音で開始(autoplay muted)し、クリック等のユーザー操作で video.muted = false に切り替える設計が定番です。

まとめ:迷ったときの判断軸(短いチェックリスト)