質問: アプリ開発がしたいと考えています。そこで現在c#でザマリンを用いればAndroid & ios のアプリ開発やwebアプリケーション、unityなどに対応できようですが、この時swift やkotlinなどのどちらかのosにしか対応できない言語の存在価値があるのでしょうか? どう考えてもc#を使わない意味がないと思うのですが、なにかswiftやkotlin を使うメリットなどがあればご教授ください。(cookpadはswiftっぽい)
回答: C#・Xamarinには大きく分けてXamarin NativeとXamarin Formsのふたつがあります。 Xamarin NativeはAndroidのActivity、iOSのViewControllerを.NETで扱えるようにしたラッパーです。 使用するAPIはAndroid・iOSのものなので、各APIを知っている必要がありますし画面はそれぞれ作らなくてはなりません。 共通化できるのはビジネスロジックとUIの言語部分のみ(C#で書けるということ)となります。 Xamarin FormsはXamarinでAndroid・iOS共通の画面を作れるというものです。 こちらはUIまで共通化できますが、その反面Android・iOSの個別の機能は使えません。 C#・XamarinのメリットはやはりAndroid・iOSで共通化できる点です。 デメリットとしてはxaml自体の使い勝手ですかね・・・少し癖があるので。 swift・kotlinに比べて情報量がだいぶ少ないのもハマったときなどに辛いかもしれません。 あと、サードパーティー製のライブラリが使いにくい場合があるようです。 また、Xamarin Formsでは機能に制限があり、Xamarin Nativeでは各プラットフォームのAPIを使わなくてはならないので、それならswift・kotlinで書くのとと大差ないとなるかもしれません。 そもそもC#とkotlinは同じJavaを意識して作られた言語ですし、swiftもモダンなオブジェクト指向言語という点で共通しているので、C#が書ければswift・kotlinを覚えるのは苦にはならないとも思います。