2012年11月6日火曜日

JavaでiPhone/iPadアプリを開発できる「Codename One」

JavaでiPhone/iPad、Androidなどのモバイルアプリケーションを開発できるというツール「Codename One」が、JavaOne 2012で取り上げられていたみたいなので、ちょっと調べてみました。

これはCodename One社のオープンソースプロジェクトで、Javaで書いたコードが、iOSやAndroid、BlackBerryのネイティブコードに変換されて動作する無償のツールみたいです。ツールの中身は、GUI BuilderなどのUIを作るツール、エディタなどのIDE、シミュレータ、Javaフレームワークとそのネイティブコードへの変換ビルダーなどがあるみたいです。(ビルドは使い込んでいくと課金対象のようです。)



有名な類似製品としては、JavaScriptでコードを書くという違いはありますがAppceleratorのTitaniumですね。

また、Macを持っていないユーザ用(?)にクラウドでビルドして、iOS用のインストーラであるipaファイルを生成できるようです。ただ、FAQを見ると、App Storeに上げるときなどに必要と言っているので、結局必要かな。。。と思いきや、ここで始めて知ったのですが、MacinCloudというMacOSのクラウドがあるらしいですね。Mac持っていない人には使えるかも。

話はそれましたが、要はJavaを知っていれば、クロスプラットフォームで稼働するモバイルアプリケーションが作れるっていうツールらしい。昔、TitaniumはAndroid/iOS上で同じコードでちゃんと動かなかったという経験(私の実装が悪かったのかも。。)があるので、こちらには期待したいですね。

アプリ開発の流れ
EclipseかNetBeansで開発することになるようです。

新規プロジェクト作成をすると以下の3つのソースコードが生成されるようです。
  • StateMachineBase: GUI Builderで自動生成された画面のクラスです。このファイルは手動でいじらないようです。
  • StateMachine: StateMachineBaseを継承したクラスで、StateMachineBaseを操作するようなコードをここに書くようですね。例えば、GUI Builderで作ったボタンの押下イベント発生時の処理をメソッドとしてコーディングするとか、あるイベントが発生したときに、GUIのデータセットなどを行うとか、ほとんどの処理はここに書いていくことになりそうです。
  • Main: まぁ、メインですね。AndroidやiOSのフレームワーク同様、ライフサイクルを持っているようです。

ソースコードに加え、以下のようなリソースファイルも。
  • レイアウトデザイン/テーマ/イメージ
  • 国際化
  • データファイル
APIも充実していて、以下のようにセンサーなどのモバイル特有のものにもアクセスが可能です。

  • カメラ
  • GPS
  • ビデオ
  • ストレージ
  • ネットワーク
  • サーバプッシュ
  • メール/SMS/電話
  • JSON/XML
  • 地図 など

稼働確認するには独自のシミュレータで実行することもできますし、クラウド上でビルドして、ビルド完了すると、作成された.ipaファイルのURLをメールなどで受け取り、iPhone/iPadなどの実機でダウンロードして実行できるようです。(Androidのシミュレータは非常に遅いので、これは速いといいのですが。)

まだ、実際にはダウンロードして試していませんが、ネイティブコードに変換されることからPhoneGapなどのWebkitベースのツールより高速に動くと思いますし、Objective-Cはイマイチ慣れないので、作りたいアプリが思いついたら試してみたいと思います。

※若干気になる点はGalleryにApp Storeに公開されているアプリがなさそう。。。まぁ、これからですかね。


0 件のコメント:

コメントを投稿