Xamarin とはWhat is Xamarin?

モバイル アプリの構築は、IDE を起動し、アプリの記述とテストを行い、App Store に公開すれば済んでしまうほど簡単に行えます。すべてが半日で終わります。Building mobile apps can be as easy as opening up the IDE, writing and testing an app, and submitting to an App Store – all done in an afternoon. さもなければ、事前のデザインを正確に行い、ユーザビリティをテストし、何千ものデバイスで QA テストを行い、ベータ ライフサイクルを十分に経て、何通りもの方法で配置することになるでしょう。Or it can be an extremely involved process that involves rigorous up-front design, usability testing, QA testing on thousands of devices, a full beta lifecycle, and then deployment a number of different ways.

このドキュメントでは、Xamarin プラットフォームの概要を説明します。This document introduces the Xamarin platform. モバイル アプリケーションを構築する "プロセス" を設計からテストまで詳しく学習する場合は、「モバイル ソフトウェア開発ライフサイクルの概要」をご覧ください。To learn more about the process of building mobile applications from design through to testing, see Introduction to the Mobile Software Development Lifecycle.

システム要件を参照してご自分のシステムを確認してください。See system requirements to confirm your system.

Xamarin の概要Introduction to Xamarin

Android および iOS アプリケーションの構築方法について検討する場合、多くの人はネイティブ言語、Objective-C、Swift、Java、および Kotlin しか選択肢にないと考えます。When considering how to build Android and iOS applications, many people think that the native languages, Objective-C, Swift, Java, and Kotlin, are the only choice.

Xamarin を使うと、C# で開発することができます。iOS、Android、Windows など、多くのプラットフォーム全体で動作するクラス ライブラリとランタイムを備え、さらに要求の厳しいゲームでも十分なパフォーマンスを発揮するネイティブ (非インタープリター方式) アプリケーションをコンパイルできます。Xamarin allows you develop in C#, with a class library and runtime that works across all many platforms, including iOS, Android, and Windows, while still compiling native (non-interpreted) applications that are performant enough even for demanding games.

Xamarin には、ネイティブ プラットフォームの機能がすべて組み合わされたうえ、次のような独自の強力な機能が多数追加されています。Xamarin combines all of the abilities of the native platforms and adds a number of powerful features of its own, including:

  1. 基になる SDK の完全なバインディング – Xamarin には iOS と Android の両方の基になるプラットフォーム SDK のほぼ全体を対象としたバインディングが含まれています。Complete Binding for the underlying SDKs – Xamarin contains bindings for nearly the entire underlying platform SDKs in both iOS and Android. さらに、これらのバインディングは厳密に型指定されています。つまり、ナビゲーションや使用が簡単で、開発時に堅牢なコンパイル時の型チェックが行われます。Additionally, these bindings are strongly-typed, which means that they’re easy to navigate and use, and provide robust compile-time type checking and during development. これはランタイム エラーの削減とアプリの品質向上につながります。This leads to fewer runtime errors and higher-quality apps.
  2. Objective-C、Java、C、および C++ の相互運用 – Xamarin は Objective-C、Java、C、C++ ライブラリを直接呼び出す機能を提供しているため、既に作成されているサード パーティ製の豊富なコードを使用できます。Objective-C, Java, C, and C++ Interop – Xamarin provides facilities for directly invoking Objective-C, Java, C, and C++ libraries, giving you the power to use a wide array of 3rd party code that has already been created. これにより、Objective-C、Java、C/C++ で記述された既存の iOS および Android のライブラリを活用できるようになります。This lets you take advantage of existing iOS and Android libraries written in Objective-C, Java, or C/C++. さらに、Xamarin は宣言型の構文を使用してネイティブの Objective-C および Java のライブラリを簡単にバインドできるバインド プロジェクトも提供しています。Additionally, Xamarin offers binding projects that allow you to easily bind native Objective-C and Java libraries using a declarative syntax.
  3. 最新の言語構造 – Xamarin アプリケーションは、現代的な言語である C# で記述されています。これには、*動的言語機能や、*Lambda、*LINQ などの "関数コンストラクト"、"*並列プログラミング*" 機能、高度な *ジェネリックなど、Objective-C と Java を超える大幅な改善が含まれています。Modern Language Constructs – Xamarin applications are written in C#, a modern language that includes significant improvements over Objective-C and Java such as *Dynamic Language Features, Functional Constructs such as *Lambdas, *LINQ, Parallel Programming features, sophisticated *Generics, and more.
  4. 卓越した基本クラス ライブラリ (BCL) – Xamarin アプリケーションでは .NET BCL が使用されます。これはクラスの大規模なコレクションで、強力な XML、データベース、シリアル化、IO、文字列、ネットワークのサポートなどの包括的かつ簡素化された機能が含まれています。Amazing Base Class Library (BCL) – Xamarin applications use the .NET BCL, a large collection of classes that have comprehensive and streamlined features such as powerful XML, Database, Serialization, IO, String, and Networking support, and more. 既存の C# コードをコンパイルしてアプリで使用することができます。これにより、何千個ものライブラリにアクセスして、BCL では対応していないことを実行できるようになります。Existing C# code can be compiled for use in an app, which provides access to thousands of libraries that allow you do things that aren’t covered in the BCL.
  5. 最新の統合開発環境 (IDE) – Xamarin では、macOS では Visual Studio for Mac が、Windows では Visual Studio が使用されます。Modern Integrated Development Environment (IDE) – Xamarin uses Visual Studio for Mac on macOS and Visual Studio on Windows. どちらも最新の IDE で、コードのオート コンプリート、高度なプロジェクトとソリューションの管理システム、包括的なプロジェクト テンプレート ライブラリ、統合ソース管理などの機能が含まれます。These are both modern IDEs that include features such as code auto completion, a sophisticated Project and Solution management system, a comprehensive project template library, integrated source control, and many others.
  6. モバイルのクロス プラットフォーム サポート – Xamarin には、iOS、Android、Windows という 3 つの主要なモバイル プラットフォーム向けの高度なクロス プラット フォーム サポートが用意されています。Mobile Cross Platform Support – Xamarin offers sophisticated cross-platform support for the three major mobile platforms of iOS, Android, and Windows. 記述したアプリケーションは最大 90% のコードを共有することができ、Xamarin.Mobile ライブラリでは 3 つのすべてのプラットフォームに共通するリソースにアクセスするための Unified API を提供しています。Applications can be written to share up to 90% of their code, and our Xamarin.Mobile library offers a unified API to access common resources across all three platforms. これにより、特に一般的な 3 つのモバイル プラットフォームを対象とするモバイル開発者の開発コストと市場投入までの時間の両方が大幅に削減されます。This can significantly reduce both development costs and time to market for mobile developers that target the three most popular mobile platforms.

Xamarin には強力で包括的な機能セットがあるため、クロス プラットフォームのモバイル アプリケーションの開発に最新の言語とプラットフォームを使用したいと考えるアプリケーション開発者の要望に応えることができます。Because of Xamarin’s powerful and comprehensive feature set, it fills a void for application developers that want to use a modern language and platform to develop cross-platform mobile applications.

注意

この「作業の開始」のシリーズでは、iOS および Android アプリケーションの構築の開始に焦点を当てます。This Get Started series focuses on getting started building iOS and Android applications. Microsoft は、タブレットおよびデスクトップ用のユニバーサル Windows プラットフォーム (UWP) の開発に関する情報を提供しています。Microsoft offers information about Universal Windows Platform (UWP) development for tablets and desktops. (Windows 用の UWP アプリを含む) Xamarin を使用したクロスプラットフォーム開発の詳細については、「Building Cross-Platform Applications」(クロスプラットフォーム アプリケーションの構築) ガイドを参照してください。To learn more about cross-platform development with Xamarin (including UWP apps for Windows), read the Building Cross-Platform Applications guide.

Xamarin のしくみHow does Xamarin work?

Xamarin は、Xamarin.iOS および Xamarin.Android という 2 つの製品を提供しています。Xamarin offers two commercial products: Xamarin.iOS and Xamarin.Android. どちらも、公開済みの .NET ECMA 規格に基づいたオープン ソース版の .NET Framework である Mono の上に構築されています。They’re both built on top of Mono, an open-source version of the .NET Framework based on the published .NET ECMA standards. Mono は .NET Framework 自体と同じくらい前から存在していて、Linux、Unix、FreeBSD、macOS などの想定されるほぼすべてのプラットフォーム上で実行できます。Mono has been around almost as long as the .NET framework itself, and runs on nearly every imaginable platform including Linux, Unix, FreeBSD, and macOS.

iOS では、Xamarin の Ahead-of-Time (AOT) コンパイラによって Xamarin.iOS アプリケーションが直接ネイティブの ARM アセンブリ コードにコンパイルされます。On iOS, Xamarin’s Ahead-of-Time ( AOT) Compiler compiles Xamarin.iOS applications directly to native ARM assembly code. Android では、Xamarin のコンパイラによって中間言語 (IL) にコンパイルされてから、アプリケーションの起動時にネイティブのアセンブリに Just-in-Time (JIT) コンパイルされます。On Android, Xamarin’s compiler compiles down to Intermediate Language ( IL), which is then Just-in-Time ( JIT) compiled to native assembly when the application launches.

どちらの場合も、Xamarin アプリケーションはランタイムを活用するため、メモリ割り当て、ガベージ コレクション、基になるプラットフォームの相互運用などが自動的に処理されます。In both cases, Xamarin applications utilize a runtime that automatically handles things such as memory allocation, garbage collection, underlying platform interop, etc.

Xamarin.iOS.dll と Mono.Android.dllXamarin.iOS.dll and Mono.Android.dll

Xamarin アプリケーションは、Xamarin モバイル プロファイルとして知られる .NET BCL のサブセットに対して構築されます。Xamarin applications are built against a subset of the .NET BCL known as the Xamarin Mobile Profile. このプロファイルはモバイル アプリケーション専用に作成されており、Xamarin.iOS.dll と Mono.Android.dll (それぞれ iOS と Android 向け) にパッケージ化されています。This profile has been created specifically for mobile applications and packaged in the Xamarin.iOS.dll and Mono.Android.dll (for iOS and Android respectively). これは Silverlight (および Moonlight) アプリケーションが Silverlight/Moonlight .NET プロファイルに対して構築される場合と非常に似ています。This is much like the way Silverlight (and Moonlight) applications are built against the Silverlight/Moonlight .NET Profile. 実際、Xamarin モバイル プロファイルは BCL クラス群が追加されている Silverlight 4.0 プロファイルと同等です。In fact, the Xamarin Mobile profile is equivalent to the Silverlight 4.0 profile with a bunch of BCL classes added back in.

使用可能なアセンブリとクラスの完全な一覧については、「Xamarin.iOS アセンブリ一覧」と「Xamarin.Android アセンブリ一覧」を参照してくださいFor a full list of available assemblies and classes, see the Xamarin.iOS Assembly List and the Xamarin.Android Assembly List

これらの .dll には、BCL に加えて、基になる SDK API を C# から直接呼び出せるようにする iOS SDK と Android SDK のほぼすべてに対するラッパーが含まれています。In addition to the BCL, these .dlls include wrappers for nearly the entire iOS SDK and Android SDK that allows the underlying SDK APIs to be invoked directly from C#.

アプリケーションの出力Application output

Xamarin アプリケーションがコンパイルされると、iOS には .app ファイルの、Android には .apk ファイルのアプリケーション パッケージが生成されます。When Xamarin applications are compiled, the result is an Application Package, either an .app file in iOS, or .apk file in Android. これらのファイルはプラットフォームの既定の IDE で構築されたアプリケーション パッケージと区別がつかず、まったく同じ方法で展開することができます。These files are indistinguishable from application packages built with the platform's default IDEs and are deployable in the exact same way.

次の手順Next steps

Xamarin の動作方法についてある程度わかったので、次に以下のガイドのいずれかを使用してアプリの構築を開始します。Now you've learned a little about how Xamarin works, the next step is to start building an app using one of these guides: