application communications enhancements for mobility...application communications enhancements for...

25
R Application Communications Enhancements for Mobility ホワイト・ペーパー 2002 6 7 Copyright © 2002 Intel Corporation

Upload: others

Post on 29-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

R

Application Communications Enhancements for Mobility

ホワイト・ペーパー

2002年 6月 7日

Copyright © 2002 Intel Corporation

Page 2: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

目次 1. はじめに ----------------------------------------------------------------------------------------------------------------------------------------------------- 5

1.1. 概要-------------------------------------------------------------------------------------------------------------------------------------------------- 5

1.2. 対象読者-------------------------------------------------------------------------------------------------------------------------------------------- 5

2. Application Communications Enhancements for Mobility ------------------------------------------------------------------------------- 6

2.1. 通信関連の拡張機能 ---------------------------------------------------------------------------------------------------------------------------- 6

2.1.1. オンラインおよびオフライン・モードのサポート ------------------------------------------------------------------------ 6

2.1.2. 信頼性の低いネットワーク接続への対応------------------------------------------------------------------------------------- 7

2.1.3. 通信関連処理の保留 ----------------------------------------------------------------------------------------------------------------- 7

2.1.4. ネットワークの特性に基づくデータ内容量の加減 ------------------------------------------------------------------------ 7

2.1.5. リモート・コンテンツのプリフェッチとキャッシュ保存--------------------------------------------------------------- 8

2.1.6. すべてのローカルおよびリモート・データを 1回のセッションで 同期化 ---------------------------------------- 8

2.1.7. ネットワーク障害への確実な対応 ---------------------------------------------------------------------------------------------- 8

2.1.8. ネットワーク転送時のデータ圧縮 ---------------------------------------------------------------------------------------------- 9

2.1.9. ユーザへの直感的フィードバック ---------------------------------------------------------------------------------------------- 9

2.1.10. ユーザに対する応答性の向上 ---------------------------------------------------------------------------------------------------- 9

2.2. 通信関連の拡張機能の実装------------------------------------------------------------------------------------------------------------------- 9

3. Intel® Mobility Application Communications Demo ---------------------------------------------------------------------------------------- 11

3.1. 概要-------------------------------------------------------------------------------------------------------------------------------------------------- 11

3.2. 通信関連の拡張機能の実装------------------------------------------------------------------------------------------------------------------- 12

3.2.1. オンラインおよびオフライン・モードのサポート ------------------------------------------------------------------------ 12

3.2.2. 信頼性の低いネットワーク接続への対応------------------------------------------------------------------------------------- 13

3.2.3. ネットワークの特性に基づくデータ内容量の加減 ------------------------------------------------------------------------ 14

3.2.4. リモート・コンテンツのプリフェッチとキャッシュ保存--------------------------------------------------------------- 15

3.2.5. ネットワーク障害への確実な対応 ---------------------------------------------------------------------------------------------- 16

3.2.6. 通信関連処理の保留 ----------------------------------------------------------------------------------------------------------------- 16

3.2.7. ユーザに対する応答性の向上 ---------------------------------------------------------------------------------------------------- 17

3.3. インストール ------------------------------------------------------------------------------------------------------------------------------------- 17

3.4. ソース・コード ---------------------------------------------------------------------------------------------------------------------------------- 18

4. Microsoft* Windows* API ----------------------------------------------------------------------------------------------------------------------------- 19

4.1. ネットワーク接続の状況---------------------------------------------------------------------------------------------------------------------- 19

4.1.1. GetAdaptersInfo --------------------------------------------------------------------------------------------------------------------- 19

2

Page 3: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R 4.1.2. DeviceIoControl---------------------------------------------------------------------------------------------------------------------- 21

4.1.3. InternetGetConnectedState------------------------------------------------------------------------------------------------------ 22

4.2. ネットワーク接続状況の追跡 --------------------------------------------------------------------------------------------------------------- 23

5. 結論 ----------------------------------------------------------------------------------------------------------------------------------------------------------- 24

付録 A:Intel® Mobility Application Communications Demoの実行ファイルとソース・ コード---------------------------------- 25

3

Page 4: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

略語一覧 API Application Programming Interface

DHCP Dynamic host configuration protocol

DLL Dynamic Link Library

IP Internet Protocol

MFC Microsoft* Foundation Classes

MSDN Microsoft* Developer Network

UI User Interface

WINS Windows* Internet Name Service

*その他の社名、製品名などは、一般に各社の商標または登録商標です。

4

Page 5: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

1. はじめに

1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行うにはネットワークへの接続が必要です。この通信の例には e-メールの送信、ウェブのブラウズ、ファイル転送などがあります。通信を行う際のユーザ体験の改善については、アプリケーション・ソフトウェアが中心的な役割を果たします。このホワイト・ペーパーではアプリケーションがこれをどのようにして実現するかを示しています。

このホワイト・ペーパーには、アプリケーションに実装する通信関係の拡張機能、Intel®ソフトウェア・ラボが開発した概念実証アプリケーション、および使用可能なMicrosoft* Windows∗ Application Programming Interface (API) が記載されています。

1.2. 対象読者 このホワイト・ペーパーは、Windows* 98、Windows* 98SE、Windows* ME、Windows* 2K、および Windows* XP を含む Microsoft* Windows*オペレーティングシステムを対象としてアプリケーションを開発するアーキテクト、設計者、およびデベロッパを対象としています。またアプリケーションの定義や設計にかかわるマネージャ、検証エンジニア、技術マーケティング・エンジニアのための Application Communications Enhancements for Mobilityの優れた概要も記載されています。

∗ その他の社名、製品名などは、一般に各社の商標または登録商標です。

5

Page 6: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

2. Application Communications Enhancements for Mobility

Application Communications Enhancements for Mobilityは、アプリケーションが実装すべきものとして、通信に関するいくつかの拡張機能を特定しています。このセクションではその各機能について説明しています。

2.1. 通信関連の拡張機能 拡張機能は次のとおりです。 オンラインおよびオフライン・モードのサポート

信頼性の低いネットワーク接続への対応

通信関連処理の保留

ネットワークの特性に基づくデータ内容量の加減

リモート・コンテンツのプリフェッチとキャッシュ保存

すべてのローカルおよびリモート・データを 1回のセッションで同期化

ネットワーク障害への確実な対応

ネットワーク転送時のデータ圧縮

ユーザへの直感的フィードバック

ユーザに対する応答性の向上

2.1.1. オンラインおよびオフライン・モードのサポート アプリケーションはオンラインとオフラインの 2つの動作モードをサポートする必要があります。システムがネットワークに接続されているときにはアプリケーションはオンラインとオフラインのいずれのモードでも動作でき、ネットワークに接続されていないときにはオフライン・モードとなります。オフライン・モードでは、ローカルなデータのみを扱うことができ、またアプリケーションの機能のうち通信を行わないもののみが利用できます。

アプリケーションがオンライン・モードの場合、ネットワークへの接続が切断されたときには自動的にオンラインからオフライン・モードに切り替えて、接続が再度確立されたときに自動的にオフラインからオンライン・モードに切り替える必要があります。

これら 2つの動作モードのサポートには次のような利点があります。 ユーザがネットワークに接続できないときには、オフライン・モードでローカルなデータを使用して作業を行えます。

アプリケーション使用中にネットワークへの接続が切断された場合には、オフライン・モードでアプリケーションの使用を継続できます。

ネットワークに接続可能な時間が限られている場合、ユーザはオンライン・モードによりリモート・データを取り込んでキャッシュに保存することができます。次にこのデータを使用してオフライン・モードで作業を続けることができます。

6

Page 7: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

2.1.2. 信頼性の低いネットワーク接続への対応 ワイヤレス通信リンクを経由したネットワーク接続では、しばしば信頼性に問題がある場合が見られます。たとえば接続が断続的になったり不安定になったりする場合がそうです。このようにネットワーク接続の信頼性が低い場合にはアプリケーションは通信を適切に行えなくなることがあります。このような状況においてユーザができることは、ネットワークへの接続を監視し続け、接続が信頼までに回復したときに通信を行うことです。

優れたユーザ体験を実現するには、アプリケーション側ができることはネットワーク接続の信頼性を監視し、接続を信頼できるか否かをユーザに伝えることです。ネットワーク接続の信頼性が低いとは、一定の期間内に接続が失われた回数があらかじめ定められた値を超える状況を意味します。一定の期間内に接続が失われなかった場合には信頼性が高いと言えます。アプリケーションのユーザ・インターフェイス (UI) には、ネットワーク接続の信頼性を判断するための設定(期間と失われる接続の数)を指定するためのオプションを配置できます。これらの設定をあらかじめ指定しておき、UI から選択できないようにした場合にはユーザ体験が低下する可能性があります。

2.1.3. 通信関連処理の保留 通信を伴う操作をシステムがネットワークに接続されていないときに開始し、実際の通信処理をシステムがネットワークとの接続を確立するまで保留するようにアプリケーションを設定することができます。システムがネットワーク接続を確立した段階で、アプリケーションは保留状態の通信処理を実行します。通信処理を保留することにより、接続の有無にかかわらず同一の動作を行うようアプリケーションを構築できます。アプリケーションをこのように設定することにより、ネットワークに断続的にしか接続できない環境でもシームレスなユーザ体験が保証されます。

保留の対象となる通信処理の例を次に示します。 e-メールの送信

データベースに対する問合せ/更新

ファイル転送

メディア・クリップのダウンロード

2.1.4. ネットワークの特性に基づくデータ内容量の加減 ネットワークを経由してデータを転送するのに必要な時間は、通信リンクの速度、帯域幅、レイテンシなどのネットワークの特性によって決まります。遅い、または混雑したネットワークを経由して内容量の多いデータ(たとえばフレーム・レートの高いビデオ・クリップ、グラフィックを多用したウェブ・ページ、高品質の画像など)を取り出す場合には、データにアクセスするための待ち時間が長くなります。アプリケーションはネットワークを監視し、その特性に応じてデータの内容量を加減することができます。遅い、または混雑したネットワークではデータの内容量を減らすことにより、ユーザの待ち時間を短縮することができます。速い、または混雑していないネットワークでは、データの内容量を増やすことができます。ネットワークへの接続が高価な状況では、データの内容量を減らすことによって迅速かつ安価にデータを取得することができます。

データ内容量削減の例には次のものがあります。 ブラウザでは、ウェブ・ページのテキストのみを取り出す。

ストリーミング・ビデオのプレーヤでは、ビデオ・クリップのフレーム・サイズやフレーム・レートを落とす。

写真アルバム・アプリケーションでは、写真のサイズを縮小して取り出す。

7

Page 8: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

アプリケーションの UI には、データ内容量を加減する状況と方法を指定するためのオプションを配置できます。要件についてはユーザ自身がもっともよく知っているため、ユーザによる指定は重要です。

2.1.5. リモート・コンテンツのプリフェッチとキャッシュ保存 システムがネットワークに接続されているとき、アプリケーションは近い将来に使用する可能性がもっとも高いリモート・データを定期的にプリフェッチし、それをキャッシュに保存することができます。これにより、ユーザは最新のデータを保持でき、ネットワークとの接続が切断された場合にもキャッシュ内のデータを使用することができます。

アプリケーションによるデータのプリフェッチはユーザによる指定か行動パターン分析、またはその両方に基づいて実行できます。行動パターン分析によるコンテンツのプリフェッチとは、ユーザの行動を追跡してその内容に基づいてコンテンツを取得することを意味します。このようなコンテンツの例として、最近アクセスしたコンテンツ、最近アクセスしたものと同様なコンテンツ、ユーザの趣味/好みに基づくコンテンツなどがあります。アプリケーションの UIからコンテンツをプリフェッチする頻度を指定することもできます。

コンテンツのプリフェッチの例を次に示します。 マルチメディア・プレーヤにより、ユーザのお気に入りウェブ・サイトから最新のビデオ/オーディオ・クリップをダウンロードする。

ブラウザでユーザのお気に入りまたは最近アクセスしたウェブ・ページをプリフェッチする。

ゲーム・アプリケーションで最新アップデートをダウンロードする。

2.1.6. すべてのローカルおよびリモート・データを 1 回のセッションで 同期化

アプリケーションがリモート・データを取り出すと、そのデータのコピーをローカルに作成できます。ユーザによる変更はローカルなデータに対して行われ、リモート・データの更新は保留されます。アプリケーションは後からすべての変更を 1回のセッションで 1度に同期化できます。この同期化セッションはユーザによって開始することも、(たとえばアプリケーション終了時や毎日同じ時刻になど)アプリケーションによって自動的に開始することもできます。同期化をいつ行うかについては、アプリケーションの UI にそのオプションを配置できます。

すべてのローカルおよびリモート・データを 1回のセッションで同期化することにより、ユーザはネットワーク接続の有無にかかわらずデータを変更できます。

2.1.7. ネットワーク障害への確実な対応 優れたユーザ体験を実現するには、アプリケーションは(ネットワークのデータ・エラーや接続の切断などの)ネットワーク障害に対して確実に対応できなければなりません。

この例を次に示します。 ネットワーク障害のためアプリケーションがデータ転送を開始できなかった場合、そのアプリケーションはユーザによる介入なしに自動的にデータを再転送する必要があります。アプリケーションにはデータの再転送を試みる回数や再転送の間隔などを指定するためのオプションを設定できます。

データ転送中にネットワーク接続が切断された場合、通常はアプリケーションはデータ転送を中止し、接続が再度確立された後に最初から改めて転送を行います。そうではなく、接続が切断された場合にはデータ転送を一時的に中断し、接続が回復されてからまだ転送されていない残りのデータを送るようアプリケーションを設定することができます。

8

Page 9: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R ネットワーク障害がローカル・データとリモート・データの同期中に発生した場合、アプリケーションはデータの損失、破壊、不完全な同期化などが発生しないよう障害に対処する必要があります。

通信中にネットワーク障害が発生したときには、アプリケーションは障害の原因を示すエラー・メッセージを表示する必要があります。

2.1.8. ネットワーク転送時のデータ圧縮 アプリケーションは現在の移動通信システムの強力な処理能力を活用し、データをネットワーク経由で伝送する前に必ず圧縮するべきです。圧縮されたデータを送ることにより伝送時間が短縮され、またネットワークのトラフィックも減少します。

2.1.9. ユーザへの直感的フィードバック 優れたユーザ体験を実現するには、アプリケーションは通信の際にユーザに直感的なフィードバックを返さなければなりません。

この例を次に示します。 通信の完了に必要なおおよその時間をユーザに通知する。

ネットワーク経由でデータを伝送する際に進行状況を表示する。

ユーザが(リモート・ファイルへの保存やファイルのダウンロードなど)通信の完了を待っている間はビジー状態であることを示すカーソル(または作業が進行中であることを示すなんらかのシンボル)を表示する。

2.1.10. ユーザに対する応答性の向上 通信を伴う処理の大半は時間がかかるため、アプリケーションは通信の際にユーザに応答を示す必要があります。

そのためにアプリケーションは次のようなことを行います。 通信を伴う処理はすべて非同期的に行う。

リモート・データの取得中にその一部を表示する。たとえばリモートの大きなテキスト・ドキュメントにアクセスするときには、取得した最初のページを表示しながら残りの部分をダウンロードすることができます。

2.2. 通信関連の拡張機能の実装 このホワイト・ペーパーに示す拡張機能は、すべてのアプリケーションに適しているとは限りません。拡張機能によっては、通信への依存度の高いアプリケーションに向いているものもあります。したがって、すべての拡張機能に目を通し、対象となるアプリケーションにふさわしい機能を実装してください。

Intel®ソフトウェア・ラボでは、このホワイト・ペーパーに記載された拡張機能の概念を示すためのアプリケーションとして Intel® Mobility Application Communications Demoを開発しました。Intel® Mobility Application Communications Demo とそのソース・コードは実装の際の参考として使用することができます。詳細については「Intel® Mobility Application Communications Demo」のセクションを参照してください。

アプリケーションに通信関連の拡張機能を実装するための手順を次に示します。 すべての拡張機能を検討し、対象となるアプリケーションに適したものを選択します。

選択した拡張機能について適切なUIを設計、導入します。

設計と開発に際しては Intel® Mobility Application Communications Demoとソース・コードを参考にします。

9

Page 10: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

このホワイト・ペーパーの「Microsoft* Windows* API」のセクションに目を通します。このセクションには、ネットワーク接続の状況を確認するためにWindows*オペレーティングシステムで利用できるAPIの概要が記載されています。

拡張機能を実装し、さまざまなネットワーク状況(遅い、混雑している、信頼性が低い、状況が変化するなど)下でそれらを検証します。

* その他の社名、製品名などは、一般に各社の商標または登録商標です。

10

Page 11: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

3. Intel® Mobility Application Communications Demo

Intel®ソフトウェア・ラボは、このホワイト・ペーパーに記載された拡張機能の概念を示すためのアプリケーションとして Intel® Mobility Application Communications Demo を開発しました。Intel® Mobility Application Communications Demoとそのソース・コードは実装の際の参考としてお使いいただけます。

このセクションではMobility Application Communications Demoの概要、Mobility Application Communications Demoがどのように通信関連の拡張機能のサポートをシミュレートするか、および Mobility Application Communications Demoとそのソース・コードの入手方法について説明しています。

3.1. 概要 Mobility Application Communications Demoでは、マイクロソフトの Internet Explorerと同様なウェブ・ブラウザであり、ユーザはあらかじめ設定されたウェブ・ページを開くことができるようになっています。これらのウェブ・ページは News、Financial、Shopping、およびMy Photoのカテゴリに分かれています。

Mobility Application Communications Demoの機能は次のとおりです。 お気に入りのウェブ・ページを開く。

ホーム・ページを開く。

開いているウェブ・ページを印刷する。

図 1 に示すこのアプリケーションのメイン UI には、アプリケーションの機能にアクセスするためのメニュー、アプリケーションの状況を示すステータス・バー、およびウェブ・ページを表示するための表示ウィンドウが含まれます。

メニュー項目からは次のようなアプリケーション機能を利用できます。 [File]メニューからは動作モードの選択、リモート・ドキュメントのオープン、ムービー・クリップのダウンロード、ウェブ・ページの印刷、およびアプリケーションの終了を行います。

[View]メニューからはウェブ・ページのオープンの中止、ステータス・バーの表示/非表示の切替えなどを行います。

[Go To]メニューからはホーム・ページを開くことができます。

[Favorites]メニューからはNews、Financial、Shopping、My Photosのそれぞれのウェブ・ページを開くことができます。

[Option]メニューはネットワークとコンテンツ取得のオプション選択を行います。

[Help]メニューはバージョン情報の表示できます。

11

Page 12: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

ステータ

表示ウィ

メニ

この

3.2.Mobケーガイ

3.2.1Mobが実ONLますウェプリ

ュー

ンドウ

ス・バー

アプリケーションは、通信に関連する次の拡張機能

オンラインおよびオフライン・モードのサポート

信頼性の低いネットワーク接続への対応

ネットワークの特性に基づくデータ内容量の加減

リモート・コンテンツのプリフェッチとキャッシュ保存

ネットワーク障害への確実な対応

通信関連処理の保留

ユーザに対する応答性の向上

通信関連の拡張機能の実装 ility Application Communications Demo による拡張機ションの概念を示すために使用されているオプショドラインとして使用することを意図としたものでは

. オンラインおよびオフライン・モility Application Communications Demoには ONLINE装されています。システムがネットワーク接続を確INEモードに切り替わり、ネットワーク接続が切断。アプリケーションは、ONLINE モードではインブ・ページを開き、OFFLINE モードではデモ用にケーションのステータス・バーには、現在の動作モ

1

のサポートをシミュレートします。

能の実装は単なるシミュレーションです。このアプリンや UI はその概念を示すためのものであり、設計のありません。

ードのサポート モードおよび OFFLINEモードという 2つの動作モード立するとアプリケーションは自動的に OFFLINE からされると ONLINEから OFFLINEモードに切り替わりターネットから([Favorites]メニューを使用して)作成されたカスタム・ウェブ・ページを開きます。アードが表示されます(図 2参照)。

12

Page 13: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

システムがネットワークに接続されている場合、ユーザは両方のモードを手動で切り替えることができます(図 2 参照)。ネットワークに接続されていないときは、アプリケーションは OFFLINE モードとなり、ONLINE モードに切り替えることはできません。ユーザが OFFLINE モードを選択した場合、システムがネットワークへの接続を確立してもアプリケーションは OFFLINEから ONLINEモードに切り替わりません。

3.2.2. 信頼性の低いネットワーク接続への対応

図 2

現在の動作モード

を表示

手動によるモード切替えが可能

Mobility Application Communications Demoはネットワーク接続の信頼性を監視します。ネットワーク接続が頻繁に切断される場合には、アプリケーションは ONLINE から OFFLINE モードに切り替わります。アプリケーションはネットワーク接続の切断が一定の期間発生しなくなるまで OFFLINE モードに留まります。信頼性の低いネットワークを検出する際の設定は[Network Options]プロパティ・シート内の[Unreliable Connections]タブ(図 3 参照)で指定できます。この[Network Options]プロパティ・シートには[Options]-[Network]メニューからアクセスできます(図 4参照)。

13図 3

Page 14: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

図 4

3.2.3. ネットワークの特性に基づくデータ内容量の加減 [Network Options]プロパティ・シート(図 4参照)の[Network Bandwidth]タブ(図 5参照)を使用することにより、ユーザはネットワーク接続の帯域幅に応じてウェブ・ページの内容量を加減できます(デモ・アプリケーションでは接続リンクの速度がそのまま使用されます)。ユーザは Full(すべて)、Partial(一部)、および Minimal(最小限)からウェブ・ページのコンテンツを選択できます。Full を選択するとウェブ・ページはインターネットからダウンロードされますが、Partial または Minimal を選択するとデモ用に作成されたカスタム・ウェブ・ページが表示されます。

14図 5

Page 15: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

3.2.4. リモート・コンテンツのプリフェッチとキャッシュ保存 Mobility Application Communications Demoはコンテンツのプリフェッチとキャッシュ保存をシミュレートします。ONLINE モードでは、アプリケーションはインターネットから一定の間隔でコンテンツを取得します。コンテンツの取得中にネットワークへの接続が切断された場合、この取得操作は中止されます。コンテンツ取得中にアプリケーションが ONLINEから OFFLINEモードに手動で切り替えられた場合、アプリケーションはコンテンツ取得が完了するまで取得操作を継続します。

[Retrieve Content Options]ダイアログ(図 6参照)では、取得するコンテンツと取得の頻度を設定することができます。取得中の状況は、アプリケーションのメイン・ウィンドウ(図 7参照)のメニューの下に表示されます。

コンテンツ取得の

状況

図 7

図 6

15

Page 16: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

3.2.5. ネットワーク障害への確実な対応 ネットワーク障害への確実な対応の例として、Mobility Application Communications Demoではムービー・クリップのダウンロード中にネットワーク接続が切断された場合の対応をシミュレートします。ONLINE モードで[File]メニューからダウンロードを開始します(図 8 参照)。ダウンロード中(図 9 参照)にネットワーク接続が切断されると、ダウンロードは中断されます。ネットワークとの接続が回復すると、アプリケーションは自動的に残りのムービー・クリップのダウンロードを開始します。

図 8

図 9

3.2.6. 通信関連処理の保留 セクション 3.2.5(「ネットワーク障害への確実な対応」)で説明したように、Mobility Application Communications Demo はムービー・クリップのダウンロードに関するサポートをシミュレートします。このダウンロード操作は ONLINE モードでのみ開始でき、OFFFLINE モードでは開始できません。OFFLINE モードでは、アプリケーションが ONLINEモードに切り替えられたときに自動的にダウンロードを開始するよう、操作を保留することができます。ムービー・クリップのダウンロードは[File]メニュー(図 8 参照)から開始できます。

16

Page 17: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

3.2.7. ユーザに対する応答性の向上 Mobility Application Communications Demo は、コンテンツの取得、ムービー・クリップのダウンロード、ウェブ・ページのオープンなどの通信を伴う処理を非同期的に実行できます。これらの処理が非同期的に実行されることにより、ユーザは(ムービー・クリップのダウンロードなど)時間のかかる処理と平行してアプリケーションの他の機能を使用できます。

リモート・ドキュメントを開く際にアプリケーションがどのようにユーザに応答を示すべきかの例として、Mobility Application Communications Demoはリモート・ドキュメントを開くときの状況をシミュレートします。ONLINE モードにおいて、[File]メニューからリモート・ドキュメントを開くことができます(図 8 参照)。アプリケーションはドキュメントの最初のページを表示し、他のページをバックグラウンドで開きます。ドキュメントを開いている途中に(図 10 参照)ネットワーク接続が切断された場合、ドキュメントを開く操作は中断されます。ネットワーク接続が再度確立されると、アプリケーションはドキュメントの残りを開く操作を自動的に再開します。ドキュメントを開いている途中にアプリケーションが手動で ONLINE から OFFLINEモードに切り替えられた場合、アプリケーションはドキュメントを開く操作が完了するまでそれを続行します。

3.3. インストール 図 10

Mobility Application Communications Demoをダウンロードするためのリンクは付録 Aに記載されています。ダウンロードするファイルには Mobility Application Communications Demo の実行ファイル (commsdemo.exe) とReadme ファイル (Read Me.htm) が含まれています。対象とするシステムに commsdemo.exと favoritesフォルダを対象システムと同じ場所にインストールし、実行ファイルをダブルクリックしてアプリケーションを起動してください。ライブラリや DLLを追加する必要はありません。

Mobility Application Communications Demoを実行するためのシステム要件は次のとおりです。 インターネットに接続されたノートブックまたはデスクトップ 1、およびWindows*(98、98SE、ME、2KまたはXP)オペレーティングシステム上で実行される Internet Explorer*ウェブ・ブラウザ(バージョン 4.0以上)

1 このアプリケーションはインターネットに接続されていないノートブックまたはデスクトップでも動作しますが、アプリケーション機能を ONLINEモードで使用することはできません。 * その他の社名、製品名などは、一般に各社の商標または登録商標です。

17

Page 18: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

3.4. ソース・コード Mobility Application Communications Demoのソース・コードをダウンロードするためのリンクは付録 Aに記載されています。ダウンロード内容にはすべてのソース・ファイルとアプリケーションの設計ノート (Design Notes.htm) が含まれています。この設計ノートにはソース・ファイルの内容に関する概要が含まれています。

Mobility Application Communications Demoは C++で作成されており、Microsoft* Foundation Classes (MFC) アプリケーション・フレームワーク・ライブラリを使用しています。アプリケーションのビルドは Visual Studio 6.0 IDEを使用してください。

18

Page 19: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

4. Microsoft* Windows* API Windows* 98、Windows* 98SE、Windows* ME、Windows* 2K、およびWindows* XPを含むMicrosoft* Windows*オペレーティングシステムに適用されます。

ネットワーク接続の状況を取得するMicrosoft* Windows* APIのみを取り扱います。すべてのネットワーク関連のMicrosoft* Windows* APIについてはMicrosoft* Developer Network (MSDN) ライブラリを参照してください。

注:このセクションの内容の大半はMSDNライブラリからの引用です。

4.1. ネットワーク接続の状況 このセクションではネットワーク接続の状況を取得するための GetAdaptersInfo、DeviceIoControl、およびInternetGetConnectedState APIについて説明しています。GetAdaptersInfo APIはシステム内のすべてのネットワーク・アダプタに関する情報を取得するために使用されます。DeviceIoControl API は特定のネットワーク・アダプタのデバイス・ドライバに対し、接続速度、そのアダプタが接続されているか否かなどを問い合わせるために使用されます。InternetGetConnectedState APIはシステムの接続状況を取得するために使用されます。

4.1.1. GetAdaptersInfo GetAdaptersInfo APIはシステム内のすべてのネットワーク・アダプタに関する情報を取得するために使用されます。この API からはアダプタ情報を含む構造体のリンク・リストが返されます。この API を使用するにはIphlpapi.hヘッダ・ファイルをインクルードして Iphlpapi.libライブラリにリンクします。 BOOL GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen);

パラメータ: PIP_ADAPTER_INFO pAdapterInfo – IP_ADAPTER_INFO構造体のリンク・リストを受け取るバッファへの出力ポインタ。

PULONG pOutBufLen – pAdapterInfoパラメータが指すバッファのサイズを指定する ULONG変数への入力ポインタです。このバッファが小さすぎてアダプタ情報を格納できない場合、GetAdaptersInfo は必要なサイズをこの変数に代入し、ERROR_BUFFER_OVERFLOWというエラー・コードを返します。

戻り値: 関数が成功した場合の戻り値は ERROR_SUCCESSです。失敗した場合の戻り値は次のいずれかになります。 ERROR_BUFFER_OVERFLOW – pOutBufLenパラメータで指定したバッファのサイズがアダプタ情報を格納するには小さすぎます。pOutBufLenは必要なサイズを指します。

ERROR_INVALID-PARAMETER – pOutBufLenパラメータが NULLか、呼出しプロセスが pOutBufLenの指すメモリに対する読出し/書込みアクセス権を持っていないか、あるいは呼出しプロセスが pAdapterInfo パラメータの指すメモリに対して書込みアクセス権を持っていません。

ERROR_NO_DATA – ローカル・システムにアダプタ情報が存在しません。

ERROR_NOT_SUPPORTED – ローカル・システム上で実行されているオペレーティングシステムが GetAdaptersInfo をサポートしていません。

その他 – 返されたエラーのメッセージ文字列を取得するには FormatMessageを使用します(FormatMessageの詳細についてはMSDNライブラリを参照してください)。

*その他の社名、製品名などは、一般に各社の商標または登録商標です。

19

Page 20: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R IP_ADAPTER_INFO構造体 – システム内の特定のネットワーク・アダプタに関する情報を含みます。 typedef struct _IP_ADAPTER_INFO { struct _IP_ADAPTER_INFO* Next; DWORD ComboIndex; char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4]; char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4]; UINT AddressLength; BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH]; DWORD Index; UINT Type; UINT DhcpEnabled; PIP_ADDR_STRING CurrentIpAddress; IP_ADDR_STRING IpAddressList; IP_ADDR_STRING GatewayList; IP_ADDR_STRING DhcpServer; BOOL HaveWins; IP_ADDR_STRING PrimaryWinsServer; IP_ADDR_STRING SecondaryWinsServer; time_t LeaseObtained; time_t LeaseExpires; } IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;

この構造体のメンバは次のとおりです。 Next – アダプタのリストにある次のアダプタへのポインタです。

ComboIndex – 予約済み。

AdapterName[MAX_ADAPTER_NAME_LENGTH + 4] – アダプタの名称を指定します。

Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4] – アダプタの説明を指定します。

AddressLength – アダプタのハードウェア・アドレスの長さを指定します。

Address[MAX_ADAPTER_ADDRESS_LENGTH] – アダプタのハードウェア・アドレスを指定します。

Index – アダプタ・インデックスを指定します。

Type – アダプタのタイプを指定します。このタイプは次のいずれかになります。

1. IF_OTHER_ADAPTERTYPE

2. IF_ETHERNET_ADAPTERTYPE

3. IF_TOKEN_RING_ADAPTERTYPE

4. IF_FDDI_ADAPTERTYPE

5. IF_PPP_ADAPTERTYPE

6. IF_LOOPBACK_ADAPTERTYPE

7. IF_SLIP_ADAPTERTYPE

これらの値はヘッダ・ファイル IPIfCons.h内で定義されます。

20

Page 21: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

DhcpEnabled – このアダプタについてDynamic Host Configuration Protocol (DHCP) を有効にするか否かを指定します。

CurrentIpAddress – このアダプタの現在の IP (Internet Protocol) アドレスを指定します。

IpAddressList – このアダプタに関連づけられる IPアドレスのリストを指定します。

GatewayList – このアダプタのためのデフォルト・ゲートウェイの IPアドレスを指定します。

DhcpServer – このアダプタのためのDHCPサーバの IPアドレスを指定します。

HaveWins – このアダプタがWindows* Internet Name Service (WINS) を使用するか否かを指定します。

PrimaryWinsServer – プライマリWINSサーバの IPアドレスを指定します。

SecondaryWinsServer – セカンダリWINSサーバの IPアドレスを指定します。

LeaseObtained – 現在のDHCPリースを取得した時刻を指定します。

LeaseExpires – 現在のDHCPリースの有効期限が切れる時刻を指定します。

4.1.2. DeviceIoControl DeviceIoControl APIはコントロール・コードを指定されたデバイス・ドライバに直接送り、該当するデバイスに特定の操作を実行させます。Intel® Mobility Application Communications Demoはこの APIを使用して接続速度や接続状況など、特定のネットワーク・アダプタに関する情報をデバイス・ドライバに問い合わせます。このAPIを使用するには Windows.hヘッダ・ファイルをインクルードして Kernel32.libライブラリにリンクします。

BOOL DeviceIOControl( HANDLE hDevice, // handle to device DWORD dwIoControlCode, // operation LPVOID lpInBuffer, // input data buffer DWORD nInBufferSize, // size of input data buffer LPVOID lpOutBuffer, // output data buffer DWORD nOutBufferSize, // size of output data buffer LPDWORD lpBytesReturned, // byte count LPOVERLAPPED lpOverlapped // overlapped information );

パラメータ: HANDLE hDevice – 操作を実行するデバイス(通常はボリューム、ディレクトリ、ファイル、別のストリーム)のハンドルを指定します。デバイスのハンドルを取得するには CreateFile API を使用します(CreateFile APIについてはMSDNライブラリを参照してください)。

DWORD dwIoControlCode – 操作のコントロール・コードを指定します。この値は実行する操作とその対象となるデバイスのタイプを指定します。

LPVOID lpInBuffer – 操作を実行するために必要なデータを含むバッファへの入力ポインタです。dwIoControlCode パラメータが入力データを必要としない操作を指定している場合、このパラメータは NULLでもかまいません。

DWORD nInBufferSize – lpInBufferが指すバッファのサイズをバイト数で指定します。

LPVOID lpOutBuffer – 操作からの出力データを受け取るバッファへの出力ポインタです。dwIoControlCodeパラメータがデータ出力を伴わない操作を指定している場合、このパラメータは NULLでもかまいません。

DWORD nOutBufferSize – lpOutBufferが指すバッファのサイズをバイト数で指定します。

*その他の社名、製品名などは、一般に各社の商標または登録商標です。

21

Page 22: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

LPDWORD lpBytesReturned – lpOutBufferが指すバッファに格納されるデータのサイズを、バイト数で受け取る変数に対する出力ポインタです。出力バッファが小さすぎてデータを一切返すことができない場合には呼出しは失敗し、GetLastError(GetLastError の詳細については MSDN ライブラリを参照)はエラー・コードERROR_INSUFFICIENT_BUFFER を返し、返されるバイト数はゼロになります。出力バッファが小さすぎて出力されるデータの一部しか格納できない場合、オペレーティングシステムは格納できるデータを返し、呼出しは失敗となり、GetLastError はエラー・コード ERROR_MORE_DATA を返し、そして lpBytesReturned は返されるデータの量を示します。lpOverlappedが NULLの場合、lpBytesReturnedに NULLを指定することはできません。lpOverlappedが NULLではない場合は、lpBytesReturnedに NULLを指定できます。

LPOVERLAPPED lpOverlapped – OVERLAPPED 構造体へのポインタです。OVERLAPPED 構造体はネットワーク接続に関する情報の取得には使用されないため、このホワイト・ペーパーではこの構造体に関する説明は省略しています。OVERLAPPED構造体の詳細についてはMSDNライブラリを参照してください。

戻り値: 関数が成功した場合、戻り値はゼロ以外となります。関数が失敗した場合には戻り値はゼロとなります。詳細なエラー情報を取得するにはGetLastError APIを呼び出します。

アダプタの接続状況に関してネットワーク・アダプタ・ドライバに問い合わせるには、次のコントロール・コードおよび入力操作コードを使用します。

コントロール・コード (dwIoControlCode) - IOCTL_NDIS_QUERY_GLOBAL_STATS(このコントロール・コードは次の両方の入力操作について同一です)。

アダプタがネットワークに接続されているかどうかを確認するための入力コード 入力操作コード (lpInBuffer) - OID_GEN_MEDIA_CONNECT_STATUS.

アダプタの接続速度を確認するための入力コード 入力操作コード (lpInBuffer) - OID_GEN_LINK_SPEED.

4.1.3. InternetGetConnectedState InternetGetConnectedState API はローカル・システムの接続状況を取得します。この API を使用するにはWininet.hヘッダ・ファイルをインクルードして Wininet.libライブラリにリンクします。この APIを使用するにはシステムに Microsoft* Internet Explorer*(バージョン 4.0以上)がインストールされている必要があります。 BOOL InternetGetConnectedState(LPDWORD lpdwFlags, DWORD dwReserved);

*その他の社名、製品名などは、一般に各社の商標または登録商標です。

22

Page 23: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

パラメータ: LPDWORD lpdwFlags – 接続の詳細を受け取る符号なし長整数型変数への出力ポインタです。これは次の値を組み合わせたものになります。 INTERNET_CONNECTION_CONFIGURED – 有効なインターネット接続は設定されているが、現在システムが接続されている場合もあり、接続されていない場合もあります。

INTERNET_CONNECTION_LAN – システムはインターネットへの接続にLANを使用しています。

INTERNET_CONNECTION_MODEM – システムはインターネットへの接続にモデムを使用しています。

INTERNET_CONNECTION_MODEM_BUSY – モデムはすでに使用されているためもう使用できません。

INTERNET_CONNECTION_OFFLINE – システムはオフライン・モードになっています。

INTERNET_CONNECTION_PROXY – システムはインターネットへの接続にプロキシ・サーバを使用しています。

INTERNET_RAS_INSTALLED – システムにRASがインストールされています。

DWORD dwReserved – 予約済みです。ゼロに設定されている必要があります。

戻り値: インターネットに接続されている場合は TRUEを戻し、接続されていない場合は FALSEを戻します。

4.2. ネットワーク接続状況の追跡 Intel® Mobility Application Communications Demoは、システム上のネットワーク・アダプタがネットワークに接続されているか否か、およびネットワーク接続の速度を確認するために GetAdaptersInfoと DeviceIOControl APIを使用します。システムがダイヤルアップ接続か否かの確認には InternetGetConnectedState APIを使用します。

Windows*オペレーティングシステムはネットワーク接続の状況が変化してもアプリケーションに通知しません(ネットワーク・アダプタのカーネル・モードのデバイス・ドライバには通知されます)。ネットワーク接続状況の変化に対応するため、Intel® Mobility Application Communications DemoはWindows* Timerメッセージを使用して接続状況を定期的に確認します。Windows* Timer メッセージの詳細については MSDN ライブラリを参照してください。

*その他の社名、製品名などは、一般に各社の商標または登録商標です。

23

Page 24: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

5. 結論 このホワイト・ペーパーに概要を示したように、通信関連の拡張機能をアプリケーションに実装することによって、移動通信システム上で通信を行う際のユーザ体験を改善できます。アプリケーションに通信関連の拡張機能を実装する際には、次の手順に従ってください。 すべての拡張機能を検討し、対象となるアプリケーションに適したものを選択します。

選択した拡張機能について適切なUIを設計、導入します。

設計開発の際には Intel® Mobility Application Communications Demoとそのソース・コードを参考として使用してください。

このホワイト・ペーパーの「Microsoft* Windows* API」のセクションに目を通します。このセクションにはネットワーク接続の状況を確認するためにWindows*オペレーティングシステムで利用できるAPIの概要が記載されています。

拡張機能を実装し、さまざまなネットワーク状況(遅い、混雑している、信頼性が低い、状況が変化するなど)下でそれらを検証します。

* その他の社名、製品名などは、一般に各社の商標または登録商標です。

24

Page 25: Application Communications Enhancements for Mobility...Application Communications Enhancements for Mobility R 1. はじめに 1.1. 概要 移動通信システムの将来的な成長にとって、通信時の優れたユーザ体験は決定的な意味を持ちます。通信を行

Application Communications Enhancements for Mobility

R

付録 A:Intel® Mobility Application Communications Demoの実行ファイルとソース・コード

Intel® Mobility Application Communications Demoの実行ファイルは次の場所にあります。

未定 (ダウンロード元のリンクを挿入)

Intel® Mobility Application Communications Demoのソース・コードは次の場所にあります。

未定 (ダウンロード元のリンクを挿入)

25