質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

672閲覧

ユーザーエージェントでのデバイス判定を今後も使用して良いか(PHP)

harumaki_mochi

総合スコア3

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2022/09/21 09:03

編集2022/09/22 01:40

前提

PHPでデバイスの判定をおこない、その内容によって変数に与える値を変更するような条件分岐を記述し実装をおこないました。
デバイス判定のコードは以下の記事を参考にさせて頂きました。

何となく使っているプログラム①-デバイス判定 編-

【以下、ユーザーエージェントを使用する目的を追記致しました。】
ブログのRSSの内容を他サイトに表示させるという機能を実装したいと思っています。
その中で、デバイスによって表示させるRSSの件数や画像のサイズを変更したいと思いユーザーエージェント判定をおこなっています。

なぜPHPでユーザーエージェント判定をおこなっているかという点においては、RSSの内容をforeachでループさせて表示させていますが、そのループの回数を制御するためです。

前提2

実装後にユーザーエージェントについて調べていたら、ユーザーエージェントの文字列固定化の情報を目にしました。
固定化後は「User-Agent Client Hints」を使用したほうが良いという記事も読みましたが、まだ各ブラウザでサポートされていないため実装には難しいのではないかという点が気になりました。

また、最終的な削減後のユーザーエージェント内容を確認すると「Android」や「Windows」といったデバイス判定に使用する情報はまだ得られるのではと思い調べたところ、以下の記事でもデバイスの判定に必要な情報は今後もユーザーエージェントで取得できるという表記がありました。

【テックコラム】Chromeブラウザによる User Agent の削減と User-Agent Client Hints への移行(※続編)

以下、公式から発信されている今後のユーザーエージェント削減予定の計画内容です。
User-Agent Reduction

お聞きしたいこと

  • デバイス判定のみ行う場合は今後もユーザーエージェントを利用しても良いのか。
  • 現在PHPでデバイス判定するためにはどの方法が最適なのか。
  • そもそもデバイス判定はPHPではなくフロントエンド側でおこなうべきなのか。(JavaScript等)

以上となります。

自分ひとりだとなかなか考えがまとまらない、また知識不足なため最適な方法の判断をおこなうことができず、他の方はどのような方針で作業されているのかご意見もお聞きしたいと思い質問させて頂きました。

上記質問の一部のみのご回答も、ぜひお聞きしたいのでご回答いただければ大変嬉しく思います。

どうぞよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2022/09/21 09:08

「何のために」ユーザーエージェント判定を行いたいのでしょうか。
harumaki_mochi

2022/09/21 09:30

maisumakun様 ご確認いただきありがとうございます。 情報不足で大変失礼いたしました。 ブログのRSSの内容を他サイトに表示させるという機能を実装したいと思っています。 その中で、デバイスによって表示させるRSSの件数や画像のサイズを変更したいと思いユーザーエージェント判定をおこなっています。 なぜPHPでユーザーエージェント判定をおこなっているかという点においては、RSSの内容をforeachでループさせて表示させていますが、そのループの回数を制御するためです。 以上です。 大変お手数ですがどうぞよろしくお願い致します。
m.ts10806

2022/09/21 10:09

質問「本文」に追記してください。 こちらは質問への追記修正依頼のコメント欄です。
harumaki_mochi

2022/09/21 10:25

m.ts10806様 追記箇所が違っており大変失礼いたしました。 先程本文に追記いたしました。 ご指摘頂きましてありがとうございます。
guest

回答3

0

デバイス判定のみ行う場合は今後もユーザーエージェントを利用しても良いのか。

現在のところ(User-Agent文字列の凍結・削減後も含め)スマホか、PCかの判別程度であれば、特に問題なさそうな印象を受けます。
ただし、あくまでも現在のところであるため、
今後のことを考えても、できるならば、Googleが推奨する、
User-Agent Client Hintsを使用したほうがいいでしょう。
ただし、質問者さんが懸念している通り、現状User-Agent Client Hintsに対応しているブラウザは少ないので、
対応としては、
User-Agent Client Hintsがヘッダーにて取得できるかを判別し、
できるならば、User-Agent Client Hintsを使って判別し、
User-Agent Client Hintsがなければ、
User-Agentを使用する、といった対応がよろしいかと。

現在PHPでデバイス判定するためにはどの方法が最適なのか。

上記とほぼ同義。

そもそもデバイス判定はPHPではなくフロントエンド側でおこなうべきなのか。(JavaScript等)

要件によるため、なんとも言えません。
汎用的に採用できる方法はあまり考えられません。
(フロントでこそ必要なパターンもあるし、サーバー側でないといけないパターンもある)

投稿2022/09/21 09:22

miyabi_takatsuk

総合スコア9528

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

harumaki_mochi

2022/09/21 09:41

miyabi_takatsuk様 ご回答頂きましてありがとうございます。 質問に1つ1つご回答いただき感謝いたします。 >対応としては、 >User-Agent Client Hintsがヘッダーにて取得できるかを判別し、 >できるならば、User-Agent Client Hintsを使って判別し、 >User-Agent Client Hintsがなければ、 >User-Agentを使用する、といった対応がよろしいかと。 調べている中で上記対応をする形の記事も拝見したので、改めて確認してみたいと思います。 >要件によるため、なんとも言えません。 >汎用的に採用できる方法はあまり考えられません。 >(フロントでこそ必要なパターンもあるし、サーバー側でないといけないパターンもある) おっしゃる通りですよね。 まだまだ勉強が足りず要件によって最適な方法というものが判断できていないだけかもしれません。 貴重なご意見を頂きましてありがとうございました。
guest

0

UAを見てPHPから戻すソースを変えたいのでしょうか?
メディアクエリーなど環境にあわせた見せ方をすればよいので、UAに縛られずに同じものを返せば良いような気もします。

投稿2022/09/21 09:07

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

harumaki_mochi

2022/09/21 09:37

yambejp様 ご回答頂きましてありがとうございます。 >UAを見てPHPから戻すソースを変えたいのでしょうか? 情報不足で大変失礼いたしました。 以下は先程修正依頼を頂き、質問に追記した内容となります。 ----- ブログのRSSの内容を他サイトに表示させるという機能を実装したいと思っています。 その中で、デバイスによって表示させるRSSの件数や画像のサイズを変更したいと思いユーザーエージェント判定をおこなっています。 なぜPHPでユーザーエージェント判定をおこなっているかという点においては、RSSの内容をforeachでループさせて表示させていますが、そのループの回数を制御するためです。 ----- >メディアクエリーなど環境にあわせた見せ方をすればよいので、UAに縛られずに同じものを返せば良いような気もします。 確かにメディアクエリーだとUAに縛られないという点で気になっておりました。 他の方法が取れないか調べて検討してみたいと思います。
guest

0

ベストアンサー

その中で、デバイスによって表示させるRSSの件数や画像のサイズを変更したいと思いユーザーエージェント判定をおこなっています。

それは、本当に「デバイス」を条件にしなければならないものなのですか?

何らかの事情で「全く同じ画面サイズのAndroidとiPhoneで分量を違えなければならない、合理的な理由がある」のでもなければ、画面サイズを条件に制御するほうが適切だと考えます。

投稿2022/09/21 11:34

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

harumaki_mochi

2022/09/21 16:40

maisumakun様 お忙しいところご回答頂きましてありがとうございます。 >何らかの事情で「全く同じ画面サイズのAndroidとiPhoneで分量を違えなければならない、合理的な理由がある」のでもなければ、画面サイズを条件に制御するほうが適切だと考えます。 おっしゃる通りですね。 今回であれば必ずしもユーザーエージェントで判定する必要はないと思いますので、調べながらになりますが画面サイズを条件にする方向性に切り替えたいと思います。 この度は貴重なご意見を頂きましてありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問