第1回:Xamarinでアプリを作ろう特集:Visual StudioとXamarinで始めるiOS/Android/UWPアプリ開発(3/5 ページ)

» 2016年09月23日 05時00分 公開
[山本康彦BluewaterSoft/Microsoft MVP for Windows Development]

3. "Hello, Xamarin!"

 Xamarin VSがインストールできたら、ともかく使ってみよう。

プロジェクトを作る

 ここではXamarin.Formsのプロジェクトを作ってみる。

 Xamarin VSでプロジェクトを作るときの注意点は、パスに日本語を使わないことだ。ソリューションを置くディレクトリのパスも、ソリューション名/プロジェクト名も、全てASCIIコードの範囲で命名する。そうしないと、ビルドに失敗するので気を付けてほしい。

 それではVisual Studioを起動し、メニューバーから[ファイル]−[新規作成]−[プロジェクト]を選んで[新しいプロジェクト]ダイアログを出す(次の画像)。ダイアログの左側で[インストール済み]−[テンプレート]の中から[Visual C#]を探し、その下の[Cross-Platform]を選ぶ。ダイアログの中央で[Blank Xaml App (Xamarin.Forms Portable)]を選び、ダイアログ下側で名前と場所を適宜設定し(日本語を使わずに!)、[OK]ボタンをクリックしてプロジェクトを作成する。なお、以降では、ここでプロジェクトの名前に「HelloXamarin」と付けたものとする。

[新しいプロジェクト]ダイアログ(Visual Studio 2015 Community) [新しいプロジェクト]ダイアログ(Visual Studio 2015 Community)
Xamarin VSがインストールされていると、このように[新しいプロジェクト]ダイアログにXamarin関係のプロジェクトが表示される。ここでは[Blank Xaml App (Xamarin.Forms Portable)]を選んでプロジェクトを作成する。

Macへ接続

 初めてXamarin VSのプロジェクトを作ったときには、次の画像のようなダイアログが出るはずだ。iOS用アプリも開発する場合は、このダイアログに示された手順に従ってMacへ接続する。詳細は「特集:Xamarin.Formsを知る:XamarinアプリのMacでのビルドとiOS Simulator for Windows」をお読みいただきたい。ここではMacへの接続については説明を省略する。

Xamarinのプロジェクト作成時に表示される[Remote Login]ダイアログ Xamarinのプロジェクト作成時に表示される[Remote Login]ダイアログ
初めてXamarinのプロジェクトを作成したときに、このようなダイアログが出る(左下のチェックを付けると、次からは表示されない)。Macへ接続するには、このダイアログに示された手順で作業する。

 上のダイアログとは別に、もう1つダイアログが出ている(次の画像)。今回はそのまま[OK]すればよい。

Xamarinのプロジェクト作成時に表示される[New Universal Windows Project]ダイアログ Xamarinのプロジェクト作成時に表示される[New Universal Windows Project]ダイアログ
Xamarinのプロジェクトを作成するとき、このようなダイアログが出る。UWPアプリのターゲットとなるWindows 10のバージョンを指定するものだ。今回は既定値のままでよい。

まずはフルビルド!

 Xamarin VSのプロジェクトを作ったら、まずはフルビルドしよう。このとき、インターネット接続が必須である。

 まずテンプレートそのものでビルドできることを確かめておくのが肝心だ。環境構築に失敗していたり、あるいはXamarin VSやテンプレートの不具合に遭遇したりする可能性もあるからだ(最近は聞かなくなったが、以前はテンプレートから作成した直後のソリューションでもビルドできない不具合がままあった)。

 ビルドする前に、UWPアプリのビルド構成を変更しておこう。なぜか、既定ではUWPアプリがビルドされない設定になっているのだ(本稿執筆時点)。メニューバーの[ビルド]−[構成マネージャー]を選んで、[構成マネージャー]ダイアログを出す(次の画像)。[構成マネージャー]ダイアログで、対象にするプロジェクトの[ビルド]/[配置]チェックボックスをONにし、対象としないプロジェクトのものはOFFにする。ただし、先頭のプロジェクト(ここでは[HelloXamarin])は共通に使われるPCL(移植可能ライブラリ)であり、[ビルド]のチェックを外してはいけない。

Xamarin.Formsプロジェクトの[構成マネージャー]ダイアログ Xamarin.Formsプロジェクトの[構成マネージャー]ダイアログ
Android用とUWP用だけをビルド/デバッグ実行できるように構成した例。
基本的には、[ビルド]/[配置]のチェックボックスを操作するだけでよい(Windows 8.1 Phone/Windows 10 Mobileでは[プラットフォーム]のところを、エミュレータでは[x86]に、実機では[ARM]に、切り替える必要がある)。

 それでは、インターネットに接続していることを確かめてから、フルビルドしよう。メニューバーの[ビルド]−[ソリューションのビルド]を選ぶとビルドが始まる。プロジェクトを作成した後、最初のビルドではインターネットから必要なパッケージを取得してくるため、少々時間がかかる。ビルド出力(メニューバーの[表示]−[出力]で表示される)で失敗が報告されなければOKだ(次の画像)。ビルドに成功していてもエラー一覧にエラーが表示されることもあるが(本稿執筆時点)、取りあえず無視してよいはずである。

ビルド完了時の[出力]ペイン ビルド完了時の[出力]ペイン
最後の行に「0 失敗」とあれば、取りあえず問題ない(赤線部)。

NuGetパッケージの更新

 ビルドできると分かったら、今度はソリューションで利用しているNuGetパッケージを最新版に更新してみよう(必須ではない)。

 できれば、更新する前にバックアップを取るか、ソースコードリポジトリにチェックインしておくことが望ましい。間違ったパッケージに更新してしまうとビルドできなくなることもあるからだ。今回は更新しなくても差し支えはないので、難しそうだと感じるようなら、この項は飛ばしてほしい。

 ソリューションエクスプローラーで1番上のソリューションを右クリックし、[ソリューションの NuGet パッケージの管理]を選ぶと、次の画像のようなNuGetパッケージの管理画面が表示される。

[ソリューションのパッケージの管理]画面 [ソリューションのパッケージの管理]画面
[インストール済み]タブ(赤枠内)を選択したところ。
左側に、このソリューションにインストールされているNuGetパッケージが一覧されている。左側でパッケージを選ぶと、右側には、そのパッケージが使われているプロジェクトと、パッケージのバージョンが表示される。
画像にあるように、.NET CoreさえもNuGetパッケージで配布されているのだ。

 パッケージの管理画面の[更新プログラム]タブには、新バージョンの存在するパッケージが一覧される(次の画像)。左側で更新したいパッケージを選び、右側で更新したいプロジェクトと新しいバージョン(赤丸内)を選んで[インストール]ボタンをクリックすると、NuGetパッケージが更新される(他の手順もある)。

 Xamarin.Formsでは[更新プログラム]タブに多くのパッケージが表示される。しかし、[Xamarin.Forms]だけを更新すればよい。他のパッケージは、[Xamarin.Forms]のインストール時に依存関係がチェックされ、必要なパッケージが自動的に更新される。このとき、全てのプロジェクトに同じバージョンが適用されるようにしよう(右側のチェックボックスで全てのプロジェクトにチェックを入れたままにしておく)。

[ソリューションのパッケージの管理]画面 [ソリューションのパッケージの管理]画面
[更新プログラム]タブ(赤枠内)を選択したところ。
左側で更新したいパッケージを選び、右側で更新したいプロジェクトと新しいバージョン(赤丸内)を選んで[インストール]ボタンをクリックする。
ここでは、[Xamarin.Forms]パッケージを2.0.0.6482から2.1.0.6529に上げようとしている(左側を見ると最新は2.3.1.114だが、筆者の環境ではそこまで上げるにはAndroid SDKのアップデートが必要だった)。

 NuGetパッケージを更新したら、またフルビルドが成功することを確認しておこう。

 また、NuGetパッケージの更新に先立ってAndroid SDKのアップデートが必要な場合もある。詳細な解説は省かせてもらうが、メニューバーの[ツール]−[Android]−[Android SDK Manager]から操作する。

 開発環境や使用するパッケージ(ライブラリ)のバージョン管理は、OSS開発では重要な作業である。チーム開発では、開発者によってバージョンがばらついてしまうと、こっちでビルドできたものがあっちではビルドできないというトラブルを引き起こす。従来の.NET開発では意識せずに済んでいた作業かもしれないが、ちょっとずつ慣れていこう(Xamarin.Formsのパッケージがどういう関係になっているかは筆者もまだよく分かっていないのだ……)。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。