KB)日本におけるスマホシェアの状況はアメリカを除く海外の状況と異なっています。それは、iOSのシェアが他国に比べて高いという点です。そのため日本のスマホアプリは、iOSとAndroidの両方をサポートして初めてスマホ対応と呼ぶことが許されるような状況にあります。Phoneの対応についても検討する必要性が生じてくるでしょう。同じロジックを3プラットフォームのそれぞれの開発言語で開発するというスタイルもあるかも知れません。Xamarinを使って同じロジックを共通ライブラリ化して製造の工数を圧縮したり、品質を均一にしたりできることを考えると、これらの開発部分を極力少なくして共通化を進めることで開発コストや期間の圧縮が可能になります。Xamarin.Formsを使えばロジックだけではなく画面定義も3プラットフォーム共通です。問題がないわけではありません。Xamarin.Formsはまだ発展中のコンポーネントであり、業務アプリやIoT関連アプリをつくるのに必要なグラフ表示などが決定的に不足しています。今回ご紹介する「Xuni(ズーニー)」は、このXamarin.Formsの弱点をカバーするコンポーネントになります。Phone用のマルチプラットフォーム開発環境です。Frameworkのオープンソース版のMonoです。Xamarin社とMicrosoft社はXamarin開発で協力体制を敷いています。iOSやAndroidのバージョンアップにもほぼ即日対応しており、この点でもiOSやAndroidの開発環境としては信頼できるものと判断できるでしょう。Studioを提供しています。Developmentがベースとなっています。Studio拡張も提供されています。Professional以上のエディションが必要です。OSが稼働しているマシンが必要です。PhoneとiOSでは、Xamarinの実行環境の構成が異なります。APKとして配布されて動作します。Phoneでも同様に.NET中間言語にビルドされて配布された先の環境で動作します。Store向けのARMアセンブリコードとして配布されて動作します。若干の違いはありますが、Xamarinで作成したアプリの処理速度は、JavaでAndroidアプリ、Objective-CでiOSアプリを作成する方法と比べても遜色ない速度で動作します。無償評価版であるStarterエディションがあります。起業して3年以内、従業員数が20名以下の企業、開発者が3名以下でスタートする場合は特別価格が適用されるのでXamarin社に直接問い合わせてみましょう。Board、AndroidならXMLでそれぞれ個別に画面デザインを行うことが前提となっていました。その状況が大きく変わったのがXamarin.Formsの登場です。Phoneで共通の画面定義が可能です。これにより、ロジックも画面デザインも共通化できます。注Xamarin.Formsは、Starterエディションでは利用できません。Xuniとは「Xuni(ズーニー)」は、Xamarin.Forms用の市販コントロールです。Shared)」のテンプレートを選択します。新規プロジェクトのテンプレートインストールXuniには開発環境のPCにあらかじめインストールしておくという概念がありません。NuGetの仕組みにより開発プロジェクトごとにXuniを組み込みます。NuGet標準サイトにあるXuniは英語版なので、下図の手順に従ってXuni用のNuGetを設定してそこからインストールを行います。Studioの「NuGetパッケージ管理」ダイアログを利用します。日本語版Xuniのインストールまた、NuGetを利用してパッケージを組み込んだプロジェクトを、他の開発環境で利用するためには、NuGetを利用してインストール済みのパッケージを取得する必要があります。インストール済みパッケージの再取得も前述の「NuGetパッケージ管理」ダイアログから行います。ライセンスXuniのライセンスはサブスクリプション制になっています。サブスクリプション制とは製品を一度購入するごとに費用が発生するのではなく、サブスクリプション有効期限内であればバージョンが上がったとしても一度のサブスクリプション購入で利用ができるというものです。サブスクリプション期間が完了した後も、その期間で入手したバージョンのライセンス使用権は消滅しません。受託開発などでバージョン固定で利用するような場合は、サブスクリプション期間完了後も開発プロジェクトで従来通り利用可能です。ランタイムライセンスXuniには通常のライセンスに加えてランタイムライセンスという考え方があります。ランタイムライセンスはアプリケーションごとに登録が必要です。ランタイムライセンスを設定しておかないと実行時にエラーが発生します。ランタイムライセンスエラーランタイムライセンスの登録は登録用Webサイトからアプリケーション単位で行います。ランタイムライセンスの登録には費用は掛かりません。登録数に上限はありません。有効期間もXuni自体のサブスクリプションの有効期限とリンクしていません。サブスクリプションの有効期間が終わっても、ランタイムライセンスはそのまま有効なままです。有効期間が終わった後でも、新たにランタイムライセンスを登録することもできます。Phoneの4つのプロジェクトから構成されています。PCLプロジェクト部分にプラットフォーム共通部分を記述します。今回のサンプルでは、ほぼすべてのコードと画面定義をPCLに記述して共通化を最大限行っています。Xuniに必要な定義もその大部分がPCLプロジェクトに記述されています。Xamarin.Formsの初期化が各プラットフォームで必要なようにXuniの初期化も各プラットフォームで必要です。そのため、NuGetを使ったXuniのインストールもPCLプロジェクトだけではなく各プロジェクトで必要になります。Androidプロジェクトの設定AndroidプロジェクトでのXamarin.Formsの初期化は、MainActivity.csに記述されています。Xuniの初期化も同じところに記述するのかと思ったのですが、Androidプロジェクトでは例外的にXuniの初期化を明記しないでよいようです。iOSプロジェクトの設定iOSプロジェクトでのXamarin.Formsの初期化は、AppDelegate.csに記述されています。当たり前のようですが、iOSアプリにもかかわらずコードはC#で記述します。Xamarin.Formsの初期化直後にXuniの初期化を行います。PhoneプロジェクトでのXamarin.Formsの初期化は、MainPage.xaml.csに記述されています。CZ1506Graph.App());}PCLプロジェクトでの画面定義Xamarin.Formsの画面定義は、XAMLと呼ばれるWPFアプリやWindowsストアアプリと同じ構造の画面定義体を使います。両者には100%の互換性はありませんので、Xamarin.Formsの画面定義をXAMLデザイナでビジュアル表示することはできません。</StackLayout></ContentPage.Content>Xuniで折れ線グラフを表示するのは非常に簡単で、ItemsSourceにデータの入ったコレクションをBindingします。コレクションの中の各要素値はChartSeriesにBindingします。これで自動的にグラフ表示が可能になります。501)で実行した結果は次のようになります。同じ画面定義体なのにそれぞれのプラットフォームに合わせて、バージョン情報画面を表示するためのメニューの実装が変わっています。実行結果このようなプラットフォーム固有の実装への変換は、実行時ではなくビルド時にXamarin.FormsのXAMLから各プラットフォーム固有の画面定義体に変換することで実現しているので、実行に伴うオーバーヘッドは発生しません。まとめXuniを使えば、Xamarin.Formsの弱点である折れ線グラフや円グラフなどのグラフ表示のコントロールがない問題をクリアできます。NuGetで簡単に導入できる点も含めて、XuniはまさにUniversal時代の新しい市販コンポーネントの世界を体現しているのかもしれません。トライアル版でそのコンセプトを体感してみてください。この記事で提供しているサンプルにはランタイムライセンスを組み込み済みですので、Xamarinの開発環境を準備すれば、そのまま動作させることができます。バックナンバーWEB用を表示ブックマークツイート著者プロフィール初音玲(ハツネアキラ)国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。圧縮・解凍UNIX基本講座@CodeZine『CodeZine(コードジン)』の公式アカウントです。【NEW】デブスト2019デブサミ2019福岡・関西デブサミ2019夏デブスト関西デブサミ2019×ログインEメールパスワード※旧SEメンバーシップ会員の方は、同じ登録情報(Eメール&パスワード)でログインいただけます。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。