Xamarin.Forms の概要

Screenshots of example Xamarin.Forms application in iOS and Android

Xamarin.Forms は、オープンソースの UI フレームワークです。 Xamarin.Forms を使用すると、開発者は 1 つの共有コードベースから Xamarin.Android、Xamarin.iOS、Windows のアプリケーションを作成できます。

Xamarin.Forms を使用すると、開発者は C# でコードビハインドを使用して、ユーザー インターフェイスを XAML で作成できます。 これらのインターフェイスは、各プラットフォームでパフォーマンスの高いネイティブ コントロールとしてレンダリングされます。

Xamarin.Forms の対象者

Xamarin.Forms は、次のような目標を持つ開発者を対象としています。

  • プラットフォーム間で UI のレイアウトと設計を共有する。
  • プラットフォーム間でコード、テスト、ビジネス ロジックを共有する。
  • Visual Studio を使用して C# でクロスプラットフォーム アプリを作成する。

Xamarin.Forms の動作のしくみ

Xamarin.Forms architecture diagram

Xamarin.Forms では、複数のプラットフォーム間にわたる UI 要素を作成するための一貫した API が用意されています。 この API は、XAML または C# のいずれかで実装でき、Model-View-ViewModel (MVVM) などのパターンのデータバインドがサポートされています。

Xamarin.Forms ではプラットフォーム レンダラーを利用して、実行時に、クロスプラットフォームの UI 要素が Xamarin.Android、Xamarin.iOS、UWP のネイティブ コントロールに変換されます。 これにより開発者は、プラットフォーム間でのコード共有の恩恵を受けながら、ネイティブなルック アンド フィールとパフォーマンスを得ることができます。

Xamarin.Forms アプリケーションは、通常、.NET Standard の共有ライブラリと個々のプラットフォーム プロジェクトで構成されます。 共有ライブラリには、XAML また C# ビュー、およびサービス、モデル、またはその他のコードなどのビジネス ロジックが含まれています。 プラットフォーム プロジェクトには、アプリケーションが必要とするプラットフォーム固有のロジックまたはパッケージが含まれています。

Xamarin.Forms では Xamarin プラットフォームを使用して、複数のプラットフォームにわたってネイティブに .NET アプリケーションが実行されます。 Xamarin プラットフォームの詳細については、「Xamarin とは」を参照してください。

その他の機能

Xamarin.Forms には、さまざまな機能をアプリケーションに追加するライブラリの大規模なエコシステムがあります。 このセクションでは、この追加機能の一部を説明します。

Xamarin.Essentials

Xamarin.Essentials は、ネイティブ デバイスの機能にクロスプラットフォーム API を提供するライブラリです。 Xamarin 自体と同様に、Xamarin.Essentials は、ネイティブ ユーティリティへのアクセス プロセスを簡略化する抽象化です。 以下に、Xamarin.Essentials で提供されているユーティリティの例をいくつか示します。

  • デバイス情報
  • ファイル システム
  • 加速度計
  • ダイヤラー
  • 音声合成
  • 画面のロック

詳細については、「Xamarin.Essentials」を参照してください。

Shell

Xamarin.Forms シェルでは、ほとんどのアプリケーションが必要としている基本機能を提供することで、モバイル アプリケーション開発の複雑さが軽減されます。 シェルで提供される機能の例としては、次のようなものがあります。

  • 共通のナビゲーション エクスペリエンス
  • URI ベースのナビゲーション スキーム
  • 統合された検索ハンドラー

詳細については、「Xamarin.Forms のシェル」を参照してください。

プラットフォーム固有設定

Xamarin.Forms には、複数のプラットフォームにわたってネイティブ コントロールをレンダリングする共通 API が用意されていますが、特定のプラットフォームに、その他のプラットフォームには存在しない機能がある場合があります。 たとえば、Android プラットフォームには ListView で高速スクロール用のネイティブ機能がありますが、iOS にはありません。 Xamarin.Forms プラットフォーム固有設定により、カスタムのレンダラーやエフェクトを作成しなくても、特定のプラットフォームでのみ使用できる機能を利用できます。

Xamarin.Forms には、さまざまなプラットフォーム固有設定の機能に向けた、事前構築済みのソリューションが含まれています。 詳細については次を参照してください:

素材のビジュアル

Xamarin.Forms の素材のビジュアルは、素材のデザイン ルールを Xamarin.Forms アプリケーションに適用するために使用されます。 Xamarin.Forms の素材のビジュアルでは、ビジュアル プロパティを使用して、カスタム レンダラーを UI に選択的に適用します。これによりアプリケーションが、iOS と Android 間で一貫性のあるルック アンド フィールになります。

詳細については、「Xamarin.Forms の素材のビジュアル」を参照してください