モバイルアプリ開発の手法は、主に3つの種類に分類することができます。つまり、ネイティブアプリ、Webベースのモバイルアプリ、ハイブリッドアプリです。
Table of Contents
ネイティブ、ハイブリッド、Webアプリの違い
ネイティブ、ハイブリッド、Webアプリの違いをシンプルに示すと、以下のようになります。
- ネイティブアプリは、デバイス上で実行されるコンパイル済みのバイナリコードです。ネイティブアプリは、3つの選択肢の中で最も高速でセキュアです。
- Webアプリは、ブラウザでホスト/実行され、インターネット接続が必要となります。Webアプリは、速度面では最も遅い部類に入る選択肢であり、デバイス機能へのアクセスも最も制限されます。
- ハイブリッドアプリは、(その名前が示すように)両者のミックスで、部分的にネイティブで、部分的にWebアプリによって構成され、その速度は中間に位置します。
2021年3月時点の調査では、Androidが71.9%、iOSが27.33%のマーケットシェアとなっています。つまり、AndroidとiOSをターゲットとするモバイルUXアプリを構築すること検討しているなら、ほぼすべてのマーケットをカバーする(99.2%)ことができるということを意味しています。
ネイティブモバイルアプリとは
ネイティブアプリケーションは通常、実行するプラットフォームごとにプログラムを記述し、コンパイルされます。ネイティブアプリケーションは、ターゲットとなるハードウェア向けにコンパイル/最適化されるため、最速のパフォーマンスと最高レベルのセキュリティを提供します。ハードウェアへのフルアクセスもサポートされており、バイオメトリクス、カメラ、センサーなどのデバイス機能へのフルアクセスの恩恵も受けます。ネイティブアプリはシステムのUI要素を使用するため、プラットフォームのユーザーエクスペリエンスに「フィット」し、より直感的に使用できるので、最高レベルのユーザー評価が得られます。このことは、ネイティブアプリがそれぞれのアプリストアで、リーダーボードを占拠しているという事実によっても裏付けられます。
ネイティブアプリアプローチは最高のパフォーマンス、スピード、操作性を提供しますが、Xcode(iOS向けにAppleが提供)やAndroid Studio(Android向けにGoogleが提供)などのベンダーツールは、単一のプラットフォームのみをターゲットとしている事実を見逃せません。このことは、複数のコードベース、QAサイクル、アップデートを継続していくためのスキルなどの理由によって、開発サイクルが長く、複雑になり、最終的にはより多くの費用がかかってしまう(ように見える)恐れがあります。とはいえ、すでに触れたように、ネイティブを選択するメリットは数多くあります。実際、多くの企業が、ユーザーからのフィードバックが芳しくなかったため、ハイブリッドアプリをネイティブバージョンに書き直しているのです。
ネイティブアプリ(および一部のハイブリッドアプリ)は、特にアプリストア経由で配布する場合、最初のセットアップに時間がかかることがありますが、一度セットアップしてしまえば、そのアップデートは比較的高速です(ただし、アプリストア経由ではないWebアプリほど、アップデートはスピーディではありません)。
単一のソースコードから、フルコンパイルされた真のネイティブアプリを提供するひとつの選択肢は、Delphiを用いることです。FireMonkey(FMX)は、導入されてから9年以上が経過し、最新のオブジェクト指向/コンポーネント指向プログラミングをベースとした非常に柔軟なフレームワークに成熟しています。FireMonkeyは、Android、iOSだけでなく、macOS、Linux、Windowsもターゲットとしてサポートしており、モバイル開発のローコードRADアプローチを実現しています。
ハイブリットアプリとは
Sencha、Angular Mobile、React Native、Cordova、Ionic、PhoneGapなどのハイブリッドアプリは、ネイティブアプリケーションシェル内でホストされるWebテクノロジー(HTML5、CSS、JavaScript)を使用して構築されています。本質的に、これらはスマートフォン上のマイクロWebサーバー内でローカル実行されるWebアプリと言えます。
ハイブリッドアプリ開発のメリットは、単一のソースコードベースから、複数プラットフォームをターゲットにできることです。さらに、ネイティブシェルを使用することで、HTML言語の拡張機能をスマートフォンのハードウェアの一部にまで広げることができます。ただし、この拡張は、ネイティブアプリケーションが実現できるものと比較すると制限があります。ハイブリッドアプリは、ライブ接続なしでオフラインで実行するように設定することもできます(オフライン実行の構成が必要)。
ハイブリッドアプリのデメリットは、依然としてWebページのように見えたり動作する可能性があることです。例えば、コントロールが誤ってUIで複数選択されると言ったこともあり得ます。また、メモリとプロセッサの最適化が不十分であり、リソースを大量に消費してしまうこともよく知られています。
ソースコードは通常、アプリケーションバンドル内でシンプルなテキストとして存在しているため、セキュリティ面も考慮すべき重要なポイントになります。このことは、ハイブリッドアプリを利用する際のセキュリティコンプライアンスを維持することが、極めて難しいという事態を引き起こします。悪意のあるコードインジェクションは、本当に心配です。
これらすべてのハイブリットアプリ開発の選択肢の中で、ネイティブアプリに最も近いのはReact Nativeであり、いくつかのネイティブコントロールを使用するためのアクセス機能を提供します。Facebookなどによって支援を受けている、よいコミュニティもあります。しかし、肝心のFacebookは、機能の制限を回避するためにピュアネイティブアプリのコードを使用していると、よく言われています。React Nativeは、セキュリティが非常に重要となるアプリ(金融系アプリなど)にも、推奨することはできません。
ハイブリッドアプリは、LANSA、Mendix、Microsoft PowerApps、Appianなど、多くのローコードソリューションにおいても見ることができます。これらのアプローチでは、追加のバックエンドシステムと統合する方式を採用しています。これらのプラットフォームでは、マーケット投入までの初期段階のスピードで優位にありますが、実現できる機能には依然として制限があり、ユーザー数に応じた価格設定が設けられていることが多いため、実際のランニングコストが高くなる選択肢と考えられます。
Webアプリとは
Webアプリは、モバイルにコンテンツを配信するための便利な方法でもあります。Webアプリはモバイルデバイスにインストールされず(ライブデータ接続が必要になります)、ユーザーが表示/実行する内容をすばやく変更/更新することができます。Webアプリはブラウザ経由で実行されるため、メインとなるコンピュータの能力はリモート実行になります。つまり、モバイルデバイスがWebアプリを実行するために必要とする電力とメモリは、最小限となります。
HTML5には、ローカルデータストレージなど、データの限定的なキャッシュを実現できる強力な機能がいくつか用意されていますが、これは機密データを保存すべき格納場所ではありません。
Webアプリのメリットのひとつは、非常にニッチなモバイルプラットフォームを含め、ほぼ100%のモバイルマーケットをカバーできる点です。
モバイルアプリ開発に最適な選択肢とは
この答えは、皆さんの要件に依存することは間違いありません。
- 最高レベルのセキュリティ、パフォーマンス、操作性の実現が要求され、いつでも必要とされるものを柔軟に構築できるようにしたい場合は、ネイティブアプリが最適な選択肢です。その場合、単一のソースコードによるアプローチでネイティブコンパイルが可能なDelphiが、ベストな選択肢となります。
- モバイルデバイス機能へのアクセスが限定的で、データセキュリティが大きな懸念事項ではない場合は、ハイブリッドアプリが有効な選択肢となります。
- 複数プラットフォームへの展開をすばやく行う必要があり、(モバイルデバイス機能にアクセスする必要がなく)セキュリティ上の懸念がない場合は、Webアプリを選択することでメリットが得られる可能性があります。Webアプリを迅速に開発するための優れた選択肢は、Sencha Architectの利用です(Delphi Architect版には、Senchaも含まれているため、Webとネイティブアプリの双方を選択肢として利用できます)。
すべての選択肢の中で、真のネイティブ(スピード、パフォーマンス、デバイスアクセス)と単一のコードベースによるクロスプラットフォームサポート(長期的なメンテナンスコストで有利)は、Delphiのみで実現されているものです。Delphiは、他のいくつかのプラットフォームと比較してニッチな製品と見なされるかもしれませんが、開発者(特にC#に精通している人)は簡単にそのスキルセットを流用でき、複数の開発プロジェクトを並列させそれらを日々メンテナンスしていかなければならないアプローチと比較して何分の1かのコストで実現できるのです。また、26年以上にわたる実績、独自のマルチプラットフォームアプローチを提供する9年以上の経験の積み重ねは、間違いなくこの分野でのパイオニアとして数年以上は先行しています。