au以外の端末で「オープンアプリ」を動かす (2007-02-18)
「オープンアプリ」はMIDP2.0対応端末なら動作する
前回の記事(2007-01-31)でも話題にした「オープンアプリ」ですが、「オープンアプリプレイヤー」を搭載したau向け端末が発売開始されたのを受け、有志の皆さんが開発したオープンアプリを徐々に見かけるようになってきました。今後もだんだんと増えていくと思われます。
さて、これらau向け端末に作られたオープンアプリですが、実はそれ以外の端末でも動かすことができます。「オープンアプリ」というのは単に「MIDP2.0の規格に基づいて作成されたJavaアプリ」なので、一般的なMIDP2.0対応端末でも動かすことは可能なわけです。
とはいえ、動くことは動いても、「問題なく動く」かどうかは別問題です。「MIDP2.0対応端末」といっても、画面サイズ・サウンドまわりなど、端末ごとにハードウェア的な違いがありますし、搭載されているJava VMの種類によっても細かい挙動の違いがあります。
というわけで、実際に手元にあるMIDP2.0対応端末でいくつかのオープンアプリを動かしてみた結果を書いておきます。
端末ごとの動作
WX310SA
画面サイズが似通っているため(オープンアプリ: 240×268, WX310SA: 240×276)見た目の面では違和感は少なく、おおむね良好に動作するようです。ただし、問題点もいくつか。
- オーディオ再生でMIDIデータしかサポートしていないため、wavデータが鳴らない。
- ヒープメモリが少ない(700KBytes)ため、メモリ不足で動かないアプリもありそう。
- フルスクリーンモードをサポートしていない
- (ソフトキーが使えなくなるため、フルスクリーンモードを使うアプリは少ないと思われるので、それほどの問題ではないかも)。
最近発売されたWILLCOMの新機種「WX320K」「WX321J」もJavaに対応していますが、Java VMまわりは同じ(JV-Lite2)とのことなので、挙動の傾向はある程度共通しているものと思われます。
なお、前回の記事(2007-01-31)にも書いたとおり、オープンアプリのダウンロードリンクは特殊なので(jadファイルのURLの前に"device:jam?"という文字列がつく)、そのままでは端末内蔵のブラウザでダウンロードできません。そこで、ダウンロードの際には以下のようなブックマークレットを使って、"device:jam?"の文字列を削除すると便利です。
javascript:(function(){document.body.innerHTML=document.body.innerHTML.replace(/device:jam\?/g,'');})();
適当に作ったブックマークレットなので、ページ内のリンクURL以外の箇所に文字列"device:jar?"があった場合もお構いなしに消してしまいますが、これはご愛嬌ということで。
W-ZERO3(WS003SH)
なぜか手元にあるW-ZERO3(W-SIMなしの本体だけを安価に入手しました)で試してみました。一般的な携帯電話とはいろいろと異なる機種なので、やはりいくつか問題があります。
- 数字キーがない(アプリの内容によっては致命的)。
- LCDがVGAサイズなので、オープンアプリの240×268の画面は物理的に小さく表示されてしまう。
- 小・中・大のどのフォントサイズもすべて16ピクセル固定
W-ZERO3[es]ならば数字キーがあるので「数字キー問題」は解消されるものの、LCDの物理的サイズが小さいので「表示が物理的に小さい問題」はさらに深刻になりそうな感じです。多少遅くてもいいので、Java VM側で「2倍拡大モード」とかを用意してくれていたらよかったのですが。
また、単に画面が小さく表示されるだけならまだいいのですが、大きい画面を考慮していないアプリだと、描画周りの乱れが見られることもあります(例: 狭い画面の場合は表示されない部分に描画結果が残ったままになる)。画面サイズに関しては、一概に「大は小を兼ねる」とは言い切れないようです。
705NK(Nokia N73)
これまたなぜか手元にある705NKでも試してみました。意外にもまともに動く感じですが、Nokia端末独自の挙動による問題もあります。
- コマンド(ソフトキー)の挙動が独特。
- 画面サイズがやや狭い(240×234)。
- 全体的にフォントサイズがかなり大きめ。
- サウンドの音量がかなり大きめ。
引っかかりそうな点は、コマンド(ソフトキー)の扱いでしょうか。詳しい説明は避けますが、一般にMIDP開発ではソフトキーを以下のように設定することが多いようです。
- 左ソフトキー: new Command("(表示文字列)", Command.SCREEN, 0);
- 右ソフトキー: new Command("(表示文字列)", Command.SCREEN, 1);
多くの端末ではこの設定で左右それぞれのソフトキーにコマンドが割り当てられますが、Nokia端末でこれをやると、左ソフトキーにコマンド2つが割り当てられることになります。その結果、コマンドを実行するには「左ソフトキー押下」→「(コマンド2つが並んだ)プルアップメニュー表示」→「コマンドを選択して実行」という流れになってしまいます。ソフトキーを頻繁に連打するようなゲームアプリだと、ゲームにならないかもしれません。
あと気になったのは、音量がやたらと大きいことです(端末側でアプリの音量は設定できないのでしょうか?)。アプリ側で音量調節機能が用意されていないとつらいかもしれません。
702NK(Nokia 6630)
さすがに画面サイズが小さすぎる(172×144)ので、拙作「Rev.2」のように解像度の違いを考慮したアプリでないとまともに動かすのは厳しいところです。高レベルUIベースで作られたツール系のアプリであれば、なんとかなるかもしれませんが。