Xamarin

Xamarin紹介

Xamarinとは?

Xamarinとは「iOSとAndroidとWindowsPhone…」いや、「iOSとAndroidを一つのソースコードで作ってしまおう!」という試みの開発環境です。本当はMacのアプリなんかも作れます。今回は携帯アプリ開発カテゴリなのでiOSとAndroidだけで紹介しました。

2016年2月24日にMicrosoftに買収されてから、VisualStudioにも標準装備されることとなりました。つまり、個人開発者ならVisualStudioは無償…Xamarinについても無償で使用することができます!

必要知識

  • C#(.Net Framework)
  • XAML

この2点なのがかなり嬉しい!もちろん複雑なことをしようとするとiOSやAndroidの知識も必要にはなりますが、その時々に調べて解決できることも多いです。

WPFを触ったことがある人が携帯アプリ開発をしようと思うならXamarinでの開発が個人的にはおすすめです!(もちろんXAMLに使用するクラスなどは変わってきますよ~)

WPFでWindowsアプリ開発、そのModel・ViewModel部分を共通化させて、ViewをXamarinで開発するなんて手法も使えますよ!(MVVMの詳細は後に説明します)

XAMLに関してはそこまで勉強コストは高くないのでC#(.Net Framework)が分かっている人なら比較的楽に開発できると思います。

Xamarinの種類

Xamarin.Forms

これが今まで説明してきたiOSとAndroidのクロスプラットフォーム開発です。

Xamarin.Formsライブラリを使うことでiOSとAndroidを同じC#で開発できます。MVVMで開発することになるのでMVVMを知らない人はそちらの勉強もしておくことをお勧めします!

「一つのコードでiOSとAndroid両方を作れるなんて作業効率が2倍だ~!」…と言われればそうともいえますが、カメラの起動、フォトライブラリからの画像の選択など、OS依存の処理をさせる場合は少しだけコードが面倒になります。なので、単純に2倍ということにはなりませんが、iOS・Android両方作るなら個人的にはお勧めですよ^^

Xamarin.iOS

Xamarin.iOSを使えばC#でiOSアプリが作れます。とはいえiOSアプリのみを作りたいのならSwiftかObjective-Cあたりを勉強してiOSネイティブの開発をした方が良いかと^^

「どうしてもC#で書きたい」「C#のコードを流用したい(WPFとか)」人はこの選択肢もありだとは思います。

Xamarin.Android

上記のAndroid版。C#でAndroidアプリが作れます。とはいえAndroidアプリのみを作りたいのならJavaかKotlinあたりを勉強してAndroidネイティブの開発をした方が良いかと^^

「どうしてもC#で書きたい」「C#のコードを流用したい(WPFとか)」人はこの選択肢もありだとは思います。

Xamarin.Mac

これはMac用アプリをC#で作るためのライブラリです。まぁ…このカテゴリは携帯アプリ開発なので詳細は割愛します…というか使ったことがない~ToT

MVVMで開発

開発モデルにはMVVM(Model-View-ViewModel)を使用します。MVC(Model-View-Controller)などではないのでご注意を!特にiOSやAndroidの開発をネイティブでやってきた人はMVCで開発している人が多いでしょうからMVVMの感覚に慣れるまで少し時間がかかるかもしれません。

MVVMとは開発していく上でのコードをModel部・View部・ViewModel部の3つに分けたものです。ざっくりと説明すると…

Viewが画面に表示する方法を記述したコード(XAMLも含める)。
ViewModelはViewに値をバインディングするために存在するコード。
Modelはアプリ内の計算など外部APIなどとやり取りを行うコード。

という感じですね。View->ViewModel->Modelという流れで参照します。ただ一つ注意点なのは、ViewModelの値をViewが参照する時にバインディングという概念を用いていること。バインディングは慣れればすごく便利なものなんですが、慣れていない人には少し時間がかかるかもしれません。

基本的にModelはViewModelを参照しませんし、ViewModelはViewを参照しません。でも、実際ViewModelからViewを操作したい時もあるもの(アラートを出すとか、画面遷移をしたいとか)…そういう場合は色々な解決方法があるのですが、私はあまり外部ライブラリを使わない方針なのでMessengerパターンという方式で解決しています。まぁ…ここらへんはのちの投稿で書いていきます^^

Xamarinはオープンソース!

https://xamarin.github.io

地味に嬉しいのが、Xamarinはオープンソースなんです!上記リンクでXamarinのソースコード全てが公表されています。「このクラス内部で何やってるの?」みたいな時には結構重宝するんですよね!

まとめ

ゆる~い紹介でしたがXamarinどうでしたでしょうか?

重ね重ねですが、WPFの知識がある人はXamarinはかなりお勧めですよ!

私は自称CSharperなのでXamarin大好きです!むしろ「もう少しiOSとAndroidの勉強しろ!」とか思いながらXamarinが便利すぎて、Xamarinでアプリ開発してます^^

もし興味がある方はVisualStudioで簡単に始められるのでXamarin始めてみませんか?

良かったらコメントしてね!