用語

スクリーンショットAPI

スクリーンショットAPIは、手作業や表示中のブラウザを使わず、ソフトウェアからコードでスクリーンショットを撮るためのインターフェースです。

スクリーンショットAPIの仕組み

スクリーンショットAPIは、ブラウザ描画に必要な処理を単純なリクエストとレスポンスにまとめます。一般的な流れは次のとおりです。

  1. クライアントが、対象URLと撮影パラメーターを含むHTTPリクエストを送ります。パラメーターには、ビューポートの幅と高さ、画像形式、端末エミュレーション、待機条件、要素だけを撮るためのセレクターなどがあります。
  2. APIサーバーがリクエストを受け取り、ヘッドレスブラウザを起動します。通常はPuppeteerまたはPlaywright経由のChromiumです。
  3. ヘッドレスブラウザがページを読み込み、指定した条件を待ちます。たとえば、ネットワーク通信の停止、CSSセレクターの表示、固定時間の経過です。その後、ページ内容を描画します。
  4. ブラウザがビューポートまたはページ全体を画像として撮影します。
  5. APIが、バイナリデータ、base64文字列、保存先URLなどの形で画像を返します。

この処理では、利用者の画面にブラウザウインドウは表示されません。サーバー上のヘッドレスブラウザがページを描画し、その環境での画素単位の撮影結果を作ります。フォントやOSなどの環境差があるため、別の端末と完全に同じ表示になるとは限りません。

スクリーンショットAPIが使われる場面

プログラムから繰り返し撮影する用途でよく使われます。

  • リンクプレビューとサムネイル: SNS、メッセージアプリ、コンテンツサービスで共有するURLのプレビュー画像を作ります
  • 視覚的な監視: 定期的にページを撮影し、変更、障害、表示差分を検出します
  • レポートの自動生成: PDFレポートに入れるダッシュボード、グラフ、ページの画像を作ります
  • コンテンツ処理: 商品ページ、ランディングページ、競合サイトなどをまとめて撮影し、マーケティングや競合調査の資料にします。対象サイトの規約や権限には従う必要があります
  • テスト基盤: エンドツーエンドテスト中に画像を撮り、ビジュアルリグレッション比較へ使います

共通するのは、撮影量と再現性です。同じ撮影手順を数百のURLへ適用したり、定期的に実行したりするなら、手作業よりAPIが扱いやすくなります。

実際の処理では、CIジョブ、定期監視、レポートツール、コンテンツ制作など、ほかの仕組みに撮影を組み込むときにAPIが役立ちます。スクリーンショットは、自動化された一連の処理の1段階にすぎません。

ホスト型とセルフホスト型

ホスト型のスクリーンショットAPIは、事業者が運用するサービスです。事業者がブラウザ基盤、拡張、描画環境の保守を担い、利用者はリクエストを送って画像を受け取ります。サーバーやブラウザを自分で整備せず、短期間で導入しやすい方法です。

セルフホスト型APIは、自社のサーバーで動かします。多くの場合はコンテナ化したヘッドレスブラウザ環境を配備し、社内APIとして公開します。ブラウザのバージョン、ネットワーク設定、データの扱いを管理でき、社内ツール、ステージング環境、VPN内のページなどを自社基盤内で撮影できます。その分、保守、セキュリティ対策、負荷管理も自社の責任です。

公開URLを手早く撮るならホスト型、社内情報や機密性のあるページでデータ管理とネットワーク接続を優先するならセルフホスト型が候補になります。どちらでも、認証情報や撮影データの保存方針を確認します。

よくある失敗

  • 描画完了を待たない: 多くのページは非同期で内容を読み込みます。移動直後に撮ると、空白や欠けた要素が残ることがあります。ネットワーク通信の停止、要素の表示、最低待機時間など、ページに合う条件を使います
  • ビューポート寸法を指定しない: ヘッドレスブラウザの初期値が、想定する表示環境と一致するとは限りません。幅と高さを明示し、撮影結果をそろえます
  • 1つのインスタンスへ負荷を集中させる: ヘッドレスブラウザは多くの資源を使います。1つのインスタンスへ同時リクエストを送りすぎると、描画の遅延、タイムアウト、クラッシュにつながります。ブラウザをプールするか、負荷分散に対応するサービスを使います
  • どの環境でも同じ描画になると思う: ヘッドレス環境では、フォント、アニメーション、JavaScriptの挙動が、画面表示ありのブラウザと異なる場合があります。重要なページは対象環境で確認し、期待する結果と合うか確かめます

よくある質問

スクリーンショットAPIはどのように動きますか?

クライアントがURLと、必要に応じてビューポート寸法、形式、待機条件などを送ります。APIはヘッドレスブラウザを起動してページを読み込み、スクリーンショットを撮影し、その画像を返します。

ホスト型とセルフホスト型のスクリーンショットAPIは何が違いますか?

ホスト型APIは第三者が運用し、利用者は基盤を管理せずにリクエストを送り、画像を受け取ります。セルフホスト型APIは自社のサーバーで動かすため、ブラウザ環境、ネットワーク、データを自分で管理できます。

スクリーンショットAPIでログイン後のページを撮れますか?

Cookie、ヘッダー、認証情報の受け渡しにAPIが対応していれば撮影できます。セッショントークンを注入したり、撮影前にログイン手順を実行したりできるAPIもあります。機密情報の扱いと権限は別途確認が必要です。

スクリーンショットAPIはどの出力形式に対応しますか?

多くのAPIはPNGとJPEGに対応します。WebPやPDFに対応するものもあり、通常はリクエストのパラメーターで形式を指定します。

スクリーンショットAPIとヘッドレスブラウザは同じですか?

同じではありません。ヘッドレスブラウザは、画面にウインドウを表示せずにページを描画する基盤技術です。スクリーンショットAPIはそれをHTTPインターフェースで包み、任意の言語や環境から呼べるようにしたものです。

出典

関連資料

スクリーンショットAPIとは | 用語集 | Shotomatic