デバイスメモリ API

W3C作業草案,

この文書の詳細情報
このバージョン:
https://www.w3.org/TR/2025/WD-device-memory-1-20251211/
最新版:
https://www.w3.org/TR/device-memory/
編集者草案:
https://www.w3.org/TR/device-memory/
以前のバージョン:
履歴:
https://www.w3.org/standards/history/device-memory-1/
フィードバック:
GitHub
編集者:
(Google)
前編集者:
Shubhie Panicker (Google)

概要

本書は、デバイスのメモリ能力(すなわちデバイスRAM)をウェブアプリが制約に応じてコンテンツをカスタマイズできるよう、HTTPクライアントヒントヘッダーおよびJavaScript APIを定義します。

この文書のステータス

このセクションは、公開時点でのこの文書のステータスを説明します。 現在のW3C刊行物一覧とこの技術レポートの最新改訂は W3C標準・草案インデックスにて参照できます。

本文書はWeb Performance Working Group によって 作業草案として 勧告トラックを用いて発行されました。 作業草案として公開されたことは、 W3Cおよびその会員による承認を意味しません。

本文書はドラフトであり、 随時更新・置換・廃止される可能性があります。 進行中の作業以外として本書を引用するのは不適切です。

GitHub Issuesでこの仕様議論を推奨します。

本ドキュメントは 2025年8月18日付W3Cプロセス文書 に従います。

本書は W3C特許ポリシーの下で活動するグループにより作成されました。 W3Cは 本グループ成果に関連する特許開示公開リスト を維持しています。 特許開示方法も同ページに記載されています。 本人が実際に必須クレームを含む特許を知る場合、 W3C特許ポリシー第6節に従い情報開示が必要です。

1. はじめに

開発者は以下の用途でデバイスクラスのシグナルを必要とします:
  1. 低スペックデバイス向けにサイトやコンポーネントの軽量版を提供する。例:

    • Googleの「search lite」サービス(EMで使われる10KBの検索結果ページ)を提供する

    • Facebookで動画プレイヤーの軽量版を提供する

    • Google Mapsで軽量タイル画像を提供する

  2. メトリクスの正規化:分析では、メトリクスをデバイスクラス基準で正規化する必要がある。 例えば、ハイエンドデバイスで100ミリ秒のタスクが発生した場合、ローエンドデバイスと比べてより重大な問題となる。

デバイスメモリは「デバイスクラス」を判断するのに非常に有用なシグナルです。512MB未満、512MB~1GBの低メモリデバイスは新興市場で広く使われています。

1.1. 利用例

サーバーはSec-CH-Device-Memory HTTP クライアントヒントAccept-CHヘッダーフィールドやhttp-equiv属性付きHTML meta要素で受信するよう通知できます:
Accept-CH: Sec-CH-Device-Memory

サーバーから上記プリファレンスを受け取ると、対応したユーザーエージェントはSec-CH-Device-Memoryリクエストヘッダーフィールドを使って デバイスのメモリ能力を通知します:

GET /example HTTP/1.1
Sec-CH-Device-Memory: 0.5
...

2. Sec-CH-Device-Memory(クライアントヒント)ヘッダーフィールド

Sec-CH-Device-MemoryヘッダーフィールドはHTTPクライアントヒントヘッダーです。 これは構造化ヘッダー値であり、値はitem型で、 decimal値を持ちます。この値はクライアントのデバイスメモリ(おおよそのRAM量、GiB単位)を示します。

Sec-CH-Device-MemoryヘッダーフィールドのABNF(Augmented Backus-Naur Form)構文は以下の通りです:

Sec-CH-Device-Memory = sf-decimal

2.1. デバイスメモリ値の算出

この値は実デバイスメモリ(MiB単位)を使い、最上位ビットだけが立って他はゼロになる値(2のべき乗)に丸めてから 1024.0で割り、GiB値を算出します。

値のリストには上限値と下限値を設定すべきです。

NOTE: 実装ごとに異なる値を選択しても良いですが、推奨上限は8GiB、推奨下限は0.25GiB(256MiB)です。

Sec-CH-Device-Memoryヘッダーフィールドがメッセージに複数回出現した場合、 最後の値がそれ以前のすべてに優先されます。

2.2.

512 MiBは次のように報告されます:

Sec-CH-Device-Memory: 0.5

1000 MiBは次のように報告されます:

Sec-CH-Device-Memory: 1

取りうる値の一覧は、0.25, 0.5, 1, 2, 4, 8となります。

3. デバイスメモリJS API

[
    SecureContext,
    Exposed=(Window,Worker)
] interface mixin NavigatorDeviceMemory {
    readonly attribute double deviceMemory;
};

Navigator includes NavigatorDeviceMemory;
WorkerNavigator includes NavigatorDeviceMemory;

NOTE: self.navigator.deviceMemory は、 §2.1 デバイスメモリ値の算出で説明されるRAM量(GiB)を返します。

4. セキュリティの考慮事項

Sec-CH-Device-MemoryクライアントヒントヘッダーとJS APIは、 HTTPSセキュアコンテキストでのみ利用可能です。

(たとえばデバイスの種類やクラス)ユーザーエージェントやクライアントの他特徴にもとづくデバイス識別・分類は、最適化されたコンテンツ選択や提供に広く使われています。 このような解決策は商用デバイスデータベースに依存しがちですが、導入・統合・管理が困難です。 本仕様は技術的課題を解決しうるデバイスメモリ能力取得機構を定義しています。

フィンガープリンティングリスク低減のため、返す値は最上位ビットで丸め(厳密値ではない)、さらに上下限も設けています。

5. IANAの考慮事項

本仕様はHTTPリクエストヘッダーSec-CH-Device-Memoryフィールドを定義し、 パーマネントメッセージヘッダーフィールド登録簿([RFC3864])へ登録します。

5.1. Sec-CH-Device-Memoryヘッダーフィールド

ヘッダーフィールド名

Sec-CH-Device-Memory

適用プロトコル

http

ステータス

standard

著者/管理者

IETF

仕様文書

本仕様(§2 Sec-CH-Device-Memory(クライアントヒント)ヘッダーフィールド

6. 謝辞

技術的な助言・提案により本仕様の改良につながったすべての貢献者に感謝します。

適合性

文書慣例

適合性要件は記述的な規定とRFC 2119用語の組合せで示されます。 本仕様の規範部分における "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY"、"OPTIONAL" などの単語は RFC 2119 の定義通りに解釈されます。 ただし可読性のため、これらの単語は本仕様ではすべて大文字表記ではありません。

明示的に非規範的、例、または注記と記載された部分を除き、本仕様のテキストはすべて規範的です。 [RFC2119]

本仕様の例は "for example" という語や、規範テキストから区分する class="example" で示されています(下記参照):

これは参考例の一例です。

参考注記は "Note" で始まり、 class="note" で規範テキストから区分されます(下記参照):

参考:これは説明用の参考注記です。

適合アルゴリズム

アルゴリズムとして命令形で記載された適合要件( "strip any leading space characters" や "return false and abort these steps" など)は 該当するキーワード("must"、"should"、"may"など)に基づき解釈してください。

アルゴリズムや手順として記述された適合要件は、同等の結果が得られるなら実装方法は任意です。 本仕様に記載されたアルゴリズムは理解しやすさを優先しており、必ずしもパフォーマンスを意図したものではありません。 実装者には最適化を推奨します。

索引

本仕様で定義された用語

参照によって定義された用語

参考文献

規範的参考文献

[HTML]
Anne van Kesteren; et al. HTML標準. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[RFC2119]
S. Bradner. RFCsにおける要件レベル指定用キーワード. March 1997. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[RFC8941]
M. Nottingham; P-H. Kamp. HTTPの構造化フィールド値. February 2021. Proposed Standard. URL: https://httpwg.org/specs/rfc8941.html
[RFC8942]
I. Grigorik; Y. Weiss. HTTPクライアントヒント. February 2021. Experimental. URL: https://www.rfc-editor.org/rfc/rfc8942
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL標準. Living Standard. URL: https://webidl.spec.whatwg.org/

参考文献(参考)

[RFC3864]
G. Klyne; M. Nottingham; J. Mogul. メッセージヘッダーフィールド登録手順. September 2004. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc3864

IDL索引

[
    SecureContext,
    Exposed=(Window,Worker)
] interface mixin NavigatorDeviceMemory {
    readonly attribute double deviceMemory;
};

Navigator includes NavigatorDeviceMemory;
WorkerNavigator includes NavigatorDeviceMemory;