ピクチャインピクチャ(PiP)完全解説:仕組み・対応環境・Web API・実装方法と制御

ピクチャインピクチャ 2025

ピクチャインピクチャとは?

ピクチャインピクチャ(Picture-in-Picture, PiP)は、動画を最前面に小窓で再生しながら、他のアプリやタブを操作できる機能です。テレビの副画面表示から着想を得ており、モバイルOSやWebブラウザに標準搭載されています。Web分野では W3C による仕様が整備され、<video> 要素を独立したウィンドウに表示できるようになっています。

主な対応環境

Android

Android 8.0(Oreo, API 26)以降で PiP が導入されました。動画再生やナビゲーションアプリなど、一部のアクティビティを PiP モードで動作させられます。

開発者はアクティビティに対して PiP サポートを宣言し、切り替え処理を組み込むことで利用可能です。

iPhone・iPad

iOS 14 以降、Safari や FaceTime、動画アプリなどで PiP が利用可能になりました。

設定で自動開始を有効にすると、ホーム画面や他アプリに移動しても動画が小窓で再生されます。

YouTube では公式に PiP の提供方法が説明されており、アプリ設定や契約状況によって利用可否が異なります。詳しくは
YouTube公式ヘルプ:モバイル デバイスでピクチャー イン ピクチャーを使用する方法 を参照してください。

macOS(デスクトップ)

Safari など主要ブラウザで PiP をサポート。Web 動画やストリーミングを小窓化し、作業を続けながら常に視聴できます。

ウィンドウは任意の場所に配置可能で、最前面に固定されます。

Webブラウザ

Chrome、Safari、Edge、Firefox など主要ブラウザが対応。

<video> 要素に対して JavaScript API で PiP を開始でき、ユーザー操作と連動した制御が可能です。

特に Firefox では
ピクチャーインピクチャー機能の紹介ページ が用意されており、Webブラウザ上での利便性が詳しく解説されています。

Web標準 API

基本的な仕組み

HTMLVideoElement.requestPictureInPicture() を呼び出すと、動画が PiP ウィンドウに表示されます。

PiP 開始時には enterpictureinpicture イベント、終了時には leavepictureinpicture イベントが発火します。

現在 PiP にある要素は Document.pictureInPictureElement で取得できます。

簡易コード例

<video id="video" src="sample.mp4" controls></video>
<button id="pipBtn">PiP 切替</button>

<script>
const video = document.getElementById('video');
const button = document.getElementById('pipBtn');

button.addEventListener('click', async () => {
  if (document.pictureInPictureElement) {
    await document.exitPictureInPicture();
  } else {
    const pipWindow = await video.requestPictureInPicture();
    pipWindow.addEventListener('resize', () => {
      console.log(`新サイズ: ${pipWindow.width}x${pipWindow.height}`);
    });
  }
});
</script>

Document Picture-in-Picture

従来は <video> 専用でしたが、新しい API により任意の HTML を PiP ウィンドウで表示可能になっています。

これにより、カスタムUI、会議アプリの参加者タイル表示、常時操作できるツールバーなど、柔軟な活用が可能です。

制御とセキュリティ

Permissions-Policy

サーバー管理者は HTTP ヘッダーで PiP の利用可否を制御できます。

例: Permissions-Policy: picture-in-picture=() と指定すると PiP が禁止され、requestPictureInPicture() 呼び出しは SecurityError を返します。

disablePictureInPicture 属性

<video disablepictureinpicture> を指定すると、その動画の PiP 利用をユーザーエージェントに抑制するよう依頼できます。

サイト運営者が意図的に PiP を無効化したい場合に用いられます。

実装のベストプラクティス

  • UI トグルの設置 – PiP の開始・終了をボタンで明示し、状態をイベントで同期する。
  • 例外処理の実装 – 非対応ブラウザやポリシー制御によるエラーをハンドリングする。
  • 小窓サイズ対応 – PictureInPictureWindow.width/height を利用し、ウィンドウリサイズ時に表示を調整。
  • 高度な体験の提供 – Document PiP を用いれば、単なる動画再生にとどまらず、インタラクティブな UI や複数ストリームの同時表示も可能。

まとめ

ピクチャインピクチャは、モバイルOS・デスクトップOS・Webブラウザで広く利用できる機能であり、作業と動画視聴の両立を可能にします。Web標準の API はシンプルなメソッドで制御でき、Permissions-Policy や disablepictureinpicture により利用範囲を柔軟に管理可能です。さらに Document PiP により、これまでにない新しい体験設計が可能になっています。

開発者はユーザー体験とセキュリティを両立しつつ、OS・ブラウザの対応状況を踏まえて実装を進めることが求められます。

読む  アイホン画面横にならないようにするには|回転ロック設定ガイド
タイトルとURLをコピーしました