【元記事をASCII.jpで読む】

 2019年7月23日アマゾン ウェブ サービス ジャパン(以下、AWSジャパン)はWebモバイルアプリ開発についての説明会を開催した。AWSジャパンの塚田朗弘氏がAWS Amplifyについて説明するとともに、実際のユーザーであるtyottoとCookpadTVが活用事例を披露した。

アプリ開発者はユーザーに価値を届けることにフォーカスしたい

 冒頭、Webモバイルアプリの開発に最適なAWSについて説明したのは、AWSジャパン スタートアップソリューションアーキテクトの塚田朗弘氏。塚田氏は、Webモバイルアプリの構成要素やアプリ開発の課題から説明をスタートさせた。

 一般的なWebモバイルアプリの場合、クライアントWebAPIサーバーデータベースなどの3階層で構成されており、ロジックやUIのほか、認証・認可、通知、サーバー調達・運用、監視、インターフェイス定義、冗長化、セキュリティ、静的コンテンツの配信、バックアップまで幅広く実装する必要がある。しかも、これらは最低限の要素で、多くのWebモバイルアプリでは、ユーザーチャット、ログ収集、分析、プッシュ通知、他システムの連携なども必要になる。

 しかし、アプリ開発者はサーバーを構築したり、運用監視したり、ログの出力やネットワーク設定をしたいわけではない。本来は、フロントエンドアプリバックエンドAPI、ロジックを作ったり、ユーザーの行動の分析にフォーカスしたいはずだ。塚田氏は、「一言でモバイルアプリと言っても、目に見えないところでやることがいっぱいある。でも、アプリ開発者はユーザーに価値を届けるところにフォーカスしたいはず」と指摘する。

 こうした課題を解決するのは「AWS Amplify」になる。AWS Amplifyは2年前に発表された開発者向けのサービスで、コマンドからサーバーレスなバックエンドを構築するAWS Amplify CLI、UIコンポーネントやライブラリを使ってフロントエンドアプリを開発できるAmplify Framework、Webアプリを自動デプロイできるAmplify Consoleから構成されている。

 このうちAmplify CLIは、「やりたいこと」にシンプルコマンドで呼び出すと、最適なサーバーレスバックエンドを構築してくれる。Amplify CLIのコマンドからマネージドGraphQLゲートウェイであるAppSyncを叩くと、データソースとのやりとりが容易になる。また、analysticコマンドを叩けば、ユーザー動向やイベント、属性情報を得られるAmazon Pinpointが利用できる。ほかにもAWS Amplifyは、Analystics、API、Authentication、StorageInteractions、PubSub、Notification、XRなどが用意されており、直感的にバックエンドを構築できるという。

 AWS Amplifyを利用するには公式サイトチュートリアルから始めるほか、目黒のAWSオフィスに設置されたAWS Loft Tokyoでのハンズオンワークショップで学ぶことができる。

AWS AmplifyとAWS Loftで「できない」理由探しはもうできない

 後半、具体的なユーザーとして登壇したのは、「教育で世界をちょっと良くする」を掲げるtyotto(ちょっと) CTOの伊藤哲志氏。自社運営している学習塾のノウハウを元にしたコーチングアプリの開発を手がけるtyottoは、従来型のEC2やAmazon RDS、S3、CloudFrontを用いていたが、アプリケーションサーバーの保守やモニタリングが必要なほか、ステージング環境を常時稼働するコストが重いという課題を抱えていた。Docker+ECS(Fargate)によるコンテナ化も検討したが、コンテナの起動数の制御やモニタリングに工数がかかりそうで断念したという。

 そんな伊藤氏がサーバーレスと出会ったのは、目黒で開催されたAmplify Black Beltセミナーの「AWS AppSync入門」。AWSベストラクティスに沿ったバックエンドをすぐに構築できるAWS Smplifyで課題を一気に解決できると感じた伊藤氏は、さっそく利用を開始。ユーザー認証周りの機能が一式提供されているJavaScriptAWS Amplify Frameworkと、数クリックWebアプリの配信基盤を構築できるAWS Amplify Consoleを用いることで、わずか半年でサーバーレスに移行したという。

 伊藤氏は、AWS Loft Tokyoも日常的なコワーキングとして利用しており、Ask An Expertでは週1回ペースで質問をして、技術的な課題を解決している。また、AWS Loft Tokyoで開催されるAWS主催のセミナーも隔週ペースで参加し、登壇までしたことで、エンジニア採用にまで結びついた。「AWS Loft Tokyoはまさに『挑戦を形にする場所』そのもの。AWSインフラ/ITのツールボックスと言われますが、実際にはチームの一部で、本来のやるべきことに集中できる環境。ここまでいろいろ揃えてもらって、『できない』理由探しはもうできないと思いました」と伊藤氏は語る。

 2人目として登壇したのは、CookpadTV 取締役 CTOの渡辺慎也氏。料理上手な有名人や料理家のクッキングを生配信するサービスだが、2018年4月に子会社としてクックパッドから独立。同年8月に資本提携した三菱商事から約40億円を調達している。

 同社のクッキングライブアプリcookpadLive」ではユーザーカウント、ハートコメントスタンプなどにAppSyncをヘビーに使っている。もともとFirebase Realtime Databaseを用いてコメントハートを実装していたが、ちょいちょい障害が起こっており、信頼性がイマイチだった。そもそもクックパッド自身がAWSをヘビーに使っており、DynamoDBやLambdaも扱いが慣れているほか、Infrastructure as Codeで一元管理もできる。もちろん、AWSFirebaseで分離するのはデータ管理の観点で望ましくなかったため、AppSyncへ移行。iOS/Android SDKで未対応の部分があったが、AWSと連携することでアプリエンジニアでも機能追加でき、大きな問題なく移行できたという。

 cookpadLiveではアプリからのコメントのWRITEをサーバー経由で行なっており、いったんNGワードフィルタリングして書き込んでいる(ただしREADは直接)。また、スタンプポイントチェックのほか、送信効率化のためのバッファリングを実施。「某声優が出演した回では、47分の放送でハートが約150万回送信された」(渡辺氏)とのことで、複数メッセージをまとめて送ることで、ファンアウトにかかるコストを削減した。また、メッセージ更新をまとめて行なうことで、iOS/Androidアプリの負荷も軽減。サービスの成長とともに急激に増加しているメッセージ量にも耐えられているという。

アプリ開発者を「やりたいこと」に向かわせるAWS Amplify