tmegos blog

Web developer

【非公式】鹿児島市のごみ分別LINE Botを作ってみた

非公式なので公にはしていませんが、このような感じで分別方法を教えてくれます

f:id:tmegos:20190425145806p:plain

福岡市のLINE公式アカウントに触発されて作りました
本当はもっと早く作りたかったのですが、データがなかなか揃えられなかったことで今に至ってしまいました(理由は後述)

www.city.fukuoka.lg.jp

環境

データのスクレイピング

  • Node.js
  • cheerio-httpcli

Bot

  • Node.js
  • heroku
  • Fuse.js

データ

Web版「さんあ〜る」のごみの分別検索のリストを使います
このままでは使い勝手が悪いので、サイトをスクレイピングしてリストからjsonに変換します

できたjsonは以下のようになります
かながセットされていますが、カタカナがひらがなになるだけで漢字は展開してくれないようです

[
  {
    "index": "",
    "name": "IHコンロ(卓上、据え置き)",
    "type": "金属類",
    "attention": "45リットル袋に入れて口が結べなければ粗大ごみ(テープ等で留めることも不可です)\n粗大ごみの申し込みは099-813-5380(12/31~1/3までを除く毎日8時~21時)までご連絡ください",
    "kana": "IHこんろ(卓上、据え置き)"
  }
]

Bot本体

LINE Botの大枠は以下の記事を参考にして作りました

qiita.com

検索部分は先ほど作成したjsonをそのまま読み込んで、Fuse.jsで検索するようにしました

fusejs.io

Fuse.jsはあいまい検索を実現するJavaScriptのライブラリで、例えば「ティッシュペーパー」などで検索すると、

なども拾うことができます

感想

LINE Botのドキュメントがしっかりしているため、作りたいものが明確であれば比較的簡単に作ることができました
(もちろんバックとなる知識は必要です)
フォーマットさえ合わせてしまえば、各市町村向けの展開も難しくないと感じました

鹿児島市はオープンデータとして二次利用が可能な公共データを公開しています

www.city.kagoshima.lg.jp

このオープンデータにゴミの分別方法のデータが無いために、自分でデータを作る必要がありました
福岡市のLINEアカウントを見て「作ってみよう!」と思ったときには分別のPDFしかなく、 このPDFにOCRを書けるか自力でデータを作成するしか方法がありませんでした

www.city.kagoshima.lg.jp

最近になってWeb版「さんあ〜る」のリンクが追加され、ここからjsonを作成することでようやくBotを作ることができました

もっと地方地自体がデータを提供してくれて、それを利用して生活がもっと便利になればいいなと思います