はじめに
これからAWSのサービスの一つ、**Amplify(アンプリファイ)**を利用してアプリケーションを開発するため、備忘録としてここに記述します。
私は初学者ですので、誤っている箇所がありましたらご指摘いただけますと幸いです。
Amplifyとは
クラウドサービス上におけるモバイルアプリケーションやWebアプリケーションを安全に構築するためのプラットホームになります。
Lambda、DynamoDB、Cognito、AppSync、CloudFront、S3 など、AWSのサービスを使いやすくパッケージ化したものです。Amplifyに対応している言語**( JavaScript、iOS、Android )、ライブラリ( React、Vue.js、Angular )** でフロントエンドさえ作ってしまえば、サーバーサイド、インフラはAWSのサービスで簡単につくれてしまうという優れものです。
導入されているツール(一部抜粋)
① API(例:AppSync、REST、GraphQL)
ソフトウェアの一部を外部に向けて公開することで、第三者が開発したソフトウェアとも機能が共有できるようになります。最初からプログラムを組む必要がなくなり、ソフトウェア開発の効率化が計れます。
② Auth(例:Cognito)
認証を行うことです。認証の対象が人である場合は、その人で本当に正しいかどうかを確認します。IDとパスワードさえ確認できれば本人と確認ができるという仕組みです。これにより安全性が高まり、セキュリティが向上します。
③ Pub/Sub(例:Lambda)
非同期メッセージングサービスです。イベントを処理するサービスとイベントを生成するサービスを切り離すことができます。これにより、一貫性のあるパフォーマンスを実現させることができます。
④ Storage(例:S3)
データを保存して置く場所です。AWS Amplifyにはこのような補助記憶装置があり、データを長時間保存することができます。またAWS AmplifyのStorageにはアクセスレベルが3つ存在し、使い分ける必要もあります。
メリット
① 短時間でサービスをリリースできる
開発者目線だとアプリケーション開発に必要な一般的な技術要素をゼロから構築するのは大変です。それこそ本来作りたいアプリケーションの開発に注力したいといったような課題があります。例えば、amplify add api
といったコマンドをやりたいことベースで入力し、簡単な操作を行い自動でバックエンドが構築されます。
② 柔軟性の良さ
Amplifyの構成要素である Amplify Console は、SPAやホスティング、Cl/CDの運用を自動化するマネージドサービスです。拠点ごとにテスト環境を自動で構築したり、認証を付与するといった、柔軟な開発フローの設計ができます。静的なサイトであれば Amplifyを用いなくても数クリックで使用できてしまう優れものです。
③ ソフトウェアの拡張性を気にしなくて良い
AmplifyはAmplifyフレームワークでアプリケーションを拡張するため、スケーラブルなサーバーレスバックエンドを基盤に構築します。
④ サービスの成長による環境変化に強い
Amplifyには Multi Environment という機能が存在し、本番環境と全く同じバックエンドを構築することができます。また、Webアプリケーションであれば、Amplify Console を用いて、CI/CD環境を簡単に構築することもできるようになります。
⑤ ユーザーの反応や動きを可視化できる
AmplifyとPinpointを統合することでユーザーのエンゲージメントを簡単に可視化することができます。また、個別の属性を付与しサービスに応じたエンゲージメントの可視化も行うことができます。
⑥ スケールのしやすさ
AWS Amplifyが使用するバックエンドはスケールすることを前提としたコンポーネントで構築されるので、バックエンドを再構築する必要がありません。初期段階からスケーラビリティの心配をしなくてもよいという大きなメリットがあります。
おわりに
AWSのプラットフォームであるAmplifyについて初学者なりにまとめました。これから開発に進みたいと思うのですが、公式では簡単とはいえど詰まった場合、参照できる情報がAWSは少ない印象です。最新の記事や情報を見ながら地道に積み上げていきたいと思います。
参考