
先日、Google Cloudの認定資格Professional Cloud ArchitectとProfessional Data Engineerの2つを取得しました。Google Tel-Avivのチームから感謝の印としてGoogle Homeをいただきました(Nir Atiasさん、Ifat Yanaiさん、ありがとうございます!)
新しいおもちゃを手に入れたので、さっそく遊んでみましょう!
うちの子どもたちは町の反対側にある学校までスクールバスで通っています。そこで、iPhoneを取り出してFind my iPhoneアプリを開かなくても帰宅時刻がわかる仕組みを作りたいと思いました。ついでにGoogle Assistantのアクションを書いてみたかった、という動機もあります ;-)
ETAの推定ツールは、徹底的にサーバーレスで構築することにしました。エンドポイントにはCloud Functions(なんとPythonでも書けるようになりました!)、永続ストレージ層にはCloud Datastore、シークレット管理にはCloud KMSを採用しています。
ユーザーがアクション(名前は「school bus」)を起動すると、子どもの名前を尋ねられます(私のように子どもが複数いる場合に備えて)。その後、cloud functionが呼び出されます。
cloud functionはDatastoreから必要なデータをすべて取得し、Find My iPhone APIで位置情報を取得します。
https://gist.github.com/avivl/183d27f20cc1d8742f9f74853299790f
位置情報が取得できたら、Google Maps Direction APIを呼び出してETAを算出します。算出したETAはGoogle Assistantに返され、ユーザーに音声または画面で伝えられます。
https://gist.github.com/avivl/f5a156eaf87d6a1c68b7b7a908777bdb
実用性もある楽しいプロジェクトになりました。コード全文はGithubで公開しています。
もっと記事を読みたい方は、ブログをチェックするか、AvivのTwitterをフォローしてみてください。