Skip to content

端末の性能の目安をブラウザから受け取る仕組み

自分の作業機では軽快に動くのに、お客様の手元ではもたつく。制作の現場では何度も出会う話です。8月25日に安定版が公開されたChrome 152に、この端末ごとの差を扱うための小さな仕組みが入りました。CPU Performance APIと呼ばれるもので、閲覧している端末の処理性能の目安を、ごく粗い段階の数値としてJavaScriptから読み取れます。

使い方はそっけないほど簡単で、navigator.cpuPerformance を参照すると小さな整数が返ってきます。値が大きいほど性能の高い端末、という意味づけです。Chromeの開発者向けブログでは、描画の作り込みを加減する、重い計算を減らす、裏で走らせる処理の量を調整するといった使い方が挙げられています。

これまでは自前で測るしかなかった

仕様草案によると、端末の性能に応じて中身を出し分けたいという要望は以前からあり、実現しているアプリは自前でベンチマーク相当の処理を走らせるか、ウェブには開かれていない内部的な機能に頼っていたとされています。性能を測るために端末に余計な仕事をさせるのは、順序が逆さまな感じもします。提案の目的のひとつは、この無駄をなくすことだと書かれています。

考え方としては、以前からある端末メモリ量の取得と似ています。細かい実測値ではなく、あらかじめ用意された区分のどれに当てはまるかだけを返す。navigator に読み取り専用の値をひとつ足すという形も同じ流儀です。

段階の分け方と、身元の割り出しへの配慮

返る値は1から4までの4段階で、判定できなかった場合は0です。基本の分け方は、OSが報告するコア数をもとにした素朴なもので、1コアなら1、2から4コアなら2、5から10コアなら3、それ以上なら4と決まっています。そのうえで、特定のCPUがコア数から想像される性能と大きく違うと分かっている場合に限り、ブラウザ側が段階を上下に1つずらしてよいことになっています。

おもしろいのは、この区分を将来にわたって動かさないと決めている点です。もっと高性能な端末が出てきたら、既存の端末を格下げするのではなく5段目を足す。同じ端末なら、混雑していても電池が減っていても、いつでも同じ値を返す。古い端末で古いアプリを開いたときの見え方が、時間が経っても変わらないようにするための約束事です。

もうひとつの軸が、閲覧者の身元を割り出されにくくすることです。CPUの製造元や型番、コア数をそのまま渡せば、端末を特定する手がかりが増えてしまいます。そのため仕様では、それぞれの段階に既存のCPU機種の1割以上、実際に使われている端末の1割以上が入るくらいの粗さを保つべきだとしています。利用できるのはHTTPS接続の場面に限られます。

参考値として付き合う

気に留めておきたいのは、この値が絶対的な事実ではないことです。Chromeでは閲覧者自身が設定画面から報告される段階を上書きでき、組織のパソコンでは管理者が方針で指定することもできます。値はあくまで判断の材料であって、これを根拠に機能を完全に閉ざす作りにすると、上書きした人が困ることになります。

他のブラウザの姿勢も、現時点では表明されていません。提案文書でChromeは前向きとされている一方、Edge、Firefox、Safariは公開の意見なしと記されています。当面はChromeだけで読める値だと考え、取得できないときや0が返ったときにどう振る舞うかを先に決めておく必要があります。仕様の例では、判定できなかった端末は高性能側と同じ扱いにしています。

加えて、この値が示すのは端末の地力であって、いまその端末が忙しいかどうかではありません。今この瞬間の混み具合を見たい場合は、別途用意されているCompute Pressure APIと組み合わせる想定です。読み込み時に演出を出すかどうかを決め、その後の負荷を見ながら止めたり戻したりする、という二段構えの例が示されています。

中小企業のサイトで、この値をすぐに使う場面はそう多くないはずです。ただ、同じページでも端末によって体験がまるで違うという前提は、値を読むかどうかとは関係なく効いてきます。凝った動きを見せ場にするなら、それが動かない端末でも内容が伝わるか。制作側が握っているのは結局そこで、こうしたAPIはその判断を少しだけ具体的にしてくれる道具だと考えています。

[1994-2002]
ITベンチャーの幹部として、8年間で数名の企業を500名以上の企業に成長させることに貢献。95年より独学でwebデザインを学ぶ。

[2002-2023]
米国法人のwebデザイン会社のCEOを務め数々の賞を受賞。

[2023〜]
AI事業開始に伴い、つくば市を拠点として株式会社RESONIXを起業。