P1エミュレータを使ってiモードID機能を開発してみました
    このエントリをはてなブックマークに登録

2008/4/11 金曜日 matsui Posted in DoCoMo No Comments »

先月末にスタートとなったドコモのiモードID機能対応のため、ケータイプログラマの皆様は、あちこちで仕事に追われていることと思います。
私も先日、仕事で実装する機会があったのですが、ちょうど少し前にP1エミュレータがバージョンアップし、iモードIDに対応したとのことですので、これを利用して実装してみることにしました。
→ P1 Emulator リリースノート [netfarm.ne.jp]

 

まずはエミュレータ側の設定からです。
iモードIDの設定は、メニューの「オプション」→「全般設定」→「高度な設定」タブから設定できます。

ひとまずiモードIDを「abcdefg」としてみます。

20080411_imodeid_01.png

β版では制限がある旨のメッセージが表示され、xxxxxでマスクされてしまいました。
なりすましのテストには利用できなさそうですね。
β版以外では解除されるように読めますが、これは正式版を購入させるための機能制限でしょうか、それともセキュリティのためなのでしょうか?

20080411_imodeid_02.png

 

さて、続いてはプログラム側です。
仕事ではかんたんログインを作成したのですが、さすがにそれは公開できないため、サンプルコードとして次のようなものを用意してみました。
iモードIDが取れなければリダイレクトし、パラメータに「guid=ON」を付け、idを取得する仕掛けです。

<?php
// iモードID取得のためのパラメータが付いていなければリダイレクト
$agent = $_SERVER['HTTP_USER_AGENT'];
if (preg_match('/^DoCoMo/', $agent) and !isset($_GET['guid'])) {
	redirect($_SERVER['SCRIPT_NAME'] . '?guid=ON');
}

echo 'iモードID:' . $_SERVER['HTTP_X_DCMGUID'];

// リダイレクト
function redirect($page) {
	$url = 'http://' . $_SERVER['HTTP_HOST'] . $page;
	header(sprintf("Location: %s", $url));
	exit;
}
?>

無事取得できました。

20080411_imodeid_03.png

iモードIDは基本的に実機がないとテストができなかったため便利ですね。
ドコモ公式の「iモードHTMLシミュレータII」も、早く対応して欲しいものです。

 

関連:



ドコモ端末でCSSを利用するには
    このエントリをはてなブックマークに登録

2008/4/3 木曜日 matsui Posted in DoCoMo 9 Comments »

ドコモ端末でCSSを表示しようとして、悩まれる方が多いようなのでご紹介しようと思います。

ドコモのiモード端末では、FOMA以降の機種でXHTML対応となりCSSが使えます。
※厳密にいうと、ごく初期のFOMA21xxシリーズでは使えません。詳しくは下記一覧表からご確認ください。
→ iモード対応機種 対応コンテンツ・機能一覧 [nttdocomo.co.jp] ※PDFです

ですが、PCと同じように普通に書くだけでは、CSSは認識されません。
下記の3点を守る必要があります。

  1. iモード用のXML宣言、DOCTYPEを付ける
  2. CSSは外部ファイルにしない、ヘッダ部にも書かない
  3. 拡張子を「.xhtml」にする ※別の方法もあり

 

まず1についてですが、基本的に対応したいXHTMLのバージョンに合わせて、ドコモのHPに記載されている [nttdocomo.co.jp] XML宣言やDOCTYPEを記述する必要があります。
ですが、エミュレータや実機で試してみた限りでは、それほどうるさくはないようです。
また必須ではありませんが、head部のContent-Typeも「application/xhtml+xml」に修正しておきましょう。

参考までにGoogleモバイルのヘッダ部は次のようになっています。
(iモード完全準拠ではないようです)

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS"/>
・・・

 

続いて2の外部CSSについてです。
他キャリアは大丈夫なのですが、なぜかドコモのみ外部CSSの読み込み(<link rel=”stylesheet” type=”text/css” href=”xxx”>)や、ヘッダ部へのCSSの記述(<style type=”text/css”>xxx</style>)ができません。
ただし、一部例外としてリンクの色などは指定できます。(※詳しくは後述するPDFの比較表を参照)

基本的に全てのCSSはstyle属性を使って、例えば

<div style="color:#FF0000">sample</div>

のように書かなくてはなりません。数が多くなると地獄です。

 

3の拡張子についてもハマりやすいので注意が必要です。
XTMLをアップする場合は、拡張子は「.xhtml」でなくてはなりません。
これもドコモのみの仕様となります。

拡張子を変えることができない場合は、.htaccessで

AddType application/xhtml+xml .html

のように指定してやれば、拡張子が「.html」のままでも表示できるようになります。

またPHPなどで、どうしても拡張子が「.php」のように制限されてしまう場合は、次のようにプログラム内でヘッダを出力することで解決できます。

header("Content-type: application/xhtml+xml");

 

このようにドコモのXHTMLには色々と制限が多く、早くなんとかして欲しいと思います。
他のキャリアは割りと柔軟な仕様になっていますので、ドコモさえクリアしてしまえば、他では悩まないケースが多いです。

なお、ドコモのXHTMLについての詳しい仕様はこちらを参照してください。

→ NTTDoCoMo 作ろうiモード XTHML [nttdocomo.co.jp]

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

→ NTTDoCoMo 作ろうiモード iモード対応HTMLとiモード対応XHTML比較表 [nttdocomo.co.jp] ※PDFです

 

関連:



ドコモのiMenuがリニューアルしGoogle検索が可能に
    このエントリをはてなブックマークに登録

2008/4/2 水曜日 matsui Posted in DoCoMo, ニュース 1 Comment »

昨日の2008年4月1日に、ドコモのiMenuがリニューアルされました。
デザインの変更はもちろん、Googleの検索ボックスが追加になったのが大きな変更点です。

→ NTTDoCoMo 報道発表資料 iモードポータルサイト「iMenu」をリニューアル [nttdocomo.co.jp]

→ ケータイWatch ドコモ、4月1日のリニューアルでiMenuにGoogleの検索BOX設置 [impress.co.jp]

 

auは2006年7月からGoogle検索を設置していましたが、ドコモもそれに追随する形となります。

リニューアル後のiMenuは次のようになりました。

以前のメニュー
080402-imenu01.jpg

現在のメニュー、大きな広告が目を引きます。
080402-imenu02.jpg

検索結果はこのような感じです。少しデザインが凝っています。
080402-imenu03.jpg

今回のリニューアルで、より多くのケータイユーザがGoogle検索を使うことになりそうです。
モバイルサイトでも、これまで以上にGoogle向けのSEOが重要になりますね。

 

関連:



本日提供が開始された「iモードID」機能を早速試してみました
    このエントリをはてなブックマークに登録

2008/3/31 月曜日 matsui Posted in DoCoMo, ニュース 5 Comments »

本日、2008年3月31日から、ドコモのiモードID通知機能がスタートとなりました。
iモードIDとは、契約ユーザ毎に一意となる番号で、個人の識別に使えるため、例えばログインなどの機能に利用できます。

従来までも端末IDの取得はできていたのですが、認証の度にダイアログが出るため、利用者にとっても開発者にとっても、やや不便な作りとなっていました。
ですので、今回のこの機能は待ちに待った機能となります。

そんなiモードIDを早速試してみました。
まず、公式サイトの情報はこちらになります。

→ NTT DoCoMo 重要なお知らせ 『iモードID』の提供開始について [nttdocomo.co.jp]

→ NTT DoCoMo 作ろうiモードコンテンツ iモードセンタの各種情報 iモードIDについて [nttdocomo.co.jp]

 

URLに「guid=ON」というパラメータを付けてあげると、拡張ヘッダにiモードIDが付く、という仕様のようです。

ひとまずPHPでは次の方法で取得できることを確認しました。(Perlでは$ENVで取れるようです)

echo $_SERVER['HTTP_X_DCMGUID'];

取得できるのは、7文字の英数字([0-9A-Za-z]{7})の文字列とのことです。

 

ただし、この機能を利用するには、利用者が通知を許可している必要があります。(ただしデフォルトは通知するとなっています)
確認してみたところ、iモードメニュー内にメニューが増えていました。

080331-102321.jpg
iモードID通知設定というメニューが増えています

080331-102355.jpg
デフォルトは「通知する」です

080331-102410.jpg
注意書きはこのような感じです

GETやPOSTのパラメタに値を付けなくてはいけないため、他キャリアと比べると少し面倒な仕様ですが、それでも以前に比べれば遙かに楽になりますね。
ライブラリやサイトの修正など、開発者はしばらく忙しくなりそうです。

 

関連:



ドコモ、携帯電話用OSとしてAndroidを採用の方向へ?
    このエントリをはてなブックマークに登録

2008/3/24 月曜日 matsui Posted in DoCoMo, ニュース No Comments »

NTTドコモが、「2010年までに携帯電話端末の基本設計を抜本的に変更する」という方針を明らかにしたそうです。
その中で新OSとして、あのGoogleの「Android」を採用する方向とのニュースが出ています。

→ 読売新聞 ドコモ携帯、基本ソフトの設計簡素化へ [yomiuri.co.jp]

→ 読売新聞  ドコモ携帯設計変更、背景に「ガラパゴス現象」 [yomiuri.co.jp]

→ GAIGAZINE NTTドコモが携帯電話の基本設計を抜本的に変更、OSにGoogleの「Android」を採用へ [gigazine.net]

→ Slashdot Japan  NTTドコモ、Androidを採用し、携帯電話向けOS設計の簡素化を計画 [slashdot.jp]

 

現在OSに統合されているiモードやおサイフケータイなどの機能を分離し、OSの簡素化・共通化を行う狙いのようです。
これにより、低コストで海外向けの端末の開発・量産が容易になるとのことです。

もしこのニュースが本当ならば、日本のケータイOSの大部分をGoogleが握ることになるでしょう。
今後ゲームなどのアプリもAndroid向けに作っていくことになると思いますので、開発者としても外せない技術になりそうです。

なお、他のソースも探したのですが、今のところ読売以外の情報元は見つかりませんでした。
なので情報の信頼度は不明です。続報を待ちましょう。

 

関連: