イマドキのスマホアプリ開発フレームワークをまとめてみた


はじめに

スマホ向けにアプリを開発するとなるとやはり二大OSである
Android、iOS両方に向けてリリースをすることが前提になると思います。

そしてAndroidであればGoogleによるSDKを使ってJavaやKotlinでの開発、
iOSであればAppleによるSDKを使ってSwiftでの開発が思い浮かびますよね。
本記事ではそれらの開発をネイティブ開発と呼びたいと思います。

ネイティブ開発が標準なのは間違いないのですが、現在アプリ開発の手法の選択肢はそれだけに限らなくなっています。
本記事では幾つか開発手法を紹介し、その特徴を簡単にまとめたいと思います。

ネイティブ

上でも述べたように標準SDKを使っての開発です。
標準なだけあって、やはりパフォーマンスは非常に良いです。
各OSのデザインガイドラインに沿ったUIを作成しやすいのも◯。
また、公式リファレンスがしっかりしており、開発者コミュニティが大きく記事やライブラリが豊富です。

当たり前ですが、デメリットはAndroid、iOSそれぞれ全くべつの開発をする必要があることでしょう。
スタートアップ系だとそれぞれにラインを持つのはなかなか大変ですよね。

ドキュメントの豊富さは開発速度においてやはり大きいので、開発チームにそれぞれのエキスパートがいる、
あるいは十分な人員を確保できる環境であれば間違いない選択肢だと思います。

クロスプラットフォーム

クロスプラットフォーム開発とはOS依存の領域とOSに依存しない領域に分け、
OS非依存の部分を共通のコードにすることで開発を効率化できる手法です。

例えばサーバとの通信、データの整形などのロジックは共通化し
画面上に表示する際にはそれぞれのOSらしいデザインにして表示するといった具合です。

今このクロスプラットフォーム開発向けの技術・ツールが充実してきており、
選択肢として検討に値する状況になっています。その中でも代表的なものを紹介したいと思います。

Xamarin

.NETのOSS実装であるMonoによりAndroid/iOSアプリを作ることができる環境が、Xamarinです。
プログラムはC#で記述します。
動作においてネイティブに近いパフォーマンスが出せると言われています。

特徴は、Monoの標準APIの他にAndroid/iOSそれぞれのAPIのラッパーがAPIとして用意されている点です。
プラットフォーム依存部分の実装はそのラッパーAPIを用いて行います。
例えばAndroidであればActivity、iOSであればViewControllerのラッパーを使って画面を実装します。
プラットフォームに依存しないロジック部分をC#により共通の記述ができるため、その部分で開発の効率化が行えます。

.NETの資産も使えるため、.NET開発の経験者が多いのであれば導入しやすいのではないでしょうか。

また、Xamarin.Formsという、画面のコードを共通のコードで行える機能もあります。
もちろんそれぞれのプラットフォームでの確認調整は必要ですが、
ノウハウがたまれば面白い開発ができそうです。

Cordova

Cordovaオープンソースのモバイルアプリ開発フレームワークです。
Cordovaでは、HTML+CSS+JavaScriptの標準的なWebアプリケーションの技術を使って開発を行います。
WebView上で動作し、ハイブリッドアプリと呼ばれます。
ブラウザエンジン上で動く以上、パフォーマンスはネイティブに劣りますが
ゲーム等でレスポンスが求めたり重い処理を行わない限りそれほど問題にはならないでしょう。

カメラやデータベース、センサーといった端末の機能を使いたい場合は、
Cordovaプラグインとして提供されているJavaScriptインターフェースを使います。

webの技術を使って開発が行えるのでWebアプリケーション開発者の
モバイルアプリ開発への入り口として敷居が低いと思います。

~~~~~~~~~~~~~~~~~~

Cordova単体でも開発は行えますが、プラットフォームごとの標準UIに対応するために
以下であげるようなCordovaを拡張したフレームワークを採用するのがオススメです。

Ionic

Ionicとは、モバイル向けのUIコンポーネントのライブラリ及びCordovaをベースとした開発フレームワークです。

JavaScriptフレームワークAngularを採用しており、Angularとの親和性が高いのが特徴です。

現在バージョン2であるIonic2が公開されており、2016/9末には遂にβ開発が終了しRC版がリリースされました!
今後は破壊的変更も少ないはずで、プロダクトへの導入もしやすいのではないでしょうか。
なお、Ionic2はAngular2を採用していることもあってTypeScriptを用いたコーディングが基本となります。

Angularの学習が必要で、Ionic独自のお作法も知る必要があるので多少学習コストが高いのがデメリットでしょうか。
とはいえ、日本語のドキュメントは少ないものの、海外を中心にコミュニティがなかなか活発で
英語も含めると豊富な情報があります。

Monaca

Monacaとは、日本のアシアルさんが提供しているCordovaをベースとした開発フレームワーク及びサービスです。
同じくアシアルさんが公開しているUIライブラリOnsen UIを用いて開発を行います。
Angularと密な作りになっていてAngular作法に従う必要があるIonicと異なり、
Onsen UIはReactやVue.jsといった他のJavaScriptライブラリと自由に組み合わせることが容易なのが特徴です。
もちろんピュアJavaScriptでコードが書けます。

提供元が日本の会社なだけあって日本語のドキュメントが充実しているのは嬉しいところ。

 

React Native

React NativeはFacebookが公開している、JavaScriptでモバイルアプリ開発が行えるフレームワークです。
上記のハイブリッドアプリと異なり、内部にJavaScriptランタイムとネイティブUIのブリッジで実行されるためネイティブに近い動作をしてくれます。

Webアプリケーション開発にパラダイムシフトを起こしたJavaScriptライブラリである
React.jsの手法に従って開発ができるのが特徴です。
また、必要であればSwiftやJavaのネイティブコードをインポートすることも可能です。

“Learn Once, Write anyware”というReactの思想そのままに、
ReactによるWeb開発経験があればかなり入りやすいはずです。

やはりReactという今開発者コミュニティがとても活発な技術の上に乗っかっているのが大きいですね。
React Native自体の情報はまだ少ないですが、Reactの知見を引用できるためWeb上に多くの参考にできる情報があります。

現時点だとiOS向けのコンポーネント実装が先行しておりAndroid対応が弱いのが難点でしょうか。

エコシステムの発達はまだまだこれからなものの、個人的にはかなり注目している技術です!

まとめ

注目のスマホアプリ開発フレームワークを紹介しました。
これからアプリ開発のプロジェクトがある場合は採用できるものがあるか検討してみてください。

一つ注意してほしいのは、記事中に挙げたクロスプラットフォーム開発技術は決して「銀の弾丸」ではないという点です。
各プラットフォームのUIデザインガイドラインに通じている必要はありますし、それぞれの仕様への理解がなければなりません。
最適化しようと思えば固有の苦しみを味わうことになります。決して工数半分!みたいなことはないんですよね。。。

そのことを踏まえた上で、コードの共通化やチームの知見共有のメリットを得ていきましょう!

  • このエントリーをはてなブックマークに追加

PAGE TOP