Google Analyticsで一部ケータイの機種名が表示できない問題の解決方法が書かれた記事「カグア!Google Analytics 携帯版Hack 全キャリア機種名対応」
    このエントリをはてなブックマークに登録

2011/2/17 木曜日 matsui Posted in 全キャリア対応 No Comments »

以前にも何度かご紹介させてもらったことのあるブログ「カグア!」に、GoogleAnalytics携帯版を使いこなすのに有用そうな情報がありました。

少し前の記事にはなりますがご紹介させていただきます。

 

→ カグア! Google Analytics 携帯版Hack 全キャリア機種名対応

 

現在のGoogleAnalytics携帯版では、auやソフトバンクのガラケーおよびスマートフォンからのアクセスが機種判定できません。

上記ブログで公開されている修正を適用することで、これらが可能になるとのことです。

 

いずれGoogle側で修正が加えられ、公式にこれらの情報が取得できるようになるとは思いますが、ひとまずの対処としてこの修正を適用するのはアリだと思います。

GoogleAnalyticsを活用されているかたは、ぜひ試してみてはいかがでしょうか。

 

関連:



ソフトバンク2Gの停波に伴ってユーザエージェントによるキャリア判定のロジックを書き直してみました
    このエントリをはてなブックマークに登録

2010/4/15 木曜日 matsui Posted in PHP, 全キャリア対応 2 Comments »

3月末にソフトバンクの2G端末がひっそりと停波となりました

これに合わせてユーザエージェントが「J-PHONE」の端末からのアクセスはなくなることになります。
(一部クローラで使われていることもありますが、おそらくこれもじきになくなるでしょう)

というわけで、それに伴ってユーザエージェント判定のプログラムをPHPで書き直してみました。

 

// ユーザエージェントの取得
$agent = $_SERVER['HTTP_USER_AGENT'];

// 振り分け処理
if (preg_match('/^Vodafone/', $agent) or preg_match('/^SoftBank/', $agent) or preg_match('/^MOT-/', $agent)) {
	// Vodafone, SoftBankの場合
	$dir = 'sb/';
} elseif (preg_match('/^DoCoMo/', $agent)) {
	// DoCoMoの場合
	$dir = 'i/';
} elseif(preg_match('/^KDDI/', $agent)) {
	// auの場合
	$dir = 'ez/';
} else {
	// その他PC等
	$dir = '';
}

$url = 'http://example.jp/' . $dir;
header('Location: ' . $url);        // 指定ページに移動
exit;

 

ドコモの場合は「i/」に、auは「ez/」、ソフトバンクは「sb/」に飛ばすサンプルです。

ユーザエージェントが「Vodafone」から始まる端末は、3GC形式の古い端末でまだ生きていますので必要になります。

「MOT-」はモトローラ製の端末にそういうユーザエージェントを出力する変態端末があったのですが、現在使っている人は皆無でしょうから、この条件は事実上無くても良いと思います。

 

auは昔は「UP.Browser」で判定をかけていたのですが、それらの端末もすでに停波済みですので、「KDDI」でチェックするのが良いでしょう。

 

関連:



PHPを使って3分で作る3キャリア対応ケータイサイト
    このエントリをはてなブックマークに登録

2009/11/17 火曜日 matsui Posted in ソフト紹介, 全キャリア対応 28 Comments »

本日は3分で3キャリア対応ケータイサイト作れてしまうというPHPスクリプト、「らくらくケータイ3キャリアコンバーター(仮名)」を作成してみましたので、そのご紹介をさせていただきます。

 

先日のPHP勉強会で発表させていただきました。
ご参加いただいた皆様、本当にありがとうございました。

発表資料をアップしてありますので、まずはこちらをご覧ください。

 

 

ということで、「3分で作る」とは謳っているものの、ドコモ用に作られたHTMLを他キャリア用にコンバートするだけの、実に簡素な作りです。

ドコモ用サイトを3キャリア化するのは容易ですが、1からサイトを作成する場合はもちろん3分では作れません(笑)

 

動作条件は以下の通りです。

  • PHPが動作すること(5系で動作確認済み、4でも動くかも?)
  • mod_rewriteが使えること

主な機能はこちらです。

  • キャリア判定
  • XHTML用ヘッダの出し分け
  • 絵文字変換
  • istyle変換

 

上記資料内にもありますが、簡単な使い方をご説明します。

まずはこちらから、ファイルをダウンロードします。

→ ダウンロード rakuraku_ketai_converter_0.11.lzh

※2009/11/21 エスケープ処理を加えver0.1→ver0.11となっています。旧バージョンをお使いの方は再度ダウンロードをお願いします。

 

続いて、FTPなどでファイルをアップします。

この時、ドキュメントルート(例えば「http://example.jp/」の直下)に設置する場合は、そのままアップするだけでOKです。

あとはアップしたいケータイサイト用HTMLを隣にアップすれば、ケータイから3キャリア対応サイトとして見ることができます。
もちろんフォルダを作ってその中にアップしても大丈夫です。

設置例:
public_html
 ├ .htaccess
 ├ viewer.php
 └ sample.html
http://example.jp/sample.htmlでアクセスするだけ

 

もし「/」直下ではなく、フォルダを作ってその中に設置したい場合は、付属の「.htaccess」ファイルを次のように修正してください。

例:http://example.jp/mobile/に設置したい場合

<IfModule mod_rewrite.c>
  RewriteEngine On
  
  # 設置したディレクトリに合わせて変更
  RewriteBase /mobile/      # ← ここを設置したいディレクトリ名に合わせて変更
  
  RewriteRule ^([0-9A-Za-z~_\/\-\.]+)\.html$ viewer.php?p=$1 [L]
</IfModule>

「RewriteBase /mobile/」の部分をフォルダ名に合わせて修正します。

 

コンテンツの記述ルールは次の通りです。

  • 絵文字はドコモの「&#xXXXX形式」を使う (i絵文字を使うと便利)
  • 入力文字種の指定は「istyle=”1 or 2 or 3 or 4″」で指定
  • 画像はjpgかgifを使う

 

動作サンプルはこちらです。

→ らくらくケータイ3キャリアコンバーター(仮名) サンプル

20091117_3minphp

 

自分がちょっとしたケータイサイトを作りたいときに使いたいために作ったシンプルなものですので、あまりメンテなどはしないかもしれませんが、ご要望が多ければバージョンアップするかもしれません。
なお、現在何か素敵なソフト名を募集中です。

また、もしよければ以前作ったこちらも合わせてどうぞ。
→ 実際に動いてすぐ使える「PHPによるかんたんログインサンプル」を作ってみました

 

関連:



ケータイ3キャリアに対応するためのDOCTYPE宣言について
    このエントリをはてなブックマークに登録

2009/10/14 水曜日 matsui Posted in 全キャリア対応, 記事紹介・リンク 11 Comments »

XHTMLを使ってケータイサイトを作成する際には、HTMLの冒頭にDOCTYPE宣言を記述する必要があります。

先日からこの「DOCTYPE宣言」に関するブログエントリーが人気を集めているようなので、当サイトも触れてみようと思います。

下記2つのサイトでは、どちらもif文でユーザエージェントを判定して、DOCTYPEを出し分けるという処理を紹介しています。

 

→ ma-san.org 携帯サイトをHTMLではなくPHPで組むときのDOCTYPE分岐方法 [ma-san.org]

→ ある人のぼやき 携帯サイトのDOCTYPE分岐方法 [d.hatena.ne.jp]

 

DOCTYPE宣言とは

DOCTYPE宣言とは以下に続くHTMLが、どのようなバージョンで記述されているかを宣言するものです。
ブラウザ側はこの宣言を解釈して、記述内容に合わせた細かい表示方法を調整したりしています。

各キャリア公式サイトからDOCTYPE宣言の書き方をおさらいしてみましょう。

 

【docomo】

→ NTTdocomo 作ろうiモードコンテンツ iモード対応XHTMLのバージョン [nttdocomo.co.jp]

iモード対応XHTMLのバージョンに合わせて記述します

<!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/[iモードXHTMLバージョン]) 1.0//EN" "i-xhtml_4ja_10.dtd">

例: iモード対応XHTML 1.0用のDOCTYPE

<!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.0) 1.0//EN" "i-xhtml_4ja_10.dtd">

 

【au】

→ KDDI au: コンテンツの制作 > XHTML Basicの基本 [au.kddi.com]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">

 

【softbank】

→ ソフトバンク Mobile Creation XHTMLとCSSによる携帯サイト制作 [creation.mb.softbank.jp]

<!DOCTYPE html PUBLIC "-//J-PHONE//DTD XHTML Basic 1.0 Plus//EN" "xhtml-basic10-plus.dtd">

 

出し分けする場合にはどうするか

各キャリアや、iモードバージョンなどで宣言が異なっているため、ユーザエージェントで判定し、出し分ける方法が一般的です。

上記のサイトのようにif文でユーザエージェントを判定する方法もありますが、PHPであればPEARの「Net_UserAgent_Mobile」などのライブラリを使う方法がおススメです。
キャリアや機種が簡単に取得できます。

他の言語を使った場合でも、大抵の言語には同様のライブラリがあるでしょう。

→ PEAR Package :: Net_UserAgent_Mobile [pear.php.net]

そもそも本当に出し分けが必要なのか?

しかしながら、本当にDOCTYPEの出しわけが必要なのでしょうか?

以前軽くテストをしてみたところ、DOCTYPEの変更によって表示に違いがあることは確認できず、疑問に思ってフォーラムで聞いてみました。

→ ke-tai.org Forum – XHTMLのDOCTYPEについて [ke-tai.org]

すると皆さん、出し分けは特に行っていないという返答が帰ってきました。

 

結論

ケータイブラウザが高度化するにつれ、DOCTYPEによる表示調整を行わなければならなくなるでしょう。

しかしながら今のところ特に苦労して出し分けを行う必要は無いと思っているのですがいかがでしょうか?

もちろんXTHMLを使用する以上、なんらかのDOCTYPE宣言が必要になります。
私はモバイル用の標準的な例として、「XHTML Mobile Profile 1.0」のDOCTYPE宣言を使うことが多いです。

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">

参考:
→ w3c XHTML Basic [www.w3.org]

ドコモはDOCTYPE宣言がないとXHTML表記が使えなかったりしますが、上記の宣言で大丈夫なようです。

 

3キャリア共通ページのサンプルHTMLは次の通りです。

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" />
</head>
<body>
3キャリア共通ページのサンプル<br />
</body>
</html>

 

みなさんはどのような対応を取っているのか知りたいところです。
よろしければフォーラムやコメント欄からご投稿お願いします。

 

関連:



Perl用の3キャリア対応CSS変換モジュール「HTML::MobileJpCSS」
    このエントリをはてなブックマークに登録

2009/1/15 木曜日 matsui Posted in 全キャリア対応 No Comments »

Perl用の3キャリア対応のCSS変換モジュール「HTML::MobileJpCSS」がリリースされたとのことです。

→ komoriyaのはてなダイアリー 3キャリア対応のCSS変換モジュールHTML::MobileJpCSS [d.hatena.ne.jp]

→ CPAN HTML-MobileJpCSS-0.01 [search.cpan.org]

 

ドコモのCSSは、ヘッダ部への記述や外部CSSの利用ができないという困った仕様ため、ページの作成には非常に苦労します。

これらを解決するには、Perlでは「HTML::DoCoMoCSS」、PHPでは「HTML_CSS_Mobile」といったライブラリがありましたが、今回新たな選択肢が追加されたことになります。

 

従来のライブラリとの違いは、文字サイズやhrタグなどのキャリアによる見え方の差異を吸収してくれたり、isyleの変換機能などが付いている点のようです。

キャリアによる文字サイズの違いは非常に困ることが多いところなので、これは便利な機能ですね。

Perl使いの方はぜひ試してみてはいかがでしょうか。

 

関連: