こんにちは。エクセルソフトの田淵です。
早速というかやはりというか、Microsoft の Bridge プロジェクトにいくつかの発表があったようです。
Bridge プロジェクトは、Windows Store の拡充を狙い、様々なプラットフォームから Windows ストアに掲載できるアプリを生成する機能です(個人的理解)。
その中で、Project "Astoria" は Android の apk をそのまま Windows Phone で動作させるという野心的なものでした。が、以前よりこのプロジェクトの終了が発表(噂?)されており、今回正式に Astoria の終了と、Xamarin を使ってほしい旨の見解が発表されました。Project "Islandwood" は、Visual Studio で Objective-C のコードを開き、適切な変更をさせて、Clang でビルドするというもので、継続されるようです。
"Astoria" は、apk を直接変換するので、変換できなかった時は Java コードの修正が必要になりますし、あまり Microsoft として嬉しくなかったのかもしれません。ただ、「じゃあ Android Java のコードを Xamarin.Android 用に C# に書き換える?」というのは乱暴ですよねw
Android Java アプリを Xamarin.Android にポーティングするには?
そこで、Xamarin には次のドキュメントが用意されています。
Xamarin for Java Developers - Xamarin
Android Java のコードを C# に移植すると次のような利点があると記載されています。
- プロパティ - C# のプロパティを使用すると、Getter, Setter メソッドを記述することなく、安全に直接メンバー変数にアクセスすることができます。
- ラムダ式 - C# では、ラムダ式とも呼ばれる匿名メソッドを使用できて、より簡潔に、効率的に機能性を表現することが出来ます。あなたは 1回だけ使用するオブジェクトを記述するオーバーヘッドを回避したり、パラメータを追加しなくても、メソッドにローカルな状態を渡すことができます。
- イベント処理 - C# では言語レベルでオブジェクトが対象のイベントが発生したときに通知されるように登録するイベントドリブンプログラミングをサポートします。イベントのキーワードは、イベント発行クラスがイベント購読クラスに通知するために使用できるマルチキャストブロードキャスト・メカニズムを定義します。
- 非同期プログラミング - C# の非同期プログラミング機能(async/await)は、アプリを応答可能にします。非同期プログラミング機能の言語レベルのサポートで、非同期処理の実装が簡単に、よりエラーが発生しにくくすることができます。
今回の買収発表で Xamarin を知った方で、Android アプリしかなくて iOS 作るのはなーと思っている方は(似て非なるものですが)C# への移植を検討してみてください^^
Xamarin はいいぞ
まず最初にやることは Android アプリの機能の棚卸かと思います。その中でも、Android アプリで使用しているライブラリと同じような機能を持つ、.NET のライブラリがあるか?を探すのが良いと思います。例えば Google gson → Json.NET などです。
また、全部を書き換えるのは辛いので、Android アプリの資産を活用する方法も紹介されています。
- Java Binding ライブラリ作成
- JNI を使用してネイティブライブラリ呼び出し
上記について詳しくは以下をご覧ください。
Xamarin for Java Developers - Xamarin
JXUGC #11 開催
今回は 初心者向けのハンズオン大会 です。ホントにベーシックな内容ですが、ご興味のある方は是非お越しください^^
Xamarin 気になった方は
是非 ダウンロード(直接) / ダウンロード(弊社経由) して触ってみてください。 学習用リソース や JXUG リンクページ に参考資料を纏めてますので併せてどうぞ。
Xamarin の情報が欲しい方はこのブログも購読いただいたりすると嬉しいです。
以上です。