AWS AmplifyでWebアプリを高速に開発する
目次
AWS Amplifyとは?
AWS Amplifyとは、AWS(Amazon Web Services)上で、Web・モバイルアプリを高速でリリースするための開発プラットフォームです。React、 Vue、 Angularなどを用いたシングルページアプリケーションや、静的サイトジェネレーターを用いたWebサイト、アプリケーションを高速で開発することができます。本記事では、AWS Amplifyの特徴について解説していきます。
AWS Amplifyでなにができるのか?
AWS Amplifyでできることは下記の2点です。
- アプリケーションのバックエンドやインフラを自動構築
通常AWSでシステムを構築する際には、180以上あるサービスからバックエンドやインフラを構築してから、フロントエンドで稼働するコードをデプロイします。しかしながら、180に及ぶサービスの中から適切にサービスの選定を行うのは、一般的なアプリケーションエンジニアにとっては決して簡単なことではありません。AWS Amplifyでは適切なインフラやバックエンドを自動構築することで、アプリケーションエンジニアの学習コストの低減や、負担の軽減を実現します。 - フロントエンドからバックエンドを利用するための設定ファイル、コードの生成
自動構築されたバックエンドやインフラと、フロントエンドは適切に連携を行わないと、アプリケーションは正しく稼働しません。AWS Amplifyでは、自動構築したバックエンドをフロントエンドから統合的に利用するための一連のライブラリ、UIコンポーネントを提供し、バックエンドと適切に連携できるようにします。具体的には、iOS、Android、Webサイト、React Native、Vueなどで構築されたUIと、バックエンドと連携するためのライブラリが提供されます。
AWS Amplifyの構成要素
AWS AmplifyはAWSの様々なサービスやツールで構成されており、AWS Amplifyで提供されているサービスやツールは、まとめてAmplifyファミリーと呼ばれています。Amplifyファミリーは下記の3点で構成されています。
Amplify ライブラリ
アプリケーションを構築するためのライブラリ、UIコンポーネントといった一連のフレームワークを提供しています。これらのライブラリによって、AWSのバックエンドと連携するための処理を数行で実装できるようになっています。ライブラリは、React、Vue、AngularといったWebフレームワークやiOS、Androidといったモバイルアプリケーションに対応しています。
また、React、Vue、Angularなどのフレームワーク向けにUIコンポーネントライブラリが提供され、認証UIや画面遷移UIなどの様々な機能を簡単に実装することができます。
Amplify Console
フロントエンドとバックエンドに対してビルド、テスト、デプロイといったCI/CDの仕組みを容易に実現できるようにするためのツールです。CodeCommitやGithubなどの各種リポジトリとも接続が可能となっています。また、AWS Device Farmという機能があり、モバイルアプリケーション向けにiOSやAndroidといった異なるOSのテスト環境が用意されています。
Amplify CLI
AWSでサーバーレスなバックエンドを構築・管理するためのCLIツールです。CUIベースであるため、インフラの知識がなくても再利用が可能となっており、アプリケーションエンジニアにとってコードを書くようにバックエンドを構築できるようになっています。
Amplify Admin UI
2020年に追加リリースされた管理画面サービスです。データモデリング、コンテンツ管理、アプリケーションのユーザー・グループ管理など、CLIを使わなければできなかったAmplifyを使ったバックエンドリソースの作成が簡単にできます。
AWS上でAmplifyを活用してDXを実現するスタイルズのクラウドネイティブ開発サービスはこちら→
なぜAWS Amplify?:理由1: 本質的な作業に集中し、サービスを早くリリースができる
アプリケーション構築は、『実現したいそのものの機能』と、『アプリケーションの運用のために作らなくてはいけない機能』の2点を組み合わせて構築が進みます。後者(アプリケーションの運用のために作らなくてはいけない機能)の具体例を挙げると、アクセス権限制御ロジックや認証機能があげられます。
これらはアプリケーションにとって非常に重要な要素ではありますが、競合のアプリケーションと差別化を生むものではなく、ユーザメリットに直結するものではありません。AWS Amplifyを用いることで、これらの機能を簡単に実装することができます。
それによって、アプリケーションエンジニアはサービスの本質的な開発に注力することができ、ユーザーへの価値の提供や競合との差別化を進めることが可能になります。
なぜAWS Amplify?:理由2: スケールしやすい
アプリケーションはユーザー数の上昇やアクセス頻度の増加に伴い、システムをスケールし続けなければなりません。システムのスケールは、ある種の非機能要件を詰めていく作業となるため、インフラに明るくないアプリケーションエンジニアにとっては非常に難しく、時間がかかってしまったり、十分な検討時間がなかったりする項目になりえます。
そこでAWS Amplifyを利用すると、システムの拡大が非常に容易に実装できるようになります。AWS Amplifyが使用するバックエンドはAmazon DynamoDBやAWS Lambdaといったサーバーレスのサービスで構築されており、スケールアップやスケールアウトが容易になっています。したがって、サービスの成長に伴い、実装の方式やバックエンドを再構築する必要はありません。このように、スケーラビリティやキャパシティプランニングに使う時間を最小限にすることができます。
なぜAWS Amplify?:理由3: ビジネス成長に伴う環境の変更に強い
AWS Amplifyはエンジニアの環境とビジネスの環境の変化に対して柔軟に対応できる性質を持っています。
具体的に見ていきましょう。
エンジニアの環境変化に強い
エンジニア組織が拡大すると、開発環境の不足やデータの不整合といった、開発効率が悪くなってしまうというケースが存在します。
また、開発環境と本番環境をシームレスにつなげるためのCI/CDの仕組みも重要となります。AWS Amplifyには『multi environment』という機能が存在し、複数のコマンドを実行することで本番環境と全く同じバックエンドを構築することができます。これによって開発環境の不足による非効率化を防止することができます。また、先述の通りAmplify Consoleを利用することでCI/CDのための環境も簡単に準備することができます。
ビジネスの変化に強い
AWS AmplifyはLambdaやDynamoDBといったバックエンドを利用していますが、アプリケーションの拡大によってはEC2の利用なども考慮に入ってくるかもしれません。AWS Amplifyは、Amplify CLIで対応できない要件に対してはCloudFormationを使用するといった柔軟な構築が可能となっており、シームレスに連携できます。
無理にAWS Amplifyを使わなくても良いケース
非常に便利な機能を備えたAWS Amplifyですが、無理に使わなくてもいいケースもやはり存在します。具体的には下記のケースです。
- AWS以外の外部サービスと連携を実施する場合
例えば認証機能について外部のIDプロバイダ(Facebook、Googleなど)を利用した場合のほうが、ユーザーフレンドリーである場合があります。しかしながら、このようなケースにおいてはAWS Amplifyは利用できません。 - 細かい設定を行いたい場合
Amplify Consoleの静的サイトのホスティングは、コンテンツ配信にCDNであるCloudFrontを自動でセットアップしてくれますが、CloudFrontの設定画面からはリソースが確認できません。CloudFrontの細かい設定を行いたい場合(マルチオリジンにする、Shield Advancedを利用する)といった場合はAWS Amplifyを使わなくていいケースです。
AWS上でAmplifyを活用してDXを実現するスタイルズのクラウドネイティブ開発サービスはこちら→
まとめ
AWS Amplifyは様々な機能が備わっており、高速にWebアプリケーションやモバイルアプリを構築することができます。特にインフラエンジニアの確保に課題を持っている企業にとっては、魅力的な様々な機能が備わっています。AWS Amplifyをうまく活用して、アプリケーションの構築や改善にリソースを注力し、競合他社との差別化やユーザーエクスペリエンスの向上につなげてみてください。