You are browsing the archives of ASP.NET MVC.
ASP.NET MVC
モバイルシステム開発勘所
以下の記事を見てちょっと思うところがあったので書いてみる。
クライアント技術の動向とコーナーへのフィードバック - @IT
http://www.atmarkit.co.jp/fdotnet/chushin/chushinsurvey_02/chushinsurvey_02_01.html
思うところがあった、というのも、ASP.NET MVCを身につけたいスキルとしている回答がとてつもなく少ないことに軽くショックを受けました。というかASP.NETを身につけたいスキルとして選ぶ人がちょっと信じられないくらい多い。
まぁそもそも、アンケートの回答母体自体、C/S中心な人が多そうなのでこんなもんなのかもしれません。
閑話休題。
さて、先日ついに正式に、ASP.NETによるモバイル開発に死刑宣告がされました。
モバイル開発、今後はASP.NET MVCでなんとかしてね、あとjQueryの方がASP.NET Ajax Libraryより良いのでASP.NET Ajax Libraryはフェードアウトするよ、みたいな内容です。さもありなん。(でも記事のアドレスは失念しました。誰か教えて)
まぁ死刑宣告も何も、ASP.NETモバイルコントロールは百害あって一利なし、真面目にやろうとするとデスマ必死、VS2008からは標準でサポートすらされなくなり、Connectで「お前サポートする気ないならUA判定で間違ったヘッダ返すとか余計なことすんなよ誤爆してんだよ使えねーな」と問い合わせると「Web.configでなんとかしてね、ちなみに今後サポートする予定も無いよ」みたいな返事が返ってきてたので、今更と言えば今更なお話。
そして今日に至っても、日本国内のガラパゴス携帯(?)がスマートフォンに駆逐されるわけもなく、各キャリア独自仕様でWeb開発者を悩ませ続けています。
というわけで、2010年4月現在、モバイルWebサイト開発で最低限考慮しなくてはいけない部分を覚え書きがてらメモしてみました。多少間違いや既に改善してる箇所があるかもしれません。
HTMLについて
表現力を考慮すると、XHTML 1.0 Transitionalを利用するのが無難。文字コードはShift-JISにすること。
各種制限
DoCoMoは新しい機種以外Cookieが使えないので、原則Cookieは利用しない。
→つまりセッションはURLの引数やフォームのHiddenにセッション管理トークンを埋め込んで管理する。
Javascriptは原則利用できないと考えてよい。CSSは別ファイルにせず、インラインで記述する必要がある。
画像
端末により、表示できる画像サイズ、容量が異なる。真面目にやるなら、機種の画面解像度データを持って、機種ごとに画像サイズを自動調整したい所。(有料でデータを売っている会社がある)
自動画像調整という点では、Keitai Pictureなどのサービスがあるが、このテのサービスはどこもかなり高額。
なお、画像フォーマットは普通のjpgやgifを利用可能。プログレッシブJPEGやCMYK JPEG、pngは利用しないこと。
絵文字
以下のように記述する。絵文字コードは各社で統一されているわけではないので、対応表を内部で持って、各キャリア向けに変換する必要がある。
なぜなら、DoCoMoの絵文字はAUのEZwebで表示しようとすると自動的に変換してくれるが、Softbankは何もしてくれないキチガイ仕様となっているため。
以下に変換例(記述例)を示す。(他のやり方もある)
DoCoMo
<code src=””>
AU
<img alt=”" localsrc=”44″ />
Softbank

なお、絵文字相互変換マッピングはPHP関連でおなじみのアシアル株式会社のブログにて、 JSONによる変換データが公開されいるので参考にするとよい。
フォーム
各社携帯電話のブラウザのテキストボックスに設定する入力制限あるいは既定入力モード。
例えば電話番号を入力する場合は、入力する際に入力モードが半角数字になっている、など。
全角
既定値なので各キャリア何もしない。
半角かな
textboxのstyle=”"に以下の値を入れる。
DoCoMo
-wap-input-format:"*<ja:hk>"
AU
-wap-input-format:*M;
Softbank
-wap-input-format:"*<ja:hk>"
半角英数(よく使います)
DoCoMo
textboxのstyle=”"に以下の値を入れる。
-wap-input-format:"*<ja:en>"
AU
textboxのstyle=”"に以下の値を入れる。
-wap-input-format:*m;
Softbank
textboxに以下の属性を記述する。
mode=”alphabet”
wap-input-formatを指定すると、入力初期値ではなく入力制限値になってしまうので、style=”"の値は設定できないというキチガイ仕様。
日本語が不自由な連中に丸投げして作らせたとしか思えないキチガイっぷり。
半角数値(よく使います)
textboxのstyle=”"に以下の値を入れる。
DoCoMo
-wap-input-format:"*<ja:n>"
AU
-wap-input-format:*N;
Softbank
-wap-input-format:"*<ja:n>"
端末識別
Cookieが使い物にならないため、ログインIDの記憶などは、DB上に端末識別用のIDを利用するのが無難。
また、キャリアによって識別子がSSLで送信されたりされなかったりするため、非SSL領域でのみ利用すること。(確かAUだけSSLでも送信された気がする)
他にも取得できる識別子もあるが、ものによっては機種変更でリサイクルされる?など不穏な情報もあり。
勝手サイト(笑)で利用するにはHTTPヘッダから取得できる以下の識別子を使うのが無難。
当然、簡単に偽装できるため、このIDのみでログイン状態にするなどの運用は厳禁。あくまで仮ログイン的な使い方や、個人情報を含まない(割とどうでもいい)認証にのみ使うこと。
DoCoMo(iモードID)
HTTPヘッダ上のx_dcmguidを利用する。大文字小文字違いで別端末が存在するため、照合順序などでは大文字小文字を区別する必要があるというキチガイ仕様なので注意。
また、URLの引数にguid=ONというクエリストリングが含まれていないと送信されないというキチガイ仕様なので注意。
AU(EZ番号)
HTTPヘッダ上のx_up_subnoを利用する。
SoftBank
HTTPヘッダ上のx_jphone_uidを利用する。
※ヘッダのキーについては、大文字小文字、-と_にイマイチ自信がないので良い感じに正規表現で抽出してください。
はい、というわけでモバイルサイト開発の最低限の勘所でした。キチガイ仕様満載ですが、これが最低限のレベルです。ユーザビリティに凝り出すともっとめんどくさいところが大量に出てきます。
HTMLメインの勘所なので省略していますが、これ以外にもRFCをガン無視したメールアドレスや、連続送信でブロックされるSMTPなど、とにかく面倒なことが山積みです。
.Netでこれからモバイル開発を初めてやる!という人は、これらのキチガイ仕様群を眺めて頭が痛くなってきても仕方がありません。
特にDoCoMoとSoftbankには軽く殺意が沸いてきてもそれは仕方のないことかと思います。
…で、これをどうやってASP.NET MVCでやるかと考えるともうね…
ASP.NET MVC 1.0 Release
無償版のVisual Web Developer 2008 Express Edition SP1も対応しているので、内蔵Webサーバーで動かせばこれ一本でも開発が可能です。
が、内蔵Webサーバーは糞重いので、別途IIS7が動く環境を用意した方が幸せになれまする。
どうでもいいけど、Wikipediaの大日本帝国陸軍兵器一覧が凄い。