生涯学習エンジニヤ(忍)

エンジニア忍者としての修行の記録です。

2016年版Rubyユーザーエージェント判別・判定

Rubyスマートフォンタブレット・PCを判定するクラスを作成しました。

User Agent 判別クラス

# -*- coding: utf-8 -*-
class Ua

  def initialize ua
    raise ArgumentError unless String===ua
    @ua = ua.downcase
  end

  def tablet?
    @__tablet ||=
      @ua.index("windows") && @ua.index("touch") && @ua.index("tablet pc") or
      @ua.index("ipad") or
      @ua.index("android") && !@ua.index("mobile") or
      @ua.index("firefox") && @ua.index("tablet") or
      @ua.index("kindle") or
      @ua.index("silk") or
      @ua.index("playbook")
  end

  def mobile?
    @__mobile ||=
      @ua.index("windows") && @ua.index("phone") or
      @ua.index("iphone") or
      @ua.index("ipod") or
      @ua.index("android") && @ua.index("mobile") or
      @ua.index("firefox") && @ua.index("mobile") or
      @ua.index("blackberry")
  end

  def pure_pc?
    !tablet? && !mobile?
  end

end

使い方サンプル on Rails

@ua = Ua.new request.user_agent

@ua.tablet?  #=> タブレットかどうか。Windows touch, iPad, Kindle Fire はこちらに含まれる。
@ua.mobile?  #=> スマートフォンかどうか。iPhone, Android, Windows Phone など
@ua.pure_pc? #=> スマホでもタブレットでもない純粋なPCかどうか.

おまけ

上記コードは、「2chまとめアンテナメーカー」というWebサービスで利用してます。
antena-maker.nekotool.com