![見出し画像](https://assets.st-note.com/production/uploads/images/46772727/rectangle_large_type_2_d4c2d740ad038485b76f70fd0eae7090.png?width=1200)
【非エンジニア向け】アプリ設計基礎「モバイルアプリとWebアプリのどちらがいいのか?」①
はじめに
ソフトウェアを使ってサービスを開発するとなった場合、スマートフォンのユーザーを対象にすることは当たり前の選択肢になりました。
しかし、世の中の開発事情を調べると「ブラウザで動作するWebアプリ」と「ストアからインストールするモバイルアプリ(ネイティブアプリ)」の2つの提供方法が存在して迷ったことがある人もいるのではないでしょうか?
この記事では、このような問題で困っている人を対象として、モバイルアプリとWebアプリの特性の違いや基礎的な設計パターンについて紹介していきます。
◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
用語の定義
まずはじめに、この記事で使用する用語を定義しておきます。
■モバイルアプリ
iOS,Androidを代表とするスマートフォンで動作するアプリケーション
■ Webアプリ
ブラウザ(Safari, chrome, Firefox, etc)アプリで動作するURLからアクセスするHTMLベースのアプリケーション
スマートフォン、PCかどうかは問いませんが、この記事では主にスマートフォンのブラウザで動作するアプリケーションがメインになります
■ サーバーアプリ
ユーザーが直接触れないバックエンドで動作するアプリケーション
◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
アプリケーション構成の基本パターン
アプリケーションを構成する上で基本となるパターンを説明します。
これらのパターンはあくまで一例ですが、多くの一般的なアプリケーションは次のいずれかのパターンに似た形をで開発されていることが多いと思います。
①サーバーアプリとモバイルアプリ(Webアプリ)が連携
②モバイルアプリが独立して動作する
③Webアプリが独立して動作する
詳細を説明していきます。
◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
①サーバーアプリとモバイルアプリ(Webアプリ)が連携
ユーザーが触れるスマートフォンやブラウザでアプリケーションが動作しており、それとは別にデータ処理やデータの蓄積目的に動作するをサーバーアプリが存在しているパターンです。
サーバーアプリは、データの参照や加工、保存などモバイルアプリが利用する機能を提供します。
■ どのようなアプリケーションで使われるか?
・データを永続的に保存する必要があるアプリケーション
・アプリケーション内でデータを共有するアプリケーション
など
用途として一番わかり易いのは、モバイルアプリで使用するデータをサーバーに保存するまたは、サーバーから参照するケースです。
登録したユーザーのデータや投稿写真、投稿メッセージなどが主にサーバーとやり取りされます。
他のユーザーとデータを共有したり、自分のデータを複数の端末で参照することを目的としているアプリケーションでは、サーバーアプリが必要となることが多いです。
■ 代表的なアプリケーション
・SNS
・動画配信
・オンラインゲーム
など
◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
②モバイルアプリが独立して動作する
モバイルアプリが単体で動作するアプリケーションのパターンです。
サーバーアプリを必要としていないため、基本的に通信機能も必要としないことが多いです。
■ どのようなアプリケーションで使われるか?
他端末やユーザーとデータの共有が必要ないアプリケーション
など
①のパターンと逆で、アプリケーション単体でしかデータを扱わない場合、サーバー側にアプリケーションを配置する必要はありません。
カメラのフィルターアプリやQRコードリーダーなど、スマートフォンの端末機能を利用した比較的単機能のアプリケーションはこのパターンであることが多いです。
■ 代表的なアプリケーション
・タイマー
・QRコードリーダー
・カメラフィルター
・カジュアルゲーム(通信しなくても遊べるシンプルなゲーム)
など
◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
③Webアプリが独立して動作する
サーバーアプリとは連携せず、Webアプリ単体で動作するパターンです。
厳格には、WebアプリのHTMLはどこかのサーバー環境に配置する必要があるため、「サーバーアプリが存在する」といえなくもないですが、「データ処理や保存などは必要ない」という観点でみると単体で動作するアプリケーションを指します。
■ どのようなアプリケーションで使われるか?
・他端末やユーザーとデータの共有が必要ないアプリケーション
・ブラウザの機能だけで実現できる比較的単機能なアプリケーション
など
条件としては②と同じなのですが、②のパターンよりは比較的に事例が少ないパターンとなります。
理由は、動作環境である『ブラウザ』という一つのアプリケーションに起因しています。
ブラウザは、主にネットワーク上のHTMLにアクセスすることを目的としており、ブラウザ単体の機能(JavascriptやHTML、CSS)で実現可能なことが、モバイルアプリよりも限定的でした。
そのため、モバイル端末のセンサー機能を使ったリッチなアプリや、高速な描画を必要とするグラフィカルなアプリはモバイルアプリで作る必要がありました。
しかし、今のブラウザは機能が充実してきており、徐々にその敷居がなくなってきています。
ブラウザ上から、カメラやBluetoothのようなセンサー機能へアクセスすることも可能になってきており、モバイルアプリでしか実現できなかったアプリも開発できるようになってきました。
そのため、数は少ないですが、Webアプリ単体で動作するゲームや単機能のアプリも増えてきているように感じます。
また、広義の意味でいうとHTMLファイルだけで表現されたホームページなどもこのパターンに含まれるかもしれません。
■ 代表的なアプリケーション
・タイマー
・QRコードリーダー
・シンプルなホームページ
・カジュアルゲーム(通信しなくても遊べるシンプルなゲーム)
など
◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
モバイルアプリに向いているアプリの特性
次に、どんな特性のアプリがモバイルアプリに向いているのかをみていきます。
■ モバイルアプリに向いているアプリの特性
・通知が必須
・端末のセンサーを使った機能がメイン
・ITリテラシーが比較的低い人がターゲット
など
モバイルアプリのメリットの一つとして、端末のPush通知(AppleやGoogleが提供している独自の通知機能)を利用できることが挙げられます。
Webアプリにも同様の機能は存在はしますが、まだブラウザ環境の差異などの理由から、モバイルアプリより安定しないのが現状です。そのためチャットのように通知機能がユーザー体験に大きく影響するようなアプリケーションについては、モバイルアプリアプリが向いています。
似たような理由として、GPSやカメラなど端末のセンサーを使った機能を主として提供している場合もモバイルアプリの方が向いていることが多いです。
ブラウザの種類やバージョンによっては、コアの機能が動作しないリスクがWebアプリでは存在するためです。
モバイルアプリは、スマートフォンの専用ストア(App StoreやGoogle Play)からインストールが可能なため、日常的にブラウザで検索を行わないような比較的ITリテラシーが低いユーザーへもリーチしやすいというのもメリットだと考えています。
※ ターゲットの年代やリテラシーにもよるため、この辺りの判断は難しいです
◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
Webアプリに向いているアプリの特性
次に、どんな特性のアプリがWebアプリに向いているのかをみていきます。
■ Webアプリに向いているアプリの特性
・PCでの操作がメイン
・接続頻度がそれほど高くない
・ユーザーがアプリの存在を認知している (業務アプリなど)
など
例えば、toB向けのビジネスアプリケーションでは、オフィス内で使われることが多く、基本的にPC上で操作されることが多いでしょう。
このような場合は、インストールが不要でブラウザから簡単に起動できるWebアプリの特性が活かせます。
ただし、「Slack」のように頻繁に起動するアプリケーションになるとたとえPCの操作がメインだとしても、独立したアプリである方がメリットが高いことがあります。
頻繁にブラウザのタブを開くのは、操作性が悪く、ユーザーの体験が良いこためです。
このように起動頻度が比較的少ないアプリの方がWebアプリに向いていることが多いです。
(例: 時々使うECサイトやレンタカーのサービスなど)
モバイルアプリと同じ観点でみると、Webアプリの場合はスマートフォンの専用ストアから基本的に検索できません。
ビジネスアプリケーションなど、ユーザーがその存在を認知しているアプリではない場合、比較的ITリテラシーが低い人に見つけてもらえない可能性もあります。
※ ターゲットの年代やリテラシーにもよるため、この辺りの判断は難しいです
◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
開発サービスとアプリの構成パターン
最近のアプリ開発では、一つのサービスをリリースする時に、モバイルアプリ(iOS, Android)、Webアプリを同時に提供することも多くなりました。
ユーザーの利用環境が多様化したことで、様々なシチュエーションで同じ体験をユーザーに届ける必要が出てきたためです。
映画やドラマなどの動画配信サービスのネットフリックスは、iPhoneやAndroidなどのモバイルアプリ、ブラウザで見れるWebアプリ、TV、ゲーム機、その他ガジェットなど、ありとあらゆる環境でのアプリ提供を行なっています。
ソフトウェアの開発を開発する時は、リリース時にどんな環境に対してアプリケーションを提供するかを事前に設計しておく必要があります。
■ 主な構成パターン
1.Webアプリのみ開発
2.モバイルアプリ(iOS, Android)のみ開発
3.Webアプリとモバイルアプリを両方開発
4.Webアプリとモバイルアプリ +α の機器のアプリを開発
など
初期チームの開発リリースや持っているスキルセットによって、どのようなパターンで開発ができるかが変わります。
逆にこれから採用する場合には、これらの構成パターンをもって必要なスキルを持つエンジニアを採用する必要があります。
◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
まとめ
読んでいただきありがとうございました。
今回の記事は以上になります。
次回は、「モバイルアプリを開発するときの開発パターン」や「パターンごとの技術概要」についての記事を公開する予定です。
興味がありましたら、次の記事もぜひ読んでいただけると幸いです。
◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
アンケートのお願い
このチャンネルでは、これから提供していくコンテンツやサポートの内容を改善していくために、アンケートをお願いしています。
ぜひアンケートにご協力ください。
この記事が気に入ったらサポートをしてみませんか?