マルチプラットフォーム開発で不安になるのは、AppleのAppStoreで本当に審査が通るのかということです。
特にNativeScriptは実例に乏しく、これで作ったアプリがちゃんと審査に通るかはかなりの懸念事項となります。
弊社は一般公開しないクライアント様向けのマルチプラットフォームアプリの開発環境としてNativeScriptを利用していますが、ストア申請を伴う案件があり事前に調査をした事があります。
その昔、Adobe FLASHを使ったアプリはAppStoreには登録できないとアップル社が公言したというのが話題になったのは皆さん記憶にあると思います。
アップル側の主張としては、iOSでは仮想マシンで動くアプリは許可しないというものでしたが、今その手の単語で検索しても、仮想通貨は使ってはいけませんといったものばかり引っかかって、仮想マシンが云々なんてのはひっかかりません。
方針が変わったのか、ネットは広大なのでどこかに埋もれてしまったのか・・・。
その頃の記憶がある開発者としては、UIWebViewもしくはWKWebViewを利用するhtml5系のアプリなら大丈夫だろうとは思えても、単体のJavaScript実行エンジンを利用している点で、NativeScriptは仮想マシン上で動くとみなされる恐れから逃れる事はできません。
それを言い出したら、XamarinだってUnityだってmonoで動いてるじゃなんとなるので、じゃあ大丈夫かとも思うのですが、それは「後ろの車も速度超過してたじゃんおまわりさん! なんで先頭の俺だけ!」ってごねてるのと同じレベルなので安心はできません。
まず、NativeScriptの審査通過事例としては、公式のデモアプリがあります。
これだけ見て、じゃあ大丈夫だと言えるほどには世の中は簡単にGOが降りないのです。
ここで、NativeScriptの公式ドキュメントの解説を見てみることにしました。
http://developer.telerik.com/featured/nativescript-works/
Everything starts with JavaScript virtual machines, as they’re what NativeScript uses to execute JavaScript commands.
うん、めっちゃ仮想マシンって言い切ってますね。大丈夫なのか。
さらに読んでいくと、
NativeScript uses V8 on Android and JavaScriptCore on iOS.
iOSはJavaScriptCoreとな?
実はこれ、公式で用意されているJavaScript実行エンジンなんですね。
https://developer.apple.com/library/tvos/documentation/Carbon/Reference/WebKit_JavaScriptCore_Ref/index.html
つまり、NativeScriptは公式に用意されているframeworkを用いてJavaScriptを動かしてるに過ぎませんというスタンスで、確かにこれなら独自の仮想マシンではないため、アップルもケチがつけられません。
詳しい動作原理は上記の公式解説サイトに書いてあるので目を通すとなかなか良く出来ている事がわかります。
さて、結論ですが、弊社の作成したNativeScriptアプリは、無事AppStoreの審査を通りました。
皆さん、どんどんNativeScriptでアプリを作って、少ない手間でiOS版とAndroid版の両展開でウハウハになりましょう!