現役システムエンジニアの備忘録

技術スキルや用語などの記録を残していきます

Screen(画面情報)

screen.colorDepthの使い方|色深度の取得方法【JavaScript入門】

投稿日:2019年5月21日 更新日:

この記事で分かること

  • screen.colorDepthで値を取得する方法
  • 仕様上の返り値「24」の意味
  • 24bitと32bitの違い
  • 自分のブラウザで試す手順と、結果を読むときの注意点
  • 取得できない場合や、値を誤解しやすい場合の確認方法

screen.colorDepthを使うと、画面情報から色深度の値を取得できます。現在の仕様では、対応するブラウザが返す値は24です。ただし、この値だけでは、実際の画面が何色を表示できるかまでは判断できません。

補足:色深度とは?
画面の色を表すために使う情報の細かさを、ビット数で示したものです。
補足:ビットとは?
コンピューターが情報を表すときに使う、0か1の最小単位です。ビット数が増えると、より多くの状態を表せます。
補足:ブラウザとは?
Google ChromeやSafariのように、ホームページを見るためのアプリです。



screen.colorDepthとは

screen.colorDepthは、画面に関する情報を読むためのScreen APIに含まれるプロパティです。仕様では、色深度の値として24を返すことが定められています。

補足:APIとは?
アプリやプログラムが、決められた方法で機能や情報を利用するための窓口です。
補足:Screen APIとは?
ブラウザから、画面の幅や色深度などの情報を読むための窓口です。
補足:プロパティとは?
何かに結び付いた情報や設定値のことです。ここでは、画面に関する情報の一つを指します。

ここでいう24は、画面装置の実際の色数を読み取った結果とは限りません。仕様が互換性のために返す値を24に定めているため、値だけを見て「自分の画面は必ず24bitで表示されている」と判断しないでください。

補足:互換性とは?
作られた時期や種類が異なるもの同士でも、同じように使えることです。
注意:screen.colorDepthの値から、実際の画面装置の色数や色の設定を正確に調べられるとは限りません。値をもとに表示を切り替えるなどの判断には使わないでください。

色深度の値は、色を表す情報の量をビット数で示します。たとえば24bitの色データでは、赤・緑・青の3つの成分にそれぞれ8bitを使う形式があります。この形式で表せる色は、計算上は約1,677万通りです。

24bitと32bitの違い

24bitは、赤・緑・青の情報に8bitずつ使う色データの例です。一方、32bitのデータ形式では、24bit分の色の情報に加えて、残りの8bitを透明度の情報に使う場合があります。

補足:透明度とは?
その部分がどれくらい透けて見えるかを表す度合いです。

この32bitの例は、色データの形式についての説明です。32bitなら必ず同じ内訳になる、あるいは画面が必ず約1,677万色を表示できる、という意味ではありません。また、screen.colorDepthの仕様上の返り値24と、色データ形式の32bitは別の話です。

次の図は、24bitと、透明度の情報を加えた32bitのデータ形式の一例を比べたものです。

24bitの色データの例は赤・緑・青に8bitずつを使い、32bitの形式の一例では透明度用の8bitを加えます。screen.colorDepthの返り値24が実際の色データ形式を示すわけではありません。

値を取得して確認する方法

次のコードをブラウザの開発者ツールにあるコンソールへ入力すると、screen.colorDepthの値を確認できます。

補足:コードとは?
コンピューターにしてほしいことを、決められた書き方で記した命令文です。
補足:開発者ツールとは?
ホームページの動きや表示内容を調べるために、ブラウザに用意されている確認用の画面です。
補足:コンソールとは?
プログラムの短い命令を入力したり、結果を確認したりする欄です。
console.log("screen.colorDepth:", window.screen.colorDepth);

console.logは、指定した文字や値をコンソールに表示するための書き方です。window.screen.colorDepthで画面情報を読み、その値を表示します。

補足:windowとは?
ブラウザで開いているページや、ページを表示している画面に関する情報を扱うためのものです。

実行結果の例:仕様に沿ったブラウザでは、次のように24と表示されます。これは仕様に基づく例であり、この記事で特定のブラウザや端末を実行確認した結果ではありません。

screen.colorDepth: 24

自分の環境で試す手順

  1. ホームページを表示しているブラウザで、開発者ツールを開きます。
  2. コンソールの欄を選び、上のコードを入力します。
  3. Enterキーを押し、表示された値を確認します。

ブラウザによって開発者ツールの開き方や画面の名前は異なる場合があります。コンソールに入力できない場合は、ブラウザのヘルプで開発者ツールの開き方を確認してください。



よくある問題と確認方法

値が表示されない

コンソールではなく、ホームページ上の検索欄などにコードを入力している可能性があります。ブラウザの開発者ツールを開き、コンソールの入力欄にコードを入れているか確認してください。

また、ブラウザではないプログラム実行画面で試している場合、windowやscreenを利用できないことがあります。ブラウザでホームページを開き、そのブラウザのコンソールで実行してください。

値が想定と違う

仕様に沿った返り値の例は24です。別の値が表示された場合も、その数値だけから画面の実際の色数を決めつけないでください。ブラウザ名とバージョンを確認し、公式の説明と照らし合わせてください。

値が取得できても、画面の色数が分からない

これは必ずしも取得の失敗ではありません。screen.colorDepthは画面装置の実際の色数を調べるための値ではないため、画面の色設定を確認する目的には適しません。

利用するときの注意点

screen.colorDepthは画面情報を読む例として利用できますが、実際の色数の判定や、色の表示に関する設定の切り替えに使うのは避けてください。仕様上の値と、画面装置や色データの形式は同じものではありません。

注意:「24未満なら色の表示に問題がある」といった条件で警告を出すのは適切ではありません。返された値だけで画面の性能や表示品質を判断できないためです。

仕様と確認環境について

この記事では、画面情報に関する公式仕様の記述を根拠に、仕様上の返り値を24として説明しています。仕様の原文は英語です。画面情報に関する公式仕様で該当箇所を確認できます。

検証環境:OS、ブラウザ名、ブラウザのバージョン、実行結果の情報は提供されていないため、記載していません。上のコードと操作手順も実行確認済みとはしていません。再現性を示すには、実際に確認した環境名・バージョン・確認日・表示された値を追記してください。

screen.colorDepthに関するよくある質問

Q1

screen.colorDepthが24を返すのはなぜですか?

A

画面情報に関する仕様で、返す値が24と定められているためです。実際の画面装置の色数を調査した値とは限りません。

Q2

32bitなら24bitより多くの色を表示できますか?

A

32bitのデータ形式では、追加の8bitを透明度に使う場合があります。そのため、32bitという数字だけで、表示できる色数が24bitより多いとは判断できません。

Q3

スマートフォンでも値を取得できますか?

A

ブラウザでページを開いていれば、同じ書き方で値を読めます。ただし、返された値から画面装置の実際の色数を判断することはできません。

Q4

取得した値に応じて警告を表示してもよいですか?

A

値だけを根拠に、画面の色数や表示品質について警告するのは避けてください。仕様上の返り値と実際の画面情報を区別する必要があります。



まとめ

  • screen.colorDepthは、画面に関する色深度の値を読むプロパティ
  • 仕様上の返り値は24
  • 24bitと32bitは、色の情報や透明度の情報の扱いが異なる場合がある
  • 返された値だけで、実際の画面装置の色数や表示品質は判断できない
  • ブラウザのコンソールでコードを試せるが、実行環境と結果は自分で確認する必要がある

画面情報を続けて学ぶ場合は、所属するScreenロードマップから関連する項目を確認してください。

このブログは Xserver 上の WordPress で運用しています。
表示速度が速く、安定しているのでブログ初心者にもおすすめです。

→ レンタルサーバー エックスサーバー

-Screen(画面情報)

執筆者: