テクニカルディレクターの菊池です。
現代のアプリケーション開発において、バックエンドの構築やデータ管理、ユーザー認証などの機能を効率的に実装することが求められます。このようなニーズに応えるために、多くの開発者がAmplifyやFirebaseといったクラウドベースの開発プラットフォームを利用しています。
しかしながら、どちらのプラットフォームがプロジェクトに適しているかを判断するのは容易ではありません。そこで本記事では、AmplifyとFirebaseの特徴や利点を比較し、それぞれのプラットフォームが適しているシーンについて解説します。
Amplifyとは
AWS(Amazon Web Service)が提供しているサービスで、Webサイト、Webアプリ、モバイルアプリケーションの構築、デプロイ、およびホストのためのフルスタック開発フレームワークです。BasS(Backend as as Service)または、MBaaS(Mobile Backend as a Service)として機能が提供されており、AWSやBackendの構築を簡易に実現するためのサービスです。
Firebaseとは
Googleが提供するモバイルおよびWebアプリケーションのためのBasS(Backend as as Service)または、MBaaS(Mobile Backend as a Service)です。同様にGoogle社が提供しているFlutterではFirebaseを正式にサポートされております。
提供機能比較
では、実際にはどのような機能が提供されているのでしょうか。Amplifyとして提供されている機能は以下の通りです。
機能名 | 機能内容 | Amplify | Firebase | 備考 |
---|---|---|---|---|
ホスティング | 構築したWebアプリを所定ドメインに展開する | ◯ | ◯ | 両方ともカスタムドメインの設定ができる |
Figma to code | 作成したコンポーネントをコードへ変換 | ◯ | – | Amplifty Studioは、Hooksなどのビジネスロジックまではコード化できない |
非同期処理要求 | FEからBEの非同期関数をキックすることができる | ◯ | ◯ | Amplifyについては厳密にはFE->API gateway -> Lambdaの順でキックしている |
ID+PW認証 | IDとパスワード入力による認証機能提供 | ◯ | ◯ | Amplifyはタグとして認証画面のコンポーネントも提供しており、編集することも可能 |
API | Cloud上で定義されたDBに対してREST APIでCRUD | ◯ | ◯ | |
Cloud strage | 各種ファイル用のストレージファイル | ◯ | ◯ | |
Realtime database | JSONデータをユーザー間でリアルタイム共有 | ◯ | ◯ | 具体例としてはチャットアプリなどで利用 |
クラッシュレポート | iOSやAndroidのクラッシュした内容をサーバーに送信 | – | ◯ | |
Analytics | 各ユーザーのアクセス状況について分析 | ◯ | ◯ |
AmplifyとFirebaseどちらを使うべきか
AmplifyもFirebaseとも基本的に提供されているサービスはほぼ一緒であるため、どちらを使用してもアプリを構築することが可能です。
ですが、その時々のシチュエーションによって、AmplifyとFirebaseのどちらを使うべきかは異なります。そこで、「Amplifyを使ったほうが良い場合」と「Firebaseを使ったほうが良い場合」をそれぞれ解説します。
Amplifyを使ったほうが良い場合
Amplifyは以下のような条件での使用をおすすめします。
構築したAWSサービスをカスタマイズしたい場合 | Amplifyで開発された各種サービスは基本的にはすべてAWS上に展開されます。つまり、構築されたインフラやバックエンドの内容が可視化された状態となります。そのため、構築されたインフラの設定を開発自身でカスタマイズすることが可能です。例えばセキュリティグループの設定など、Amplifyだけでは構築しきれなかった部分について補足対応したい場合は、Amplifyを使うことが適しているのではないかと考えます。 |
---|---|
AWSシステムと連携したい場合 | Amplifyで生成した各種サービスはすべてAWS上に展開されます。つまりAmplifyで構築したサービスと別のサービスを連携したい場合は、スムーズな連携が期待できます(例えば、Amplifyで構築したWebアプリ上において、AWS上においてデータ分析を実施したいやMLをしたい場合など)。またAmplifyで構築されたインフラ自体がホワイトボックス化されており、連携自体も容易に実現できます。 |
ローコードでWebアプリやWebサイトを開発したい場合 | Amplify Studioという機能を使うことで、プログラム初心者であったとしても、FigmaからReactのコンポーネントをコード化やコンポーネント定義できたり、BaaS部分の各種機能をノーコードで設定することも可能です。その結果として、WebアプリならびにWebサイトの初心者であっても、簡単にWebアプリやモバイルアプリ、Webサイトの構築を実施することが可能です(ただしフロントエンドの部分はReactで一部コーディングが必要)。 |
Firebaseを使ったほうが良い場合
Firebaseは以下のような条件での使用をおすすめします。
Flutterを使ったハイブリッドアプリと連携したい場合 | FlutterにおいてはFirebaseを正式にサポートされており、Firebaseとの連携するためのライブラリやSDKがFlutter上において提供されております。ハイブリットアプリ且つMBaaSを使ったモバイルアプリケーション開発をする際においては、Firebaseを使うことが適しているのではないかと考えます。 |
---|---|
Googleのサービスを利用する場合 | FirebaseはGoogleエコシステムとの親和性が高いため、Google Cloud Platform(GCP)を利用している場合や、Googleのサービスと連携させたいプロジェクトには、Firebaseが適しています。 |
Amplifyの方がインフラを可視化されているため、構築したインフラを再利用したり、カスタマイズしたい場合はAmplifyの方が適していると考えます。
一方でハイブリッドアプリやGoogleの各種サービスと連携させたい場合は、Firebaseを使った方が良いのではないかと考えます。
さいごに
AmplifyとFirebaseは、どちらもウェブやモバイルアプリケーションの開発を容易にする優れたプラットフォームです。しかし、どちらを選択するかは、プロジェクトの要件、開発チームのスキルセット、および既存のインフラストラクチャに大きく依存します。ですので、それぞれのプラットフォームが提供する機能や利点を慎重に比較検討し、プロジェクトに最適な選択肢を見つけることが重要です。