パート 3 - Xamarin クロスプラットフォーム ソリューションのセットアップ
使用されているプラットフォームに関係なく、Xamarin プロジェクトはすべて同じソリューション ファイル形式 (Visual Studio .sln ファイル形式) を使用します。 ソリューションは、個々のプロジェクト (Visual Studio for Mac の Windows プロジェクトなど) を読み込むことができない場合でも、開発環境間で共有できます。
新しいクロスプラットフォーム アプリケーションを作成するときは、最初に空のソリューションを作成します。 このセクションでは、次に何を行うかについて説明します。それはクロスプラットフォーム モバイル アプリを構築するためのプロジェクトを設定することです。
コードの共有
プラットフォーム間でコード共有を実装する方法の詳細については、コード共有のオプションに関するドキュメントを参照してください。
.NET Standard
.NET Standard プロジェクトにより、プラットフォーム間でコードを共有し、Windows、Xamarin プラットフォーム (iOS、Android、Mac)、Linux で使用できるアセンブリを生成する簡単な方法が提供されます。 これは、Xamarin ソリューションのコードを共有するための推奨される方法です。
その他のオプション
従来、Xamarin ではポータブル クラス ライブラリ (PCL) と共有プロジェクトが使用されていました。 これらはどちらも新しいプロジェクトには推奨されません。.NET Standard を使用するように既存のアプリを移行することを検討してください。
ソリューションの設定
コードの共有に使用されるメソッドに関係なく、ソリューション構造全体で、コード共有を促進する階層型アーキテクチャを実装する必要があります。 Xamarin のアプローチでは、次の 2 種類のプロジェクトにコードをグループ化します。
- コア (または "共有") プロジェクト – 再利用可能なコードを 1 か所で記述し、さまざまなプラットフォーム間で共有します。 可能な限り実装の詳細を非表示にするために、カプセル化の原則を使用します。
- プラットフォーム固有のアプリケーション プロジェクト – 可能な限り結合を少なくして再利用可能なコードを使用します。 プラットフォーム固有の機能は、コア プロジェクトで公開されているコンポーネントに基づいて構築され、このレベルで追加されます。
コア プロジェクト
コードを共有するコア プロジェクトは .NET Standard であることが必要で、すべてのプラットフォームで使用できるアセンブリ (つまり、System
、System.Core
、System.Xml
などの一般的なフレームワーク名前空間) のみを参照する必要があります。
コア プロジェクトでは、可能な限り多くの非 UI 機能を実装する必要があります。これには、次のレイヤーが含まれる可能性があります。
- データ層 – 物理データ ストレージを処理するコード (例: SQLite-NET、または XML ファイル)。 通常、データ層クラスは、データ アクセス層でのみ使用されます。
- データ アクセス層 – アプリケーションの機能に必要なデータ操作をサポートする API を定義します。たとえば、データのリスト、個々のデータ項目にアクセスし、それらを作成、編集、削除するメソッドなどです。
- サービス アクセス層 – アプリケーションにクラウド サービスを提供するためのオプションのレイヤー。 リモート ネットワーク リソース (Web サービス、画像のダウンロードなど) にアクセスし、場合によっては結果をキャッシュするコードが含まれています。
- ビジネス レイヤー – プラットフォーム固有のアプリケーションに機能を公開する Model クラスと Façade または Manager クラスの定義。
プラットフォーム固有のアプリケーション プロジェクト
プラットフォーム固有のプロジェクトは、各プラットフォームの SDK (Xamarin.iOS、Xamarin.Android、Xamarin.Mac、または Windows) および .NET Standard プロジェクトにバインドするために必要なアセンブリを参照する必要があります。
プラットフォーム固有のプロジェクトは、次のものを実装する必要があります。
- アプリケーション レイヤー – プラットフォーム固有の機能と、ビジネス レイヤー オブジェクトとユーザー インターフェイスとの間のバインドと変換。
- ユーザー インターフェイス レイヤー – 画面、カスタム ユーザー インターフェイス コントロール、検証ロジックの表示。
プロジェクト参照
プロジェクト参照には、プロジェクトの依存関係が反映されます。 コア プロジェクトでは、コードを簡単に共有できるように、共通アセンブリへの参照が制限されます。 プラットフォーム固有のアプリケーション プロジェクトは、.NET Standard プロジェクトと、ターゲット プラットフォームを利用するために必要な他のプラットフォーム固有のアセンブリを参照します。
プロジェクトを構造化する方法の具体的な例がケース スタディで示されています。
ファイルの追加
ビルド アクション
特定の種類のファイルに対して正しいビルド アクションを設定することが重要です。 次の一覧は、一般的なファイルの種類のビルド アクションを示しています。
- すべての C# ファイル – ビルド アクション: Compile
- Xamarin.iOS と Windows の画像 – ビルド アクション: Content
- Xamarin.iOS の XIB およびストーリーボード ファイル – ビルド アクション: InterfaceDefinition
- Android の画像と XML レイアウト – ビルド アクション: AndroidResource
- Windows プロジェクトの XAML ファイル – ビルド アクション: Page
- Xamarin.Forms XAML ファイル – ビルド アクション: EmbeddedResource
通常、IDE でファイルの種類が検出され、正しいビルド アクションが提案されます。
大文字小文字の区別
最後に、一部のプラットフォームには大文字と小文字が区別されるファイル システム (iOS や Android など) があるので、一貫性のあるファイルの名前付け標準を使用し、コードで使用するファイル名がファイル システムと正確に一致していることを確認してください。 これは、コードで参照する画像やその他のリソースに関して特に重要なことです。