Take a “new step” Achieved by Value Engineering tech.sprasia.co.jp

AWS Amplifyに触れてみた

こんにちは。
スプラシアの峯岸です。
前回の記事から約一年経ち、多くのことを学ぶことができました。
また、この一年の間に、FlutterのモバイルアプリをAmplifyを用いて作成しました。
その経験からAmplifyについてのことをまとめていきます。

目次

AWS Amplifyとは

詳細に入る前に、一度サービスについて軽く書いていきます。
Amplifyとは、AWSで提供されているサービスの一つで、webアプリ、モバイルアプリを作成する際に必要になるバックエンドの部分をサーバーレスで作成することのできるサービス群です。
内包されているサービスの例を挙げると、
・Cognito
・AppSync
・Lambda
・DynamoDB
・S3
などがあります。
それに加え、Amplify Hostingによりwebアプリのデプロイもできます。
認証からデータベース、ストレージまで一通り揃っているサービスです。

また、コード中で引き出す際にはライブラリを用いることになるため、これらのサービスをコード上での関数を書くことで使用することができます。

上の図はFlutterのアプリでテーブルの項目を作成するコードと、その前後の画面です。
このように、簡単な関数を用いてCRUDの処理を追加することができます。
こちらで使用している関数は、amplifyのバックエンドとの連携後自動生成できるようになっています。

メリット・デメリット

Amplifyを使用するメリットとして挙げられるものはいくつかあります。

・バックエンドが自動生成できるため、手間をかけずに開発できる。

・バックエンド環境、連携するためのコードを自動生成できるため、フロントエンド側の作成に注力できる。(変更がある場合もGUIで操作できる。)

・デプロイを簡単に出来る
GitHubのリポジトリと連携することで、指定のブランチに変更があった場合に自動デプロイができる。また、プルリクエストごとにプレビューすることも可能。

・複数環境の切り替えが可能
認証、データベース等が異なるバックエンド環境を複数用意でき、使い分けることができる。

反面、デメリットであることもいくつかあります。

・基本的にGraphQLを使用することになる。

・データ量が多くなると通信量が膨大になる可能性がある。

・ページネーションが不完全であり、RESTのようには実行できない。
RESTの方を使用することもできるので、適材適所で使い分けはできる。

・対応していない言語、フレームワークがある
基本的にフロントエンドのフレームワーク向きのため、Djangoやlaravelなどは対応していない。

・大人数での開発を行う場合に問題が発生する (モデル等のロールバックが起こる可能性がある。)

Firebaseとの比較

似たようなサービスとして紹介されることが多いのが、GCPのサービスであるFirebaseです。
類似しているとはいえ、違いがあるので使い分けが大切だと考えています。

Firebase
・GCPのサービスを使いたい場合
・無料枠が大きいため、個人開発の場合は軍配があがる
・日本語ドキュメントがある

Amplify
・AWSのサービスと連携したい場合
・RESTAPIを使用することもできる
・S3内のファイルを表示制限
・個人の環境だが、Firebaseより通信速度が速かった

それぞれ似たサービスではありながら、細かい違いがあります。
プロジェクトに合わせて選ぶことが大切だと考えられます。

まとめ

最後にまとめをしていきます。
Amplifyは大規模なプロジェクトというより少人数、小規模なプロジェクトに向いていると考えています。個人開発をする際は特に扱いやすいものだと思うので、ぜひ使用してみてはいかがでしょうか。

また、昨年秋から「Ampify Gen2」という新サービスのベータ版を体験できるようになっています。
ストレージや、Lambdaの使用など一部機能は使用できない状態ではありますが、認証やデータベースをもっと簡単に使用できるようになっています。
現状のAmplifyでは通信して、バックエンド環境に反映してからローカルで取得する、といった形になっていましたが、こちらではサンドボックスを作成し、反映せずともローカルで試すことができるようになっています。
こちらも一度、使ってみてはいかがでしょうか。

関連カテゴリ 最新記事一覧