イベント概要
今回のイベントは目黒にあるスタートアップとデベロッパーのためのコワーキングスペース「AWS Loft Tokyo」で2019年4月19日に開催されました。
AWS Loft Tokyoの営業時間は平日10:00〜18:00ですが、イベントがある日はそのまま居残りができます。
今週の水曜日も同じようなAWSのイベントで居残り参加をしたので、今週は2回目になります。
朝から晩まで最先端の技術に溺れていられる最高の週でした!
株式会社tyottoの開発チームからは私・伊藤と山本が参加しました。

ハンズオン本編
ハンズオン本編は、イベントで配布されたPowerPointのスライドに沿ってAWSのリソースやWordPressを操作していく形でした。
スライドはなんと120枚超え!
金曜夜に激アツなイベントとなりました。
その内容をかいつまんでご紹介します。
VPCを作成する
Virtual Private Cloud(VPC)は、AWSクラウド上に隔離されたネットワーク空間を作るためのサービスです。
今回のハンズオン専用のVPCをウィザードを使って作成しました。
ウィザードを使うとサブネットも一緒に作成できるので便利です。


サブネットの自動割り当てIPの設定を変更する
サブネット内に立てたEC2インスタンスに自動的にパブリックIPが割り当てられるように設定します。

Amazon Lightsailを使ってWordPressを立ち上げる
Amazon Lightsailは数クリックでWebアプリケーションの実行環境を立ち上げられるAWSのサービスです。

WordPressはAmazon Lightsailにテンプレートとして用意されているので、それを選択します。
5系も既に使えるようになっていてとても便利です。

1分も待たずにインスタンスが立ち上がりました。
WordPressを立ち上げるのがここまで楽な時代が来るとは…!
パブリックIPでアクセスすると、確かにWordPressが動作していることがわかります。

AWS Cloud9を起動
Lightsailで立ち上げたインスタンスにSSH接続するために、AWS Cloud9を使いました。
AWS Cloud9はEC2インスタンス上に起動する統合開発環境です。
Webブラウザでエディタを起動して開発することができるので、開発マシンに依存しない開発環境のセットアップが可能です。

今回のハンズオンでは一番低いスペックのインスタンスタイプで起動します。

Cloud9のエディタは1〜2分で起動しました。
インスタンスはバージニア北部リージョンに立ち上げているものの、特に遅延が気になるということはありません。とても快適です!
秘密鍵を使ってLightsailインスタンスにSSH接続
Cloud9に秘密鍵をアップロードして、LightsailインスタンスにSSH接続します。
今回のハンズオンでは単にLightsail上で起動したWordPressの初期ユーザーのパスワードを手に入れるためにSSH接続を行ったので、ローカルマシンから直接LightsailにSSHすればよかったです。
(ハンズオン資料の冒頭に書いてあったのを僕がちゃんと読んでなかっただけ><)
IAMポリシーとIAMユーザーの作成
WordPress後ほどセットアップするプラグインからAWS上のサービスにアクセスするためには、認証情報が必要となります。
マネジメントコンソールからIAMポリシーを作成して、機械学習系のサービス群に対するアクセス権限を付与します。
続いてIAMユーザーを作成して、作成したポリシーをアタッチします。

WordPressにプラグインをインストール
WordPressからAWSの機械学習サービスにアクセスするための「Amazon AI」プラグインを導入してセットアップします。
AWSのアクセスキーを管理画面から設定していくだけなので、コーディングは一切必要ありません。

Amazon Translate自動翻訳機能を実行
Amazon Translateは機械学習を利用した翻訳サービスです。
インフラ周りの面倒は全てAWS側で見てくれるマネージドサービスなので、翻訳した文字数分の利用料を支払うだけで高品質な翻訳サービスが自分たちの開発するサービスに取り入れられます。
今回はAWS RoboMakerのサイトの英語版をWordPress管理画面に入力して、Amazon Translateを利用して翻訳しました。

「Amazon AI」プラグインをセットアップして翻訳機能を有効化したWordPressでは、記事に翻訳ボタンが出現します。
その翻訳ボタンを押すことで、自動的に翻訳された記事を表示することができます。

Amazon Pollyで記事を読み上げる
Amazon Pollyは文章を読み上げるサービスです。
こちらもAmazon Translateと同様にマネージドサービスとなっており、実際に使用した分の利用料を支払うことで利用できるサービスです。
今回のハンズオンでは、WordPressの記事編集画面にAmazon Pollyの設定画面が出てくるのでそこで読み上げの設定を行いました。

これで、記事中に読み上げのインターフェースが出現して利用できるようになります。

Amazon Rekognitionを使って画像の特徴に応じてタグをつける
最後は画像認識サービスであるAmazon Rekognitionです。
こちらも機械学習を利用したマネージドサービスです。
Amazon Rekognitionでは、
- 人物の画像から有名人の顔を抽出
- 集団の中から特定の人物の画像を抽出
- 人物の顔の類似度の計算
- 写真に写っているものを検出してラベリング
- 人物の表情の分析
などなど、顔認識に特化した機能を利用することができます。
今回紹介された機械学習のマネージドサービス群の中で、僕個人としては一番興味深いと思ったのがこのRekognitionです。
今回のイベントでは、Rekognitionのエンジンは髪型を特徴検知には用いていないなどの内部動作の紹介もあり、機械学習の面白さ・不思議さを垣間見ることができました。
ハンズオンでは、WordPressのメディアにアップロードした画像をAmazon Rekognitionで分析して、特徴を元にタグを自動的につけるという機能を組み立てました。

WordPressにアップロードすると、Rekognitionによって特徴が抽出されてタグ付けされていきます。

ハンズオン本編としてはこれで終了でした。

感想
インフラの可用性や耐久性の確保や、不要になったときのリソースの破棄を自分たちで一切やらなくてよいAWSのマネージドサービス群はスタートアップにとって非常に魅力的です。
機械学習も本来であれば、アルゴリズムを設計して、学習用のデータを大量に用意して、GPUの載った性能の良いマシンで数時間から数日かけて学習させてという長い道のりを経てやるものだと聞いています。
それを全部AWS側の学習済みデータを借りる形で利用できてしまうのはとてもありがたいことです。
一方、自分で機械学習のアルゴリズムや学習から行いたい場合はAmazon SageMakerを使って開発を行っていくことになりますが、そちらも強力なサービスとなっているようです。
マネージドサービスが使える部分は積極的に使いつつ、SageMakerを使った機械学習基盤の構築にも挑戦してみたいです。
今週もよく開発しました。それではまた。