私はC#案件に配属されることが多く、『Xamarin』はその中で知った技術になります。

 

個人的に興味があり、その旨経歴書等に記載していたところ

『Xamarin』の案件のご紹介を受けることが出来ました。

 

まだまだ新しい技術であり、参考書も数少ない状況ですが

業務を通して得られた知識など共有できればと思います。

 

個人的にわかりやすいように書いていきます。

1.Xamarinの成り立ち

成り立ちに関しては関係者の方が綴られていますので、詳細は省きますが、

Windowsでしか動かないMicrosoftの製品がOSSであるLinuxでも動かそう、と考えた人達が

すったもんだした後に出来ました。

 

当初は『Xamarin Studio』という有料の開発環境でしたが、

つい最近Microsoftに買収され、現在は『Visual Studio』の一機能として

『Xamarin』が組み込まれている状態になります。

 

『Visual Studio』自体はCommunityという無料のライセンスがあるので、

現在は『Xamarin』も無償で使用することができます。

 

『Xamarin』を使うことでC#によるアプリ開発ができます。(後述)

 

ご興味のある方は下記リンクもどうぞ。

2.クロスプラットフォーム開発とは

簡単に言うと異なるOS上でも動くようなプログラム(アプリ)を開発しよう!ってことです。

 

身近な例で言えば、オンラインゲームのほとんどは

Windowsでは動きますが、Mac(iOS)では動きません。

 

GooglePlayに存在するアプリのほとんどは

Androidでは動きますが、Windowsでは動きません。

 

AppStoreに存在するアプリのいくつか(iOSユーザーではないので曖昧です)は

iPhone/iPad/iPodでは動きますが、Macでは動きません。

 

GooglePlayとAppStoreに存在するアプリは

ほとんど同じものですが、厳密には違います。

 

GooglePlayに存在するアプリはJavaで作られており、

AppStoreに存在するアプリはObjective-CまたはSwiftで作られています。

 

GooglePlay/AppStoreの両方に存在するアプリは、

異なる言語でそれぞれ開発されています。

 

それ、何とか一つの言語で開発できないの?

というのがクロスプラットフォーム開発の目的です。

 

細かいところはリンクにしちゃいます。

3.Xamarinとは

『Xamarin』はクロスプラットフォーム開発技術の中でも、

C#だけでAndroid/iPhone(iPad)/Windows(WindowsPhone)の

アプリを作ることができる技術です。

 

綺麗な説明はリンクにします。

 

細かく言うと『Xamarin』にはさらにもう二つの技術があります。

3-1.Xamarin.Forms

ロジックをC#で開発し、画面をXAMLで製造します。

 

ちょっと詳しく説明すると、ロジック側でOS固有の機能を呼び出す際は

固有の機能に実行させる処理のインターフェースを作成し、

各OSのプロジェクトでインターフェースを実装します。

 

インターフェースを実装する際の言語はC#になります。

これまでJavaやObjective-C/Swiftで書いていたAPIを

C#のライブラリで呼び出すという感じですね。

 

インターフェースを実装した処理は

共通プロジェクト(共有ロジック部分:PCL)側で

DependencyServiceクラスを利用して呼び出されます。

 

細かいところまで書いてしまいましたが、

すべてC#の技術で開発できるのがFormsの特徴です。

 

ただし、各OSでの処理の流れなどを踏まえないといけないので、

AndroidやiOSのアプリ開発技術を全く知らなくていいかというと

そうではありません。

 

現在(2018年2月時点)私が参画している案件はFormsによる開発になります。

 

3-2.Xamarin.Native

Xamarin.Androidとか、Xamarin.iOSって調べて出てくるのがこちらです。

ロジックをC#で開発し、画面をNative言語で記載します。

Androidならxml、iPhoneならStoryBoard。

 

あまり詳しくは触れませんが、画面をネイティブで作成できるので、

これまで通りのAndroidらしい、iPhoneらしい画面を作成できます。

 ※画面側を共通にする(Forms)ことで制約が発生する可能性もあるため。

 

AndoroidやiPhoneのアプリ開発に必要な技術が必要です。

 

ネットを利用して情報を探される際には

Xamarin.FormsかXamarin.Nativeで調べることで

効率が大きく変わってきますので、ご注意ください。

 

4.【おまけ】C#の市場動向

個人的にはVBからC#へのリプレイスが結構多いかなってイメージです。

『VisualStudio』をはじめ、『Unity』等も利用して

C#でゲーム開発をされているところもあるようで。

 

シェアとしてはまだまだ少ない現状ですが、

Microsoftが推していることもあってか今後増えてくるんじゃないかと。

 

JavaからC#に移行するとJavaに戻りたいとは思えなくなるのも特徴です。

 

参考リンク

スポンサーリンク