ちょっと勉強会でクロスプラットフォーム開発の話を聞いてきたので、ポイントをまとめてみる。
私はC#にかなり慣れているのでまずXamarinで一度作ったことがある。WCFも使えたので共通コード部分はかなり書きやすかった印象がある。
しかし一般的にはXamarinは第一選択肢とは言いがたいようだ。
Xamarinを選ぶのは次のどちらかが狙いの場合。
・ネイティブのコントロールやネイティブそのものに近いソースコードをガリガリ書きたい
・C#と.NETが使いたい
Xamarinはネイティブ重視という特徴から、手軽さも低いしコードの共通化率もさほど高くならない、という欠点がどうしてもあるらしい。
UI共通化のXamarin.Formsもネイティブ重視の考え方なので使いづらいようだ。「Android/iOS/Windowsのすべてのネイティブに存在するコントロールだけが使える」という最大公約数の発想なのが理由。例えば、チェックボックスはiOSにないから使えないとのこと。
とにかく手軽にコードを共通化して書きたいならCordova+UIフレームワーク(OnsenUIとか)という選択肢が第一に浮上してくるようだ。
とりあえずC#使いたいからXamarinというのはちょっと安易であって、プロジェクトの事情に応じて選択する必要があるなあと感じた。