以下理由。
- ネイティブUIを多く使う場合は共通化出来るコードがあまりない。
- UI関係ない所を精査したらほぼ通信処理だけだった。
- ネイティブに依拠しないlibgdxのようなものを挟んでれば話は別だろうけど。
- イベントハンドラは共通化出来ない。ネイティブUIに依拠するから。
- ビジネスロジックの実装は全てサーバサイド。クライアントはあくまでGUI操作。
- SwiftもObjective-Cも最低限のことは分かるので、事実ネイティブで書ける。
- CocoaPodsに抱かれているのでサードパーティ製ライブラリを使うのがめんどい。
スマホのネイティブアプリのプログラミングって、GUIに対する振る舞いを規定するコードが8割ぐらいを占めている。GUIの振るまいというのはこういうやつのこと。
ゲーム開発においては上記のAndroidとiOSで共通化が進んでいるようだけど、ネイティブUI前提のアプリの場合は各々ネイティブでやったほうが楽じゃねって気がした。Titanium Moblieはその辺が共通UIとなっているみたいなんだけど、どうなんだろう。
MMOやゲームは通信部分が死ねると思うけど、僕の作るアプリにおいては、通信部分は有名なライブラリを使ってAPI叩いてレスポンスのJSONをレンダリングするか、時々そのJSONのフォーマットや特定の値によってビジネスロジックが発動する程度なんだよね... それに、CoreData使ってるし。全部JSONに置き換えても別に困らないデータ量だけどさ。
ワンソースにできるメリットはGUIプログラミングの工数が減らなければ享受できないと判断し、本件はクローズであります。