Device Memory APIについて

(更新: 2025年12月16日)
  • Web
  • ブラウザ

はじめに

12月1日から25日まで、毎日1記事ずつ公開していくアドベントカレンダー企画です。 この連載では、Web標準とDDDについて学びを深めていきます。 第15回は「Device Memory API」がテーマです。 Device Memory APIとは何か、どのように実装するのか、実装例を交えて紹介します。

Device Memory APIとは

Device Memory APIとは自分が利用している端末のRAM容量を概算で出してくれるAPIです。 RAM容量にアクセスする方法は2つあり、JavaScript APIを使用する方法とクライアントヒントHTTPヘッダーを使用する方法になります。 クライアントヒントとは、端末、ネットワーク、ユーザー、ユーザーエージェント固有の環境設定に関する情報を取得することが出来るHTTPリクエストヘッダーのフィールド群です。 Accept-CH: Width, Downlink, Sec-CH-UAのようにAccept-CHを利用して受信したいヒントを指定できます。

JavaScript API navigator.deviceMemoryを使用

const RAM = navigator.deviceMemory;

クライアントヒント クライアントヒントヘッダーであるDevice-Memoryディレクティブを使用

Accept-CH: Device-Memory

このAPIはChrome、Edge、Operaで利用可能ですが、FirefoxとSafariでは実装されていません。 Battery Status APIで、FireFoxががプライバシーの懸念からBattery Status APIを削除したとありました。 Device Memory APIも同じような文脈で実装していないのか気になるところですが、そのような情報は見当たりませんでした。 引き続き、色々なWeb APIを調べてブラウザーベンダー毎の違いを理解していきたいと思います。

Device Memory APIの実装例

メモリの容量によって、色と文言を変化させる実装を行いました。 @codepen

まとめ

今回はDevice Memory APIについて紹介しました。 利用しているデバイスのRAM容量を取得可能なことから、メモリに応じて軽い・重い処理を切り替えることが出来ます。 また、アドカレ13日目のBattery Status APIに続きデバイスの情報を取れるということでOSとWeb APIの関係も気になってきたところです。 アドカレで知識が広がっている感覚があるので、無理せず続けていきたいと思います。

参考

https://developer.mozilla.org/en-US/docs/Web/API/Device_Memory_API https://developer.mozilla.org/ja/docs/Web/HTTP/Guides/Client_hints