Mono for Android 4.0は、VSプラグイン、インクリメンタル ビルド、 インクリメンタル デプロイ、全パッケージに必要なインストーラー、 Google Mapsの統合、 Java 7のサポートがしている。 Miguel de Icaza氏が インクリメンタル ビルドとデプロイがどのように動き、どれだけ役に立つかを説明した。
Xamarin が Mono for Android 4.0のリリースをアナウンスした。これによって.NET/C# 開発者は、 Androidスマホとタブレットのアプリケーションを作ることができる。このバージョンは、 Ice Cream Sandwichに導入された全ての新しいフィーチャをサポートしている。そしていくつもの新しいフィーチャを持っている。
- Android開発用の Visual Studioプラグイン
- 40% ビルド時間を削減するインクリメンタルビルダー
- デプロイ時間を「分から秒のオーダー」に削減するインクリメンタルデプロイ
- Mono上にAndroid開発に必要な全てのモジュールをパッケージ化(JDK, Android SDK, GTK#, MonoDevelop、Mono for Android)したインストーラー
- Google Mapsの統合
- Java 7のサポート
InfoQは、 XamarinのCTOである Miguel de Icaza氏に Mono for Androidのこの最新リリースの詳細について聞いた。
InfoQ: Xamarinのインクリメンタル ビルドについて少し詳細に説明してくれませんか?
Miguel de Icaza: これまで、我々は全ビルドプロセスを不透明な箱のように扱ってきました。我々の新しいセットアップは、ビルドプロセスを段階に分け、 Microsoftの MSBuildコンパイルシステムを利用しています。ビルド作業を分割し、ビルドプロセスの内部機構を表出させることで、MSBuild ツールは、必要なコンポーネントだけを再ビルドします(これはまた、我々の新しいインクリメンタルなアップロードによる恩恵です)。分割によって、コード変更は、Javaコードの生成が必要なコード変更やリソース(アートワーク、オーディオ、イメージ、ローカリゼーション)への変更とは、別に処理される。このテーブルが、完全なビルドからインクリメンタルなビルドまで、様々なシナリオにおける改善結果を示している。 JetBoyアプリケーションを使って測定した。
|
||
|
1.2.0 |
1.9.0 |
First Build: |
8.66s |
8.19s |
Code Changes: |
5.78s |
1.71s |
Code Changes Requiring New Java Stubs: |
5.78s |
2.50s |
Resource Changes: |
8.18s |
6.10s |
InfoQ: インクリメンタルなデプロイとはどのようなものですか?どのように動くのですか?
Miguel de Icaza: これまで、 Mono for Androidは、 Androidデバイス向けのアプリケーションをビルドする際に、Android上のJavaが使っていたパターンと同じものを使っていました。すなわち、我々はソフトウェアをビルドし、全てパッケージ化し、その結果を実行するためにエミュレータやデバイスにアップロードします。Monoの場合、開発中我々は、共有Monoランタイムをデバイスにアップロードします。同じコードを何度も繰り返しアップロードするのを避ける為です。しかしこれでも、ユーザーがコードを変更するたびに、コードをコンパイルし、パッケージ化し、コードに署名をいれ、Androidにパッケージをアップロードし、Androidにパッケージインストールを頼みます。この全プロセスは時間がかかり、禅僧でさえ気がおかしくなります。
我々の新しい高速な開発ツールは、このプロセスを様々な点でショートカットします。修正されたコードだけが再コンパイルされ、修正されたコードだけがデバイスにアップロードされます。Androidに差分だけがアップロードされ、パッケージ化、署名、Androidへのパッケージのインストール依頼は、すべてスキップします。その代わり、我々の新しいソフトウェアパッケージは、インプレースでアップグレードされるように設計されています。なので、最初のデプロイの時だけ、パッケージ化や署名が発生します。その後のビルドでは、変更されたコードがだけがアップロードされるので、ソフトウェアをデプロイする入れ替え時間が削減します。以下のテーブルが様々なシナリオにおける改善を示しています。 JetBoyのサンプルアプリで測定したものです。
|
||
|
Normal |
Fast Deployment |
Full build and install: |
15.6s |
15.6s |
No changes, build and install: |
1.8s |
2.5s |
Resource change, build and install: |
10.8s |
10.8s |
Code change, build and install: |
14.7s |
3.9s |
InfoQ: VSプラグインと MonoDevelopを使った場合の開発における主な利点と不都合は、何ですか?
Miguel de Icaza: MonoDevelopの利点は、製品にバンドルされていて、余分なコストはありませんし、開発者は直ぐに使えます。しかし、 Visual Studioが持っている全フィーチャを持っているわけではありません。
Visual Studioは、完璧なIDEですが、 Mono for Androidを使うには、プロフェッショナル版が必要です。無料のExpress版では動きません(Express版はプラグインできませんから)。しかしもしユーザーが Visual Studioを持っていれば、VSが持っている全ツールセットが意のままに使えますし、更に一般的に開発者が一緒に使う大量のプラグインや拡張機能を好きなように使えます。その中には人気のある Resharperのようなツールもあります。そして多くの組織では、組織固有のバグトラッキングシステム、ソースコードリポジトリ、他のチーム用ツールがVSに組込まれています
多くのユーザーが本当に ResharperだけのためにVSを欲しがっている。
InfoQ: Java 7の状況はどうですか?
Miguel de Icaza: Java 7はあるプログラムを壊したので、 我々はMonoTouch for Androidを修正して、ユーザーがJavaを7.0にアップグレードしたシステムで動くようにしました。我々は直接 Java 7のフィーチャを公開しません。C#は完全にJavaのスーパーセットなので、我々のフィーチャセットの方が既に大きいのです。