はじめに
業務アプリケーションを作っている会社に務めているのですが、
時代の流れもあり、業務アプリの一部の機能をスマートフォンアプリ化しようという話になりました。
そしてアプリ開発用のチームが編成されたのですが、
アプリ作るの楽しそうだなぁくらいのどうやって作るんだろうね状態です。
Advent Calendarの時期なので、これを機会に毎日ちょっとずつ勉強していこうと思います。
まずはアプリはどうやって作れるのかという開発手段について調べました。
アプリ開発のタイプ
- ネイティブアプリ
- ハイブリッドアプリ
- Webアプリ
ネイティブアプリ・ハイブリッドアプリ比較
ネイティブアプリ | ハイブリッドアプリ | Webアプリ | |
---|---|---|---|
概要 | アプリとしてダウンロードする形式で、iOSやAndroidなど特定プラットフォーム用に作られている | アプリとしてダウンロードする形式だけどHTML5等で作られる | ウェブブラウザからURLでアクセスするタイプ |
言語 | Swift, Objective-C, Java etc... | HTML, CSS, JavaScript etc... | HTML, CSS, JavaScript, Javaなど色々 |
メリット | ・ デバイスの機能を最大限に利用できる(最新機能の利用など) ・動作が速い |
・HTMLやJavaScriptなど、比較的手を出しやすい言語の使用 ・クロスプラットフォーム対応しやすい |
・アプリをダウンロードする必要がない |
デメリット | ・プラットフォームごとに開発言語が異なる |
・ネイティブに比べると動作が遅い ・ゲームのような処理が重いものには不向き |
・デバイス機能が使えない |
ハイブリッドアプリ開発フレームワーク等
とりあえず目についたものまとめ。
名前 | 説明 |
---|---|
Apache Cordova | Adobe社がNitobi社のPhoneGapを買収しApacheへ寄贈、オープンソースとして開発されている。 |
PhoneGap | Adobe社が公開しているフレームワーク。Cordova+Adobeが提供する機能。 |
Monaca | Cordova + HTML + JavaScript + CSS + AngularJS + OnsenUIあたりで開発できる。クラウドIDEで開発できて、デバッグとかもやりやすい。 |
Titanium | Appcelerator社が提供している。JavaScriptでAndroid/iOSアプリが開発できる。 |
React | Facebookが開発しているJavaScriptライブラリ。React Nativeというのがオープンソースとして公開された。 |
WinJS | AndroidやiOS向けにもWindowsアプリが開発できる。 |
Sencha Touch | HTML5、CSS3、JavaScriptを用いたモバイルアプリケーション開発用フレームワーク。 |
アプリカン | 開発支援ツールがそろっていて、HTML5やJavaScriptなどでアプリを開発できる。 |
Xamarin | C#などを使ってiOSやAndroid、MacOSアプリケーションを作成できる。 |
RubyMotion | Rubyを使ってiOSやAndroidのアプリを作れる。 |
まとめ
それぞれの方法にはそれぞれメリットやデメリットがあるので、
どういう機能がいるアプリなのかによってもどういう開発手段を選択すべきかを考えなければならないと思いました。
現状、作ることになりそうなアプリはデバイスの最新機能をふんだんに使わなければならないようなものではない…と思うし、3Dなどの映像等がメインではないのでネイティブでがりがりやらなくてもいけるのではないかなという印象です。
が、現状ネイティブでないとできないことっていうのがどの程度あるのかがよくわかってないのでその辺によっても変わるかなといった感じです。