Googleアシスタントアプリ「世田谷分別チェッカー」ができるまで【事前準備編】

4 min read読了の目安(約2900字

はじめに

先日、世田谷区のゴミの分別方法を教えてくれるGoogleアシスタントアプリ「世田谷分別チェッカー」をリリースいたしました。
このアプリは、捨てたいものの名前を伝えると何ゴミで捨てればいいのか教えてくれます。

この記事では、アプリを作成した背景から実装に入る前の事前準備をご紹介しようと思います。
具体的な技術の話というよりは、プロジェクト全体の流れやどんな風にサービス開発を進めたのかの参考になればと思っています。

このアプリを作ろうと思った背景

私は日々の生活の中で、まぁまぁ捨てる頻度は高いんだけど1度捨ててから次に捨てるまで少し時間が空いてしまい、毎回捨て方を忘れてしまうものがあるなぁと感じていました。(例えば、ビニール傘や乾電池など。)
毎回「〇〇 捨て方」でブラウザ検索し、区のホームページから該当の分別方法を探し出すのは面倒でした。
なので、この作業をGoogleアシスタントに尋ねるだけで教えてくれるようにしたら便利ではないか、と思いこのアプリを作ろうと思いました。
私が住んでいる地域が世田谷区だったこともあり、まずは世田谷区のゴミの分別方法を教えてくれるアプリを作ることにしました。
また、たまたまその時アシスタントアプリの開発に興味が湧いていたというのも大きな理由の1つです。

実現方法の調査

作りたいものが決まったら、次は実際に作り始める前に実現方法を検討します。
言うなれば、必要な道具と使い方を理解して、後は手を動かせばいいだけの状態にします。
今回は下記の4つが分かればアプリを作れそうです。
ここからはこれら4つを深掘りしていきます。

  • アプリのユースケースの検討
  • ゴミの分別データの作成方法の調査
  • アシスタントアプリ開発の基礎知識の調査
  • 分別データとアシスタントアプリの連携方法の調査

アプリのユースケースの検討

ゴミの分別を調べられると言っても調べ方は様々です。
まずはこのアプリがどのような使われ方をするのか、ユースケースを検討します。

まず、このアプリはユーザーは捨てたいものが具体的にある状態を想定しています。
そして、そのゴミの捨て方が分かればゴールです。
なので、アプリの流れとしてはこのような感じになりそうです。
「ユーザー:アプリ起動」→「アプリ:何を捨てたいか聞く」→「ユーザー:捨てたいゴミを伝える」→「アプリ:そのゴミの分別方法を伝える」→おわり

ゴミの分別データの作成方法の調査

ゴミの分別方法を調べられるアプリなので、ゴミの分別方法のデータが必要です。
1から自分で調べてデータを作るのは現実的ではありません。
多くの自治体が様々なオープンデータを公開していることは以前から知っていたので、まず世田谷区のゴミの分別方法がオープンデータとして公開されているか調べました。
区のホームページを見たところ、目論見通り世田谷区のゴミの分別方法がオープンデータとして公開されていました。

ただ、このデータだけではフォーマットがバラバラでデータもCSV形式でしか展開されていないため、サービス連携するには少々使いづらそうです。
ということで次は、アシスタントアプリでこのデータを使うためにはどのような形式でデータを持つべきかの調査と、アシスタントアプリの実装に関する基礎知識の調査に入ります。

※ちなみに、こちらのデータを利用するには下記のライセンス表記が必要です。

非改変で利用する場合: 資源・ごみの分別(50音順)、世田谷区、クリエイティブ・コモンズ・ライセンス 表示 2.1 (https://creativecommons.org/licenses/by/2.1/jp/)
改変して利用する場合: このサービスは以下の著作物を改変して利用しています。資源・ごみの分別(50音順)、世田谷区、クリエイティブ・コモンズ・ライセンス 表示 2.1 (https://creativecommons.org/licenses/by/2.1/jp/)

Googleアシスタントアプリ開発の基礎知識の調査

Googleは様々な開発リソースに対してCodelabという基礎知識を学べる講座を用意してくれています。
Googleアシスタントアプリも例外ではなく、私は下記2つのCodelabを実施しました。

こちらを実施することで、ざっくりではありますがアシスタントアプリを作る上で必要となる基礎知識を学ぶことができました。

分別データとアシスタントアプリの連携方法の調査

先ほどのCodelabで基礎知識を学びましたが、同時にアシスタントアプリはFirebaseのCloud Functionsと連携することがCodelabの内容から判明しました。
Firebaseと連携するということは、分別データはFirebaseのCloud Firestoreで持てばアシスタントアプリとの連携がしやすそうです。

ただ、現状私が持っているデータは区のホームページからダウンロードしてきたフォーマットが整理されていないCSVデータです。
このデータをFirestoreに格納する方法を検討しなければなりません。
CSVデータなので一旦Googleスプレッドシートに変換すればAPI連携などがしやすそうだと思い、まずはCSVからスプレッドシートへデータを移行することに決めました。
さらに、スプレッドシートからFirestoreへデータを移す方法を探したところ、GAS:SpreadSheetに登録したデータをFirestoreに送信するという記事が見つかりました。
こちらの方法を用いれば、スプレッドシートからFirestoreへデータを移すことができそうです。

おわりに

これで実装に入る前の事前準備が整いました。
次回はこのアプリがどのように実現されているのか、設計や構成周りの話をしようと思います。
最後までお読みいただきありがとうございました。