y.takky てくめも

web技術について勉強会の参加メモだったり、本を読んだメモだったりを載せる予定

GDG DevFest Tokyo 2018 メモ

今年もGDG DevFest Tokyoに参加してきた。 gdg-tokyo.connpass.com

2016から毎年行っているらしい。

ytacky.hatenablog.com ytacky.hatenablog.com

今年は新宿だったので、かなり行きやすかった。

DialogflowとCloudFunctionsで作るGoogleアシスタントアクション

@flatfish

t.co

Googleアシスタントアクションの話

  • コミュニティプログラムってのがあって、アクションをリリースするといろいろもらえたりする

開発する3つの方法

  • Actions SDK
  • Dialogflow
  • テンプレート
    • NonCodingで作れる。SpreadSheetを埋める感じ

Dialogflow

  • LineやSlackなどにも
  • アナリティクス機能
  • SDKが豊富

  • Dialogflowは聞き出すところまでできる

  • それ以降のバックエンドはできない。計算とか

Intent

  • 会話を開始する文(トリガー)を決める
  • 会話を成立させるための条件を決める
  • 作成したことのない謎の Intent
  • Default Fallback Intent
    • アクションが失敗したときのIntent
  • Welcome Intent
    • アクションが成功したときのIntent

      Entity

  • いわゆるメニュー1つ1つ。
  • Key-Value方式

Fulfillment

  • サーバにjsonを飛ばすことができる

acitons-on-google-nodejsライブラリ

  • DialogFlowではjsonを渡すのでよしなに処理してくれる

TIps

  • YoutubeのGoogleDevelopersチャネル
  • AoG公式Docs
  • Slack

Container

Kuma

  • コンテナ(物理)はなにがいいのか。
  • 統一規格なので何でも運べる

(ソフトウェアエンジニア的な)コンテナ

  • 統一された規格
  • どこでも動かすことができる
  • 環境が隔離されている

だいたいコンテナを使っている人は会場だと90%ぐらい?

Prod環境でコンテナを使う利点

  • 使い捨てが簡単
  • 増やすのも簡単
  • 減らすのも簡単

  • アプリケーションの依存性を内包できる

    • もしchefやansibleなどでマシン自体をスケールアウトしたらどちらが責任を持つか
    • コンテナの中と外で責任の分離ができる

注意点

  • 一度コンテナを作ったらそのコンテナの中をいじらない (immutable)
    • いわゆるコンテナにSSHしたら負けなやつ
  • コンテナの中にデータを保存しない (stateless)
    • ロードバランシングして画像がない方に振り分けられると見えない
  • コンテナの管理・運用
    • Monitoring,Orchestration などなど

InGCP

  • Kubernetes Engine
    • ちなみにkubernetesを使っている人は会場の中で10%以下ぐらい?
    • kubernetesの説明があったが割愛
      • コンテナのオーケストレーションツールで、水平スケールや自動ヒーリング、サービスディスカバリとロードバランシングなど。
      • Node-poolの提供 Nodeをまとめて管理する概念と、Nodeのスケール機能
      • GCPの連携
  • StackDriver
    • LoggingやTracing,profilling,Alertingなどモニタリングする際のツール
  • Container Registry
    • DockerHubみたいな
  • Cloud Build
    • コンテナのビルドとワークフローの指定管理を行うツール

GCPで作るデータ処理パイプライン

@orefon

t.co

  • バッチとストリーム処理の概要と問題

データ処理の分類

  • バッチ処理
    • 有限の範囲のデータを扱う
  • ストリーム処理
    • 処理対象となるデータの範囲が無限で時々集計する必要がある

機械学習の特徴量生成の場合

  • 時系列系の特徴量
    • リアルタイムレコメンド

GCP上ではプログラミングモデルとインフラを提供している

  • プログラミングモデル

    • ApacheBeam
    • Dataflow,Sparkなど
    • Javaが一番揃ってるけどPython,Goも
  • 分散実行インフラ

    • フルマネージドでオートスケール
    • GCP各種ストレージと連携できる
  • Cloud Dataflow+beam

    • データの処理と分析を担う
  • Cloud Dataprep -UI上でできる非プログラマ向け
  • Cloud Dataproc + Hadoop
    • Hadoopをそのまま移行する感じ

Apache Beam

  • データの処理の流れを宣言的に記述する
  • 抽出データ(PCollection)を処理(PTransform)でつないでグラフを作る

Google Cloud Dataflow

  • Apache Beamの実行環境
  • オートスケール

まとめ

  • ApacheBeamはバッチ処理とストリーム閭里を簡易に記述するプログラミングモデル
  • Dataflow使うと早く安く処理できる

Firebase Realtime Database in Production

speakerdeck.com

AI メッセンジャー

B2Bのチャットサービスの提供、自然言語処理を含めて自社製 FIreBase:アプリケーションインフラの提供サービス WebSocketの管理をしたくなかった

なぜ書き込みをサーバからしか行わないか(直接クライアントから返さないか)

  • フィルターなどが弱い(RealTime Database)
  • BigTable等の別Storageから検索・フィルタリングできる。 ただし、データの分散や二重管理などが必要になるので、構成の吟味が必要

Filtering values

  • FireBaseは値のクエリが苦手
  • 設計時点でフィルタリングが必要なかったりしやすいように設計すべき

How to manage incidents

  • Lineともつなげていて、絶対落とせない。証券会社とかあるし。
  • FireBaseに障害が起きってるっぽいときには、Pollingに切り替えて Restでやるようにした。
  • データをロストすることもあり得るので、全データはStackDriverにログを出力しておく

Future works

  • 最終的にFireStoreかな。まだ検証はしてないけど
  • Double Write以上になりそう。

感想

  • AoG面白い個人的にやってきたい感じはあるんだけど、マネタイズのイメージがまだつかなくて企業導入はまだまだな感じ
  • コンテナ自体は使っているけどKubernetesを使ってる人はまだまだ多くないようだ。
  • CloudDataflowあたりはまだそんなに使ってるところ多くないのかな。セッションは人気だった。
  • FireBaseが結構本番での利用事例が出てきた感じ