AWSには多くのサービスがあり、サーバーレスでシステムを構築できるものも増えています。開発方法は複数ありますが、AWSを用いたアプリ開発で忘れてはならない存在がAWS Amplifyです。今回は、アプリケーション開発を効率化できるAWS Amplifyを詳しく解説します。
目次 <Contents>
AWS Amplifyとはどういったサービスか

AWS Amplifyは、Webやモバイルアプリケーションの開発・デプロイ、そして運用や管理を総合的にサポートするサービスです。いわゆるフルスタック開発を実現でき、AWSの機能を活用しながらさまざまなアプリケーションを開発できます。
本来、アプリケーション開発には、サーバーやミドルウェアなどの準備から設定作業が必要です。それらが完了することで、ようやく開発へと進みます。しかし、AWS Amplifyを利用すれば、素早くフルスタック開発を開始できるのです。
AWS Lambdaとの違い
Amplifyはサーバーレスアーキテクチャにも対応しています。AWSで同様の機能を提供するサービスに「AWS Lambda」があり、利用した人も多いでしょう。
しかし、こちらはフルスタックではなく、あくまでもアプリケーションの実行に特化したものです。AWS Amplifyはソースコードの実行だけでなく、インフラ部分も制御できます。その点で、AWS Lambdaより、柔軟性の高い開発が可能なのです。
AWS Amplifyの主な機能と仕組み
AWS Amplifyは複数の機能から構成されており、それぞれの概要や仕組みについて解説します。
Amplify CLI
Amplify CLIは、AWS Amplifyで利用できるコマンドラインツールです。主にAWSのバックエンド部分を構築するインターフェースとして利用できます。コマンドラインでありながら対話形式で操作できるため、効率よくバックエンドの開発が可能です。指示を出すことで、AWSの設定に必要な構成ファイルなどが自動的に生成されます。
Amplify Framework
Amplify Frameworkは、Webやモバイルアプリケーションの開発を効率化できるフレームワークです。オープンソースで提供されており、AWSのバックエンドや認証サービス、ストレージ、APIなどの操作に対応します。
また、AWSの中で完結するのではなく、React、Angular、Vueなど一般的なWebフレームワークと連携することも可能です。

遠隔開発や柔軟性を重視したフレームワークであり、使いこなせるとAWSでの開発スピードを大幅に向上できます。フレームワークなしで開発することも可能ですが、よりスピーディーに進めるためには、ぜひ習得しておきたい機能です。
Amplify Console
Amplify Consoleは、AWS Amplifyにおける重要な機能で、静的Webサイトやシングルページアプリケーション(SPA)の開発・デプロイを支援します。AWSの内部で開発することはもちろん、GitHub、GitLab、Bitbucketなどのリポジトリからアプリケーションを読み込むことも可能です。この場合、アプリケーションのホスティングサービスとして利用できます。
リポジトリと連携することで、変更が生じた際にも簡単に再デプロイが可能です。いわゆる「継続的デプロイ(Continuous Deployment)」を実現できます。Amplify CLIと組み合わせて利用することで、フロントエンドとバックエンドの両方を効率化できるのです。
AWS Amplifyの料金体系
AWS Amplifyの料金体系は「AWS 無料利用枠付き」と「AWS 無料利用枠なし」に分類できます。どちらを利用するかによって、料金に違いがあるため注意してください。
一般的に利用される「AWS 無料利用枠なし」の場合、WebサイトやWebアプリケーションを提供した分だけ料金が発生します。たとえば、以下の支払いが必要です。
- ● ビルドとデプロイ:0.01 USD/1 分あたり
- ● データストレージ:0.023 USD/GB/月
- ● データ転送 (OUT):0.15 USD/GBサービス
- ● リクエスト数 (SSR):0.30 USD/100 万リクエスト
- ● リクエスト期間 (SSR):0.20 USD/時間 (GB-時間)
これらはAWS Amplifyの料金で、これに加えてバックエンドに関連するサービスの料金が発生します。たとえば、データストレージとしてS3も利用する場合、こちらの料金が課金されるのです。Lambda関数を利用すると、これも課金されます。組み合わせ方によって、多様な料金の可能性があるため、事前の試算が重要です。
AWS Amplifyのメリット
AWS Amplifyを用いた開発のメリットについて解説します。
開発スピードの向上
AWS Amplifyを中心として開発することで、スピードの向上が期待できる点がメリットです。
例えば、一般的なフルスクラッチ開発では、サーバーやネットワークなどのインフラ、ウェブサーバー機能などのミドルウェアを導入しなければなりません。しかし、Amplifyならば、これらを導入する作業がほぼ必要なくなります。
また、導入の前提としてサーバーなどを手配する手間もありません。開発前にサーバーを契約したり購入したりする手間がなくなり、これもスピードの向上につながるのです。
スケーラビリティの担保
クラウドサービスであり、スケーラビリティを担保しやすいことがメリットです。アクセス状況に応じてサーバーを増強したり、元に戻したりできます。
また、スモールスタートで登録データの増加に伴い、ストレージを拡張することも可能です。Amplifyにおいてもクラウドサービスらしく、リソースを柔軟に活用できます。
セキュリティの確保
AWS上に構築されたインフラを利用するため、セキュリティを確保できることがメリットです。すでに十分なテストが実施され、基本的なセキュリティは担保されています。たとえば、デプロイしたアプリケーションとS3ストレージとの通信は、AWS内でセキュリティが担保されているのです。
ただ、すべてのセキュリティが自動的に担保されるわけではありません。責任分担モデルがあり、ユーザー側が担保すべき部分も含まれます。例えば、デプロイするアプリケーション内部のセキュリティはユーザー側の責任です。
とはいえ、セキュリティサービスを含め、堅牢なアプリケーションを開発しやすいことは大きなメリットです。
コストの削減
完成されたインフラを利用することで、開発コストの削減につながります。
本来、フルスタック開発ではインフラやミドルウェアからの準備が必要です。たとえば、サーバーを手配し、そこにWebサーバーの機能を導入します。これだけでもある程度のコストが発生するでしょう。
これをAmplifyに置き換えると、事前準備のコストはほとんど発生しません。簡単な操作だけでフルスタック開発の準備が整い、人的リソースや時間といった観点でも大きく貢献してくれます。
AWS Amplifyのデメリット
AWS Amplifyにはメリットだけでなく、いくつかのデメリットもあるため、あらかじめ把握しておきましょう。
カスタマイズの制限
フルスタック開発に対応していますが、Amplifyにはカスタマイズの制限があります。自分でインフラから構築する場合と比較すると、どうしても自由度が下がってしまうのです。AWSがカスタマイズを許可している部分しか操作できません。
とはいえ、クラウドサービスの中でも柔軟な操作ができるように設計されています。カスタマイズに制限はあるものの、特殊な要件がない限りは開発や運用に問題はないでしょう。
ベンダーロックインへの懸念
開発にAWS Amplifyを用いることで、ベンダーロックインに陥る懸念があります。AWSのサービスのみで構築するため、他の環境へ移行しづらくなる点がデメリットです。また、AWSで障害が発生した際には、サービスが完全停止するリスクもあります。
近年はAWSを含め、クラウドサービスでも障害が発生しています。そのため、複数のクラウドサービスを組み合わせて利用する「マルチクラウド」という考え方も広がってきました。Amplifyはこのマルチクラウドの方向性とはやや相反する部分がある点に注意が必要です。
学習コストの増加
AWS独自のサービスであるため、学習コストの増加もデメリットです。初めてAmplifyを利用する際や、アップデートがあった場合には、その都度使い方を習得しなければなりません。どうしても専門的な知識が必要となるのです。
ただ、学習コストは発生するものの、開発全体のコストで見れば削減できる可能性が高いでしょう。Amplifyを中長期的に活用することで、人件費を中心にコストカットできるはずです。逆に、短期間で利用を終了してしまう場合は、学習コストが無駄になりかねません。
AWS Amplifyで実現できること
具体的にAWS Amplifyでどういったアプリケーションを開発できるか例を紹介します。
ユーザー認証機能を備えたWebアプリの開発
AWS Amplifyを利用すれば、Cognitoと連携してユーザー登録・ログイン・多要素認証などを簡単に実装できます。たとえば会員制サイトやサブスクリプション型サービスのように、ユーザーごとに閲覧制限を設けたい場合でも、Amplify CLIで数コマンド実行するだけで認証基盤を構築可能です。
静的Webサイトやシングルページアプリの自動デプロイ
Amplify Consoleを使うと、GitHubやBitbucketと連携した自動デプロイ環境を簡単に構築できます。開発者がリポジトリにコードをプッシュすると、自動でビルド・テスト・デプロイが実行され、最新の状態が即座に公開されるのです。継続的デプロイ(CI/CD)の仕組みを少ない工数で導入でき、特にReactやNext.jsなどのフロントエンドアプリケーションで大きな効果を発揮します。
AWS Amplifyのクイックスタートで使い方を学ぶ
AWS Amplifyはさまざまなサービスに対応していることから「使い方」を学ぶことが難しいです。どういったWebアプリケーションやサイトを公開するかで、必要なAWSのサービスが異なります。
そのため、AWS Amplifyについて学びたい場合は公式のクイックスタートチュートリアルを活用してみましょう。GitHubにレポジトリを作成し、それを用いてWebサイトを公開する流れが動画で説明されています。

なお、説明及び動画は英語であるため、その点だけ注意してください。極端に難しい単語は含まれていませんが、英語に苦手意識があると難しく感じるかもしれません。
まとめ
AWS Amplifyは、AWSでフルスタック開発を効率化できるサービスです。Gitなどのレポジトリと連携することで、CIやCDの考えからサービスを構築できます。本来、Webアプリケーションにはインフラ構築が必要ですが、AWS Amplifyならばその作業はほぼ必要ありません。画面から指示を出すだけで、簡単に準備できます。
ただ、AWSに特化したサービスであるため、ベンダーロックインのリスクがあります。障害などが発生した際、サービスがすべて停止するかもしれません。メリットとデメリットをどちらも評価することがポイントです。


お客様が運営するクラウドの監視・保守・運用業務を、ジードが代行いたします。
お客様のご要望に沿って、適切なクラウド選定から設計・構築までを行います。
Azure上で、AI + 機械学習、分析、ブロックチェーン、IoTを開発します。