スマートフォンアプリを開発しようと思ったらObjective-CやSwift、Javaといった言語を使って開発するのが一般的です。しかし異なるデバイスに対して複数の言語を覚えなければならないので、コストが大きくなってしまいます。
そこでたびたび使われるのがHTML5やJavaScriptといったWeb系の技術になります。Web技術を使うことでOSの垣根を越えて、スマートフォンアプリを作ることができます。今回はその代表的な技術をまとめてみました。
Cordova
CordovaはHTML5/JavaScriptをWebView上で実行し、JavaScriptからネイティブのAPIを扱うための橋渡しをしてくれる機能を提供しています。Cordovaはオープンソース・ソフトウェア、そこに機能追加したものがPhoneGapとして知られています。iOS/Androidをはじめ、多数の環境に対するアプリの開発ができます。
iOS7以前はWebViewの速度が遅かったのでアプリの実行速度が気になる点はありましたが、iOS8になってからは速度が大幅に改善されているので十分にアプリ開発に利用できるようになっています。
さらにMonacaを使えばクラウド上のIDEを使って、開発環境の構築をせずにアプリ開発をはじめられるようになります。
Titanium
TitaniumはWebViewを用いず、JavaScriptエンジンを使ってネイティブのUI、APIとの橋渡しをします。iOS、Androidの両方を開発できますが、どちらかと言えばiOSの方が開発が進んでいるようです。
オープンソース・ソフトウェアなので多くのプラグインが開発されています。また、Titanium StudioというIDEを使うことでコード補完やデバッガーなど開発効率を高められるようになっています。
React Native
Facebookが開発しているReactはWebのビューを作るための技術ですが、それをスマートフォンアプリに対して適用したのがReact Nativeになります。Reactで技術した内容でスマートフォンアプリ(現在はiOSのみ。Android版は開発中)が開発できます。
この手のフレームワークが「ワンソース、マルチデバイス」と謳っているのに対し、React Nativeは用いる技術は一緒でも、コードはiOS/Androidで分かれるとしています。「learn once, write anywhere」というのがコンセプトです。
React Native | A framework for building native apps using React
Applican
国産のサービスで、HTML5/JavaScriptを使ってスマートフォンアプリの開発ができます。Cordovaのようなプラグインの仕組みはなく、JavaScriptと設定ファイルだけで構築するようになっています。そのため、デスクトップのWebブラウザでほぼそのまま動作させられます。
JavaScriptだけながらもアプリ内課金やiBeaconといったAPIも利用が可能です。
samurai-native
まだはじまったばかりのプロジェクトですが、HTMLで書いたテンプレートをiOSアプリのビューにできる技術です。今のところ、UICollectionViewとUICollectionViewCellが対応しています。
通常のHTMLと同じように記述して、スタイルシートも使えるようになっています。タップした後の処理などはSwiftやObjective-Cで書く必要があります。
hackers-painters/samurai-native
Web技術を使えればスマホアプリの開発を行う敷居はぐっと低くなるはずです。ぜひこれらのフレームワーク、サービスを使ってみてください。