Railsで様々なrequest.user_agentを取得したい

こんにちは!kossyです!




さて、今回はRailsで開発中にMacOS以外の様々なユーザーエージェントを試す方法について、
ブログに残してみたいと思います。




環境
Ruby 2.6.3
Rails 6.0.3.4
MacOS Catalina
Chrome 87



検証ツールを使う

chromeの検証ツールは、右クリック => 検証を選択することで開くことができます。

検証ツールを開くと以下のような画面になるかと思います。
f:id:kossy-web-engineer:20201231203522p:plain

ここで、左上のタブレットのマークをクリックすると、画面の大きさが切り替わります。

f:id:kossy-web-engineer:20201231203620p:plain

デフォルトではresponsiveが選択された状態だと思いますが、クリックすると、様々なクライアントの環境を選択することができます。
この機能ですが、画面の大きさが変わるだけでなく、user_agentも変わります。

例えば、Galaxy S5を選択した状態でリクエストをして、デバッグしてみます。

$ request.user_agent
=> "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36"
||

Android 5.0からのリクエストとして処理されています。

他のクライアントも試してみましょう。

>|ruby|
# Pixel 2の場合
$ request.user_agent
=> "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36"

# iPhone5/SEの場合
$ request.user_agent
=> "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1"

# iPhone Xの場合
$ request.user_agent
=> "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"

# iPadの場合
$ request.user_agent
=> "Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1"

# Surface Duoの場合
$ request.user_agent
=> "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36"

選択したクライアントごとに、user_agentの返り値が変わっていることが確認できました。

user_agentごとに処理を変えるような機能がある場合に役に立ちそうですね。




勉強になりました。