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はオープンソース!
地味に嬉しいのが、Xamarinはオープンソースなんです!上記リンクでXamarinのソースコード全てが公表されています。「このクラス内部で何やってるの?」みたいな時には結構重宝するんですよね!
まとめ
ゆる~い紹介でしたがXamarinどうでしたでしょうか?
重ね重ねですが、WPFの知識がある人はXamarinはかなりお勧めですよ!
私は自称CSharperなのでXamarin大好きです!むしろ「もう少しiOSとAndroidの勉強しろ!」とか思いながらXamarinが便利すぎて、Xamarinでアプリ開発してます^^
もし興味がある方はVisualStudioで簡単に始められるのでXamarin始めてみませんか?