このページの本文へ

tyottoとCookpadTVが語る魅力とは?

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

2019年07月24日 07時00分更新

文● 大谷イビサ/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

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

AWSジャパン スタートアップソリューションアーキテクト 塚田朗弘氏

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

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

 一般的なWeb/モバイルアプリの場合、クライアント、Web・APIサーバー、データベースなどの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、Storage、Interactions、PubSub、Notification、XRなどが用意されており、直感的にバックエンドを構築できるという。

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

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

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

tyotto CTOの伊藤哲志氏

 そんな伊藤氏がサーバーレスと出会ったのは、目黒で開催されたAmplify Black Beltセミナーの「AWS AppSync入門」。AWSのベストプラクティスに沿ったバックエンドをすぐに構築できるAWS Amplifyで課題を一気に解決できると感じた伊藤氏は、さっそく利用を開始。ユーザー認証周りの機能が一式提供されているJavaScriptのAWS 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億円を調達している。

CookpadTV 取締役 CTO 渡辺慎也氏

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

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

■関連サイト

カテゴリートップへ

ASCII.jp特設サイト

クラウド連載/すっきりわかった仮想化技術

ピックアップ