iアプリでネットワーク通信する場合、iアプリを実行する携帯電話がNTTドコモの携帯ネットワークに接続されている必要がある。通常、電波の届く場所であればどこでも利用することができる。ただし、携帯電話の利用シーンを想像してもらえば分かる通り、携帯電話は常にネットワークに接続されているとは限らない。例えば地下鉄での移動中などだ。電波が届きにくいような場所では、圏外となり通信できない。この点を意識してプログラミングする必要がある。

iアプリからの通信

 携帯電話特有のネットワーク経路についても意識する必要がある。iモードやiアプリの場合、NTTドコモのネットワークを経由してインターネットに接続する(図1)。そのため、通信元のIPアドレスのブロック(範囲、NTTドコモでは「IPアドレス帯域」と表現)は、NTTドコモの網およびインターネットとNTTドコモの網を中継するサーバーのIPアドレスの範囲となる。ネットワーク要求を受け付けるサーバー側で、iモードやiアプリ以外からの要求を遮断したい場合には、この範囲だけを許可する仕組みが必要となる。NTTドコモからiモードブラウザを使用した際のIPアドレスの範囲の情報が公開されているのでそちらを参照してほしい(「作ろうiモードコンテンツ:iモードセンタの各種情報」)。iモードブラウザからのアクセスとiアプリからのアクセスは、同じ範囲を使用する。

図1●携帯電話事業者の通信網とインターネットの接続

 また通信がブラウザからではなく、iアプリからのものなのかどうかをチェックしたい場合がある。サーバー側で、HTTP通信時のUser-Agentをチェックすることで区別できる。具体的には、Starアプリに対応している携帯電話(iモードブラウザ2.0搭載の携帯電話)のUser-Agentは表1のような仕様となっている。状態コードと呼ばれる半角文字に、iアプリからのアクセスかどうかが付与される。状態コードが「SJ」であればStarアプリから、「TJ」であればDoJaアプリからのアクセスとなる。それら以外はブラウザからのアクセスとなる。

表1●iモードブラウザ2.0対応機種のUser-Agent
種類User-Agent文字列
iモードブラウザDoCoMo/2.0 機種名(キャッシュサイズ;TB;半角文字表示領域)DoCoMo/2.0 P07A3(c500;TB;W24H15)
iアプリ(Star)DoCoMo/2.0 機種名(キャッシュサイズ;SJ)DoCoMo/2.0 P07A3(c500;SJ)
iアプリ(DoJa)DoCoMo/2.0 機種名(キャッシュサイズ;TJ)DoCoMo/2.0 P07A3(c500;TJ)