内製の移植ソリューション
アプリケーションの移植を自動化することに決めたら、実際に何をすればよいのでしょうか。もちろん外注することもできますが、自社内でやるつもりなら、基本的に4つの方法の中から選ぶことになります。
- デバイスシリーズごとにバージョンを1つずつ作成する
- ハンドセットの動的検出
NokiaCanvas、SiemensCanvas、StandardCanvas)。次に例を示します。try { Class.forName("com.nokia.mid.ui.FullCanvas"); Class myClass = Class.forName("NokiaCanvas"); myCanvas = (ICanvas)(myClass.newInstance()); } catch (Exception exception1) { try { Class.forName("com.siemens.mp.color_game.GameCanvas"); Class myClass = Class.forName("SiemensCanvas"); myCanvas = (ICanvas)(myClass.newInstance()); } catch (Exception exception2) { myCanvas = (ICanvas) new StandardCanvas(); } }
Icanvas)と3つの実装(Nokiaデバイス、Siemensデバイス、標準MIDPデバイスについて1つずつ)を作成します。Class.forNameを使用します。例外がスローされなければ、NokiaCanvasを使用します。そうでなければ、現在のデバイスがこのAPIをサポートしていないことになります。その場合は、もう1つのAPI(例えばSiemens)をテストします。もう1つの例外がスローされた場合は、標準キャンバスを使用しなければなりません。- AOPや拡張Javaのような代替物を使用する
- プリプロセッサを使用する
Canvasではなく、FullCanvasを拡張する必要があります。MIDP2デバイスでは、setFullScreenModeを呼び出す必要があります。MIDP1デバイスでは、これは可能でないので、非全画面モードのままです。//#ifdef NOKIA extends com.nokia.mid.ui.FullCanvas //#else extends Canvas //#endif { : : //#ifndef MIDP2 setFullScreenMode(true); //#endif
//#define NOKIA
extends com.nokia.mid.ui.FullCanvas
{
//#define MIDP2)は、次のものを生成します。extends Canvas { setFullScreenMode(true);
プリプロセッサを使った移植に必要なこと
ソースコードのバージョンを1つだけにするというのが基本原則です。これがプリプロセスされて、それぞれのデバイスモデルに適合したコードが生成されます。
留意すべき点を以下に列挙します。
- それぞれのデバイスモデルの動作を熟知している必要があります。
- それぞれのデバイスモデルでサポートされているJava機能を知る必要があります。
- プリプロセスでどんな操作(デプロイメントなど)が扱われるか知る必要があります。
- プリプロセスではリソース(イメージやサウンドなど)は変換されません。
- 完全に自動化されたソリューションにする必要があります。パラメータ化したソリューションでは不十分です。
- 自動化されたコンパイルとパッケージングのプロセスの開発に力を注ぐ必要があります。
イメージやサウンドなどのリソースを各デバイスモデルの能力に適合させるためには、変換ツールを使う必要があります。イメージの最適化も必要です(例えば、.pngイメージのヘッダーからオプションの情報を取り除いたり、小さなイメージを大きなイメージにまとめたり、各イメージの色の数を減らしたり、リソースをプリロードしたりします)。
同じ特性や機能や動作を持つ一連のJavaデバイスを作成する必要があるかもしれません。そうすれば、各デバイスモデルに対してではなく、このシリーズに対して1つのアプリケーションを生成できます。このシリーズの機能は、アプリケーションの中で使用したい機能に本質的に依存することになります。使用するオプションの機能が多いほど、細分化の度合いが増大します。
予期しないリソースを考慮に入れようとすると、アプリケーションの更新が必要になります。例えば、デバイスが大きな.jarファイルをサポートしていて、大きなヒープメモリを持っていれば、アプリケーションのバックグラウンドイメージを格納できます。そうでなければ、イメージは.jarファイルには入れられないので、単純に描画する必要があります。その場合、.jarサイズは小さくなり、ヒープメモリはあまり消費されません。
モバイルプログラミングでは画面サイズが重要な問題となるので、あらゆる技法を(イメージの動的変換やパッケージング前の変換など)駆使して、イメージサイズを小さくするように努力してください。
さらに、システムとのやりとりを管理することも大切です。例えば、着信の際にサウンドを中止し、ミッドレットを一時停止するといった具合です。
この記事は参考になりましたか?
- japan.internet.com翻訳記事連載記事一覧
- この記事の著者
-
japan.internet.com(ジャパンインターネットコム)
japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
Bruno Delb(Bruno Delb)
フランス語で書かれたJ2MEに関する最初の書籍の著者で、Net InnovationsおよびUnified Mobilesの創始者でもある。Unified MobilesはUMAK(Unified Mobile Application frameworK)に基づいた統一モバイルアプリケーション開発という概念を生み出した。UMAKはマルチプラットフォームアプリケーション(J2ME、DoJa、Webアプレット)の開発を促進する完備したフレームワークである。UMAKはデバイスに関する非常に詳細な知識ベースとJavaテストスイートと生産性ツールスイートと構成エンジンを基にしており、各デバイスモデルの各機能を考慮に入れている。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
