Java,ScalaでiOSアプリ開発

  • 47
    Like
  • 0
    Comment
More than 1 year has passed since last update.

概要

JavaとScalaで書かれたアプリをiOSに移植してみました。
移植したのは私が開発しているMikuMikuStudioというゲームエンジンを使って作った、MMD(MikuMikuDance)プレーヤーです。
http://sourceforge.jp/projects/mikumikustudio/
Javaの実行にはRoboVMを使用しています。
OpenGLなどのライブラリとして、libGDXをカスタマイズして使用しています。

ソースはgithubにあります。
https://github.com/chototsu/mikumikustudio-gdx

qiita.jpg

動画

http://www.nicovideo.jp/watch/sm22101434

Javaをインストール

以下のURLからMac版のJavaをダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
インストーラを起動し、インストールします。

sbtをインストール

sbtのインストールはhomebrewを使うのが簡単です。
まずhomebrewをインストールします。

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

sbtをインストールします。

brew install sbt

sbtの設定

そのままではコンパイル時にメモリー不足になるため、~/.sbtconfig に以下の設定を書きます。

SBT_OPTS="-Dfile.encoding=UTF-8 -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M"

android sdkをインストールする

注意:Androidの開発をされない方はスキップしていただいて結構ですが、その場合も環境変数だけは設定して下さい。ANDROID_HOMEを設定しないとビルド時にエラーが出ます。

Android SDK を以下のURLからダウンロードします。
http://developer.android.com/sdk/index.html

環境変数を設定します。

export ANDROID_HOME=/Applications/android-sdk-macosx

RoboVMをインストール

RoboVMをダウンロードします。現在はバージョン0.0.6を使用しています。
http://download.robovm.org/robovm-0.0.6.tar.gz
解凍します。

tar xvzf robovm-0.0.6.tar.gz

~/.robovm/homeにシンボリックリンクを張ります。

ln -s ~/robovm-0.0.6 ~/.robovm/home

シンボリックリンクを張るかわりに環境変数ROBOVM_HOMEに設定してもかまいません。

export ROBOVM_HOME=~/robovm-0.0.6/

mikumikustudio-gdxをダウンロードする。

git clone https://github.com/chototsu/mikumikustudio-gdx.git

起動

Mac上で実行

sbt desktop/run

iOSシミュレータで実行

sbt ios/iphone-sim

実機で実行

sbt ios/device

IntelliJ IDEAをインストール(オプション)

開発にはIntelliJ IDEAを入れると便利です。無料のCommunity editionでも十分使えます。

インストール

以下のURLからダウンロードして下さい。
http://www.jetbrains.com/idea/
ダウンロードしたらインストーラを起動しインストールして下さい。

プロジェクトの設定

プロジェクトのディレクトリで以下のコマンドを実行すると、プロジェクトをIntelliJ IDEAで開けるようになります。

sbt gen-idea

IntelliJ IDEAのプロジェクトファイルが作成されますので、IntelliJ IDEAでプロジェクトを開きます。

まとめ

RoboVMはまだαバージョンですが十分実用に耐えうる性能と安定性がある事が分かりました。使ってみた印象では、AndroidのDalvikより速く、安定しています。皮肉な話ですがAndroidよりiOSの方がJavaの実行環境として優れていると言えるかもしれません。
RoboVMの登場で、Android,iOS,Windows,Mac,Linuxで動くアプリを同一ソースで書く事が出来るようになりました。
今後、iOSの開発言語としてJavaやScalaが有力な選択肢となるのではないでしょうか。