オープンアプリ(MIDP)アプリケーション開発環境を整える[Win+Eclipse]
オープンアプリはau用のJava製アプリのことである。他にdocomoのiアプリやソフトバンクのS!アプリも同様にJava製アプリだが、自分の携帯がauであるためオープンアプリの開発環境を整えることにした。
auには他にBrewアプリがあるのだが、こちらは敷居が高い上に開発環境をダウンロードするだけでも登録やお金が必要なため、断念した。C/C++で作成できるので興味はあるのだが、いわゆる勝手アプリは作れない仕組みだ。
作業環境がWindowsなので、今回はWindowsにインストールを行った。EclipseのバージョンはHELIOS(3.6)だった。Linux用も用意されているため、Linux上でも開発可能だ。
開発環境を整える
アプリを開発するにあたって、まず開発環境を整えなければならない。少し内容が古いが、http://www13.plala.or.jp/naka_jima/Eclipse/chapter12.htmlを参考にした。
1. エミュレータのインストール
Java Wireless Toolkit2.5.2をインストールした。Oracle Technology Network for Java Developers | Oracle Technology Network | Oracleの"Sun Java Wireless Toolkit 2.5.2 for CLDC のダウンロード (Windows 版、Linux 版)"の下のDownloadボタンを押す。遷移先のページでPlatformにWindowsを選び、ライセンスに同意のチェックを入れてContinueボタンを押す。遷移先のページで"sun_java_wireless_toolkit-2_5_2-ml-windows.exe"のリンクをクリックするとダウンロードが開始される。"Sun Java Wireless Toolkit for CLDC 2.5.2 ML for Windows"と赤字で表示されていて、このMLが何の略か分からなかったが結果としてこれで合っていた。ファイルサイズは65.41MBだった。ダウンロードを終えたら、ウィザードに従ってインストール。自分の場合"C:\WTK2.5.2\"にインストールした。すんなり入れることができた。
2. EclipseMEプラグインのインストール
Eclipseが入っていない人はあらかじめインストールしておく。今回は既にインストール済みのEclipse HELIOS(3.6)に入れることにした。GUIは日本語化言語パック(サードパーティ版)を使って日本語化しているため、以下の説明はこれを適用した場合の日本語で説明している。他の日本語化手段によっては訳文が異なる可能性があるので注意。
- メニューバーの「ヘルプ(H)」→「新規ソフトウェアのインストール...」を選択。
- 作業対象(W)にhttp://www.eclipseme.org/updates/を入力し、リストビューのEclipseMEにチェック(+ボタンを押すとバージョンが1.7.9だった)。次へ(N)を押す。ライセンスに同意のチェックを入れ、インストール。完了したら、Eclipseを再起動する。
3. Eclipseの設定
- 設定のインポート
-
- メニューバーの「ウィンドウ(W)」→「設定(P)」を選択。
-
- 開いたダイアログの左ツリーに"J2ME"が追加されているので、+ボタンを押し、サブツリーの"Device Management"を選択。
-
- 右端のImport...ボタンを押し、表示されるダイアログの"Specify search directory"の右側のBrowse...ボタンを押し、最初にインストールしたエミュレータのあるフォルダ("C:\WTK2.5.2\")を選択する。するとリストビューに4つの項目が追加されるので、全部にチェックが入ってることを確認し、完了(F)ボタンを押す。
設定ダイアログの左ツリーから"Java"を選択し、+ボタンでツリーを展開し、"デバッグ"を選択。デバッガー・タイムアウト(ミリ秒)(T)の3000を15000に変更。"実行の中断"グループボックス内の"評価中にブレークポイントで中断(B)"以外のチェックをはずす。
- 設定の保存
以上を終えたら、設定ダイアログをOKボタンで閉じる。
4. プログラムの作成
設定はここまでで完了だが、設定が正しく行われているかどうか確かめるためにサンプルプログラムを実行してみる。
- プロジェクトの作成
メニューバーの「ファイル(F)」→「新規(N)」→「その他(O)...」を選択。"J2ME"ツリーを展開し、"J2ME Midlet Suite"(J2ME Midletではないことに注意)を選択し、次へ(N)ボタンを押す。プロジェクト名(P)に"HelloWorld"を入力して次へ(N)ボタンを押す。"Device"グループボックスのGroupから"Sun Java(TM) Wireless Toolkit 2.5.2 for CLDC"を、Deviceから"DefaultColorPhone"を選択し、完了(F)ボタンを押す。
- コードの作成
メニューバーの「ファイル(F)」→「新規(N)」→「その他(O)...」を選択。"J2ME"ツリーを展開し、今度は"J2ME Midlet"(Suiteがついてない方)を選択し、次へ(N)ボタンを押す。名前(M)に"HelloWorld"を入力して完了(F)を押す。
- コードの記述
以下のようにプログラムを記述(殆どが生成されたテンプレートで、追加したのはimportの前2行とコンストラクタ内のみ)。
import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Form; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class HelloWorld extends MIDlet { public HelloWorld() { // TODO Auto-generated constructor stub Form form = new Form("Start MIDlet"); form.append("Hello, World"); Display.getDisplay(this).setCurrent(form); } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { // TODO Auto-generated method stub } protected void pauseApp() { // TODO Auto-generated method stub } protected void startApp() throws MIDletStateChangeException { // TODO Auto-generated method stub } }
メニューバーの「ファイル(F)」→「保管(S)」で上書き保存する。
メニューバーの「実行(R)」→「デバッグの構成(B)...」を選択。左ツリーの"Wireless Toolkit Emulator"を右クリックし、新規(W)を選択。名前(N)にHelloWorldと入力し、"Executable"グループボックスからMidletを選択し、右の"Search..."ボタンを押す。出てきたダイアログで"Choose midlet to be emulated"の下のエディットボックスにHelloWorldと入力し、下のリストボックスに表示された"HelloWorld - (デフォルト・パッケージ)"を選択し、OKボタンを押す。下の適用(Y)ボタンを押し、デバッグ(D)ボタンを押す。携帯電話型のエミュレータ(別ウィンドウ)が起動して、"Hello, World"と表示されれば成功である。
以上で開発環境のインストールからサンプルプログラムの実行(エミュレート)までを行うことができた。あとはオープンアプリ用のjadファイルを作成してサーバにアップするだけだが、jadファイルはEclipseが自動生成してくれるためここから先は容易だと思われる(実際に行ってはいないため断言はできないが…)。この手順は最初に挙げた参考サイトに載っているのでそちらを参照してほしい。
ここ1年くらいTwitterが注目を浴びており、携帯用のクライアントは自分の中ではモバツイ(Web)が主流だと思っている。CGIなので比較的簡単に作成することができるが、ブラウザからのアクセスなのでポーリング(TLの受信など)は自分で行わないといけない。またauのEZWebブラウザはいくつかのバグが未修正のままなので、若干使いづらい。そこで、携帯向けのTwitterクライアントが作れないかと思ったため、これらの開発環境を入れた。オープンアプリなら自動受信ができる(かもしれない...通信のたびに確認が入るらしい)。少し探したところ、同様のことを行っているページを見つけた(http://www.utilz.jp/wiki/Ezitter)。BASIC認証サポート切れのため開発終了となっているが、OAuthに対応できるのではないかと思ったので、少し調べてみようと思う。auのオープンアプリには一日の受信データ量の上限が設けられており、1アプリ3MBである。さらに全アプリ合計で6MBという制限もある。これに抵触せずタイムラインを受信するにはパケットサイズを抑える必要があるため、PC向けのTwitter APIはデータ量が多くて(冗長なため)望ましくは中間ゲートウェイを設けてデータ量圧縮・削減を行いたい。自宅にサーバなどないしドメインも持っていないので、中間ゲートウェイが必要であれば、さくらレンタルサーバーでレンタルしようかと思う。