LANWAY JOURNAL あなたの知りたいを叶えるメディア

  • ナレッジ記事
  • マーケター・ディレクター
  • エンジニア

効率的なアプリ開発を実現するハイブリッドアプリとは?他の手法と比較して紹介

スマートフォン上で動作するアプリを構築する方法として最も一般的なのは、iOSやAndroid OSなどのスマートフォン向けOS上で動作する、いわゆる「ネイティブアプリ」です。しかし、ネイティブアプリ以外にもアプリを構築する方法は様々存在します。
iPhoneとAndroidで共通的に動作するアプリを開発できるハイブリットアプリもそのひとつです。ハイブリットアプリは開発コストや開発期間の削減に効果的であり、多くの開発事例が存在します。
本稿では、ハイブリットアプリの手法を用いたアプリ開発について、そのメリットや他の手法との比較や、開発に利用できるフレームワークについて紹介します。

ハイブリッドアプリとは

ハイブリットアプリとはどのような仕組みで動作するものなのでしょうか。以下で紹介します。

ハイブリッドアプリとは

ハイブリットアプリとは、Web技術を利用してスマートフォン上で動作するアプリを開発する手法のことを指します。通常、スマートフォン上でアプリを動かすためには、iPhoneであればiOS、AndroidであればAndroid OSにのっとった形で開発を行います。この際、たとえばiOSであればSwiftやObjective-Cなどのプログラミング言語を用いることになりますし、AndroidであればKotlinやJavaなどを用いることになります。このようにして開発されるアプリを「ネイティブアプリ」と呼びます。
一方で、ハイブリットアプリではHTML5やJavaScriptなどのWeb技術を用いて開発を行います。これらのWeb技術は標準化団体であるW3Cにより世界で共通化されているため、iOS・Androidを問わず、同じプログラムで動作させることができます。
ハイブリットアプリの手法を用いれば、iOS・Androidのアプリを単一のプログラムできます。これにより、開発工数やコストの削減につなげることができるのです。

ハイブリッドアプリが動作する仕組み

それでは、ハイブリットアプリはどのような仕組みで動作するのでしょうか。
通常、Web技術だけではスマートフォンのカメラやセンサー、プッシュ通知などのいわゆるネイティブ機能を利用することはできません。そこで、ハイブリットアプリを実現するためのフレームワークが、Web技術とネイティブ機能の橋渡しをします。
多くのフレームワークでは、JavaScriptで構築されたライブラリにより、カメラの呼び出しやセンサーからのデータ取得などの処理を記述できます。フレームワークがJavaScriptの記述を動作するスマートフォンプラットフォームに応じた形に変換し、ネイティブ機能の呼び出しを実行します。これにより、Web技術というプラットフォームに依存しない仕組みでありながら、iOSやAndroidという各プラットフォームの機能を利用できるのです。

他の開発手法との比較

スマートフォン上で動作するアプリを開発する手法は様々です。これまでに紹介したハイブリットアプリやネイティブアプリ以外にも、WebアプリやPWAという手法を利用することができます。
以下では、それぞれの手法を紹介しつつ、ハイブリットアプリとの比較を行います。

ネイティブアプリとの比較

冒頭でご紹介したとおり、ネイティブアプリはiPhoneやAndroidスマートフォン上でアプリを提供するための一般的な方法です。
当然ながら、ネイティブアプリの形態でアプリ開発を行う場合、スマートフォンが持つすべての性能を引き出すことができます。ネイティブアプリの開発言語は端末の性能を最大限引き出せるように設計されているため、ハイブリットアプリと比較して処理速度やレスポンスの良いアプリを作れます。
一方で、ネイティブアプリはOSに依存して開発を行いますので、iPhoneとAndroidのクロスプラットフォーム対応や、OSのバージョンアップへの追従も行っていく必要があります。よって、一般的にはハイブリットアプリよりも開発コストがかかることになります。

Webアプリとの比較

Webブラウザ上でURLを入力して各サイトにアクセス形で機能を提供するのが、Webアプリです。たとえば、Amazonなどはアプリをインストールしなくても、ブラウザからAmazonのサイトにアクセスすれば利用することができるかと思います。
Webアプリのメリットとして、アプリを個別にインストールする必要がないという点が挙げられます。たまにしか利用しないアプリをわざわざインストールしたいと考える方は少数ですので、利用頻度が低いサービスにも効果的です。また、PC上で閲覧するWebサービスと共通で開発できるため、開発工数を抑えやすいというメリットもあります。
一方で、他のアプリと異なりホーム画面にアプリ一覧として表示されるわけではありませんので、リピートしてアプリを利用してもらうのには不向きです。そのため、Amazonや楽天などでは、ネイティブアプリへの誘導のためネイティブアプリ利用者はポイント還元率を高めるといったインセンティブ施策を実施しています。
また、マーケティング施策として効果的であるPush通知が利用できないなど、機能面でも制約が存在します。

PWAとの比較

PWA(Progressive Web Apps)とは、Googleが定めた新しいWebアプリの規格です。Webアプリでありながら、オフラインで動作したりPush通知を実施できたりと、ネイティブアプリに近い形で動作させることができます。
PWAとしてアプリをスマートフォンにインストールする際には、対象のWebサイトにアクセスの上、ホーム画面にアプリを追加する形となります。アプリストアを経由する必要がないため、ユーザーのインストール障壁が低いほか、各アプリストアの審査を受ける必要がないというメリットもあります。
一方で、iOSでは一部機能に制限が設けられているなど、自由にスマートフォンのネイティブ機能を利用することはできません。また、比較的新しい仕組みであることから、対応できるベンダーも少なく、開発費用も高くなりがちです。
ここまでを整理すると、それぞれの開発手法のメリット・デメリットは以下のとおりです。

 ハイブリットアプリネイティブアプリWebアプリPWA
コスト×
機能性×
インストールしやすさ― ※インストール不要
プラットフォーム依存リスクの回避×

コストをかけてでも機能性に優れるアプリを提供したい場合は、ネイティブアプリの採用が優れています。
一方で、コストを削減しつつ一定の機能を有したアプリを開発したい場合は、ハイブリットアプリの採用も検討できるでしょう。
また、既存でWebサービスが存在する場合は、無理にアプリを構築することなく、Webアプリとしてブラウザ経由でユーザーに利用してもらうことも一案となります。

ハイブリッドアプリのメリット・デメリット

各開発手法と比較して、ハイブリットアプリのメリットとデメリットを以下で整理します。

メリット

開発コストの削減

ひとつは、開発コストの削減です。これまでご紹介したとおり、ハイブリットアプリにより単一のアプリでiOS・Androidのクロスプラットフォーム対応を実現できるため、それぞれのアプリを開発するよりもコストは抑えられます。
また、ハイブリットアプリの開発に必要であるWeb技術のエンジニアは、ネイティブアプリ開発のエンジニアと比較して確保しやすい点もメリットです。これにより、単価をおさえることにもつながりますし、場合により内製化の実現も可能でしょう。 ただし、ハイブリットアプリを採用したからと言って単純にコストが半分になるわけではありません。当然ながら、テスト作業はiOS・Androidでそれぞれ実施する必要がありますし、アプリストアの審査対応も両者で実施する必要があります。

メンテナンス工数の削減

同様に、メンテナンス工数の削減にもつながります。iPhone、Androidそれぞれでネイティブアプリを提供する場合、どうしても各OSのアップデートに都度対応していかなければなりません。
一方で、ハイブリットアプリでメンテナンスが必要なのはひとつのアプリのみです。また、Web技術をベースとしていることから、比較的OSアップデートの影響を受けにくい点もメリットといえるでしょう。

ネイティブ機能の利用

同様に工数を削減できるWebアプリと比較して、カメラやPush通知などのネイティブ機能を利用できる点もメリットです。
アプリとして機能やサービスを提供する際のモチベーションとして、ネイティブ機能を利用したいという需要は高いと思いますので、ハイブリットアプリの大きなメリットと言えるでしょう。
ネイティブ機能を利用する方法としてPWAという選択肢もありますが、どうしてもiOS側の対応が十分でない点がデメリットです。PWAはGoogle発の規格であるため、将来的に見ても完全に対応される可能性は低いと考えられます。

デメリット

動作速度に劣る

ハイブリットアプリでは、フレームワークを経由してネイティブ機能を利用するため、ネイティブアプリと比較するとどうしても速度に差が生じてしまいます。よって、たとえばゲーム開発のように高速に処理を行う必要があるケースにおいては採用しにくいといえます。
ハイブリットアプリに向くアプリの種類としては、ニュースアプリやECアプリなど、頻繁に処理が走らないようなジャンルといえます。

フレームワークへ依存する

上述のとおり、ハイブリットアプリを構築するためにはフレームワークを利用することになります。各フレームワークは一定の歴史があるものが多いですが、それでも各提供企業の判断により途中で開発が停止したり、事業の撤退によりサポートが打ち切られたりするリスクはあります。
また、機能面でも利用できるネイティブ機能はフレームワークが対応しているものに限られます。iOPやAndroid OSで新たな機能が利用できるようになったとして、それに対応するかどうかは各フレームワーク側での判断となります。ただし、多くのフレームワークではネイティブ機能を利用するためのプラグインを個別で開発できる仕組みをサポートしていますので、どうしても必要な機能がある場合は検討することもできます。

ハイブリッドアプリの開発に利用できる主なフレームワーク

以下では、ハイブリットアプリの開発に利用できる主要なフレームワークをご紹介します。

Monaca

Monacaは、日本企業であるアシアル株式会社が提供するハイブリットアプリ開発フレームワークです。マネックス証券、三井住友フィナンシャルグループなど幅広い企業での導入実績があります。
クラウド上でIDE(統合開発環境)やビルド、デプロイまで実現できるため、Monaca上で開発からアプリリリースまで実現できる点もメリットです。

Apache Cordova

Apache Cordovaはオープンソースのハイブリットアプリ開発フレームワークです。過去、Adobe社が保有していたPhoneGapというハイブリットアプリ開発フレームワークをApacheソフトウェア財団に寄付した際に、Apache Cordovaという名称がつけられました。
カメラやファイルアクセス、位置情報の取得や通知など、一般的なネイティブ機能は全て網羅されているほか、個別にプラグインを開発して未対応のネイティブ機能を利用することもできます。

React Native

React NativeはFacebookが開発したフレームワークです。Facebookアプリの開発はもちろん、UberEatsなどのアプリにおいても利用されています。
これまで紹介してきたフレームワークと異なり、WebViewベースではなくJavaScriptで書かれたコードをネイティブコードに翻訳する方式である点が特徴です。よって、基本的にはJavaScriptをベースとしてアプリを構築していきます。

Flutter

Googleにより開発されたFlutterも、ハイブリットアプリの開発に利用できます。FlutterではDartという開発言語を用いてアプリ開発を行います。DartはJavaScriptをベースとして構築されたプログラミング言語であり、JavaScriptの知識があれば比較的習得しやすいといえます。
上述したReact Nativeと比較されることが多いFlutterですが、近年ではUIの統一性などから高い評価を受けており、導入する企業も増えています。

まとめ

本稿では、コストを削減してスマートフォンアプリを構築できるハイブリットアプリについて紹介しました。アプリ開発のコストを下げたい場合に、ハイブリットアプリという選択は有力な選択肢となります。
一方で、アプリの種類によってはハイブリットアプリの採用に向かないことも。アプリ開発を発注する際には、委託先の企業と相談しながら、最適な開発手法を検討することをおすすめします。

この記事の著者

LW BLOG編集部

ライターチーム

ITに関する知見を発信するナレッジ記事やLANWAYのカルチャー、社員の働き方を発信する採用記事など、様々な独自情報をお届けします。

この記事を書いたライターの記事一覧を見る