SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

プリプロセッサを使ってJ2MEアプリケーションの移植を自動化する

アプリケーションを様々な機種に効率よく対応させる方法

  • X ポスト
  • このエントリーをはてなブックマークに追加

移植の問題で頭を痛めていませんか。J2MEアプリケーションの移植を自動化したいと思っている方は、プリプロセッサの使用を検討してはいかがでしょう。プリプロセッサは、いろいろなデバイスモデルへの移植に対応できる柔軟性の高い唯一の方法です。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 Javaは理論上は移植可能なので、Javaモバイルアプリケーションを開発するときにも、すべてのJava対応デバイス上で正しく実行されるはずだと思いがちです。ところが、理論上の事柄が大抵そうであるように、これも実際にはうまくいきません。J2MEモバイルアプリケーションはまだ日の浅い技術ですが、多くの開発者は、こうした共通利用の問題がMIDP2.0やJTWIのような新しいイニシアチブによって簡単に解決されることはないだろうと述べています。

 J2MEはグローバルに移植できるとしても、J2MEアプリケーションはそうではないというのが現実です。つまり、バイトコードはすべてのJavaハンドセットで正しく実行されますが、アプリケーションの動作はハンドセットごとに個別に調整しなければならないのです。モバイルデバイスは1200種もありますが、いずれも能力が異なり、MIDPを含めて種々のJavaプラットフォームをサポートしており、またオプションのAPIとオプションのAPIパーツをサポートしています。さらに、これらの実装にはそれぞれ独自のバグもあります(デバイスの特性/特徴の細分化の例については、下記の補足説明を参照)。

 そのため、典型的な開発サイクルでは、移植とテストにかかる時間が全体の40~80パーセントに上ることになります(実際にどれくらいの比率になるかは、開発者の経験レベルとサポートするデバイスの数によります)。

 移植したモバイルアプリケーションを実際の携帯電話でテストするのは必ずしも簡単なことではありません。よくできたエミュレータを使用すれば、実際のデバイスのバグがすべて再現されるはずですが、常にエミュレータがあるとは限りませんし、たとえあっても決して当てにできるわけではありません。

 バグにはもう1つ難しい問題があります。バグに対処するには、バグをソースコード上で解決するか、不具合のある機能を無効化しなければなりませんが、このような対策がファームウェアのバージョンによってすべて異なるものになる可能性があります。特に厄介なのは、仮想マシンにバグがある場合です。これは、メーカーが仮想マシンをハードウェアレベルでハンドセットに統合する際に問題になります。

 モバイルオペレータは配布されたミッドレットの品質をコントロールする必要があります。なぜなら、低品質のミッドレットはオペレータサービスに影響を与えるからです。オペレータは比較的うまくできている古いミッドレットを新しいデバイスモデルのために交換し、広範に使用できるようにする必要もあります。そのため、開発者はアプリケーションを新しいデバイスにすばやく移植できなければならないのです。

デバイスの特徴の細分化
デバイスの能力
デバイスの能力
Javaプラットフォーム
Javaプラットフォーム
MIDPプラットフォーム
MIDPプラットフォーム
MIDP用のオプションのAP
MIDP用のオプションのAP

移植の自動化は必要か

 一番のポイントは、そのアプリケーションでサポートできるデバイスの数です。これが、自動化という投資の効果を左右する最大の要因になります。移植を自動化することには次のような利点があります。

  • J2MEプロトタイプが使用可能になり、市場化までの時間が短縮される。
  • 単調で退屈な作業が自動化される。
  • さまざまなデバイス仕様に煩わされずにアプリケーションロジックに専念できる。
  • デバイスごとに最適化されたアプリケーションを生成できる。

 まず、各デバイスモデルの特異性を考慮する必要があります。利用できる場合にはいつでもオプションの機能を使用すべきです。デバイスに応じてアプリケーションでサポートすべき機能の例を表1に示します。

表1 デバイスモデルの特異性の例
デバイスが次の条件に当てはまる場合はアプリケーションで次のことを実現する
サウンドをサポートしているサウンドを再生する
アルファブレンディングをサポートしている不透明度に変化をつけてメニューを表示する
.jarファイルサイズの制限がきつい必須でないイメージを削除する
全画面をサポートしている全画面を使用する
十分なヒープメモリがあり、大きな.jarファイルサイズをサポートしているビットマップフォントなどのオプションの機能を使用する
カメラコントロールをサポートしているカメラで撮ったスナップショットを使ってゲームをカスタマイズできる
BluetoothをサポートしているSMSまたはHTTP接続を使用して他のユーザーと通信する(チャットなど)
SMSをサポートしているSMSを使用して現在のアプリケーションをアクティブ化する
PDAPをサポートしているPDAPを使用して内部ギャラリーのイメージにアクセスする
電話をかけられる電話をかける
バックグラウンドでのアプリケーションの実行をサポートしているバックグラウンドでアプリケーションを実行する

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
内製の移植ソリューション

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Bruno Delb(Bruno Delb)

フランス語で書かれたJ2MEに関する最初の書籍の著者で、Net InnovationsおよびUnified Mobilesの創始者でもある。Unified MobilesはUMAK(Unified Mobile Application frameworK)に基づいた統一モバイルアプリケーション開発という概念を生み出した。UMAKはマルチプラットフォームアプリケーション(J2ME、DoJa、Webアプレット)の開発を促進する完備したフレームワークである。UMAKはデバイスに関する非常に詳細な知識ベースとJavaテストスイートと生産性ツールスイートと構成エンジンを基にしており、各デバイスモデルの各機能を考慮に入れている。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/861 2007/01/19 00:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング