デバイスピクセル比(DPR)の解説

デバイスピクセル比とは何か、レンダリングへの影響、レスポンシブ画像・Canvas描画・高DPIディスプレイ対応に重要な理由を解説します。

Device Pixel Ratio

詳細な説明

デバイスピクセル比とは?

デバイスピクセル比(DPR)は、ディスプレイの物理ピクセルとWebレイアウトで使用されるCSSピクセルの比率です。JavaScriptではwindow.devicePixelRatioで取得できます。

一般的なDPR値

DPR 意味 デバイス例
1 標準密度 古いデスクトップ、非Retinaモニター
1.5 中密度 一部のAndroidスマートフォン、150%スケーリングのWindowsノートPC
2 高密度(Retina) MacBook Pro、iPhone、iPad
3 超高密度 iPhone Plus/Pro Max、フラグシップAndroid

DPRがWeb開発に与える影響

DPRが2の場合、各CSSピクセルは2×2の物理ピクセルグリッドでレンダリングされます。つまり、100×100 CSSピクセルの要素は実際には200×200の物理ピクセルを占有します。100px幅の画像を提供すると、ブラウザがアップスケールしてぼやけます。

高DPI画像の対応

srcset属性を使用して複数の解像度の画像を提供します:

<img
  src="photo-400.jpg"
  srcset="photo-400.jpg 1x, photo-800.jpg 2x, photo-1200.jpg 3x"
  alt="サンプル写真"
/>

高DPI画面でのCanvas描画

<canvas>に描画する際は、CanvasバッファとCSSサイズの両方をスケーリングします:

const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
const dpr = window.devicePixelRatio || 1;
canvas.width = 300 * dpr;
canvas.height = 150 * dpr;
canvas.style.width = '300px';
canvas.style.height = '150px';
ctx.scale(dpr, dpr);

これにより、Retinaおよび高DPI画面でシャープな描画が保証されます。

ユースケース

レスポンシブWebサイトを構築するフロントエンド開発者は、適切なサイズの画像提供、シャープなCanvas描画、標準およびRetinaディスプレイ間のレイアウトテストにDPRの理解が必要です。

試してみる — Screen Info Display

フルツールを開く