今回も今さら情報で更新である。
「今の時代、UA でデバイスを振り分けるのはもう限界だなあ」と感じ、10日ほど前に「javascript や cssで、デバイスがマウスか?タッチパネルか?を判断する」という記事をアップした。
そう。アップしたのだが・・・、「現時点で AI に端末の振り分けコードを php で書かせたら、どんなコードを書くのだろう?」と、ふと思ったので、試してみた。ただそれだけのページ。
まずは、自分で書いたコード。
以下は、2008~2009年頃に私が書いたコード。その後、アルゴリズムの改良をすることなく、延々と継ぎ足しながら今でも使っているヤツ。
以前、自分で書いた 端末振り分けコード
<?php
if(isset($_SERVER["HTTP_USER_AGENT"])) {$ua = $_SERVER["HTTP_USER_AGENT"];} else { $ua = "";}
if ((strpos($ua, 'Phone') !== false) || (strpos($ua, 'iPod') !== false)) {
// スマートフォンからアクセスされた場合↑は「2」
$isMobile = 2;
} elseif ((strpos($ua, 'Android') !== false) || (strpos($ua, 'Mobile') !== false) || (strpos($ua, 'tablet') !== false) || (strpos($ua, 'iPad') !== false)) {
// タブレットからアクセスされた場合↑は「1」
$isMobile = 1;
} elseif ((strpos($ua, 'DoCoMo') !== false) || (strpos($ua, 'KDDI') !== false) || (strpos($ua, 'SoftBank') !== false) || (strpos($ua, 'Vodafone') !== false) || (strpos($ua, 'J-PHONE') !== false)) {
// 携帯からアクセスされた場合↑は「2」
$isMobile = 2;
} else {
// その他(PC)からアクセスされた場合
$isMobile = 0;
}
?>
かなり拙いコードだ。
AI に書いてもらったコード。
以下が今回 AI に書いてもらったコード。(お相手は Gemini)
古い端末のUAも、最新の端末も、出来るだけカバーできるようお願いしてみた。
2026年2月に AI が書いた 端末振り分けコード
<?php
$ua = $_SERVER['HTTP_USER_AGENT'];
$isMobile = 0; // デフォルトはPC(0)
// スマホ・ガラケーの判定(isMobile = 2)
if (
preg_match('/(iPhone|Android.*Mobile|Windows Phone|IEMobile|BlackBerry|Nokia|DoCoMo|SoftBank|UP\.Browser|J-PHONE|Vodafone)/i', $ua)
) {
$isMobile = 2;
}
// タブレットの判定(isMobile = 1)
// ※iPadやAndroidタブレット(Mobileの文字を含まないもの)を想定
elseif (
preg_match('/(iPad|Android|Kindle|Silk|PlayBook)/i', $ua)
) {
$isMobile = 1;
}
// 判定結果の利用例
if ($isMobile === 0) {
// PC用のコードをここに記述
echo '<!-- PC用 コード -->';
} elseif ($isMobile === 1) {
// タブレット用のコードをここに記述
echo '<!-- タブレット用 コード -->';
} else {
// スマホ・ガラケー用のコードをここに記述
echo '<!-- スマホ・ガラケー用のコード -->';
}
?>
う~ん。。。色々と自分で書いたコードより、かなり洗練されてはいるけれど、ビックリするような真新しいコードは出てこなかった。残念。
(それでも、いくらかはお勉強になった!)
お勉強になった点
- 端末をPC判定する方法
- 私は IF ~ ELSE で最後まで モバイルやタブレット判定されないものを PCと判定しフラグを立ててた。AIは、まず先に PCフラグを立てた。
そして IF ~ ELSEで最後まで PCフラグが消えないものをPC判定した。 - なるほど、AI の判定方法の方がスマートだわ。
- 私は IF ~ ELSE で最後まで モバイルやタブレット判定されないものを PCと判定しフラグを立ててた。AIは、まず先に PCフラグを立てた。
- 判定方法
- AI は正規表現を使ってくれた。
- 私は「正規表現は分からないワケじゃないけど、面倒くさいよ」と、昔書いたコードをそのまま使っていた。
- ああ、しまった! と思った点は1つ
preg_match('//i'', $ua)
大文字・小文字を区別しない方法、知っていたのに、、、「正規表現めんどくせえ」とココで使おうという意識が消えていた。
- 参考情報:
- 正規表現パターンの後に「i」修飾子(pattern/i)を付けると、大文字と小文字を区別せず(Case-insensitive)検索できる。
文字列の検査、Web入力バリデーション、テキスト処理等で大・小文字を無視してマッチングを行いたい場合に必須の技術。
- 正規表現パターンの後に「i」修飾子(pattern/i)を付けると、大文字と小文字を区別せず(Case-insensitive)検索できる。
とまあ、こんな感じ。
過去に自分が書いたコードを、もう一回 AI にイチから書かせてみるのも面白いなあ、と感じたのが今日の収穫。
しかし同時に、10日ほど前に「もう デバイスの振り分けは UA 判定じゃなく css か javascript で タッチデバイスを検出するのが正しいな」と直感したのが正しい判断だったっぽいな・・・・と、改めて実感してしまった。
(UA 判定の方法にも新しい発見が欲しかったのに...寂しい。)
今回の更新は以上。