全般

質問

iアプリではどのようなAPIを使用することができますか?

回答

Javaコミュニティプロセス(JCP)を経て規定されたJ2ME CLDCで規定されているAPIおよび、iアプリ上での通信を含む入出力処理やユーザインタフェース(GUI)などのためにNTTドコモが規定するiアプリに固有な拡張ライブラリ、各機種に固有な機能のためのライブラリが利用できます。ただし、機種に固有な機能を提供するAPIを使用したiアプリは、その機能を提供する特定の機種上でのみ動作します。

質問

iアプリはどのように起動されるのですか?

回答

アプリケーション起動時に最初に呼び出されるクラス(メインクラスと呼びます)はcom.nttdocomo.ui.IApplicationクラスを継承する必要があります。メインクラスはADFで指定され、起動時にメインクラスのstart()メソッドが呼び出されます。アプリケーション開発者はIApplicationクラスのstart()メソッドをオーバーライドしたstart()メソッドをメインクラスに作り、そこにアプリケーションの処理を記述します。

質問

ADFとは何ですか?

回答

ADF(Application Descriptor File) とはアプリケーションのインストールや起動、ネットワークアクセスなどを制御するための情報が記述されたテキストファイルです。このファイルには、アプリケーションのサイズやURL、スクラッチパッド使用量、起動パラメータなどの情報を記述します。

質問

iアプリを終了するにはどのようにすればよいですか?

回答

com.nttdocomo.ui.IApplicationクラスには、アプリケーションを終了するためのメソッドterminate()が用意されています。アプリケーションを終了する際にはこのメソッドを呼び出します。 なお、J2ME CLDCではjava.lang.Systemクラスおよびjava.lang.Runtimeクラスにexit()メソッドが用意されていますが、iアプリではこれらのメソッドを使用することはできません。

質問

1つのiアプリが他のiアプリを起動することができますか?

回答

できません。iアプリの起動は携帯電話内のiアプリの管理機構である、アプリケーションマネージャが行います。iアプリからアプリケーションマネージャにiアプリの起動を要求する方法は提供されていません。

質問

ダウンロード可能な一件あたりのアプリケーションサイズ(.jarファイル)、スクラッチパッドサイズ、保存可能な件数を教えてください。

回答

アプリとして、1アプリケーションあたり最大10KバイトのJARファイルのダウンロードが可能です。また端末には最低5Kバイトのスクラッチパッドが確保されます。端末にはJARファイルとスクラッチパッドを各々最低3つ以上保存可能です。

質問

iアプリのデフォルトの対応文字コード(文字エンコーディング)は何ですか?

回答

iモードサービスでは日本語文字エンコーディングにShift JISを採用しており、iアプリのデフォルトエンコーディング名は"SJIS"となっています。なおiアプリでは、従来のiモードサービスからサポートされている絵文字を取り扱うこともできます。

質問

先般、Javaの標準化プロセス(JCP:Java Community Process)にて策定された「MIDP」とiアプリとの関係を教えてください。

回答

Java2 MicroEditionは基本的な性能要件が類似したデバイスカテゴリ毎に定義されたコンフィグレーションと、特定の分野・業種毎に定義されたプロファイルの組み合わせよって構成され、MIDP(Mobile Information Device Profile for the J2ME Platform)とiアプリはどちらもコンフィグレーションの上に存在するプロファイルという位置づけです。MIDPはNTTドコモも参加しているJavaの標準化プロセス(JCP)を経て策定した規格であり、ターゲットとしている機器はpager、wirelessPOS端末、携帯電話と広範囲となっています。一方、iアプリはiモードサービスにターゲットを絞って最適化された規格のため、MIDPとの互換性はありません。

ユーザインターフェース(UI)

質問

画面(UI)を作成する場合、iアプリ側で端末のディスプレイサイズに収めるようコントロールする必要がありますか?スクロールはサポートされますか?

回答

iアプリでユーザインタフェースをプログラミングする方法には、以下の2種類があります。

  • 低レベルAPI
    グラフィックスコンテキストへの描画により画面を構築する
  • 高レベルAPI
    ボタンやリストボックスなどのコンポーネントを組み合わせて画面を構築する

低レベルAPIでは描画を全てアプリケーション側で行うため、スクロール制御はアプリケーションで行う必要があります。一方、高レベルAPIではアプリケーションがスクロールを制御することはできません。機種によっては、コンポーネントの配置により自動的にスクロール制御を行うものがありますが、今後発売される全ての機種でスクロールがサポートされるわけではないことにご注意ください。

質問

iアプリにおけるイベントモデルはどのようなものですか?

回答

高レベルAPIでは、JDK1.1のdelegationモデルに近いイベントモデルを採用しています。ただしリスナークラスの登録先は各コンポーネントではなく、コンポーネントのコンテナであるPanelです(Panelからイベントタイプとともにイベント発生源のコンポーネントが渡されます)。また、低レベルAPIではイベント発生時のオーバーヘッドを軽減させるためにハンドラメソッド方式が採用されています。アプリケーションは描画領域であるCanvasのprocessEvent()メソッドをオーバーライドすることでイベントに対応する処理を実装します。

質問

マルチメディアデータはどのようなものがサポートされていますか?

回答

GIF87, 87a, 89a形式のGIFファイルおよびiメロディファイルが使用できます。

入出力(IO)

質問

Generic Connectionフレームワークとは何ですか?

回答

J2ME(CLDC)では、Java実行環境のサイズを最小にするために標準クラスライブラリの縮小を図っています。Javaのクラスライブラリはその性質上内部で互いに強い依存関係を持っており、サイズを小さく保ちつつ入出力機能やネットワーク機能を標準機能として実現するためにはフレームワークを再構築する必要がありました。その結果考案されたフレームワークがGeneric Connectionフレームワークです。このフレームワークではアプリケーション外部のアクセス先を全てURLで表現し、そのURLへの入出力を行うためのストリームの入手方法を定めています。

質問

iアプリの入出力先にはどのようなものがありますか?

回答

以下の3種類を利用することができます。

  1. HTTP通信(URLスキーム"http"および"https")
    インターネット上のWebサーバに対し、HTTPリクエスト/レスポンスによる入出力を行います。
  2. スクラッチパッド(URLスキーム"scratchpad")
    携帯電話上の永続記憶デバイスへのデータ入出力を行います。
  3. リソース(URLスキーム"resource")
    JARファイルに同梱されたデータファイル(画像やサウンドなど)からのデータ入力を行います(read only)。

質問

アプリから携帯電話内の電話帳の参照はできますか?またiアプリから直接電話をかけさせる(ダイヤル発信)ことはできますか?

回答

アプリから電話帳やダイヤラーにアクセスすることは、ユーザ保護の観点から行えないようになっています。

ネットワーク・通信

質問

iアプリからHTTP(S)以外のプロトコル(TCPソケット、UDP、FTPなど)を使用することはできますか?

回答

HTTP(S)以外のアプリケーションプロトコルを使用することはできません。

質問

サーバからプッシュ型で端末内のiアプリを起動することができますか?

回答

できません。

質問

iアプリ上でHTTP(S)通信を行う場合の注意点はありますか?

回答

ユーザ保護の観点から、アプリケーションからHTTP(S)通信を行う際の相手先は、「そのアプリケーションのダウンロード元サイトと同じURLスキーマ、ホスト、ポート番号でなければなりません。またホスト名を数値アドレスで指定すること(127.0.0.1など)もできません。なお、HTTP(S)通信を行うアプリケーションは、ADFのUseNetworkキーを使用してネットワークを利用することを宣言する必要があります。

その他(携帯電話サービス特有事項など)

質問

iアプリの起動中に通話着信があった場合、どうなりますか?また、メール着信があった場合どうなりますか?

回答

iモードでは通話着信優先という考え方に基づき、以下のパターンの動作を行ないます。iアプリでは実行の中断・再開が行われるため、アプリケーション開発者は実行の中断・再開を意識してプログラム開発することが必要です。

  1. 通話着信した場合
    アプリケーションの実行が一時的に中断され、通話終了後にアプリケーションの実行が再開されます。
  2. メール着信した場合
    アプリケーションの実行は中断されることなく継続され、何らかの方法でメールの着信があった旨をユーザに通知します。

質問

iアプリが中断・再開するケースにおいて、アプリケーション側で中断を検出することができますか?

回答

iアプリが中断・再開するケースとして、

  • iアプリ起動中の通話着信(パケット通信中での通話着信、非パケット通信中での通話着信の両方有り)

がありますが、中断に関してアプリケーションが知る手段はありません。再開についてはIApplication#resume()メソッドに処理を組み込むことによりアプリケーション側で知ることができます。

質問

iアプリ側でバイブレーションを操作することはできますか?

回答

バイブレーション機能を使用するはiアプリの標準機能としては提供していません。端末によってはバイブレーション機能をアプリケーションから利用可能になる場合があります。

開発環境・手順などに関する質問

質問

iアプリの配布方法および端末側へのインストール方法を教えてください。

回答

iアプリの配布はインターネット経由で行われ以下の通りとなります。但し、画面表示方法などの詳細は各端末メーカ毎に異なります。

  1. アプリケーションのダウンロードには携帯電話のiモードブラウザを使用します。iアプリでは、アプリケーションを携帯電話側にダウンロードおよびインストールするための拡張タグを使用することができます。
  2. ユーザーはコンテンツプロバイダーが用意するiアプリのダウンロードページを開きます。
  3. ユーザはアプリケーションのリストから希望するアプリケーションを一つ選択(拡張アンカータグをクリック)することで、そのタグに結び付けられているアプリケーションのADFがダウンロードされます。
  4. ダウンロードしたADFの内容は画面に表示され、ユーザーによるダウンロード確認およびアプリケーションマネージャによるダウンロード可否判定が行われた後、アプリケーションがダウンロードされて携帯電話にインストールされます(端末の設定によってユーザーによるダウンロード確認を省略することも可能です)。携帯電話上にインストールされたアプリケーションは、ユーザの好きなときに起動することができます。また不要になったアプリケーションは削除することもできます。

質問

端末内のiアプリの更新はどのように行われますか?

回答

以下の通りです。但し、画面表示方法などの詳細は各端末メーカ毎に異なります。

  1. ユーザはダウンロード済iアプリ一覧を端末上に表示させ、その中から更新対象のアプリケーションを指定して更新機能を選択します。
  2. アプリケーションマネージャはアプリケーションのADFをコンテンツプロバイダーのサーバから再度ダウンロードし、新たにダウンロードされたADFのLastModifiedキーが更新されている場合のみ新たなJARファイルのダウンロードおよびインストールが行われてアプリケーションが更新されます。アプリケーションの更新ではスクラッチパッドの内容は更新されたアプリケーションにそのまま引き継がれます。
  3. 更新が正常に完了すると更新前のアプリケーションは削除されます。アプリケーション更新処理中に何らかの障害が発生した場合には更新前のアプリケーションは保護され、更新処理を行う前の状態のまま残ります。

このページのトップへ