Webサイトへモバイルやデスクトップ、タブレットなどが入り乱れてアクセスするようになると、それぞれに分けて情報配信を行いたいと思うようになります。さらにスマートフォンの中でも使える機能が異なったりして、そのための処理分けが複雑なものになっているかも知れません。 そこで使ってみたいのがSpec.jsです。より細かく端末の情報が絞り込めるライブラリになります。

Spec.jsの使い方

Spec.jsのデモです。ユーザエージェントを使って各種機能やスペックを知ることができます。例えばiPhone 6の場合は次のようになります。

var ua = new UserAgent(); // iPhone 6
var spec = new Spec(ua);

spec.UNKNOWN            // -> false
spec.SOC                // -> "A8"
spec.GPU                // -> "POWERVR GX6450",
spec.RAM                // -> 1024
spec.BLE                // -> true
spec.NFC                // -> false
spec.ATOM               // -> false
spec.SIMD               // -> true
spec.H265_ENCODER       // -> false
spec.H265_DECODER       // -> false
spec.FORCE_TOUCH        // -> false
spec.FORCE_CLICK        // -> false
spec.MAX_THREADS        // -> 2
spec.MAX_TOUCH_POINTS   // -> 5
spec.MAX_TEXTURE_SIZE   // -> 16384
spec.LOW_END            // -> false
spec.OUTMODED           // -> false

動画のエンコーダー、デコーダーであったり、3D Touchが使えるかどうかなど、より細かく情報が分かります。これは機種ごとの情報を記載したJSONファイルを使っているので、ユーザエージェントを変えることで情報を変更できます。

サーバサイドでも使えますし、任意の文字列でユーザエージェントを作ればその判定に用いることができます。

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

spec.FP_TLS             // -> true
spec.FP_UTF8            // -> true
spec.FP_COOKIE          // -> true
spec.FP_CERT_SHA1       // -> true
spec.FP_MALFUNCTION     // -> true
spec.FP_FLASH_LITE      // -> 3.1
spec.FP_DISPLAY_LONG    // -> 662
spec.FP_DISPLAY_SHORT   // -> 480

現状で500以上の機種に関する情報が蓄積されており、iPhone 6 plusなどの最新機種にも対応しています。大部分の機種についてはSpec.jsを使って処理判定を楽に行えるのではないでしょうか。

Spec.jsはnode/JavaScript製のオープンソース・ソフトウェア(MIT License)です。

uupaa/Spec.js: Mobile device and Browser spec detection.