弊社CTO伊藤がAWSジャパン記者説明会で登壇しました

弊社CTO伊藤がAWSジャパン記者説明会で登壇しました

7月24日にアマゾン新目黒オフィスにて開催された「AWSジャパン 記者説明会 ウェブアプリ、モバイルアプリ開発に最適なAWSサービスについて〜CookpadTVとtyottoにおける、アプリ基盤の開発事例をご紹介〜」に弊社CTO伊藤が登壇しました。

タイムテーブル

  • 13:00 開会・挨拶
    • アマゾン ウェブサービス ジャパン株式会社 PR Specialist 河村 祐貴子さん
  • 13:05 ウェブ・モバイルアプリ開発に最適なAWSサービスについて
    • アマゾン ウェブサービス ジャパン株式会社 スタートアップソリューションアーキテクト 塚田 朗弘さん
  • 13:20 tyottoのAWSサービスの活用事例
    • 株式会社tyotto CTO 伊藤哲志
  • 13:35 CookPadTV様のAWSサービス活用事例
    • CookpadTV株式会社 取締役CTO 渡辺慎也さん
  • 13:50 質疑応答
  • 14:00 閉会

ウェブ・モバイルアプリ開発に最適なAWSサービスについて

アマゾン ウェブサービス ジャパン株式会社 スタートアップソリューションアーキテクト 塚田 朗弘さんによるウェブ・モバイルアプリ開発とAWSサービスであるAmplifyについて説明がありました。

Amprifyとは

一般的なモバイルWebアプリケーションの場合、主にフロント、サーバーサイド、データベースの3つで構成されており、ロジックやUIの実装、サーバの調達・構築、インターフェースの定義、冗長化、運用監視など開発で取り組むことはたくさんあります。

さらにアプリがユーザーに価値を提供していくためには、ユーザー情報を分析して適切なプッシュ通知を送ったり、ログを収集したり、時には他のアプリとの連携がしたいということもあります。

そのため、今までのアプリ開発では、やることが多いため、ユーザーに価値を届けるところによりフォーカスすることが難しいという課題がありました。

このような課題を解決するのが「Amplify」です。
AmplifyによってモバイルWebアプリケーションはユーザーに価値を提供することによりフォーカスすることができるようになります。

基本的には「Amplify CLI」「Amplify Framework」「Amplify Console」3つの要素で構成されています。

Amplify CLIを利用し、「やりたいこと」を実現するために必要なバックエンドをサーバーレスで構築し、Amplify Frameworkでは、UIコンポーネントやライブラリを使ってフロントエンドアプリを開発できるようになりました。
またConsoleではWebアプリをデプロイしてくれます。

説明の中では、GraphQLでデータにアクセスするゲートウェイのAppSyncや、ユーザー認証のCognitoなどのバックエンドをコマンド操作で構築できるとのことでした。

ITスタートアップの開発スピードを支えるAWSとAmplify

ここからは具体的な活用事例の話になります。
弊社 CTOの伊藤の発表です。

tyottoで開発している生徒の学びを引き出すコーチングアプリ「tyotto me」の開発にあたり、どのようにAWSのサービス、そしてAWSを活用しているのかを発表しました。

従来採用していたアーキテクチャと課題

これまでのtyottoでは、上のアーキテクチャ(Ruby on Railsを使用し、EC2やRDS、S3、CloudFrontを用い)で、アプリケーション開発を行っていました。

しかし、このアーキテクチャで運用するといくつか課題がでてきます。
主な課題は以下の3点です。

  • アプリケーションサーバーの保守・モニタリングの必要性
  • ステージング環境を常時稼働するコスト
  • スケールできない構成

しかしながら、スタートアップの私たちにとって真にフォーカスすべき点はこれらの課題ではなく、価値のあるプロダクトにたどり着くための改善をどんどん回すことだと考えています。
そのためにも、課題をできる限り工数を少なく解決しなければなりませんでした。

コンテナ化の検討

まず、先の課題を解決するために、Docker+ECS(Fargate)でコンテナ化検討をしました。
コンテナ化をすると、

  • インフラをコード管理できる
  • CodePipeline / CodeBuild / CodeDeployを使えば、デプロイまで自動化できる。

これらが可能になります。

一方、コンテナの起動数の制御やモニタリングといった点では工数がかかってしまうので、断念することになりました。

サーバーレスへの移行

日頃、利用しているAWS Loft Tokyo(コワーキングスペース)では、18時以降によくセミナーが行われます。
サーバーレスへの移行のきっかけは、そのセミナーのひとつである「Amplify Black Belt Seminar公開収録 AWS AppSync入門」というセミナーでサーバーレスに出会ったことです。

  • AppSyncでスケーラブルなGraphQLサーバーを立てられる
  • Amplifyを使えば、AWSのベストプラクティスに沿ったバックエンドをすぐに構築できる

この2点から、AWSサービスを活用しサーバーレスに移行すれば、課題は一気に解決できのではないかと考えました。

わずか半年でサーバーレスに移行

tyottoのアプリ開発を行うエンジニアは1人になります。
フロントからサーバーサイドまでを伊藤が担当し開発しています。
2018年11月にサーバーレス(Amplify,AppSync)を知り、コンテナ化の検討、断念、2019年2月からサーバーレスの技術調査、そしてアプリケーション開発(2019年8月リリース予定)を行いました。

JavaScriptフレームワークによる高速開発

JavaScriptのAmplify Frameworkを利用することで、ユーザー認証周りを一式提供され、AWSサービスにアクセスするための認証情報の管理を全て行ってくれるため、高速かつ安全に開発を行うことが可能になりました。

Webアプリケーションの配信基盤の高速構築

Amplify Consoleを利用することで、コードをGitリポジトリにプッシュするだけでデプロイでき、開発中のアクセス制限や、複数環境の同時配信もできるようになりした。
数クリックでWebアプリケーション配信基盤を構築できるため、ほとんど工数をかけることなく配信基盤を構築することができました。

このようにして、なんと半年でサーバーレスへの移行を行いました。

『できない』理由探しはもうできない

最後に日頃のAWSの利用について発表しました。
普段は、AWS Loft Tokyoをコワーキングとして利用しています。
同じように利用するエンジニアの皆さんも含めチームのように感じ働いているとのことでした。
また、塚田さんをはじめとする上級エンジニアに質問できる「Ask An Expert」のブースがあり、技術的な課題が出た場合も、相談し解決しています。
そして、AWS Loft Tokyoで開催されるAWS主催のセミナーには隔週ペースで参加しているとのことで、過去のセミナーでは登壇までしたことで、エンジニア採用にまで結びついてます。
AWSは本来やるべきことに集中できる環境が揃っているため、「できない理由探しはもうできない」と語っていました。

Firebase Realtime DatabaseからAppSyncに移行

続いて、CookpadTV株式会社 取締役 CTOの渡辺慎也さんからの発表です。

CookpadTV株式会社は料理が得意・趣味である芸能人や有名人の料理家の料理動画をアプリで配信する「cookpadLive」というサービスを行っています。
ユーザーは動画に対し、コメントやスタンプを送ることもできるそうです。

Firebase Realtime DatabaseからAppSyncに移行の理由

Firebaseを利用した当初はAppSyncはAWSの東京リージョンでの利用ができなかったようです。
そのため、コメント機能や、ハート機能はFirebase Realtime Databaseを利用し実装していたとのことでした。
しかしながら、不具合や元々利用し使い慣れたDynamoDBやLambdaなどAWSのサービスを一元管理したく移行することにしました。

AppSyncに移行して実現したこと

cookpadLiveでは、一度に多くのユーザーからコメントやハートが寄せられるため、負担を軽減する必要があったそうです。
某有名声優さんの放送では、50分弱放送でハート機能が約150万回も利用されたといいます。
そのためcookpadLiveでは、バッファリングによって負担を軽減したそうです。
複数のメッセージをまとめて送るようにし、サービスの成長に合わせて増えているコメントやハートの送信にも耐えることのできるスケーラビリティのあるシステムを組むことができたそうです。

また、コメントの書き込み(WRITE)については、サーバーを介してからAppSyncに渡すように実装をし、NGコメントをフィルタリングしました。
スタンプはポイントを利用して送るため、ポイントのチェックを行えるようにしました。

まとめ

「ユーザーに価値を提供する」という意味での「つくる」ということの大切さを改めて感じられる記者会見だったと思います。
もちろんアプリをただ作るだけでも大変ではありますが、今回話に挙がりましたAmplifyやAppSyncをはじめとする様々なサービスで、開発をする環境はサポートされてきたのではないかと感じます。

その中で「つくる」ということは、本当にやりたいことにフォーカスしていく必要があると感じました。
今後も本当にやりたいことにフォーカスし、tyottoだからこそ提供できる、そんな価値を提供できるよう、挑戦し続けて行きたいと思います。

掲載記事

Web/モバイルアプリ開発向けクラウドサービス「AWS Amplify」とは? -マイナビニュース
アプリ開発者を「やりたいこと」に向かわせるAWS Amplify -ニコニコニュース
スマホアプリ開発のハードルを下げる「AWS」 -ケータイWatch
アプリ開発者を「やりたいこと」に向かわせるAWS Amplify -TECH.ASCII.jp
「AWS Amplifyなら新規モバイルWebアプリを高速に作れる」―AWSジャパンが事例を紹介 -IT Leaders

tyotto活動紹介カテゴリの最新記事