phpTweet最近、新規プロジェクト案件で携帯サイトの構築についていろいろ調査をしています。いろいろな点で懸念はしていたのですが、蓋を開けてみると「やはり、、」と、いうかハマる点がかなり多いです。PCサイト(XHTML+CSS+JavaScriptなサイト)に比べて、有益な情報がまとまっていないなぁ、、という感想です。僕が調べた点や、実装を進める上で得たTipsなどを共有していきたいと思います。そこで、今回はPHPで携帯サイトを実装する上でのTipsを記しておきたいと思います。対象機種を3Gに絞る携帯サイトの構築で最も問題なのが、キャリアや機種に依存する問題があまりに多くて、検証作業が非常に困難な点が挙げられます。携帯サイトの老舗開発会社であればノウハウや検証体制なども確固たるものがあるでしょうが、自分たちのような新規参入会社にとって、これらを行うことはほぼ不可能です。ところが、対象機種を3Gに絞ることで、この問題はかなりシンプルになります。表示HTMLの文字コードをUTF-8のみにすることが可能になります()。UTF-8なサイトであれば、PCサイトでも手がけたことがある人は多いと思いますので、そのノウハウを利用することができます。ちなみに、この「UTF-8縛り」は、各キャリアの仕様+社内の全携帯を利用した検証、シミュレータによる検証結果より、この結論に至りました。反例がありましたらコメントなどでお願いします。表示はキャリア毎と、いうわけでPHPでサイトロジックを実装する場合、FedoraなどのUTF-8な環境であれば特に気を付けることはなく、普段通りの実装をすればOKです。ビューの部分で絵文字を使う場合、各キャリア毎に絵文字のコードが異なっています。絵文字込みのtplファイルをキャリア毎に作成し、キャリア毎にtplを切り替えて利用の、どちらかを選択することになるかと思います。絵文字以外にもキャリアごとに利用できる(X)HTMLタグもやや異なっているため、今回は後者を利用することとしました。実際のコードは次のようにしました。ディレクトリ構成smarty/templates/以下に、同じ構成を保ったdcm,sb,auディレクトリを作成します。各ディレクトリ内にはtplファイルを配置します。mysmarty.phpwebapps直下にはSmartyクラスを継承したMySmartyクラスを定義したmysmarty.phpを設置します。mysmarty.phpの内容は次のようなものになります。?>ここでは、$smarty->displayメソッドをラップするshowメソッドを用意しています。templatesディレクトリ以下の「<キャリア>/*.tpl」を表示させています。get_carrier関数は、User-Agentからキャリア判定を行うか、IPアドレスで判定を行えばOKです。今回はUAで判定する次のような実装を行いました。$smarty->show('index.tpl');こんな感じになります。au/index.tplを参照することになります。これで、ロジックは共通にしながらも、サクサクと絵文字ふんだんなテンプレートを切り替えて、携帯サイトを構築できるかと思います。謎なことは多い携帯の世界は自分にとってまだまだ闇で未知なることが多いです。絵文字、デコメ、Flash、動画再生・・・など仕様が非公開だったり、まとまった情報が無いものがまだまだかなり多いです。この世界は伸びるよ!だからこそ、ひょんなことからブレイクスルーをおこせる可能性がまだまだ潜んでるわけです。