Skip to content
uupaa edited this page May 21, 2016 · 254 revisions

Namespace

Entity of Spec module is located in the global.WebModule.Spec.
If you want publish to global namespace.

Spec モジュールの実体は、global.WebModule.Spec にあります。
global 名前空間に直接公開する事もできます。その場合は global.Spec でもアクセス可能になります。

API

new Spec

new Spec(ua:UserAgent) は、デバイス情報の収集と分析を行い、Spec のインスタンスを返します。

返されるインスタンスを通じてデバイスの情報を取得できます。

Spec properties result
spec.UNKNOWN false 不明なデバイスIDならtrue
Smart Phone 専用プロパティ
spec.SOC "A6" SoC ID
spec.GPU "SGX543MP3" GPU ID
spec.RAM 1024 デバイスのRAM(MB)
spec.BLE true BLEが使用可能ならtrue
spec.NFC true NFCが使用可能ならtrue
spec.ATOM false ATOMならtrue
spec.SIMD true SIMD(NEON)が使用可能ならtrue
spec.H265_ENCODER false H265ハードウェアエンコーダが利用可能なら true
spec.H265_DECODER false H265ハードウェアデコーダが利用可能なら true
spec.FORCE_TOUCH false ForceTouchをサポートしているか
spec.FORCE_CLICK false ForceClickをサポートしているか
spec.MAX_THREADS 2 最大スレッド数
spec.MAX_TOUCH_POINTS 5 最大タッチポイント数
spec.GLES 3.1 OpenGL ES version
spec.METAL 0.0 Metal version
spec.VULKAN 0.0 Vulkan version
spec.LOW_END false 低スペックデバイスなら true
spec.OUTMODED false 古いデバイスなら true
Feature Phone 専用プロパティ
spec.FP_TLS false TLS が利用可能なら true
spec.FP_UTF8 false UTF8 が利用可能なら true
spec.FP_COOKIE false COOKIE が利用可能なら true
spec.FP_CERT_SHA1 false SHA-1 サーバ証明書しかサポートしていない端末で true
spec.FP_MALFUNCTION false 普段使いできないほどの機能不全があれば true
spec.FP_FLASH_LITE 0.0 利用可能な FlashLite Version
spec.FP_DISPLAY_LONG 0 ディスプレイの長辺pixel
spec.FP_DISPLAY_SHORT 0 ディスプレイの短辺pixel
var ua = new UserAgent();
var spec = new Spec(ua);

ua.DEVICE       // -> "Nexus 5"

spec.LOW_END    // -> false
spec.OUTMODED   // -> false

UNKNOWN

カタログに記載されていない未知のデバイスで true になります。 このプロパティは、Smart Phone と Feature Phone で機能します。

SOC

System-on-a-chip 名です。
このプロパティは、Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.SOC // -> "MSM8255"

GPU

GPU 名です。
このプロパティは、Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.GPU // -> "ADRENO 320"

RAM

デバイスに搭載されているメモリです。単位はMBです。
このプロパティは、Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.RAM // -> 2048

BLE

デバイスに Bluetooth Low Energy が搭載されている場合に true になります。
このプロパティは、Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.BLE // -> true

NFC

デバイスに NFC が搭載されている場合に true になります。
このプロパティは、Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.NFC // -> true

ATOM

SoC が Intel ATOM プロセッサーなら true になります。
このプロパティは、Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.ATOM // -> true

SIMD

デバイスで SIMD (NEON) が利用可能な場合に true になります。
このプロパティは、Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.SIMD // -> true

H265_ENCODER

デバイスで H.265 ハードウェアエンコーダが利用可能なら true になります。
このプロパティは、Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.H265_ENCODER // -> true

H265_DECODER

デバイスで H.265 ハードウェアデコーダが利用可能なら true になります。
このプロパティは、Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.H265_DECODER // -> true

FORCE_TOUCH

iPhone 6s で実装された、force touch 機能のあり/なしです。
このプロパティは、Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.FORCE_TOUCH // -> false

FORCE_CLICK

iPhone 6s で実装された、force click 機能のあり/なしです。
このプロパティは、Smart Phone 専用です。

force click 機能は、リンクを強く押すとリンク先をプレビューする機能の事です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.FORCE_CLICK // -> false

MAX_THREADS

デバイスの最大スレッド数です。
このプロパティは、Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.MAX_THREADS // -> 2

MAX_TOUCH_POINTS

デバイスの最大同時タッチ数です。1 ならマルチタッチ機能は利用できません。0 ならタッチスクリーンを搭載していません。
このプロパティは、Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.MAX_TOUCH_POINTS // -> 5

GLES

デバイスがサポートしている OpenGL ES の version です。 0.0 または 1.1 〜 3.1 の値が返ります。
このプロパティは Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.GLES // -> 3.1

METAL

デバイスが Metal をサポートしていると 1.0 以上の値を返します。サポートしていない場合は 0.0 を返します
このプロパティは Smart Phone 専用です。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.METAL // -> 1.0

VULKAN

デバイスがサポートしている Vulkan の version です。0.0 または 1.0 以上の値が返ります。
このプロパティは Smart Phone 専用です。

Android では以下の条件が成立した場合に 1.0 以上の値を返します。

  • Android 7.0 以上
  • OpenGL ES 3.1 が利用可能な GPU を搭載している
  • GPU ドライバが Vulkan をサポートしている
    • Adreno 4xx/5xx 以上
    • Tegra K1/X1 以上
    • PowerVR G6430/GX6450/GXA6850/GT7600/GT7800 以上
    • Mali の一部
var ua = new UserAgent();
var spec = new Spec(ua);

spec.VULKAN // -> 1.0

LOW_END

遅い CPU や 遅い GPU を搭載したデバイスで true になります。
このプロパティは、Smart Phone 専用です。

このプロパティは、 Spec.THRESHOLD.LOW_END_CPU_CORES, Spec.THRESHOLD.LOW_END_CPU_SPEED, Spec.THRESHOLD.LOW_END_GPU_GFLOPS の値に依存します。

SupportPolicy を参照してください。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.LOW_END // -> false

OUTMODED

発売から一定期間(24ヶ月または30ヶ月)が経過したデバイスで true になります。
このプロパティは、Smart Phone 専用です。

このプロパティは、Spec.THRESHOLD.OUTMODED の値に依存します。

デフォルトでは発売から24ヶ月経過したデバイスで true になり、 OS バージョンアップが行われたデバイスは30ヶ月後に true になります。

SupportPolicy を参照してください。

var ua = new UserAgent();
var spec = new Spec(ua);

spec.OUTMODED // -> false

FP_TLS

TLS が利用可能なら true になります。
このプロパティは Feature Phone 専用です。

var ua = new UserAgent("DoCoMo/2.0 P07A3(c500;TB;W24H15)");
var spec = new Spec(ua);

spec.FP_TLS // -> true 

FP_UTF8

UTF8 が利用可能なら true になります。
このプロパティは Feature Phone 専用です。

var ua = new UserAgent("DoCoMo/2.0 P07A3(c500;TB;W24H15)");
var spec = new Spec(ua);

spec.FP_UTF8 // -> true 

FP_COOKIE

COOKIE が利用可能なら true になります。
このプロパティは Feature Phone 専用です。

var ua = new UserAgent("DoCoMo/2.0 P07A3(c500;TB;W24H15)");
var spec = new Spec(ua);

spec.FP_COOKIE // -> true 

FP_CERT_SHA1

SHA-1 サーバ証明書しかサポートしておらず、SHA-2 サーバ証明書が利用不能な端末で true になります。この値が true の端末は2016年以降 HTTPS が利用できません。
このプロパティは Feature Phone 専用です。

var ua = new UserAgent("DoCoMo/2.0 P07A3(c500;TB;W24H15)");
var spec = new Spec(ua);

spec.FP_CERT_SHA1 // -> true 

FP_MALFUNCTION

普段使いできないほど機能不全を起こしている端末で true になります。

このプロパティは Feature Phone 専用です。

  • カレンダー機能に不具合が発生している端末で true になります
  • HTTPS が利用できない端末で true になります(FP_CERT_SHA1 = true)
var ua = new UserAgent("DoCoMo/2.0 P07A3(c500;TB;W24H15)");
var spec = new Spec(ua);

spec.FP_MALFUNCTION // -> true 

FP_FLASH_LITE

利用可能な FlashLite の Version 番号です。 1.0 / 1.1 / 2.0 / 3.0 / 3.1 または 0 になります。
このプロパティは Feature Phone 専用です。

var ua = new UserAgent("DoCoMo/2.0 P07A3(c500;TB;W24H15)");
var spec = new Spec(ua);

spec.FP_FLASH_LITE // -> 3.1

FP_DISPLAY_LONG

FP_DISPLAY_SHORT

ディスプレイの長辺と短辺です。単位は pixel です。
このプロパティは Feature Phone 専用です。

var ua = new UserAgent("DoCoMo/2.0 P07A3(c500;TB;W24H15)");
var spec = new Spec(ua);

spec.FP_DISPLAY_LONG  // -> 662
spec.FP_DISPLAY_SHORT // -> 480

Spec.has

Spec.has(id:IDString):Boolean は、idSpecCatalog に存在する場合に true を返します。

Spec.has("Nexus 7")    // -> true
Spec.has("ADRENO 420") // -> true
Spec.has("A8X")        // -> true

Spec.dump

Spec.dump(type:String = "modern"):DeviceIDArray は type に指定した条件に一致するデバイスIDの配列を返します。

type filter
"modern" 発売から2年以内の中〜高スペックのデバイス
"lowend" 低スペックのデバイスの一覧
"outmoded" 発売から2年以上経過したデバイスの一覧
(OSバージョンアップがあったデバイスは2年ではなく2年半になります)
"onehand" 片手で操作可能なデバイスの一覧
"bothhands" 両手で操作可能なデバイスの一覧
Spec.dump("modern")

iPhone 6 Plus,iPhone 6,iPhone 5s,iPhone 5c,iPad Air 2,iPad Air,iPad mini 3,iPad mini 2,iPod touch 6,XT1058,Nexus 9,Nexus 7 2nd,Nexus 6,Nexus 5,Mi Pad,Redmi Note,ASUS_T00P,ASUS_Z00AD,K017,ME581C,SHIELD Tablet,Nexus Player,SO-03G,SO-04G,SO-05G,SC-04G,SC-05G,SH-03G,SH-04G,SH-05G,F-04G,DM-01G,SO-01G,SO-02G,SC-01G,SC-02G,SC-03G,SH-01G,SH-02G,F-02G,F-03G,SC-04F,SO-03F,SO-04F,SO-05F,SH-04F,SH-05F,SH-06F,F-05F,F-06F,L-01F,SC-01F,SC-02F,SH-01F,SH-01FDQ,SH-02F,SH-03F,SO-01F,SO-02F,F-01F,F-02F,F-03F,F-04F,SC-04E,SO-04E,SO-04EM,SH-08E,F-08E,F-09E,SO-02E,SCV31,SOV31,SOT31,HTV31,LGV32,SHV32,KYV35,KYV34,KYT31,KYV33,SHV31,KYV32,KYL23,SHF32,SHF31,SCT21,LGV31,KYV31,SOL26,SCL24,AST21,SOT21,HTL23,KYY24,KYY23,SHL25,SCL23,SOL25,LGL24,SHT22,SHL24,URBANO L02,LGL23,SOL24,FJT21,SOL23,SCL22,KYL22,LGL22,SHL23,FJL22,HTL22,SOL22,402SO,404SH,403SH,404SC,404KC,402LG,403SC,402SH,403HW,401SH,401SO,302KC,305SH,304SH,WX05SH,SBM303SH,DM016SH,301F,SBM302SH,101F,WX04SH,EM01F,DM015K,DM014SH,LGL25,VA-10J,KFSAWA,KFSAWI,KFAPWA,KFAPWI,KFTHWA,KFTHWI