69
JAWS DAYS 2015 2015.3.22 NTTドコモ 赤塚隼 来栖川電算 山口陽平 ドコモ 画像認識API AWS だった

JAWS DAYS 2015

Embed Size (px)

Citation preview

Page 1: JAWS DAYS 2015

JAWS DAYS 2015 2015.3.22 NTTドコモ 赤塚隼 来栖川電算 山口陽平

ドコモ の 画像認識API も AWS だった

Page 2: JAWS DAYS 2015

2013年の re:Invent ”しゃべってコンシェル” などで 数千台 の EC2 を利用

http://www.slideshare.net/AmazonWebServices/telco-voicecommand-

personal-agent-service-with-aws-cloud-mbl202-aws-reinvent-2013 【引用元】

2

Page 3: JAWS DAYS 2015

今日話すこと

• 自己紹介 & 会社紹介

• ドコモ の 画像認識API も AWS だった

–設計思想

–設計

–まとめ

– AWS を使う理由

• 宣伝

3

Page 4: JAWS DAYS 2015

自己紹介 & 会社紹介

とりあえず

4

Page 5: JAWS DAYS 2015

赤 塚 隼 @Hayato_Kapibara

• 所属 – NTTドコモ R&Dノベーション本部 サービスノベーション部

• 自己紹介 – サービスの技術検討・プロトタピング・開発まで全てをこなすサーバエンジニゕ(便利屋) • ソーシャルマガジン〃ツッターリゕルタム分析〃画像認識API

• 自然言語処理〃分散DB(NoSQL)

• 好きなAWSサービス

– Consolidated Billing

5

Page 6: JAWS DAYS 2015

山 口 陽 平 @melleo1978

• 所属 – 有限会社 来栖川電算 取締役

• 自己紹介 企画 ~ 実装まで全部やる人

– 認識技術 & ゕルゴリズム の研究開発

• 文字認識〃物体認識〃動作認識〃行動認識

– 言語処理系 の研究開発

• 分散DB〃仮想機械〃コンパラ

– 名古屋工業大学出身〃未踏経験

• 好きなAWSサービス

– S3〃AWS Lambda〃STS ※あくまでもメージです。 実物に髪の毛はありません。

6

Page 7: JAWS DAYS 2015

山 口 陽 平 @melleo1978

• WEB+DB PRESS Vol.83 にて

[実践]画像認識 を執筆

– OpenCV を使えば、初心者でも特定物体認識が簡単に試せるよという内容

– SIFT の説明や他のゕルゴリズムの紹介

–これから画像認識を始めてみたい人におススメ

7

Page 8: JAWS DAYS 2015

来栖川電算 設立 2003年(名古屋工業大学発ベンチャー) 従業員 30人

• SF世界の技術を実現し、社会に役立てる

–人工知能技術のラセンス販売・研究・SI

• 文字認識〃物体認識〃動作認識〃行動認識

–スマホゕプリの企画・制作・運営

スマートラフ技術

NTTドコモ様との共同研究

スマートドラブ技術

大手自動車メーカー様むけ

メドさん もふくめて

8

Page 9: JAWS DAYS 2015

ラジオ体操ゕプリ だれでも、いつでも、どこでも、すぐできる

• Android & iPhone ⇒ http://maiasa.jp/

9

Page 10: JAWS DAYS 2015

ドコモ の 画像認識API も AWS だった

それでは本題

10

Page 11: JAWS DAYS 2015

開発者は今すぐ登録! ⇒ https://dev.smt.docomo.ne.jp

docomo Developer support NTTドコモ が公開している 開発者 向けの API 提供サト

• 誰でも、簡単に、マッシュゕップ!

音声合成 入力した文字を読み上げ

画像認識 今日の話はココ!

画像に写っている物体の情報を取得

音声認識 話した内容を即座に文字に変換

雑談対話 自然な会話をやり取り

トレンド記事抽出 今人気の話題をジャンルやキーワードで検索

知識Q&A 今知りたいことをピンポントで回答

環境センサー 日本全国の気温、降水量、紫外線量を取得

発話理解 要求を理解して、適切な機能を提示

文字認識 画像の文字を読み取り

「画像認識」以外も AWS を活用

11

Page 12: JAWS DAYS 2015

画像認識API 画像を送るだけで写っている商品の情報が分かる

• 登録商品:500 万件以上(昨年10月)の市販商品

–書籍〃DVD〃CD〃PCソフト〃ゲームソフト〃食品パッケージ〃… どんどん増加中

• 定期更新:網羅性 と 認識精度 の改善

–データ追加〃パラメータ・ゕルゴリズム改良

12

Page 13: JAWS DAYS 2015

FIREFLY 的ゕプリが作れる API みなさんがよく知っている Fire Phone の目玉機能

• 写真や音楽からゕマゾンの商品を検索

http://jp.techcrunch.com/2014/06/19/20140618amazons-fire-phone-

introduces-firefly-a-feature-that-lets-you-identify-and-buy-things-

you-see-the-real-world/

【引用元】

13

Page 14: JAWS DAYS 2015

設計思想

安全性・再現性・生産性を重視した

14

Page 15: JAWS DAYS 2015

設計思想 安全性・再現性・生産性を重視

• 安全性 を高める考え方

– Blue-Green Deployment [Martin Fowler 2010]

• 再現性・生産性 を高める考え方

– Immutable Infrastructure [Chad Fowler 2013]

–設定の版管理

– CLI on Cloud Storage

• クラウドが当たり前になったおかげで、やりやすくなった!(費用的にも)

15

Page 16: JAWS DAYS 2015

Blue-Green Deployment ダウンタムの最小化、迅速・確実な復旧

• スタンバ環境の構築・切替

–ゕクテゖブ環境を書き換えないことが重要

16

Page 17: JAWS DAYS 2015

Immutable Infrastructure ”いつも管理された環境” による再現性の向上

• 差分更新は困難 ⇒ 破棄して最初から構築

–様々な状態を考慮した差分を作るのは困難

–実際の状態を正確に管理することは困難

• 様々な要因でサーバの状態は複雑で不明瞭

17

Page 18: JAWS DAYS 2015

設定の版管理 ”環境のコード化” による再現性の向上

• 全ての版を保存

–設定だけから環境を復元可能

–同じ版の設定から復元される環境はいつも同じ振舞

• 設定(プログラムやデータなど一式)

–プログラム:ゕプリケーション, ミドルウェゕ, OS, スクリプト

–データ:設定フゔル, DBダンプ, 画像, 辞書, …

18

Page 19: JAWS DAYS 2015

CLI on Cloud Storage ”UNIX 的抽象化” による再現性・生産性の向上

• データ加工コマンド

–入力のみから決まる出力

–パスによるデータ指定

–ストレージ上での進捗データ管理

• 効果

–疎結合な設計〃再現しやすい試験〃明快なデータバージョン管理〃障害に強い運用〃安い運用費〃スクリプトによる自動化のサポート

19

Page 20: JAWS DAYS 2015

設計

AWSを駆使した

20

Page 21: JAWS DAYS 2015

主要なコマンド 以降で4つのコマンドとセキュリテゖの設計を紹介

• 画像認識APIの更新手順

– 商品収集 & 収集データ確認

– 設定構築 & 性能レポート確認

–スタンバへの設定反映

–スタンバの起動 & 動作確認

–ゕクテゖブ⇔スタンバの切替 & 待機

–スタンバ(旧ゕクテゖブ)の停止

–スタンバ(旧ゕクテゖブ)への設定反映

21

Page 22: JAWS DAYS 2015

商品収集コマンドの設計

AWSを駆使した

22

Page 23: JAWS DAYS 2015

商品収集コマンド 様々なサトから ”商品情報” と “商品画像” を抽出

• 条件に合うサトのページをクロール

• ページから商品情報と画像URLを抽出

23

Page 24: JAWS DAYS 2015

[email protected]

システム構成 サト数・ページ数に応じて EC2 数の調整

24

Page 25: JAWS DAYS 2015

Cloud Design Pattern による 要約 典型的なバッチ処理のための組み合わせ

• 運用保守:設定のコード化

– Bootstrap〃Stack Deployment

• 運用保守:ログの集約

– Log Aggregation〃Web Storage Archive

• バッチ処理:順序付き並行処理

– Fanout〃Queuing Chain

25

Page 26: JAWS DAYS 2015

ポント t1.micro (spot instance) 祭

• たくさんの EC2 でゆっくり並行クロール

–各サトへの負荷を抑えつつ、たくさんのページをクロール 100台 以上のときも

• 1h でタスクが終わるようにジョブを分解

– EC2 が死んでも被害は軽微

–一部 spot で節約 0.020$/h ⇒ 0.003$/h … 85% OFF

26

Page 27: JAWS DAYS 2015

設定構築コマンドの設計

AWSを駆使した

27

Page 28: JAWS DAYS 2015

設定構築コマンド 収集データから設定(DB・辞書)を構築・検証

• S3上のデータを依存関係順に処理

28

Page 29: JAWS DAYS 2015

[email protected]

システム構成 データ量・検証量に応じて EC2 種類・数の調整

29

Page 30: JAWS DAYS 2015

Cloud Design Pattern による 要約 典型的なバッチ処理のための組み合わせ

• 運用保守:設定のコード化

– Bootstrap〃Stack Deployment

• 運用保守:ログの集約

– Log Aggregation〃Web Storage Archive

• バッチ処理:順序付き並行処理

– Fanout〃Queuing Chain

• 性能向上:高速化

– Storage Index

30

Page 31: JAWS DAYS 2015

ポント 分散フゔルシステム上のフゔル変換

• S3 から入力、S3 へ出力

–失敗時の手戻りが軽微〃途中から再開可能

• 適切なフゔルサズ

–細か過ぎるとS3ゕクセス数が増加

• S3ゕクセスが占める割合が増加 ⇒ 処理時間が増加

• S3ゕクセスはDynamoDBゕクセスより割高

–対策

• 複数フゔルのZIP化〃DynamoDBへの変更

31

Page 32: JAWS DAYS 2015

設定反映コマンドの設計

AWSを駆使した

32

Page 33: JAWS DAYS 2015

設定反映コマンド 新設定でスタンバ環境を更新

• 検索方法に合った DB へ商品情報を投入

– DynamoDB:ハッシュレンジ複合キー検索

– CloudSearch:全文検索〃ブール型検索〃フゔセット検索〃地理空間検索

33

Page 34: JAWS DAYS 2015

[email protected]

システム構成 データ量に応じて EC2 数と DynamoDB 速度の調整

34

Page 35: JAWS DAYS 2015

Cloud Design Pattern による 要約 典型的なバッチ処理のための組み合わせ

• 運用保守:設定のコード化

– Bootstrap〃Stack Deployment

• 運用保守:ログの集約

– Log Aggregation〃Web Storage Archive

• バッチ処理:順序付き並行処理

– Fanout〃Queuing Chain

• 性能向上:高速化

– Storage Index

35

Page 36: JAWS DAYS 2015

ポント 索引構築の効率化

• 差分更新で時間の短縮と費用の節約

–いざというときは全体更新

• DynamoDB 書込速度調整で時間の短縮

–終わったら下げること!回数制限に注意!

• CloudSearch で全文検索の工数の節約

–自然言語処理はまじめにやると大変

– EC2 の費用 + 25% 程度

36

Page 37: JAWS DAYS 2015

起動コマンドの設計

AWSを駆使した

37

Page 38: JAWS DAYS 2015

起動コマンド 新設定でスタンバ環境を起動

• 設定を指定して起動

–混ざらないように起動ごとに新しく環境構築

38

Page 39: JAWS DAYS 2015

[email protected]

システム構成 QPS に応じて EC2 数 & DynamoDB 速度 の調整

39

Page 40: JAWS DAYS 2015

Cloud Design Pattern による 要約 典型的なステートレスサービスのための組み合わせ

• 運用保守:設定のコード化

– Bootstrap〃Stack Deployment

• 運用保守:ログの集約

– Log Aggregation〃Web Storage Archive

• 性能向上:高速化

– Storage Index

• 性能向上:冗長化

– Multi Server

40

Page 41: JAWS DAYS 2015

ポント Immutable Infrastructure

• 環境の分離

–環境は変化しないリソースだけを共有

• EC2 のステートレス化

–必ずデータを外部 DB へ格納

• 設定のトレーサビリテゖ

–コード化された設定へのパス

41

Page 42: JAWS DAYS 2015

セキュリテゖの設計

AWSを駆使した

42

Page 43: JAWS DAYS 2015

ネットワーク構成 複数拠点をまたぐ安全な開発運用体制

• 機能ごとにセキュリテゖグループで分割・ゕクセス制限

– 誤設定リスク・ネットワークリスク低減

– サブネットも分割するとより安全

• VPC で複数拠点を

VPN 接続

43

Page 44: JAWS DAYS 2015

Cloud Design Pattern による 要約 典型的なセキュリテゖ確保のための組み合わせ

• ネットワーク:リスク低減

– Functional Firewall〃Operational Firewall

• ネットワーク:安全な裏口

– CloudHub〃BackNet

44

Page 45: JAWS DAYS 2015

まとめ

AWS を駆使した設計の

45

Page 46: JAWS DAYS 2015

設計のまとめ 様々な ”考え方” と “CDP” の組み合わせ

• 4種類の考え方

– Blue-Green Deployment〃Immutable Infrastracture〃設定の版管理〃CLI on

CloudStorage

• 10種類のCDP

– Bootstrap〃Stack Deployment〃Log

Aggregation〃Web Storage Archive〃Fanout〃Queuing Chain〃Storage Index〃Multi Server〃CloudHub〃BackNet

46

Page 47: JAWS DAYS 2015

設計の流れ AWS は非常に柔軟なので考慮することが多い

• 要件を満たす設計の “洗い出し”

– 様々なトレードオフが可能

• 生産性〃品質(安全性〃信頼性〃可用性〃拡張性〃スループット〃反応速度〃容量)〃課金モデル(オンデマンド〃リザーブド〃スポット〃品質)

– 何を重視するかで選択

• 無駄の少ない設計の “進化計画”

– 事業の進捗に応じて適した設計が変化

• 進捗に応じてリソース量が変化 ⇒ オンプレでは困難

– 設計を乗り換えるコストも考慮

47

Page 48: JAWS DAYS 2015

AWS の効果 大幅に工数を削減 短期間に実現

• 組み合わせるだけ実現できた機能

–分散DB

• S3〃DynamoDB〃CloudSearch

–進捗管理

• S3, SWF

–クラスタ構成管理

• S3, AMI〃EC2〃EBS〃ELB〃CloudFormation

–クラスタ監視・通知サービス

• CloudWatch〃SNS

48

Page 49: JAWS DAYS 2015

AWS の効果 本業に専念可能

• OSSでもできるけど、やるべきことが多い

–使い方・性能・品質の調査

–ゕップデートの追随

–セットゕップの自動化〃手順書の作成

–可用性・拡張性・信頼性・安全性の確保

–サーバの運用・監視・障害対応

• ※やりきってAWSと対等。AWSより安くやれる?

• AWS がカバーしない領域だけやる

– AWS ロックンがいやなら疎結合に設計

49

Page 50: JAWS DAYS 2015

AWS を使う理由

使ったらスグわかる

50

Page 51: JAWS DAYS 2015

高い完成度 他社のサービスと比べて圧倒的

• 豊富なサービス 何個?

–欲しい機能がどんどん増殖

–組み合わせるだけで多くの要件を満足

–スケール可能なシステムが簡単に実現

• 制御が容易

–単機能で性能・費用の制御が容易

–完全にプログラマブルで自動化可能

– CLI・Management Consoleが便利

51

Page 52: JAWS DAYS 2015

安くて安心 さまざまな案件に適用しやすい 特に新規事業

• とにかく経済的 どんどん値下げ

–従量課金で柔軟に調達

–ハードウェゕの維持管理が不要

–機能の組み合わせで柔軟な課金モデルを実現

• 手厚いサポート

–親切な中の人

– JAWS-UG(超巨大なユーザグループ)

– 公式・非公式の豊富なドキュメント

52

Page 53: JAWS DAYS 2015

こんなカしたサービスを使わないのは “負け”

競合するのは “愚の骨頂”

さっさとやめて

AWS を使って 本業に専念 せよ! by 来栖川電算 の 山口さん

53

Page 54: JAWS DAYS 2015

docomo cloud package

宣伝:ドコモが AWS のコンサル???

54

Page 55: JAWS DAYS 2015

ドコモのAWS利用例 55

Page 56: JAWS DAYS 2015

[email protected]

[email protected]

ドコモがクラウドのユーザとして蓄積してきた ノウハウを展開

社 内 で も 利 用 し て い る ツ ー ル ・ コ ン サ ル テ ゖ ン グ を ご 提 供

https://www.39works.net/assets/dcm-cloudconsulting/

56

Page 57: JAWS DAYS 2015

サービス内容 57

Page 58: JAWS DAYS 2015

ドコモAPI

宣伝:できたてホヤホヤの

58

Page 59: JAWS DAYS 2015

動作推定API ドコモ と 来栖川電算 の共同研究

• 加速度データから人の動作や行動を検出

–静止〃歩き〃走り〃自転車〃睡眠〃食事

• 動作と直接対応しない行動も検出可能

• スマホ・スマートウォッチに対応

– Android〃Android Wear〃… • 加速度データにゕクセスできる API を備えたウェゕラブルデバス

– ※次の画像は画像中のデバスに対応していることを保証するものではありません。

59

Page 60: JAWS DAYS 2015

応用例:ラフログ ウォッチの加速度データを収集・送信するだけ

60

開発者は今すぐ確認! ⇒ https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_docs_id=127

Page 61: JAWS DAYS 2015

来栖川電算の 毎朝体操

宣伝:モーション認識でフゖットネスを楽しくする

61

Page 62: JAWS DAYS 2015

ラジオ体操ゕプリ だれでも、いつでも、どこでも、すぐできる

• Android & iPhone ⇒ http://maiasa.jp/

62

Page 63: JAWS DAYS 2015

スマホを持って体操 腕の動きを認識・採点し、素敵なレポートを作成

• 頑張りに応じてトロフゖーがもらえる

• みんなの頑張り(統計)を見ることができる

63

Page 64: JAWS DAYS 2015

100,000DL 突破 91ヶ国で 都市部の 30~50 代に人気 まだまだ増加中

14904 いいね!

64

Page 65: JAWS DAYS 2015

知名度上昇中 ”風変わり” なゕプリなので様々なメデゖゕが注目

• Mashup Award 9 – 日本最大のゕプリコンテストで優秀賞

• ゕプリソムリエ – 【石井寛子ゕプリ事始】「毎朝体操」

超最先端ラジオ体操第1!?

• 週刊朝日 – 【おすすめゕプリ生活】あなたの“ラジ

オ体操度”が測れる「毎朝体操」

• 日経新聞 – 職場で気軽に体ほぐし ヨガ・体操…

お助けゕプリ

• 文化放送 – ドコモ団塊倶楽部

– 8月23日(土)11:00 ~ 13:00

– ゕプリ紹介コーナー(生放送)

65

Page 66: JAWS DAYS 2015

マグニチュード3~4 みんなのラジオ体操の熱量を合計するとヤバい!

• 13.581 GJ 2014年6月22日時点

–実はラジオ体操は運動強度が高い!

熱量 状況

1.500 GJ 雷の平均のエネルギー

1.770 GJ 質量1kgの物体が木星の引力圏から脱出するために必要な運動エネルギー

2.000 GJ マグニチュード3の地震のエネルギー

4.184 GJ TNT火薬1トンの爆発のエネルギー

8.532 GJ 世界の人口1人あたりの年間消費電力量(2002年)

13.581 GJ 毎朝体操の総熱量 2014年6月22日時点

64.100 GJ マグニチュード4の地震のエネルギー

運動強度 状況

2.0 METS 電車の中で立っている

3.0 METS 庭仕事・野球の野手

3.5 METS 平地での自転車

4.0 METS ハキング・速足

4.5 METS ラジオ体操

6.0 METS 階段昇降・卓球

9.0 METS 水泳・高強度の長距離走・筋力トレーニング

66

Page 67: JAWS DAYS 2015

来栖川電算の スタッフ募集

宣伝:いっしょに未来の習慣を作りませんか

67

Page 68: JAWS DAYS 2015

スタッフ募集 愉快な技術を正しく届け、人々の生活を変えたい方

• 研究(認識技術) – 機械学習・ゕルゴリズム・高速化・省メモリ・画像・センサーに関する知識〃Java〃C++

• 開発(サーバサド) – プロセス・ゕーキテクチャ・ミドルウェゕ・ネットワークに関する知識〃Scala〃Java〃C++

• 開発(フロントエンド)

– UI/UX・Android・iOSに関する知識〃JavaScript

• 企画(認識ゕプリ・認識サービス)

– 新しい習慣を考える力〃普及のためのゕデゕ

68

Page 69: JAWS DAYS 2015

オフゖス 必要なら増やすよ!在宅もOK

• 気軽に遊びに来てね!

– 見学できて、ご飯も食べれて、泊まれる。

名古屋本社(2013年フロゕ増設)

オン千種・名大病院・名工大の近く

上野支社(2012年開設)

入谷駅・鶯谷駅・上野駅の近く

69