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

個人的に興味があり、その旨経歴書等に記載していたところ『Xamarin』の案件のご紹介を受けることが出来ました。

まだまだ新しい技術であり、参考書も数少ない状況ですが業務を通して得られた知識など共有できればと思います。

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

Xamarinの成り立ち

成り立ちに関しては関係者の方が綴られていますので、詳細は省きますが、Windowsでしか動かないMicrosoftの製品がOSSであるLinuxでも動かそう、と考えた人達がすったもんだした後に出来ました。

当初は『Xamarin Studio』という有料の開発環境でしたが、つい最近Microsoftに買収され、現在は『Visual Studio』の一機能として『Xamarin』が組み込まれている状態になります。

『Visual Studio』自体はCommunityという無料のライセンスがあるので、現在は『Xamarin』も無償で使用することができます。

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

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

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

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

身近な例で言えば、オンラインゲームのほとんどはWindowsでは動きますが、Mac(iOS)では動きません。

GooglePlayに存在するアプリはAndroidで動きますが、Windowsでは動きません。

AppStoreに存在するアプリはiPhone/iPad/iPodで動きますが、Macでは動きません。

GooglePlayとAppStoreに存在するアプリはほとんど同じものですが、厳密には違います。

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

GooglePlay/AppStoreの両方に存在するアプリは、異なる言語でそれぞれ開発されていることがほとんどです。

それ、何とか一つの言語で開発できないの?というのがクロスプラットフォーム開発の目的です。

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

Xamarinとは

『Xamarin』はクロスプラットフォーム開発技術の中でも、C#だけでAndroid/iPhone(iPad)/Windows(WindowsPhone)のアプリを作ることができる技術です。

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

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

Xamarin.Forms

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

ちょっと詳しく説明すると、ロジック側でOS固有の機能を呼び出す際は固有の機能に実行させる処理のインターフェースを作成し、各OSのプロジェクトでインターフェースを実装します。

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

これまでJavaやObjective-C/Swiftで書いていたAPIをC#のライブラリで呼び出すという感じですね。

インターフェースを実装した処理は共通プロジェクト(共有ロジック部分:PCL)側でDependencyServiceクラスを利用して呼び出されます。

細かいところまで書いてしまいましたが、すべてC#の技術で開発できるのがFormsの特徴です。

ただし、各OSでの処理の流れなどを踏まえないといけないので、AndroidやiOSのアプリ開発技術を全く知らなくていいかというとそうではありません。

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

Xamarin.Native

Xamarin.Androidとか、Xamarin.iOSって調べて出てくるのがこちらです。ロジックをC#で開発し、画面をNative言語で記載します。

Androidならxml、iPhoneならStoryBoard。

あまり詳しくは触れませんが、画面をネイティブで作成できるので、これまで通りのAndroidらしい、iPhoneらしい画面を作成できます。

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

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

ネットを利用して情報を探される際にはXamarin.FormsかXamarin.Nativeで調べることで効率が大きく変わってきますので、ご注意ください。

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

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

『VisualStudio』をはじめ、『Unity』等も利用してC#でゲーム開発をされているところもあるようで。

シェアとしてはまだまだ少ない現状ですが、Microsoftが推していることもあってか今後増えてくるんじゃないかと。

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

参考リンク

以上です。

スポンサーリンク