エキスパートの力強さ、実感できます。
事の発端は、ある男の悩み。新たに編集部に入ったIT業界出身、アミトー(綱藤)は、いつになっても自分の歓迎会が開かれないことを心のシコリとして過ごしていました。
最初は「まだかな?」とソワソワしていたのですが、次第にその理由に気がついてきました。「そうか、みんな仕事で手一杯なんだ。いま、編集部には歓迎会の幹事をできる人が居ないのだ…」
ならば!
と、思い立ったのです。忙しい編集部に代わって、最新テクノロジーが幹事をやってくれる、ひみつ道具的なボタンを自ら制作しようと奮い立ったのです。
ところが…。
編集部・佐々木(以下佐々木):アミトーさん、なに頭抱えてるの?
編集部・アミトー(以下アミトー):佐々木さんいいところに! あまりにもみなさんが僕の歓迎会をしてくれないので、IoTを活用して「幹事してくれるボタン」を作ろうと思ったんですが、なかなかうまく行かなくて…。
佐々木:幹事…? ボタン? どんなものをイメージしているのかわからないけど、IoTとかの類での相談なら、Amazonの「AWS Loft Tokyo」に行ってみたら? アマゾン ウェブ サービスが提供しているスタートアップとデベロッパーのための施設で、クラウドコンピューティングサービスの「AWS」のアカウントがあれば利用できるって聞いたことある。AWSのサービスを使った開発の相談が気軽にできるみたいだよ。
アミトー:本当ですか! ちょっと取材がてら行ってみます!
佐々木:(そんなに歓迎会して欲しかったんだな、アミトーさん…。ごめん…。)
ギズモードの無茶振りに答えてください! AWS Loftの中の人!
AWS LoftはAWSを利用中のスタートアップやデベロッパーのための施設。コワーキングスペースとして使え、AWSの公式サイトからアカウント登録をすることでこのスペースで作業したり、AWSエキスパートに技術的な相談をしたりできます。
AWS Loft Tokyoの一角にある「ASK AN EXPERT」カウンターで、こちらが考えている「幹事ボタン」の実現方法をAWSのエキスパートに聞いてきました。
今回担当してくれたのはちょっぴりファンキーなヘアースタイルが特徴的な、スタートアップソリューション部の塚田さん。
アミトー:こんにちは、今日はよろしくおねがいします。突然ですが、編集部員に代わって幹事してくれるボタンが欲しいんです。そして、できればなるべく早く作りたいっす!
塚田:わ、わかりました。幹事…そうですね。まずはどういったサービスにしたいのか、想像していることを教えてください。
アミトー:たとえばIoTボタンを押したら、LINEで編集部員のスケジュールを聞いて、そのスケジュールを元に、会社近くにあるお店を勝手に選んでくれて、自動音声で予約の電話までしてくれる仕様が希望です!
塚田:一個一個見てみましょうか。まず、IoTボタンを押したら、AWSを通じて編集部員のLINEにメッセージを送るんですね?
アミトー:はい。
塚田:編集部員が予定を返信したら、どこからお店のデータを持ってきますか?
アミトー:ぐるなびのお店がいいです。
塚田:なるほど。じゃあ、ぐるなびのAPIからデータをとってきてお店に電話をしていきましょう。
明らかに無茶振りとも思える内容を臆せず伝えるアミトー。そして、いきなりの相談に鳩が豆鉄砲を食ったような顔をした塚田さん。そりゃそうだ。しかし、そこはさすがのプロです。話を聞きながら、どんどんと「やりたいこと」が図となって具体的になっていきます。
塚田:なるほど、要約するとこのようになりますね。
1.AWS IoT ボタンを押す
↓
2.LINE botでスケジュール調整(直近1週間の20:00)
↓
3.来られる人が一番多い日を自動選択
↓
4.その後、ぐるなびAPIを使って、職場付近のお店をセレクト
↓
5.自動音声通話サービスを使ったお店への予約
↓
6.お店の予約が確定後、お店の情報とともに確定の連絡をLINEで通知
工程を分解して、どういった要件・機能・サービスが必要なのかを、わかりやすく分解して提案してくれました。さすがエキスパート!
塚田:「幹事」と聞いた時には驚きましたが、このような仕様であればAmazon EC2などの仮想サーバを使わない、サーバレスの構成でもできると思います。サーバを構築するよりも、セットアップは手軽ですし、工数的なコストも安くなるはずです。ほかにも、Amazon EC2のように常時起動しているサーバとは違い、AWS Lambdaは使うときだけ起動するので、使わないときはお金がかかりません。なので、コストも下げられると思いますよ。もし利用ユーザーが増えた場合でもスケールしやすいですし。
提案前はあまりにも無茶!と思っていた無茶振り案件でしたが、なんと実現可能。しかも、意外とすばやくできちゃいそう? では引き続き、具体的にはどうすれば良いのかを聞いてみました。
夢の「幹事ボタン」はこうやって作ればいい
ソリューションアーキテクト 塚田さんによるレクチャーは、ホワイトボードを使いつつ、まるで授業のように要点を押さえて、スムーズに進行していきます。その一部をわかりやすくまとめると、「幹事ボタン」は以下のようなプロセスで作成できるとのこと。
1.スケジュール調整を打診する
まず「AWS IoT ボタン」。いわゆるIoTボタンですが、これが押されることで、クラウド上で好きなロジックを自由に書ける「AWS Lambda」を起動させます。
ここでは、「LINEのAPIを使ってスケジュール調整の連絡を飛ばす」という仕事をしてもらうため、「AWS Lambda(メッセージ送信)」としましょう。
2.スケジュールを受け取って確定する
続いてはスケジュール調整に答えた時の受取先が必要です。
編集部員がLINEでスケジュールを回答したら、「Amazon API Gateway」にデータが飛んできて、次の「AWS Lambda(日付受け取り)」を起動させます。
そこから「Amazon DynamoDB」に誰がどの日付が良いのか?という各編集部員のスケジュール可否を保存します。「AWS Lambda(調停)」を起動して、3人以上が参加できる日程から、もっとも参加人数が多い日程で日時を確定させましょう。
3.お店の選定~予約電話
日時の確定後に「AWS Lambda(予約)」がぐるなびのAPIを利用して、会社近くの5,000円以下の予算の居酒屋を20件取得。取得したお店に「AWS Lambda(予約)」がTwilioサービスを使って、機械音声でお店に順に電話をかけて、プッシュボタンで可否をもらいます。
4.予約確定の通知
お店の人がOKを選んで予約が確定したら、Twilioから「Amazon API Gateway」を通じて「AWS Lambda(予約)」に予約の結果を返します。
予約の結果を受け取った「AWS Lambda(予約)」は、「AWS Lambda(メッセージ送信)」を起動して、再びLINEのAPIを使い参加者のLINEに日時を通知する、といった流れになります。
…ということで、今回できた流れがこちら。
ランニングコストを抑えつつ、工数もかからない構成で提案してもらったものがこれです。スムーズに、今風のサーバレスで速度感のある内容をレクチャーしてくれるあたり、さすがです! ただ、実際に作るにあたり、いくつかの懸念が生まれたので、改めて質問をしてみることに。
アミトー:機械音声だと店員さんがびっくりしちゃうかが心配です。
塚田:AWSには「Amazon Polly」という文章をリアルな音声に変換するサービスがあります。Amazonがチューニングしてきた機械学習モデルを使っているので、自然な発声ができますよ。男性の声も女性の声もウィスパーボイスだって選べます。
Amazon Polly は Twilio とも統合されているので、自然な音声でお店に電話できますよ。
アミトー:では、もし規模を上げたいという場合。たとえば、ギズモードの編集部員が100万人いたらどう変わりますか?
塚田:AWS Lambdaの処理的には、必要に応じて同時起動数を増やせますので、同じ構成でいけますよ。
「100万人で」と言い出した時、彼はそこまで寂しがり屋さんなのか? 僕らは彼に対する愛情が足りていないのか? この国で100万人規模で歓迎会ができる場所があるのか? …など、さまざまな想いがめぐりましたが、塚田さんが平然と100万人に対応するための拡張方法を解説していたのが本日のハイライト。
こうして規模や仕様を変えたいといった時でも、ちゃんと現実的でスマートな解決法を提案してくれて、エキスパートの力強さをひしひしと感じられます。
これは確かに、AWS Loftまで足を運ぶだけの価値はありますね!
いざ実践、たぶん世界初の「全自動幹事ボタン」が完成です
なんやかんやあって、この相談を元に作ったのがこのボタン。
エンジニアの使用言語などの都合で一部仕様を変更していますが、なんとか無事に完成しました! おそらく世界初?であろう、押すと幹事してれる「全自動幹事ボタン」です!
それでは、さっそくポチッとな。
今回はテストのため、お店へ電話するところを、個人の携帯電話宛にしましたが見事に動作しました!
ちなみにLINEにはこんな感じで参加可否の連絡がきます。この幹事ボタン、まだ改善点はあるかもしれませんが、AWS Loft Tokyoに相談に行ってから、2週間でできましたよ。
AWSは本当に多機能で、AWSがあれば何でもできちゃいます。でも、多機能な分だけすべてのサービスを使いこなすのは難しいと思うんですよね。ほら、パーツがありすぎると、逆に何を使ったらいいのかわからない的な…ね?
しかし「AWS Loft Tokyo」のエキスパートは、そんな困難を解決して、できるだけコスト、工数を減らして新しいサービスを生み出すお手伝いをしてくれるんです。AWSを使わない場合は?といった、相談にもしっかりと答えてくれました。
眺めも良く、コワーキングスペースもキレイで落ち着いていますし、オシャレなカフェ「hello world」だって併設されています。スタートアップやデベロッパーのみなさんには特に良い環境だと思いますよ。
今回取材したAWS Loft、「AWS Loft Tokyo」はAWSアカウントがあれば、利用料金はかかりません。
この良環境は、きっと開発を加速させてくれるはずです。
Source: AWS Loft