アマゾン ウェブ サービス ジャパン(AWSジャパン)は7月23日、「ウェブアプリ、モバイルアプリ開発に最適なAWSサービスに関する説明会」を開催した。「AWS Amplify」を解説するとともに、ユーザー企業であるtyottoとCookpadTVが自らのAmplifyの活用法を解説した。
Amplifyを使う理由
AWSジャパンでスタートアップソリューションアーキテクトを務める塚田朗弘氏は、Amplifyについて、開発者が「やりたいこと」だけを意識してアプリ構築をするためのサービスと述べた。では、その「やりたいこと」とは何か。
一般的なウェブやモバイルアプリの構築要素を考えた場合、モバイルデバイスやウェブブラウザ上で動作するクライアントアプリ、ウェブやアプリ、APIといったバックエンドのサーバー群やサーバーサイドアプリ、リレーショナルデータベースやNoSQLといったデータストアの層がある。
塚田朗弘氏
そして、それぞれの要素において、ロジックやユーザーインタフェース(UI)の実装といったサービスとしてエンドユーザーから見えやすい作業だけでなく、クライアントアプリのマルチプラットフォーム対応、認証許可、サーバーの調達・構築や運用監視のような「水面下でやらなければいけないこと」(塚田氏)がいろいろある。
その中で、アプリ開発者がやりたいことは、「フロントエンドのアプリを書きたい」「バックエンドのAPIを素早く作りたい」「ユーザーに通知(プッシュ、メール、SMS)を送りたい」といった「ユーザーに価値を届ける」という部分であり、その手助けをいかにするかということで出てくるのがAmplifyだと塚田氏。
Amplifyのコアになるサービスとしては、コマンドラインインターフェースの「Amplify CLI」、クラウドに接続されたUIコンポーネントやライブラリーを使いフロントエンドアプリの開発に利用される「Amplify フレームワーク」、そして、ウェブアプリを実装、ホスティングする「Amplify Console」がある。
AWS Amplifyの構成要素
塚田氏によると、Amplifyを使うことで、アプリ開発者は、AWSのサービスが提供する機能の詳細を知らなくても、自身の「やりたいこと」からサーバーレスなバックエンドの構築が直感的に可能になるという。そのため、本当に必要な開発だけに集中できるようになる。
伊藤哲志氏
Amplifyの使用により開発を効率化した企業として、学習支援アプリの開発などを手がけるtyottoがある。同社で最高技術責任者(CTO)を務める伊藤哲志氏によると、自社運営の学習塾のサービスをアプリ化したものでAmplifyのJavaScriptフレームワークとConsoleを利用しているという。
同アプリで従来採用していたアーキテクチャでは、アプリサーバーの保守やモニタリングの必要性、ステージング環境を常時稼働するコスト、スケールできない構成という課題があったという。これらは、エンジニアリング的には重要かつやりがいがある部分だったが、「スタートアップにとって、真にフォーカスすべき点はこれらではなく、価値のあるプロダクトにたどり着くための改善をどんどん回すこと」と伊藤氏は考え、コンテナー化を検討。しかし、コンテナーの起動数の制御やモニタリングの工数が引き続き発生するという懸念あったことから、Amplifyの導入を決断したと伊藤氏は明かす。
JavaScriptフレームワークは、モバイルアプリに組み込んで使用されており、「AWS AppSync」や「Amazon Cognito」といったバックエンドサービスを簡単に呼び出すことを可能にしていると伊藤氏は説明する。JavaScriptフレームワークでは、サインアップやサインインといったユーザー認証周りの一般的な機能が一式提供されており、AWSにアクセスするための認証情報をすべて管理してくれるため、高速かつ安全に開発が可能となったという。
また、Amplify Consoleは、数クリックでウェブアプリ配信基盤が構築でき、開発中のアクセス制限や複数環境の同時配信が可能となり、コードをGitリポジトリにプッシュするだけでデプロイできるなどのメリットがあるため、Amplify Consoleを使った構築は、工数がほぼゼロで、10分程度あればできてしまうという。
塚田氏によると、Amplifyを使ったバックエンドの構築は次のようなコマンドを実行するだけで可能だという。
$ amplify add api