ちょっと話題の記事

Xamarin入門 – 特徴とインストール、サンプルアプリケーションについて

2014.04.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

t.hondaです。現在はスマホ関連の作業のお手伝いをしております。

スマホ関連のお話として、今回はXamarinについてと特徴、インストール手順
サンプルアプリケーションの実行と構成について書きたいと思います。

Xamarinについてと特徴

Xamarinとは、iOSとAndroid向けにクロスプラットフォームの
ネイティブアプリを開発できる開発環境で、以下のような特徴を持ちます。

1.C#で記述。
2.UIやデバイス周り等はiOS、Androidでソースを分ける。
ビジネスロジックは共通。
3.ネイティブアプリを作成できる。
4.「Mono」という.Netランタイム上で動く。
このため、メモリ管理などが楽。

これらについて、少し説明していきます。

1.C#で記述。

C#については、興味ある方はMicrosoftのページなどを参考にしてください。
C#という言語の仕様と、後述する「Mono」という.Netランタイムの仕組みにより
メモリ管理やデータの扱いなどが非常に楽にでき、ソースの生産性が高いと言えます。

2.UIやデバイス周り等はiOS、Androidでソースを分ける。
ビジネスロジックは共通。

iOS、AndoroidのOSに依存するUIやデバイス等の処理についてはソースを分け、
逆にOSに依存しないビジネスロジック等についてはソースを共通化します。

このXamarinのアーキテクチャ上の特徴については、公式ページの以下の図
及びその下の説明が一番良く表していると思います。
about_xamarin_1
※https://xamarin.com/getting-started/android より引用

見ての通り、Xamarinで作成したアプリケーションは複数のレイヤーから構成されます。

各レイヤーについては、公式ページの説明もとに纏めてみました。
(簡単な英文で書かれているので、原文を見たほうが分かり易いかもです(汗))

・User Interface
図を見ての通り、iOS、Android向けに、それぞれ別個にレイヤーを実装します。
User Interface層には、スクリーンやコントロール、プレゼンテーションに関するソースを
実装します。

・App Layer
User Interface層と、Business層をつなぐ為の処理を実装します。

・Bussiness Layer
ビジネスロジックを主に実装します。

・Data Access Layer
他のシステムでもある、データにアクセスするための層です。

・Data Layer
データに対する低レベルな処理を行う層です。
ただしデータをサーバ上に保存するアプリケーションでは、この層は無いかもしれません。

3.ネイティブアプリを作成できる。

Xamarinで作成したアプリは、コンパイルしてネイティブアプリとすることができます。
このため、パフォーマンスに優れたアプリケーションを作成することができます。

4.「Mono」という.Netランタイム上で動く。
このため、メモリ管理などが楽。

上記のC#の項で説明した通りです。

5.ここまでのまとめ

ここまで書いた特徴から、Xamarinは
・iOS、Androidの両方を対象としたアプリケーションを作りたい
・パフォーマンスやUIの操作性を考慮し、ネイティブアプリとして作りたい
・.NETフレームワークの仕組みを使い、生産性を高くしたい
といった場合に、使用を検討してもいいかと思います。

Xamarinのインストール

Windows7にてインストールを行ったのですが、非常に簡単です。
ですが、私の場合はイントール待ち時間が結構長かったです。

以下、Windowsでの手順です。

1.Xamarinの公式ページに行き、
右の[Download Now]をクリックする。

2.右側の[Tell us a bit about yourself]欄に
Full Name、Email、Companyを入れ、[Download Xamarin for Windows]
をクリックする。

3.ダウンロードした[XamarinInstaller.exe]を実行する。

4.手順は以上だが、時間が掛かるので、しばらく待つ。
 (・・・ installing・・・というようなダイアログが出続ける。フリーズしているように思えた・・・。)

サンプルアプリケーションの実行と構成

サンプルアプリケーションの実行

Xamarinの公式ページを見ると、サンプルアプリケーションがあります。
公式ページにも実行手順は載っているのですが、分かり難い部分もあったので、ここにも載せておきます。

1.[Download Tasky]ボタンを押下し、サンプルアプリをダウンロードする。

2.任意のフォルダにzipを解凍する。

3.Xamarin Studioを起動する。

4.[ファイル]-[開く]を押下する。

5.解凍したフォルダ内の[TaskyAndroid_Starter.sln]を選択し、[Open]を押下する。

6.左上の実行ボタンを押下する。
about_xamarin_2-1

7.[Select Device]ダイアログで、エミュレータを選択し、[Start Emulator]を押下する。
about_xamarin_3

8.エミュレータが別ウィンドウで起動し、[select Device]ダイアログにて選択したデバイスが 選択可となったら、選択して[OK]を押下する。
about_xamarin_4

9.(今回選んだデバイスの場合)ロックを解除すると、サンプルアプリの画面がでる。
about_xamarin_5
about_xamarin_6

以上で実行できるかと思います。

サンプルアプリケーションの構成

このサンプルアプリケーションは、以下のようなフォルダ構成となっています。

├─Android_Starter
│ ├─Tasky.Core(フォルダ)
│ └─TaskyAndroid(フォルダ)
│ └─TaskyAndroid_Starter.sln

├─iOS_Starter
│ ├─Tasky.Core(フォルダ)
│ └─TaskyiOS(フォルダ)
│ └─TaskyiOS_Starter.sln

iOS、Android向けに、それぞれフォルダが完全に別れ
それぞれのフォルダ内にソリューション(.sln)が配置されています。

ソリューション(.sln)というのは、.NETにてアプリケーションのソースを纏める
最上位単位です。

それぞれのソリューションの中に、共通して[Tasky.Core]が存在します。
このフォルダ内には、OSに依存しない処理(Bussiness Layer, Data Access Layer, Data Layer)
を実装します

一方、iOS、Androidで個別に持つ[TaskyiOS][TaskyAndroid]には
OSに依存する処理(User Interface, App Layer)を実装します。

なお、上記のフォルダ構成には載せてませんが
Tasky.Core(フォルダ)、TaskyAndroid(フォルダ)、TaskyiOS(フォルダ)の中には
それぞれプロジェクト(.proj)が配置されています。
(つまり通常の.NETアプリケーションと同じ構成となる)

まとめ

以上のように、Xamarinは
・.NETを使い
・ネイティブアプリをクロスプラットフォームで
・OSに依存する部分は別個に実装
と、今までにない特徴を持った開発環境と言えると思います。