Xamarin.Form
Xamarin.Formとは?
これまでの説明では、画面の定義について、Xamarin.AndroidではXML、Xamarin.iOSではStoryboardといったそれぞれのプラットフォーム別に定義する必要があるとしてきましたが、Xamarin 3から登場したXamarin.Formを利用すれば、iOS、Android、Windows Phoneの画面を同じXAMLで定義することが可能になります。
Xamarin.Formはまだ新しい機能でデザインビューで見た目を確認できないなどの不便さはありますが、画面の定義も共通化できる注目の機能です。
Xamarin.Formを利用したプロジェクトの作成
Xamarin.Formに対応したプロジェクトは「新しいプロジェクト」ポップアップの右ナビの「Mobile Apps」から作成します。プロジェクトは共通コードをPCL(Portable Class Libraly)で実装するかSharedプロジェクトを用いるかを選ぶことができます。
Xamarin.Formプロジェクトの作成時にWindows Phoneアプリをビルドすると「'ProductID'属性は無効です」といったエラーが表示されることがあります(おそらく一時的なバグでしょう)。
この場合、WMAppManifest.xmlファイルを開き、ProductIDとPublisherIDの値を確認します。通常のWindows Phoneアプリの場合でProductID="{プロダクトID}"のように表記されているはずの部分が、Xamarin.Formの場合はProductID="プロダクトID"という風に{}が抜けた形で記載されてしまっているので、{}を含んだ形に書き換えてあげれば解決します。
サンプルを動かしてみる
Xamarin.Formの今後の学習に最適なサンプルを紹介します。
例えば、サンプルのXAMLSamplesを試してみると、Xamarin.Formでさまざまはコントロールを動作するデモを確認することができます。
Xamarin.Formについて学ぶ場合、上記サンプルおよび、以下の公式ページが参考になります。
- Xamarin.Forms(英語)
Xamarin.Formの採用に関して
Xamarin.Formの採用を検討する場合、現状では機能に足りない部分(例えばデザインビューでプレビューできない)があること、今後新機能追加に伴い仕様の変更が発生するリスクがあることは検討すべきだと思います。
Xamarinは設定によりアルファ版、ベータ版をインストールして動作を確認することもできますので、最新版の動向を確認することで、ある程度上記リスクは予測可能になります。
また、Xamarin.Formがマルチプラットフォーム間で同じXAML定義を使用するという性質上、プラットフォーム固有の機能を利用できない可能性があることも考慮する必要があります。
これはマルチプラットフォーム開発を謳ったツールすべてにあてはまる問題ですが、Xamarinはプラットフォーム固有の表示の仕組みと、プラットフォーム固有のAPIをC#から呼び出すことで固有の機能を利用できる反面、その部分は共通化できないという特徴を持っていました。コードは固有のAPI呼び出し部分を共通化しないことである程度回避できましたが、画面に関しては、それぞれのプラットフォームで別々に定義するしかこれまでは選択肢がありませんでした。
Xamarin.Formは新たに画面の定義の共有化という選択肢をXamarinに追加しましたが、選択できる代わりに、開発者はアプリの特徴に合わせての選択が必要になりました。
まとめ
Xamarinの概要について紹介しました。
マルチプラットフォーム開発という場面でXamarinが強力なツールであること、また、Universal Windowsアプリと組み合わせるとさらに幅が広がることが伝わったでしょうか?
Xamarin.Form、PCL、Sharedプロジェクトなどのテーマについても今後、マルチプラットフォーム環境で効率的な開発をするために学んで行く必要があります。
またXamarinは急速に改善が進んでいるツールでもあります。筆者も引き続きXamarinについての情報を発信し、最新情報を紹介していきたいと思います。