都知事杯2021でトップ5になった話
はじめに
東京都主催のハッカソン、#都知事杯オープンデータハッカソンの決勝5チームに選んで頂くことができました。残念ながら優勝はできなかったのですが…その振り返りを記念すべき初noteにまとめます。
なにを作ったか
写真を送ると、そのごみが何ごみかを教えてくれるLINEbot"ごみ分別さん"を作成しました。2022年3月現在は文京区のごみ分別に対応しています。
友達登録はこちらから!
どんな大会か
ひとことでいうと、 "東京都がオープンデータ今たくさん集めていて、どんどん活かしていきたいです!何か良いもの作ってみてください!"という大会です。東京都デジタルサービス局が主催しており、約60チーム200名近くが応募した(個人的には)比較的大きな大会でした。普通のハッカソンと違い、
①都のオープンデータを必ず使わなくてはいけないこと
②優秀作品に選ばれると都が実装をサポートしてくれる
(作って終わりではない)
という2点が特徴です。
なぜ参加したか
他のハッカソンに参加して悔しい思いをしたのがきっかけでした。
初めてハッカソンに参加し、"ポスト監視君"という "郵便受けに投函されると、その写真をLINEに通知、チラシなら旗を振る"というサービスを実装しました。
この作品は残念ながら優勝作品には選ばれなかったのですが、 "意外と良いものが作れたじゃないか!"という自信につながり、同じメンバーに声をかけてたまたま見つけた#都知事杯オープンデータハッカソンに参加しました。
なぜ"ごみ分別さん"を作ったのか
このアプリを開発した理由、というより"ごみ分別さんというフォーマットでハッカソンに挑戦した理由"は3つあります。
①LINEサービスにしたかった
私たちのチームにはUI開発に慣れているメンバーがいませんでした。
そこでUIは気にせず、バックエンドやロジックのところに集中できる"LINEbot"形式のサービスを実装することとしました。
(他の大会に挑戦される方も手軽に使えるLINEbotおススメです...)
②画像認識を使いたかった
オープンデータのカタログの多くは位置情報系で、どうしてもマップ系のサービスが(実際優秀作品のうち4作品は位置情報系)他の参加者と差別化を図りたい、また実装の難易度に反してインパクトの大きいことから"画像認識"を利用したサービスを作成することにしました。
③ごみ分別大変だった
都は自治体によって、ごみ分別の方法が全く異なります。(発泡スチロールの捨て方超難しい)それを分かりやすくすることで、ごみ分別のコールセンター業務や家庭でのごみ分別が改善できればと思いLINEbotの作成をしました。
アーキテクチャ
こんな感じでAWS上のLambdaで動く一般的なLINEbotの構成をしています。CloudWAFなんかも導入していて、セキュリティ面も結構意識しています。
苦労した開発ポイント
①類義語/言い換えた言葉の対応
文京区のオープンデータは約850件のごみ分別品目を登録しています。ですがチャットボットとして利用するには、850単語では不十分です。SQLのLIKE検索で結果取得を行っているので、例えば“衣服=燃えるごみ”で登録されていると、ズボンやシャツで検索しても帰ってきません…APIなどでなんとか類義語を出せるんじゃないかという案もあったのですが、ござや畳といった日本のマイナーワード、またズボン=衣服というような言葉はやはり自動でできず…そこで私たちは文京区のオープンデータを元に、4600件程度の"言い換えた単語"を洗い出すという作業をしました。
②学習機能を実装
とはいえ対応していない言葉もまだまだあります。
そこで"検索失敗した単語を記録する学習機能"を追加し、管理者が都度検索失敗した単語を定期的に確認し、検索失敗が多いものはDBに追加できるように設計しました。
③セキュリティを大切に
センシティブな情報を扱うようなサービスではないですし、MessagingAPIをはさんでいるのでセキュリティがある程度担保されていることもありますが…それでもDBを不本意に操作されないよう、クラウドWAFやセキュリティグループの設計で安全なサービスを作成しました。
(多分普通のハッカソンはしない)
アプリの今後
有志が好きに開発したアプリなので、今後の展開は特に考えていません
とは言いつつ、いろんな人に使って頂けたら嬉しいなと思っています。
宜しければ友達登録を…⇒リンク
参加した感想~開発について~
①アウトプットが一番勉強になる
月並みな話ですが、大人の一番の勉強法は実際に手を動かすことだと感じました。資格取得の際DBやNATゲートウェイなどの単語を一生懸命勉強しましたが、それでも試験の次の日には忘れ始めています。何かを作る経験の中で出てくる "これってどう作るんだろう"や、"どのサービスを使えば解決するんだろう"という経験が勉強のモチベーションでもあり、知識の定着につながりました。今後も手を動かさねば。
②アプリ全然わからん
私は普段からNodeJSの実装はあまりしていないので、今回のサービスも"サービス設計" "DB設計""ディレクション"等主担当で、アプリロジックはチームメンバーに実装して頂きました。次はロジックの部分も自分で組むようにしなくては…(チームメンバーありがとうございました)
③LINEMessagingAPIすごい
LINE MessagingAPI,メニューからカメラ機能、カルーセルや位置情報…アプリを一から作るととんでもなく時間かかりそうな機能が使いたい放題でした。これで基本無料なのはすごい!
参加した感想 ~大会について~
①都が主催すると規模がすごい
東京都のイベントなので、とにかく規模が凄かったです!
優勝者には小池都知事からトロフィー、イベント前日には大手町駅全域でデジタルサイネージで告知、カッコいいプロモーションビデオ等々…規模の大きさがモチベーションアップにかなり繋がりました。
②サポートがとても充実していた
決勝進出(サービス化)が決まってからは行政の方とのQA、またセキュリティチェックなどのサポートをして頂きました。通常のハッカソンではない規模のテックサポート、ビジネスサポートがあったのは嬉しかったです。
③色々な人がいて面白かった
都の大会ということもあり、本当に色々な方々、サービス案がありました…(学生~社会人、海外の人も!)優勝したチームはもちろん、他のチームの発表を聞いているだけでも "こういった使い方もあったか!"という発見が多かったです。個人的には"給食のデータから親御さんに最適な献立を提案してくれるアプリ”が最高でした。発表ひとつとっても、"こうすればアプリの画面共有簡単にできるんだ"など大変勉強になることが多かったです...
おわりに
チームメンバーの皆さん、僕が何気なく応募したこの大会に最後まで付き合ってくれて本当に本当にありがとうございました… まさかこんなに長いことになるとは...お陰でIT面でもプレゼン面大変成長することができました、本当にありがとうございます!今後もよろしくお願いします。
またハッカソンに参加したことがない方々、このイベントは初参加のハッカソンに結構おススメです。意外と一番のハードルは応募することかもしれません!
大会関係者の方々、開催・運営本当にありがとうございました。来年度も楽しみにしております~