ニュース

スマホアプリ開発のハードルを下げる「AWS」

AWSを取り入れたクックパッドのライブ配信と学習塾サービスの舞台裏

 日頃使っているスマホアプリは、ユーザーに見えないところでさまざまな機能を持ち、成り立っている。それらの開発には多くの時間がかかり、特にスタートアップ企業などのエンジニアの負担となっている。そうしたなか、アマゾンが提供する「Amazon Web Service」が問題を解決する手段として注目を集めていることを知る人は多いだろう。

 Amazon Web Service(以下、AWS)は、アマゾンが提供するクラウドコンピューティングサービス。アプリ開発、ウェブサービス開発の分野で広く普及しており、従来ではサービスの仕様変更などには多くの時間と労力が必要だったことに対して、AWSでは、設定変更のみで対応できるという大きな利点がある。

 アマゾン ウェブ サービス ジャパン スタートアップソリューションアーキテクトの塚田朗弘氏は「アプリケーションエンジニアにとって、サーバーの構築や監視など低レイヤーの部分は本当にやりたいことなのか、実際にはフロントエンドのアプリを開発など、つまりは、ユーザーに価値を届けるのが実際にエンジニアがやりたいことではないか」と語る。

塚田朗弘氏

 塚田氏はそうしたエンジニアを手助けできるのが、「AWS Amplify」だと語る。「AWS Amplify」はAmplify CLI、 Amplify Framework、Amplify Consoleという3つの要素からなるサービスだ。

やりたいことができるようになるAWS

 Amplify CLIは、AWSで提供されるコマンドライン。AWSの機能を詳細に理解していなくても、「エンジニアがやりたいこと」を直感的に実現できるとしている。

 たとえば、〇〇の機能を実現するためにAWS Appsyncからこの機能を使って実現するというような考え方ではなく、やりたいことから機能を作ってくれるインターフェイス。上の写真のように、コマンド「$ amplify add api」と入力すると、GraphQLにするかRESTにするかCLIと対話するような感覚で機能をつくることができる。

 どちらにするかを選び、最後に「$ amplify push」を実行すると、AWS Cloud上にApp Syncがプロビジョンされる。もちろん、この機能はAppSyncだけではなく、多くのバックエンドの構築が可能。

 塚田氏によると「ひとことで言うなら、AppSyncはマネージドなGraphQLのゲートウェイ」。APIの提供方法のひとつであり、自分でホストすることも可能だが、それをマネージドサービスとして、提供するのがAppSync。ユーザーが使うアプリはGraphQLというインターフェイスでAppSyncとやりとりしており、これによってアプリは自由にデータを取得したり、アップロードしたりできるという。

 また、チャットなどのリアルタイムな通信についても最適だと塚田氏。リアルタイムの通信は、自前でサーバーを立てて、拡張性を確保しなければならず環境構築がとても大変だった。しかし、AppySyncを使うことで、数百万の接続のサービスもホストすることが可能と塚田氏は語る。

 また、データソース(写真右側)の柔軟さもAppSyncのひとつの特徴だという。たとえば、ユーザーデータを取得するように、フロントエンドのアプリから指示されたとき、AppSyncはAmazonDynamoDBや、Amazon Elastichsearch Serviceなど複数のデータソースを扱うことができるため、さまざまな状況で柔軟な対応ができる。

料理ライブ配信のCookpadTVの例

 CookpadTVからは、CTO 渡辺慎也氏が登壇した。CookpadTVは、Cookpadから料理動画事業を分社化した会社。

渡辺慎也氏

 同社が提供するCookpadLiveは「一緒につくれるクックパッド」をコンセプトに、アイドルやお笑い芸人が、料理をしている様子をライブ配信するサービス。外食が増える時代で、有名人を目当てに見に来た人にも料理に興味を向かせることに成功したと渡辺氏。

 CookpadLiveでは、スタンプやコメント、CookpadLiveの機能「ハート」などユーザーが投稿するメッセージの部分でAWSを使用しているという。当初はAWSが日本で展開していなかったこともあり、「Firebase」という別のサービスを使用していたが、FireBaseで起きる障害や、AWSでデータを一元管理したかったことなど、ほかにもいくつかの理由でAWSに移行したという。

 Firebaseの場合、高機能ではあるものの障害が多かった。コメントが機能しなくなると、出演者と視聴者のコミュニケーションがとれず、結果として番組が盛り上がらなくなってしまう。

 移行時には、AndroidやiOSのサポート状況が未整備だったこともあったが、AWSと連携を取りつつ解決、加えて、移行を検討した際の課題はすべて解消されたという。

 CookpadLiveでは、自由にコメントを投稿できるというサービスの性質上、誹謗中傷などふさわしくないコメントを弾くために、ユーザーのコメントは直接AppSyncには到達せずに、CookpadLiveアプリを通してAppSyncへ到達するようになっている。

 また、サービスの人気が出るに連れて、投稿されるコメントも膨大な数になってきた。AppySyncも大きな拡張性を備えてはいるが、無限にどこまでも許容できるわけではないため、複数のメッセージをまとめて送ることで、コスト削減とアプリにかかる負荷を軽減できたという。

 渡辺氏は「AWSで想定していたメリットはすべて享受できている。バッファリングも活用することで成長するサービスにも耐えられている」とAWSについて語った。

学習塾サービスを運営するtyottoの例

 tyottoからは、CTO 伊藤哲志氏が登壇した。同社は、学習塾の運営などを行う会社。2016年から神奈川県で高校生向けの個別指導向けの学習塾を運営すると共に、キャリア教育コンテンツの開発、学習支援アプリの開発を行っている。

伊藤哲志氏

 同社が開発中のアプリは「生徒の学びを引き出すコーチングアプリ」。学習計画を登録、学習時間の計測や学習の振り返りなどの機能があり、学習計画を管理するためのアプリだが、生徒がより主体的に行うためにチャットボットがコーチングしてくれるという特徴を持つ。

 従来使用していたアプリケーションでも、AWSのサービスを利用していたが、保守、モニタリングが必要であり、開発用のテスト環境のコストや利用者が増加した際の対応が難しいという問題があった。

 この部分はエンジニアとしては、やりがいのある部分ではあるが、スタートアップ企業にとっては、ここはフォーカスするべき点ではないと考えていたと伊藤氏は語る。

 そのときに出会ったのがAWS Amplifyだった。拡張性の高いGraphQLサーバーを構築可能で、バックエンド環境もすぐに構築できることを魅力的に感じたと伊藤氏。

 tyottoで使用しているのは、AWS FlameworkとAWS Consoleのふたつ。モバイルアプリの中にフレームワークを組み込むことで、AppSyncなどAWSのサービスを簡単に呼び出せるという。ユーザー認証の一般的な機能であるサインイン、サインアップなどはすべてAWSで一式が提供されており、認証情報の提供も行うため高速かつ安全に開発できると伊藤氏は語る。

 Amplify Consoleを使うことで、わずか数クリックでWEBアプリケーションの配信基盤を構築でき、開発中のアクセス制限や本番用、開発用環境の同時配信が可能になり、従来よりもコストを下げられた。

 従来の環境から、現在の環境に移行するまでにかかった時間は半年程度という。伊藤氏は「AWSはITのツールボックスと言われるが、もはやチームの一部といってもいい。本来のやるべきことに集中できる環境」とAWSについて語った。