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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

4584閲覧

ユーザエージェントによる判別は実用的ではないのか?

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

3グッド

4クリップ

投稿2016/04/08 05:43

編集2020/01/20 03:21

別のteratailの質問の中で、

スマートフォン端末以外では無効にするスクリプトで、ユーザーエージェントを使う方法は実用的ではない

というコメントがありました。
ユーザエージェントによる振り分けは実用的ではないのでしょうか?

自分のサイトでも、ユーザエージェントにより、PC、iphone、androidを振り分けている箇所があり、問題点を把握したく質問しています。
どのような問題があるのでしょうか?

*元の質問のコメント欄で聞こうかとも思ったのですが、質問は別の質問者のものであり、そちらを混乱させたくなかった為、新規で質問を立てさせてもらいました。

よろしくお願いいたします。

#追記1
元の質問:
携帯を意識して設置したtelボタンを、携帯以外のデバイスでは反応させないようにするには、、。このコードではクリックできるのですが

ただし、こちらの質問内容とは独立して、一般的にユーザエージェントを使う方法の実用性の回答がいただきたいです。

#追記2(2020/01/20 追記)
本件に関して、ブラウザの実装が大きく変わりそうなので、追記しておきます。

Intent to Deprecate and Freeze: The User-Agent string

まだ、計画として上がっているだけで実装には至っていませんが、将来的に UA による振り分けは、大きく根本を見直す必要がありそうです。

KiyoshiMotoki, manabufukai, ngyuki👍を押しています

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

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

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

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

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

kei344

2016/04/08 06:02

「別のteratailの質問」のリンクを質問文に埋め込めませんか?
退会済みユーザー

退会済みユーザー

2016/04/08 06:21

元の質問へのリンクを追記しました。ただし、元の質問内容とは独立して、一般的にユーザエージェントを使う方法の実用性の回答がいただきたいです。
guest

回答2

0

ベストアンサー

クライアントサイドの場合、「Feature Detection」といって、「ある機能が使えるかどうか」は、その機能自体をJavaScriptから動作させてチェックする、ということが推奨されています(Modernizrのような、それ専門のライブラリもあります)。

ただ、今回の場合、JavaScriptからは「tel:がリンクとして動作するかどうか」までは判定できるかもしれませんが、その先の「tel:がどんな処理を起こすか」は知りようがないので、ユーザーエージェント判定に頼るほかない場面です。

あと、サーバサイドでPC版とモバイル版を出し分けるような場合も、ユーザーエージェントしか情報がありません。

投稿2016/04/08 06:14

編集2016/04/08 06:24
maisumakun

総合スコア145184

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

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

退会済みユーザー

退会済みユーザー

2016/04/08 09:05

回答ありがとうございます。 サーバサイドでの振り分けに関して、もう少し教えて下さい。 元の質問の回答にその他の方法として、以下が記載されていました。 1,キャリアを使う方法 2,php .htaccess 3,画面サイズによって出すか出さないかを決める 3以外よくわからなかったのですが、なんとなくサーバサイドでの振り分けに該当するかつユーザエージェントを使用しないように思えます。一般的な手法ではないということでしょうか? 元の回答者以外の方にする質問では無いのですが、自分もユーザエージェント以外にサーバサイドでは判定手法が無いのではないかと思っている中、知見のありそうな方のご意見をお聞きしたく、回答可能であれば教えて下さい。
maisumakun

2016/04/08 09:21

1は、昔ながらの携帯電話であれば通信するIPアドレスが決まっているのでそれで振り分けできるのですが、スマートフォンの場合は格安SIMの普及やWi-fi接続、逆にPCからモバイル回線を使うテザリングがあるので、判定に使える要素ではなくなりつつあります。 2は振り分ける場所の問題で、情報源としてはサーバに来ているもの(ユーザーエージェントなど)です。 3ですが、画面サイズは(JavaScriptから意図的に送らせでもしないかぎり)リクエスト時に送信しないので、サーバサイドで情報を得ることはできません。
退会済みユーザー

退会済みユーザー

2016/04/08 09:33

ありがとうございます。1はあまり意味が無いのですね。 自分に経験がないため、非常に不安になりましたが、あまり問題はないようなので、自サイトでは、このままユーザエージェントで判断していこうと思います。 異なる意見ももしかすると聞けるかもしれないので、しばらく質問はオープンにしておきますが、大変助かりました。
guest

0

元の質問がわからないので文脈が不明ですが、
「スマートフォン端末以外では無効」というのが、例えば「絶対にスマートフォン端末以外には見せたくない」という意味合いであれば、確かに実用的ではないですね。

ユーザーエージェントは偽装できるので、PC端末からスマートフォンページを見ることも、その逆も、普通にできてしまいます。
(偽装という言葉は変かも…ユーザーエージェント切り替え機能が付いてるブラウザもありますので、別に不正等ではありません)

少しだけ追記を。

「何のために判別するのか」が重要だと思いますよ。ユーザーエージェントでないならどのような方法を取るべきかというのも、それによります。
例えばわたしは今の仕事先でユーザエージェントを用いて判別してますが、これは基本的にデザインの出し分け程度のことしかやらず、仮に誤った判別をされてもさほど問題ないからです。
先に書いたとおり、厳密に判定する必要がある場合は適さないので他の方法を取ることになると思います。

投稿2016/04/08 05:56

編集2016/04/08 08:42
takushi168

総合スコア228

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

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

退会済みユーザー

退会済みユーザー

2016/04/08 09:15

回答ありがとうございます。 元の質問のリンクは追記しましたが、あくまで独立した回答を求めておりますので、大変助かります。 あまり経験が無いため、誤った判断をされてもそれほど問題がない場合しか思いつかないのですが、「絶対にスマートフォン端末以外には見せたくない」は、どのような仕様なのでしょうか? ただの判断基準だよ!ってことは理解していますが、もし例が簡単に紹介いただけるようであればお願いします。
takushi168

2016/04/08 09:34

うーん、自分で言っておいてなんですが、実はわたしも思い付かず具体例は書きませんでした… 絶対にというレベルではないかもしれませんが、例えばお金が絡むことになるとちょっと厳しくなりそうですよね。 ・スマートフォンから限定の懸賞キャンペーン ・広告掲載料が端末種別によって異なるので正確に判別したい とか…(苦しい例ですし、これでもUAでの判定でいいかもしれません)
退会済みユーザー

退会済みユーザー

2016/04/08 13:26

「絶対に見せたくない」というケースはすくなさそうですね。 実用的でない方法で構成してしまったかと思い質問したので、少し安心しました。 よほどこだわらないかぎりは問題にならない実装のようなので、自サイトではユーザエージェントで判別する方法をそのまま継続させようと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問