|
連載 .NETでモバイル・サイト開発を始めよう 第2回 携帯サイトの「ドコモ、au、SoftBank」への対応 シグマコンサルティング 菅原 英治2007/04/13 |
![]() |
|
|
|
○3.2.3. デバイス・アダプタについて
特定のデバイスに特化した画面レンダリング処理を提供するデバイス・アダプタだが、大きく分けて以下の5種類がある。
【デバイス・アダプタおよびクラスの種類】
| (1)コントロール・アダプタの基本クラス: | |
| 以下のすべてのデバイス・アダプタの基本クラスで、一般的なレンダリング処理機能を提供する。 | |
| (2)ページ・アダプタ: | |
| モバイルWebフォーム・ページに対するレンダリング処理を行う。 | |
| (3)フォーム・アダプタ: | |
| Webページ内のFormコントロールに対するレンダリング処理を行う(※モバイルWebフォーム・ページには、複数のFormコントロールを含めることができる)。 | |
| (4)コントロール・アダプタ: | |
| Webページ内の標準のWebコントロールに対するレンダリング処理を行う。ページ・アダプタやフォーム・アダプタの基本クラスでもある。 | |
| (5)テキスト・ライタ: | |
| 正確にはデバイス・アダプタではなく、各デバイス・アダプタのレンダリング処理で使われるオブジェクト。テキスト出力やデータのエンコードなどの機能を提供する。 | |
実現したい仕様に合わせて適切な種類を選択し、デバイス・アダプタを作成することになる。
デバイス・アダプタの種類について、より詳細を知りたい方は、下記のサイトを参考にするとよい。
○3.2.4. デバイス・アダプタの作成
それでは、デバイス・アダプタを作成してみよう。アダプタの作成に当たって、まずどのアダプタの種類を選択すべきか考える。今回アダプタを適用させる対象は、モバイルTextBoxコントロール、すなわちモバイル・コントロールである。よって、アダプタの種類は、「コントロール・アダプタの基本クラス」を選択する。
これから作成するのは、SoftBank用のモバイルTextBoxコントロールに適用するデバイス・アダプタ(以下、SoftBank用テキストボックス・アダプタ)である。SoftBank用テキストボックス・アダプタを作成するにあたって注意が必要なのは、mode属性の対応である。mode属性とは、テキストボックスの入力モード(全角かな、数字、英字など)を指定するための属性である。下の表に、mode属性へ設定する値についてまとめる。
| 値の種類 | 意味 |
|
hiragana
|
全角ひらがな
|
|
katakana
|
全角カタカナ
|
|
hankakukana
|
半角カタカナ
|
|
alphabet
|
英字
|
|
numeric
|
数字
|
| mode属性へ設定する値 | |
今回はサンプルを簡単にするために、mode属性に対してnumericを設定する場合にのみ対応する。その仕様を以下に示す。
【作成するデバイス・アダプタの仕様】
- <input>タグを出力する
- モバイルTextBoxコントロールのPasswordプロパティがtrueの場合、<input>タグのtype属性の値を“password”にし、falseの場合は“text”にする
- モバイルTextBoxコントロールのNumericプロパティがtrueの場合、<input>タグにmode属性を追加し、その値を“numeric”に設定する
まず、ライブラリ・プロジェクト(Mlib)に、デバイス・アダプタを定義するための新しいクラス(SoftBankTextBoxAdapter)を追加する。
![]() |
||||||
| デバイス・アダプタ定義用のクラス・ファイルの追加 | ||||||
| クラス・ライブラリのプロジェクト(Mlib)に、デバイス・アダプタを定義するための新しいクラス(SoftBankTextBoxAdapter)を追加する。 | ||||||
|
続いて追加したクラスを、下記のコードに書き換える。
|
|
| デバイス・アダプタ(SoftBankTextBoxAdapter.cs)のコード |
まずコントロール・アダプタの基本クラス(System.Web.UI.Adapters.ControlAdapter)を継承していることに注目してほしい。上記でアダプタの種類を選択するという表現をしたが、これは継承するアダプタの種類を選択するという意味であったのだ。
次にレンダリング処理について。デバイス・アダプタにおけるレンダリング処理は、(ControlAdapterクラスで定義されている)Renderメソッドをオーバーライドすることで実装できる。
レンダリング処理の内容としては、まず自身(this)のControlプロパティをモバイルTextBoxコントロール(System.Web.UI.MobileControls.TextBox)にキャストしている。これによって、デバイス・アダプタの適用対象となるコントロール(この場合はモバイルTextBoxコントロール)を取得しているのである。
そして、そのモバイルTextBoxコントロールのプロパティによって、<input>タグの出力内容を適切に切り替えている。なお、テキスト出力に使われている、Renderメソッドのパラメータとして渡されたHtmlTextWriterオブジェクトが、前述のテキスト・ライタである。
以上で、デバイス・アダプタの作成は完了した。
○3.2.5. デバイス・アダプタのマッピング
デバイス・アダプタを利用するためには、まずマッピングを行う必要がある。マッピングとは、デバイス・アダプタと、それを適用するコントロールとを結び付けることである。今回の場合は、いま作成したSoftBank用テキストボックス・アダプタ(SoftBankTextBoxAdapter)とモバイルTextBoxコントロールを結び付ける必要がある。
マッピングは、ブラウザ定義ファイルを利用して定義する。3.2.2.で作成したSoftBank用のブラウザ・ファイル(SoftBank.browser)を再度開き、下記のように修正する(太字の部分を追記する)。
|
|
| マッピング追加後のブラウザ・ファイル(SoftBank.browser)のコード |
ここでは<controlAdapters>タグを追加している。<controlAdapters>タグ内には<adapter>タグを定義している。その<adapter>タグの属性(=コントロールを指定するcontrolType属性とデバイス・アダプタを指定するadapterType属性)によって、モバイルTextBoxコントロール(System.Web.UI.MobileControls.TextBox)に対し、ライブラリ・プロジェクト(Mlib)に実装したSoftBank用テキストボックス・アダプタ(SoftBankTextBoxAdapter)を適用するように定義している。
これにより、アクセスしてくるデバイスのUser-Agentがこのブラウザ・ファイル(SoftBank.browser)にマッチすると識別された場合、モバイルTextBoxコントロールのレンダリング処理は、すべてSoftBank用テキストボックス・アダプタ(SoftBankTextBoxAdapter)から行われるようになる。
それでは、作成したSoftBank用テキストボックス・アダプタ(SoftBankTextBoxAdapter)を、実際にモバイルWebフォームで利用してみよう。
| INDEX | ||
| [連載].NETでモバイル・サイト開発を始めよう | ||
| 第2回 携帯サイトの「ドコモ、au、SoftBank」への対応 | ||
| 1.カスタム・コントロールの作成 | ||
| 2.カスタム・コントロールの利用 | ||
| 3.デバイス・アダプタについて | ||
| 4.ブラウザ定義ファイルの作成 | ||
| 5.デバイス・アダプタの作成 | ||
| 6.デバイス・アダプタの利用 | ||
| 「.NETでモバイル・サイト開発を始めよう」 |
ホワイトペーパー(TechTargetジャパン)
- 逆引きリファレンス:コア編 (2010/3/12)
jQueryのキモともいえる$()関数を始め、jQueryオブジェクトの中核となるメソッドについてまとめた、すぐに役立つ12本を一挙公開 - .NET TIPS - .NET開発のテクニックとヒント集 - (2010/3/11)
− LINQ文で動的にWhere句を組み立てるには?
− GridViewのフッタ行に合計値/平均値を表示するには?
− コレクションをプロパティ値によりグループ化するには? - いくつかのVS 2010 RCの更新 (2010/3/10)
Visual Studio 2010 RC版のIntelliSenseおよびWebデザイナに関するパッチのリリースと、そのほかの問題点についてのお知らせ - C#ラムダ式 基礎文法最速マスター (2010/3/9)
ラムダ式(C#)の基礎文法を、短い説明と簡単なコードで簡潔にまとめる。「ラムダ式、どう書くんだっけ?」という場合の簡易リファレンスとして活用できる
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 New! |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜Java編〜
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |

| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |

| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |
| ◆ | 直属上司が海外にいるのエンジニアに見る 【実例】場所に捉われないワークスタイル |

| ◆ | 「仮想化工房」のマイスターが選んだのは VMware、Hyper-V、そしてVirtageだった! |
| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |








