Android と iOS でどの程度コードを共通にできるのか?


先日、知人から、Android、iOS 開発の案件をいただいた。

Android 用のデモバージョンがあったのだが、ある機能をライブラリ化したいということだった。その後、iOS 版も作ることになった。

Android 版の構成は、エンジン部分が C++ で書かれており、そのライブラリを コンパイルしてネイティブコードにしたもの(shared object)を、JNI (Java Native Interface) を使って java から呼び出すという構成になっていた。

これを iOS に持っていくのは大変なのか?と思ったが、C++ で書かれたエンジン部分は、色々調整はしたものの、基本的には xcode に C++ のソースコードを登録するだけでよかった。iOS はネイティブコードなので、コンパイル、リンクできればよいのだろう。

複雑なロジックを Android/iOS 両方で使う時は、Android 用に java コードを、iOS 用に swift コードを用意するのかな、と思っていたが、共通の部分を C/C++ で作っておくと、どちらにも対応できて嬉しいのではないだろうか。私は、C/C++のロジックは、PC上で簡単に検証できるのも嬉しい点だと思う。

そろそろ、C や C++ は使わなくてよくなったのかと思っていたが、スマートフォンアプリで使う場面があったのが、少し意外だったので投稿することとした。


自分は、これまで、サーバ側の構築が主だったが、スマートフォンアプリも作ってみたいと思っていた。ネイティブで開発する場合に備えて swift を、WEB で対応する場合に備えて cordova や vue.js のドキュメントを流し読みしたり、試したりしていたので、少しは予備知識があった。そのため、受託できてよかった・・・