ありがたいことにスマホアプリ開発の経験をさせていただく時期がありまして、3種類のアプリすべての開発を経験することが出来ました。その中で体感したそれぞれのアプリ開発のメリット・デメリットを書いていきます。
目次
3種類のアプリ
まずは3種類のアプリって何だろうというものをご紹介します。
ネイティブアプリ
AppStoreやGooglePlayを通してスマホにインストールするアプリを指します。ホーム画面やアプリ一覧画面を表示するとそのアプリのアイコンが出てくるやつです。
一般的にスマホアプリといえばこれを指すかと思います。
Webアプリ
Webブラウザを介して動作するアプリです。これはスマホに限らずパソコンであってもブラウザを使って動くのであればWebアプリと呼びます。
いちいちインストールする必要が無いので使う側は楽ですし、開発者側もいちいちアップデート版をアプリストアに公開する必要が無いので楽です。
ハイブリッドアプリ
ネイティブアプリとハイブリッドアプリのいいとこどりをしているアプリです。
アプリ自体はスマホにインストールしますが、その中身はほぼそのアプリ独自のブラウザといっていいもので、Webアプリのように動作するものです。
違いは、そのアプリ独自のブラウザがスマホ搭載機能(カメラとか)を呼び出したりすることで、標準のブラウザには出来ない機能が持たされているという部分です。
それぞれのメリット・デメリット
ネイティブアプリ
メリット
- 自由につくることが出来る
やり方は勉強しないといけませんが、やろうと思う事はネイティブアプリであれば問題なく実現しやすいです。 - スマホの機能を問題なく呼び出せる
Webアプリだとスマホに搭載されている機能を呼び出せないことがあるのでこれはネイティブアプリだと安心できます。
デメリット
- 開発手法やツールがすぐに古くなってしまう
せっかくアプリを完成することが出来ても、そのあとに別プロジェクトにいったりして数年後またスマホアプリを開発しようとした場合、前回の経験が活かせないことがありました。結構悲しいです。いろんなもののバージョンが軒並み2くらい上がってて別物になってたりするので「スマホアプリ開発の経験あり」といった手前ヒヤヒヤしたことがあります。
Webアプリ
メリット
- Webサイトをつくるような感覚で作成できるので割と気楽
初めてWebアプリを製造する場合でも、Webサイト作成経験があれば割とすんなり作っていけます。なぜならどちらもブラウザで動くものですのでHTML,JavaScript,CSSといったものを知っていれば何とかなります。
デメリット
- JavaScriptにどっぷり浸からないと難しいことがある
私の印象ですが、アプリの動きをなんでもかんでもJavaScriptで実現させねばならない縛りがあります。その場合、他のプログラミング言語とは違ってやりづらいというか、書きづらいです。JavaScriptは本来Webサイトに動きをつけるものなので、がっつりアプリとして動かすためにコーディングするとなるとなかなかやりにくく感じます。
ハイブリッドアプリ
メリット
- ネイティブアプリよりかは難しくなく作れる
ゴリゴリのネイティブアプリよりかはWebアプリ的な部分があるので、Webサイト制作の経験等があれば0からの勉強し直しにはなりません。 - スマホの機能を呼び出しやすい
ブラウザからだと呼び出せないスマホ機能を呼び出しやすいので助かります。Webアプリでも呼び出そうとすれば出来るけどやり方が面倒くさいってものがありますので、比較的簡単に呼び出せるのはありがたいです。
デメリット
- ネイティブアプリとWebアプリの開発を両方知っておかないと混乱する
「今自分が手を加えているのはインストールするアプリ側?それともWebアプリ側?」というものを明確に把握しておかないと訳が分からなくなります。変に手を加えてアプリを壊してしまっては大変です。その為にもネイティブアプリとWebアプリの開発の手法やルールを知っておく必要があります。