SlideShare a Scribd company logo
Google Apps Script(GAS)メインで

Google Assistant アプリを作った話

GDG DevFest Kyoto 2019
2019/09/21

KyotoGAS / 株式会社クエステトラ
日下 毅
自己紹介
日下 毅(Tsuyoshi Kusaka)



所属:株式会社クエステトラ
コミュニティ:KyotoGAS、JP_Stripes Osaka など

経験:Google Apps Script は7年ほど
   それ以外に ActionScript、Java、VisualBasic 等


Facebook http://www.facebook.com/tsuyoshi.kusaka
Twitter https://twitter.com/tsuyoshikusaka

Blog http://d.hatena.ne.jp/tk_4dd/
祇園祭の巡行のお手伝いしてます、かれこれ20年ぐらい
所属先について

株式会社クエステトラ

京都(烏丸御池)、2008年創業



クラウド型 BPM ワークフロー
開発/運用/販売、担当は営業
https://www.questetra.com/ja/corp/

会社から祇園祭の巡行がよく見えます
Questetra BPM Suite
注力しているテーマ

「API オーケストレーション」

-ブラウザベースのクラウド型 BPM ワークフロー
-ノンプログラミングでシステム構築可能
-REST API で様々なサービスと連携(連携が楽しい)

無料で試せて

Hue 動かしたり

ifttt みたいにも

KyotoGAS について

Google Apps Script(GAS)のコミュニティ



2013/07 (TokyoGAS の方きっかけで)勉強会を実施
2013/10 GDG Devfest Kyoto で Code Lab 実施
2014/11 GDG Devfest Kyoto で 発表

2015/10 GDG Devfest Kyoto で 発表

2016/11 GDG Devfest Kansai で 発表

2017/11 GDG Devfest Kyoto で発表

2018/09 GDG Devfest Kyoto で発表

https://sites.google.com/site/kyotogas/

Google Apps Script(GAS)

https://developers.google.com/apps-script/

知ってますか?

使ってますか?

GAS とは?
Google Drive(Sheets/Docs/Forms)で利用できる
サーバサイドプログラムで、Javascript ベース


Micrsoft Excel の VBA に近いものとも言える


ブラウザベースで作れて、Web アプリを立てたりも手
軽にできる



過去に GAS で作ったもの

https://chrome.google.com/webstore/detail/questetra-bpm-suite-add-o/hmhbgjoealkelgpnjagpcnjdlmkndggn

Sheets のデータから

フローを一括起動

その他に

今回のターゲット

Google Assistant アプリ(≒Google Home
アプリ、VUI:Voice User Interface)に興味
がある人



GAS についてある程度わかる人





いるかな?・・・

作ったアプリ

「テニスランキング」

https://assistant.google.com/services/a/uid/0000004a9b46d014?hl=ja&fbclid=IwAR0tfoAz
HTbyeo_3TZC2f4uEOCVxhjOJHg9Ro3kSHedaw3BRgR8LMvD3GI0

デモ

なぜこんなものを作ったのか

テニスが好き、錦織選手や大坂選手の順位が気に
なる、世界ランキング上位も気になる



いちいちサイトをチェックせずに知りたい

天気予報のように気軽に聞けると私はうれしい



何か VUI アプリを作ってみたかった

元になるデータの準備

スクレイピングはめんどくさい、好きではない





OpenDataSoft という今回ほしいデータを JSON で
返してくれるドンピシャのサービスを発見!









20190921 Google Apps Script(GAS) メインで Google Assistant アプリを作った話
想定される一般的な構成

OpenDataSoft

実現したかった構成

OpenDataSoft

GAS だけでは実現できず

DialogFlow の Webhook で HTTP リクエストを投げ
て GAS を呼び出すことはできる



が、正しく応答を返すことができない(レスポンス
コードが302になる)・・・

※GAS に投げっぱなしでデータをためるだけとか
なら大丈夫

自分のスキル面の課題など

GAS はまあまあ得意

Firebase はまだまだ不慣れ





なるべく Firebase 部分を少なくして GAS をうまく
使って、手早く作りたい・・・

別の側面での考慮

Firebase から外部に HTTP リクエストを送るとなる
と有料プランが必要になる

なるべくなら無料範囲で対応してしまいたい





GAS から Firebase の RealtimeDatabase に API
経由で書くことでカバー

実際の構成

定期的にデータ取得して DB に同期

Realtime
Database

リクエストがあれば DB から返す

OpenDataSoft

Firebase 側

key ごとに回答文字列を格納しているだけ
Google Sheets 側

取得した JSON から回答文字列を組み立ててセルに入れる
アプリ公開にまつわるいろいろ

名前

→パッと思いついたもので審査が通った



ロゴ

→みなさんご存知いら〇とや



プライバシーポリシー

→「収集しません」で
 GAS で作った add-on では苦戦…

問題がいくつか

人名の読み方がおかしい

 「ジョコビッチ」→「ジョコービック」  Djokovic
 「ズベレフ」  →「ズバレブ」     Zverev
 「チチパス」  →「トサイトサイパス」 Tsitsipas

 日本語であればおかしくならなさそうだが・・・



指示の聞き直しが多い

 指示のワードとしてはシンプルなはずだが・・・

VUI の視点で

そもそもコマンドで指示する方式ってどうか?と言
われている



とはいえ、自然な会話で成立させるとなると設計が
かなり難しい・・・今回は割り切った



ディスプレイがあるとまただいぶ変わる・・・

DialogFlow のログをみてみると

世間の人々からどんな言葉を浴びせられているか
わかる

 「明日の天気は」  聞く相手が違うよ

 「ニュース止めて」 確かに長いのは認めるが・・・

 「だんじり」    世間にはいろんな人が・・・



BtoC って切ない・・・(普段の仕事は BtoB)

うちの子も Google Home には冷たかった・・・

まとめ


何はともあれ当初の目的は果たした!



(Google からTシャツも送られてきた)





めでたしめでたし・・・

ある日のこと・・・

OpenDataSoft から取得していたランキングデータ
が更新されていない・・・











タダで使わせてもらっているので文句は言えない・・・けどつらい

外部サービスに依存するとこういうことが・・・

ということで今後

テニスランキングアプリ改修

 代替サービスはなさげ・・・スクレイピングは・・・

 RPA ツール(邪道)で乗り切れないかと試行錯誤中

 現状はたまに手動で対応(週1でもきつい)



次は祇園祭に関するアプリを作成

 「2019年の蟷螂山は?」→「山一番」みたいなやつ

 参加する立場としては巡行順はとても気になる

KyotoGAS 細々続けます

https://sites.google.com/site/kyotogas/

ありがとうございました


More Related Content

PDF
[OSC2018広島]自分にできる貢献のしかたを見つけよう(OSC2018広島Ver)
PPTX
島田商業 12班 掛川市
PPTX
Rubyと俺達の生存戦略 #kana01
PDF
Git道場を開催してきた
PDF
kintonedevcamp2016s-demo
PDF
Gceハンズオン20150411イン福岡
PDF
DCGANとStyleGAN2を試したときの話 / Dcgan and Stylegan2
PDF
Google Assistant関係のセッションまとめ
[OSC2018広島]自分にできる貢献のしかたを見つけよう(OSC2018広島Ver)
島田商業 12班 掛川市
Rubyと俺達の生存戦略 #kana01
Git道場を開催してきた
kintonedevcamp2016s-demo
Gceハンズオン20150411イン福岡
DCGANとStyleGAN2を試したときの話 / Dcgan and Stylegan2
Google Assistant関係のセッションまとめ

What's hot (20)

PPTX
Cross2013_GREE
PDF
bloom ではじめる自作 ROS パッケージのリリース
PDF
用途に合わせたアニメーションの実装方法
PDF
2013.11.16 shibuya java #4 Grails Goodness
PDF
ROS Kyushu User Group の発足
PDF
過去に自作したGoプロダクトの紹介 - Goオールスターズ
PDF
Goにおけるバージョン管理の必要性 − vgoについて −
PDF
プロダクトを育てるのにGoogleのサービスが助けてくれること
PDF
Annotate Windows API !
PDF
Android dev summit 2019 recap
PDF
Introduce the activities of gdg kobe 130917
PPTX
匠メソッドを導入したらサイトのアクセスが8倍になった話
PPTX
マイコン入門(2)
PDF
僕らのデータ同期プラクティス
PDF
メディアアプリでよく見る無限スクロールするタブの動きへの考察
PDF
20201126GAS活#7「【祝】詳解! Google Apps Script完全入門第2版」
KEY
5分でわかるGoogle+API
PDF
sharedUserIdを使った俺得開発ツールの作り方
PDF
Vagrant + VirtualBox + Chef を使った環境構築方法について
PPTX
20180607ノンプロ研分科会Vol1_情シスNight_BT「Google Apps Scriptで社員の入社・退社の業務をポチっ!」
Cross2013_GREE
bloom ではじめる自作 ROS パッケージのリリース
用途に合わせたアニメーションの実装方法
2013.11.16 shibuya java #4 Grails Goodness
ROS Kyushu User Group の発足
過去に自作したGoプロダクトの紹介 - Goオールスターズ
Goにおけるバージョン管理の必要性 − vgoについて −
プロダクトを育てるのにGoogleのサービスが助けてくれること
Annotate Windows API !
Android dev summit 2019 recap
Introduce the activities of gdg kobe 130917
匠メソッドを導入したらサイトのアクセスが8倍になった話
マイコン入門(2)
僕らのデータ同期プラクティス
メディアアプリでよく見る無限スクロールするタブの動きへの考察
20201126GAS活#7「【祝】詳解! Google Apps Script完全入門第2版」
5分でわかるGoogle+API
sharedUserIdを使った俺得開発ツールの作り方
Vagrant + VirtualBox + Chef を使った環境構築方法について
20180607ノンプロ研分科会Vol1_情シスNight_BT「Google Apps Scriptで社員の入社・退社の業務をポチっ!」
Ad

20190921 Google Apps Script(GAS) メインで Google Assistant アプリを作った話