AWS Summit Tokyo 2017 参加レポート Day4 (6/2)

会社の外部研修として[『AWS Summit Tokyo 2017』](http://www.awssummit.tokyo/index.html)に6月1日(木)～2日(金)の計2日間参加して来ました。

当エントリでは6月2日(Day4)に聴講した内容をレポートします。（Day3のレポートは[こちら](http://qiita.com/tf-oikawa/items/45a032124581e8ac1536)）
※注）記事には個人的なメモや感想が含まれています。予めご承知ください。

-----

# 展示ブース見学１ (9:00 ～ 10:00)
基調講演開始までの待ち時間、[Pavilion 展示ブース](http://www.awssummit.tokyo/pavilion/index.html)を見て回りました。

## 立ち寄ったブース
- [IoT.kyoto](http://iot.kyoto/)
    - IoTスタートアップ・導入支援
    - 昨年のNight Event LT会で紹介されていた[イメージキャラクター](http://iot.kyoto/usecase/guruguru-iotan.html)が印象的
- [Sony Global Education](https://www.sonyged.com/ja/)：KOOV
    - 子供向けIoT学習キット
    - レゴブロックのようなパーツを自由に組み合わせ
    - アプリで日本語による論理パズルのようなものを使いビジュアルプログラミング
- tv asahi：MP360LIVE
- レコチョク：RECOLab
- PIXELA：パノミル
    - VRコンテンツ配信プラットフォーム
- AUCNET：[Andy ニコパス](https://aucnet-ibs.com/solution/andy.html)
    - 来店客などの顔認識⇒LINEやSlackなどで通知＆顧客管理
    - オフィスなどの入退室管理にも
    - 感情なども判別
        - 顧客満足度のデータ化
        - 従業員のストレスチェック

-----

# **[基調講演（Key Note）](http://www.awssummit.tokyo/summit/index.html#D4K )** (10:00 ～ 11:30)

## **スピーカー：茂木 健一郎 氏 (脳科学者)**
＞人工知能、”Innovation” をテーマにトーク

### もはやAIと人間の脳を比較すること自体がナンセンス
　人間の意識：128bit/sec 説
　　チェス等⇒チャンピオンの一生分を機械なら～1か月？
　　人間＝並列処理 限界ある：AI並列化し放題
　e.g. 雪道走行経験欲しい ⇒自動運転＝雪国からデータを持ってくればいい
> 人間の脳ってみじめじゃないですか？

　ギブソン：アフォーダンス理論
　　＞「脳は情報処理不要」「情報は環境の中にある」
> Amazon Echo早く日本で出ない？遅れてますよね

　MIT 子供の過去三年間の会話データを全て記録した話
　　＞BigData、機械学習で出来ること、可能性は計り知れない
> 人間の脳なんてもう気にしなくていい

　人工知能と人間の恋の映画
　　＞AI:「今2万人と同時に会話してる」「数百人と恋に落ちてる」
> なんだかAIに申し訳ないなって思いました

### 重要なのは個性
人間の感情・パーソナリティのデータモデルはまだない
　パーソナリティ5大要素⇒人工知能にインプリメンテーションまだ無理
　　⇒ソース：由来がわからない（⇔脳の情報処理の動きは比較的判明している）

### 人工知能が目指すものは人間の脳とはおそらく違う
　SNSなど今のシステム⇒人間のアテンションによりすぎ

　近代平均IQは上がり続けてる
　　⇒情報処理が増えたからと言われる
　　　⇒それで人間は幸せになっている？

　現代はリアルとサイバースペースの二重生活
　　⇒リアルを整理するコスト＝わずらわしい（Amazon robotics Home欲しい）
　　　⇒メールなど＝まだ人間のアテンションが必要

　Amazonでショッピング（本、靴、ズボンなど）
　⇒勝手に買っておいてほしい（サイズ、好みなどの把握）
　　　心地よさのスクリーン

　子供の脳が最高（ルーティンがない、大人がやってくれているから）
　　大人はつまらない
　AIが仕事を奪う⇒歓迎、ルーティンワークは任せるべき
　　⇒遊んでいるだけの人間が一番クリエイティブ
　　天才の遺伝子はない（突然変異？）
　　アメリカの功績は遊ぶように働くスタイルを確立したこと

　未来の義務教育の内容
　　⇒ほぼAIがやってくれる
　　　⇒小学から論文など始めるのもあり

　人間の最終目標⇒幸せになること
> 子供のころ無邪気に遊んでた頃が幸せじゃありませんでした？

### エンジニアへ
> これからのイノベーションの主役はあなた方
> 人間の脳、キャパシティなんて気にせず
> 　個性を大事に
> 新しいものを産み出していってほしい


## **スピーカー：Kris Davies 氏 (Amazon Dashサービス シニア・プロダクトマネージャー)**
>IoTはあらゆるレベルの変革を可能に

### ショッピングのイノベーション
　(昔)店舗⇒PC⇒スマホ⇒IoT:Dashボタン(今ここ)⇒ゼロクリック(Next！)

　店でよくあること＝買うものを忘れる
　・メモを忘れる
　・消耗品のストックを忘れる
　・既に買ったものを忘れる

　Dash Replenishment Service（DRS）
　スマート家電
　　e.g. 掃除機＞ゴミパックの状態を把握⇒クラウドに
　　　　　　⇒満タンになりそう⇒自動検出して替えを発注

- 家庭には多くのデバイス(＝変革の種？)がある
    - 「もし」ではなく「いつ」が検討すべきポイント
- カスタマーからのフィードバックが大切
- 全てのネット接続されたデバイスが役に立つわけではない
    - 本当に役立つ「モノのインターネット」を


## **スピーカー：Jeff Blankenburg 氏 (Amazon Alexa Evangelist)**
Alexa
　スマートホーム
　デバイスに話しかける

ALEXA エコシステム
　スキル(ASK)：デベロッパーが作成可能

音声⇒テキスト⇒自然言語解析⇒意図からスキルを探す⇒処理⇒レスポンス

ボイスエクスペリエンスのデザイン⇒開発⇒テストと認証

意思の解析が難しい
　e.g. 天気予報の取得⇒言い方がいろいろある
　e.g. テレビのリモコン⇒ボタン単位でコード化を考える


## **スピーカー：Andy Pollock 氏 (Amazon Robotics Software Development Manager)**
### [Amazon Robotics](https://www.amazonrobotics.com/)
　e.g. 大図書館から本を探す状況
　　⇒手をかざしたら本が降ってくる　を想像／創造した

### Amazon 倉庫内で起きていること
　商品入荷⇒Podに収納⇒**棚ごと移動**⇒保管場所へ
　　注文⇒担当者のもとに**棚自身が来る**⇒梱包、出荷

### 効率化アルゴリズム
数え切れないほどの商品の種類・数万単位の同じ商品
　⇒どれを取りに行くか？
　動かす棚、ロボットの判定
　　⇒商品自身の位置だけじゃなく、間の障害物、作業員、一度に運べる個数など
　　　⇒複雑な演算が必要
　　　　⇒AWS使用

### 次のイノベーションへ
>「Its stil day one」(我々はまだ"1日目"である)

## クロージング
Amazon
>「どうか一つでも多く、イノベーションの種をお持ち帰りください」

-----

# 展示ブース見学２ (12:00 ～ 14:00)
続いてDay3では回れなかった[EXPO 展示ブース](http://www.awssummit.tokyo/expo/index.html)を見て回りました。
ついでに認定者ラウンジに立ち寄って昼食と、前日貰い損ねた折り畳み傘をGET。

## 立ち寄ったブース
- Datadog Inc.
    - サーバ運用監視・モニタリングツール
    - AWS以外も対応サービスの数がスゴイ
- 日商エレクトロニクス株式会社：New Relic
    - サーバ運用監視・モニタリングツール
    - 上記Datadogと競合
- ソニーネットワークコミュニケーションズ株式会社：Cloud Portal
    - AWSサービスの構成管理ツール
    - **実際の設定から構成図などのドキュメントを生成可能、PDF出力も可**（←この機能欲しかった）
- 株式会社インターナショナルシステムリサーチ：CloudGate KeyManager
    - サーバ接続するユーザとSSH鍵を一括管理するツール
        - 有効期限付きのSSH Key発行・管理
        - 鍵の受渡し⇒指紋認証・2要素認証・ワンタイムパスワードなど選択可
- パロアルトネットワークス株式会社
    - [『マネジメントのためのサイバーセキュリティ』](https://www.paloaltonetworks.jp/company/in-the-news/2016/navigating_the_digital_age_and_book_launch_in_japan.html)という本を頂いた
- 富士ソフト株式会社
    - ストレスの度合？をリアルタイムで測定するIoTデバイスのデモを見せて頂いた
    - モニタリングした心拍数に数学的な処理・フィルタリングを施しグラフにして可視化？
        - 詳しく説明して頂いたが正確に理解出来たか怪しい
- [クラスメソッド株式会社](http://dev.classmethod.jp/cloud/aws/aws-summit-tokyo-2017-booth-2/)
    - 日本のAWSユーザでこちらの会社のブログ記事を読んだ事が無い人はいないと思う
    - [AWSおみくじ](https://classmethod.jp/omikuji/)を引かせて頂いた（結果はELBとt2.nanoでした；）

-----
⇒[AWS Dev Day](http://www.awssummit.tokyo/devday/index.html)の会場へ移動

# **Session：[サーバレスで王道 Web フレームワークを使う方法](http://www.awssummit.tokyo/devday/index.html#D4T7-3)** (14:20 ～ 15:00)
スピーカー：塚田 朗弘 氏 (AWSジャパン 技術統括本部 ソリューションアーキテクト)

セッション概要（タイトルリンク先より引用）
>サーバレスアーキテクチャでアプリケーションを開発するとき、いつも使っているフレームワークをそのまま使うことができたら嬉しいと思ったことはないでしょうか。AWS Lambda では Node.js、Python、Java、C# といったプログラミング言語をサポートしています。このセッションでは、AWS のサーバレスアーキテクチャ上で代表的な Web アプリケーションフレームワークを使う実践的な方法をご紹介します。

## Express.js on serverless
＞[aws-serverless-express](https://github.com/awslabs/aws-serverless-express)使用

```bash
npm install aws-serverless-express
```
 app.js ⇒ lambda.js に変更

## Spring Framework on serverless
＞[aws-serverless-java-container](https://github.com/awslabs/aws-serverless-java-container)使用

## コードサンプル
どちらも [Code Star](https://aws.amazon.com/jp/codestar/) にプロジェクトテンプレートあり
　⇒手軽に始められるので是非

-----

# **Session：[[タワーズ・クエスト]Serverless 時代のテスト戦略（仮）](http://www.awssummit.tokyo/devday/index.html#D4T7-4)** (15:20 ～ 16:00)
スピーカー：和田 卓人 氏 (タワーズ・クエスト株式会社 取締役社長)

セッション概要（タイトルリンク先より引用）
>Serverless 時代においても、自分のコードにテストは書きたいものです。まだベストプラクティスが確立されていない Serverless 時代のテストを考えていきます。

## レガシーコードのテストをかいてみる
お題：[lamdbaの公式チュートリアル](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-s3-example.html)にテストをつける

このコードはtestableだろうか？
デプロイなし、ローカルでテストしたい！

### サイズとピラミッドとループ
![テスト自動化ピラミッドとアンチパターン](https://qiita-image-store.s3.amazonaws.com/0/104276/f4b294ef-2bb2-8df6-844d-4becffbf8d7c.png)

"Test Sizes" at Google
https://testing.googleblog.com/2010/12/test-sizes.html

small：ネットワーク、データベース、ファイル、全てのI/Oなしの独立したテスト
medium：ネットワークはlocalhostのみ、外部サービスは非推奨
large：外部サービスも含め、本番と同じ条件のテスト

テスト数：small > medium > large

small：例外系テスト

medium：ローカルテストするには ⇒FakeObjectが鍵

- Test Double（テストの為の"代用品"）
    - Test Stub
    - Test Spy
    - Mock Object
    - Fake Object
    - Dummy Object

　https://github.com/atlassian/localstack を活用
　　⇒各種AWSサービスのローカルテスト用Fake実装

レガシーコードのジレンマ
　多くの場合、テストを描くにはコードを変更する必要がある

> 教訓：テストしてないコードは動かない

large：運用監視とは継続的なテスト
　品質の良いシステム
　・バグが少ない
　・**すぐになおる**

本番環境の不具合をテストに写し取る
 不具合が出たら再現テストコードを書いて、落ちることを確認してから修正コードを書く


### サービス間(E2E)テスト
= XLarge Test (largeの上)

マイクロサービス間テストの課題
　＞モックのリクエストやレスポンスが本番と異なる為、テストは通るが本番で落ちてしまう可能性。
　⇒Consumer-Driven Contracts testing (CDCテスト)

[pact](https://github.com/realestate-com-au/pact)を使ったCDCテストをCIで回す
　＞Consumer側をMock／Stub感覚で書く

-----
⇒[メイン会場](http://www.awssummit.tokyo/summit/index.html)へ移動

# **Session：[[ソニーモバイルコミュニケーションズ] スマートホームシステムの開発 〜AWS を活用した新規サービスの立ち上げ〜](http://www.awssummit.tokyo/summit/index.html#D4T5-5)** (16:20 ～ 17:00)
スピーカー：井宮 大輔 氏 (ソニーモバイルコミュニケーションズ株式会社)

セッション概要（タイトルリンク先より引用）
>新規サービスは受容性が分からないため契約者数の予測が難しく、初期開発投資をなるべく抑え素早く市場に投入することが要求されます。上記を実現すべく、スマートホームシステム開発では AWS を最大限に活用しました。本セッションでは、システム開発において直面した課題と、それを AWS IoT などのサービスを用いていかに解決したかについてご紹介します。

## スマートホームシステム
コンセプト
　家庭内デバイスをネット接続
　　⇒データ収集
　　　⇒**適切な制御**

"スマートホームHub"を通してデバイスを制御

最大の課題＝セキュリティ
　・家族（ユーザ）の認証
　・デバイス認証

　アカウント管理・認証
　　・ユーザ管理
　　・トークンアクセス
　　・パス、Email変更

１．ユーザ認証
　⇒Cognito User Pool使用
　　・自前のユーザアカウント可
　　・SMS、MFAが実現可能
　　・カスタム属性で独自のデータ追加可能

２．デバイス認証
　⇒AWS IoT使用
　　デバイス数万台分のThingを作成
　　⇒工場でクライアント証明書・暗号鍵埋め込み
　　　⇒一台ずつポリシーを作成(他のデバイスの機能にアクセス不可)

３．メッセージ　双方向通信
　⇒IoT Topic・ルール使用

４．データ同期
　IoT Thing Shadow
　　課題：最大８KB
　　　⇒一つのデバイスに複数のThingを対応させて解決

-----

# **Session：[AWS マネージドサービスで実現する CI/CD パイプライン](http://www.awssummit.tokyo/summit/index.html#D4T2-6)** (17:20 ～ 18:00)
スピーカー：千葉 悠貴 氏 (AWSジャパン株式会社 技術統括本部 ソリューションアーキテクト)

セッション概要（タイトルリンク先より引用）
>CI/CD ツールは DevOps の実践に不可欠なものですが、ツール自体の構築・運用は不可価値を生まない重労働です。AWS のマネージドサービスを使うことで、開発者は自社ビジネスに価値を与える開発に集中できます。本セッションでは、AWS CodePipeline や AWS CodeBuild といった DevOps サービスの概要と、その他の AWS マネージドサービスを組み合わせた CI/CD の実践方法をご紹介します。


## CI/CDを実現する”ツールとしての”AWSサービス
### CI：継続的インテグレーション
フロー
1.Source＞2.Build＞3.Test＞4.Production

#### 必要なもの
・ソースコードのVer管理：CodeCommit
・ビルド自動化：CodeBuild
・デプロイ自動化：CodeDeploy／Beanstalk／Formation
・ワークフロー管理：CodePipeline

全て東京リージョンで使用可

⇒4つを統合したサービス：CodeStar（現在USのみ）
　ほぼ2ステップで完了
　・Step1.プロジェクトテンプレート選択
　・Step2.開発ツールセットアップ
　　⇒パイプライン作成
　　⇒ダッシュボード作成（JIRA統合メニュー）

### CD：継続的デリバリー
安全に本番環境にデプロイ
　リリース判断／タイミング

#### 本番環境の継続的監視・デプロイ判断
１．シンセティックトラフィックでの常時監視
　　CloudWatch＋Lambdaで定期実行

２．デプロイメントヘルスチェック・ロールバック
　　CodeDeployの機能を使う
　　　・ValidateServiceフック
　　　・Minimum Healthy Hosts
　　　⇒失敗と判断⇒自動でロールバック

３．デプロイ単位のセグメンテーション
　　カナリアデプロイ：部分的に適用⇒運用してみてから範囲を広げていく手法
　　CodeDeploy
　　　・デプロイメントグループ（セグメント分割）
　　CodePipeline
　　　・Approvalアクション：管理者にSNSで通知する機能（Lambdaに渡せば完全自動化可能）

４．プロダクション昇格の無効化
　　デプロイ先ホストの健全性を確認してからデプロイする
　　　⇒本番環境の一部に問題があればリソースを無効化
　　CodePipeline
　　　・トランジションの無効化

５．BlackDayゲート
　　ビジネス的にセンシティブな時期／時間を考慮
　　　パイプラインにデプロイ停止日のカレンダーを導入
　　　　⇒e.g. LambdaでDynamoDB上のカレンダーを参照など


> **「CodePipeline をカスタマイズすることでビジネスに最適な CI/CD パイプラインが作れる」**

-----

# 所感・備忘録
- 基調講演待ってる間に周れるとこは周るべし
- 基調講演は情報・刺激の宝庫
- 講演者についてもっと事前に調べておく
- AWSの方のセッションはそろそろ上級向けに絞ってもいいかもしれない
    - 初級～中級はググればすぐ出てくる内容がそこそこ
- Dev Dayはコアな内容(コードとか)まで突っ込んでくれるので実入り多し
- 夜イベントは早めに行く（公演優先して後から行ったら料理が既になかった；）
- Twitter情報は重要、なるべくチェック
- 会場のWifiは時々繋がらなくなる（キャパのせい？）
- やはりAWSサミットは楽しい
    - 来年も、出来れば全日参加したい