Avatar
2010年頃からObjective-C、Swiftは1.3頃からSwift3.xくらいまでいじってるiOSメインのエンジニアです。 ここ最近業務で割とガッツリXamarin.iOSを使ったので感想書いてみます。 Xcode + SwiftとXamarin.iOSを比較してのよかったこと、よくなかったこと、どっちもどっちなこと、的な感じで。 (プロジェクトでは、Xcode8とXamarin 7.1を主に利用していました) ではさっそく。 よかったこと
  • C#のおかげでSwiftの破壊的なアップデートに巻き込まれない。Xcode9へのアップデートもシンタックスは変更なしでOK
  • C#がデフォルトで備えてるLINQが強力
  • Visual Studioのビルドが速い
  • Visual Studioが安定してる(なんならXcodeよりSimulatorの立ち上がる安定感が上)
  • コード補完も速い
  • パッケージマネージャのNugetがCocoaPodsと比べてだいぶ安定している気がする Xamarinを採用したことでこまった、もしくは困りそうなこと
  • 現時点で複数バージョンのXamarinを共存させることができないようなので、いわゆる「デッキ」が組めない(Xcode_8.3.3.app、Xcode_9.2.0.appといった名前で複数バージョンの開発環境を保持するアレ。Xamarin.iOSは1対1でXcodeの指定バージョンと紐づいてしまうので、古いバージョンに戻したい場合は古いVisual Studioのインストーラを取っておいて、Visual Studioのアンインストール&インストールしなおしが必要だった)
  • バージョンアップするなら一気にアップデートしないといけないので、受託などで複数案件を掛け持つ場合は厳しそう)
  • Nugetに対応していない広告SDKなどを自力でバインディングするのはそこそこパワーが要る
  • C#のバージョンが古くNull safeに書くのが困難(Objectは全てオプショナルのようなものなのだがnullに触ると死ぬので、?を多様してクラッシュを避ける感じ)
  • インストール容量40GBがMac SSDに厳しい XamarinもXcodeもどっちもどっちなところ
  • iOS SDKのメジャーバージョンアップでちょこちょこ振る舞いが変わるのはどちらも同じ
  • エディタはどちらもところどころ使いづらい。特にMacのVisual Studioエディタは日本語入力が結構つらい。自動保存のたびにBOMが増え続ける不具合などもあった という感じです。
で、アリなの?というところですが、エンジニアの裁量が大きい組織であれば「アリ」だと思います。 思いのほか安定していて普通に業務に耐えうる品質です。コード補完が速い、ビルドが速い、だけでも十分価値があって、Xcodeのプロダクトと複数保守しているとついついXamarin側をいじりたくなるくらい快適でした。リリースしたアプリも99.8%くらいのクラッシュフリーで動いてますし、内部的にはRubymotionなどと同じでネイティブなコンポーネントが使われています。 あまり使っている方はいらっしゃらないかもですが、何かのご参考になれば幸いですー
🙏 4
👍 1
6:01 PM
あーあと async/await で非同期処理が書けるのもよかったですね。swiftにも入るそうですが、あれは良いものでした。