「シブヤクハック」で渋谷区のゴミ問題をハックしてきました!(後編)
Microsoft主催のハッカソンイベント「シブヤクハック」に参加してきました!
シブヤクハックは、渋谷区が抱えるいくつかの課題に対し、MicrosoftのAzureを中心とした各種技術を使って2日間でアイデアを検討・実現しよう、というイベントです。
このエントリは、そんなシブヤクハックの2日目を僕の目線から振り返ります。
1日目はコチラです。
2日目は朝10:00に各グループで集合してのスタートで、前の日に考えたアイデアを元に設計→実装→成果発表→投票→懇親会というスケジュールでした。
アイデアを形にするまで
まずは、スタートから実装終了までを振り返ってみたいと思います。
設計
僕の所属する通称「ゴミチーム」は、1日目でだいたいのアイデアはまとまっていたこともあり、2日目はそれを元に技術的な設計を検討するところからのスタートでした。
最初はAzureにどのようなプロダクトがあるかもあまり分からず、瀬尾さんにいろいろと教わりながら30分ほど検討し、最終的に以下のようなシステム構成でまとまりました。
細かい技術的な話は他の技術者向けの記事でまとめる予定ですが、全体としてMicrosoftのAzureで提供される各プロダクトを上手く使い分け、以下の工程を実現しています。
- 渋谷区内のゴミ画像をSNSから取得(Logic Apps)
- 取得した画像から、各地点・時間ごとのゴミの量を解析(Custom Vision Service)
- 区の職員向けに、蓄積したデータを可視化(Power BI)
各工程で生成したデータはBlob StorageとCosmos DBに保存し、各プロダクトの連携にはFunctionsを利用する、という設計です。
いざ、実装
次に実装に映ります。
ここで面白かったのが、実装と言っても午前中の残り時間(10:30~12:00)はひたすらAzureの各プロダクトをWebブラウザから操作するのみだったことです。
コードは一行も書かず、ブラウザ上でCustom Vision Serviceに学習用の画像をひたすらアップロードして学習させたり、CosmosDBの設定をしたり、それをチームメンバーのアカウントと共有したり、とった具合で、上記の1, 2, 3でやろうとしていたことが単体で動くようになってしまったのは、ただただ便利の一言でした。
この時間に、渋谷区役所職員の宮島さんに、実際に渋谷区を歩き回ってゴミ画像を収集していただきました。ありがとうございます!
実際に撮っていただいた写真はコチラ。
やっぱり実際のデータがあると開発も調子が出ますね。
試しに撮っていただいた写真をCustom Vision Serviceに投げてみたところ、それなりに見た目から受けたイメージと近い数値(ゴミ捨て度)が返却されたのも、さすがMicrosoftの技術でした。
お弁当
12:00ごろになるとお弁当が支給されました(ごちそうさまです!)。
「ハッカソン」というとご飯を食べる暇もなくひたすらパソコンに向かってコーディングするイメージがあったのですが、今回はそんなこともなく、チームメンバーや同じ部屋にいる別のチームの方々とも話をする余裕もあり、とても楽しい時間でした。
ちゃんとしたアイデアと設計、そしてAzureがあったからこその余裕だったのではないかと思います。
実装再開
お昼を食べてリフレッシュしたところで実装再開です。
午前中でCustom Vision Serviceである程度画像からゴミの有り・無しが判別できるようになったため、ここからはFunctionsでコードを書いて
- 画像データを取得
- 取得した画像データをCustom Vision ServiceのAPIを使って解析
- 解析結果をCosmos DBに保存
という処理を書いていきます。ここでようやくコーディング開始です。
難しいところはAzure任せのため、処理の内容は各Azureプロダクトを連携させる、とてもシンプルなものの想定でした。
のですが、実際に書いてみると予想外にハマるポイントが多くあり、FunctionsからCustom Vision ServiceのAPIを叩いてもなぜかエラーが返ってくる、FunctionsからCosmosDBのデータが取得できない、などなど、ここから実装終了時間まではハッカソンらしい試行錯誤の時間でした。
結局、チームメンバーの瀬尾さんやnoriさんにいろいろ助けてもらいながらも17:00の実装終了時間までに問題が解決せず、「うまく動いたらこんなデータが出るはず」のサンプルデータをPower BIで可視化した画面で成果発表をする作戦に変更となりました。
ちゃんと動くところまで作れそうだった&作りたかったためこの結果はとても悔しいですが、重要なのは成果発表でチームのアイデアがどこまで区の方々へ伝わるか、ということで気持ちを切り替えて成果発表に向かいます。
なお、問題の技術的な詳細については別の記事かQiitaにでもまとめて投稿しようと思います。このエントリは技術者でない方も読むため割愛です。(しかもまだ解決してないです、、、)
発表する
ここからは参加者全員で集まって、各チームの成果発表です。
発表の後には投票があり、投票があるということは順位が決まり、さらにはニコ生で何千人もの人が見ていることもあり、とても緊張する瞬間でした。
成果発表
ゴミチームは最後の発表でした。
実際の成果発表の様子はニコ生で(有料会員限定ですが)見返せますので、もし興味があれば見てみてください。
こちらの8:23:00 あたりからです。
最初に企画の全体像とそこに至るまでに議論したことを振り返り、実際にハッカソンでやったこと、成果として見せられるものの紹介、という流れでの発表でした。
発表資料は瀬尾さんに(僕がAzureにハマっている間に)作っていただき、僕はそれを他チームの発表の合間のちょっとした時間でチラ見する、というだいぶギリギリな準備だったのですが、作っていただいた資料が上記の流れでとても話しやすかったためなんとか制限時間内におさめつつ話すことができました。瀬尾さんありがとうございました!
タッチ&トライ
発表の後はタッチ&トライの時間で、各チームのデモを見て回っていました。
実装が思ったところまで完了しなかったのは自分のチームだけかと思いきや、実際はどのチームもアイデアと実現できたことにギャップがあったようで、ちょっと安心してしまいました。
とはいえ、どのチームもアイデアを直接聞きながらデモを見ると、どれも挙げられていた課題を効果的に解決できそうなものばかりで、とても見ていて楽しい時間でした。
と同時に、自分たちのゴミチームにどれだけ票が入るか心配で、落ち着いてデモを見て回れなかったのも正直なところでした。
結果発表
さて、タッチ&トライも終わって最後の結果発表、今回は各チームのリーダー(つまり僕も)が投票箱を持って、玉入れのカウント方式で一枚ずつ取り出しながらの集計でした。
ぱっと見とても少なく見えたので「やっぱりダメだったか、、、」という気分だったのですが、いざカウントアップしてみると意外と多い方だったようで、結果は2位。1位のチームとは2, 3枚差でした。おしい!
澤田副区長の総評によると、ゴミチームはプレゼンやアイデアはよかったものの、今回の企画を実現した後のビジョンについての言及が足りなかったそうで、1位のチームにはそれがあったから投票用紙を10枚全部入れたとのこと。10枚全部って、、、それ少しでもばらけて入れてたらゴミチーム1位だったじゃないですか、、、
ご自身でも言っていた通り、副区長はメリハリのある方でした。
まあ言っても結果は変わらないですし、アイデアを評価されたのは確かですし、1位のチームのアイデアが良かったのも事実なので、総じて納得して結果発表終了しました。これでハッカソンは終わり。あとは飲むだけです!
懇親会
懇親会では、2日間同じチームでお世話になった方々の他にも、他のチームのエンジニアの方、渋谷区役所の職員の方、マイクロソフトの方など、いろいろな方とお話させていただくことができ、1時間とは思えないほど良い交流ができました。
特に瀬尾さんが「You MicrosoftのMVPになっちゃいなYo!」としきりにおっしゃっていたので、今年はMVPを目指していろいろ情報収集と発信をしてみる年にしようと思います。なれなかったとしても、それで得た知識はきっとフリーランスの仕事のプラスになるはず!
ちなみにMicrosoft MVPについてはこちら。
マイクロソフトの製品やテクノロジに関しオンライン、オフラインで顕著な活動をされている個人を表彰するプログラム
だそうです。過去1年に遡って成果を見るそうで、現在僕は成果ナシのため、道のりは険しそうです、、、
まとめ
以上、シブヤクハックの2日間の振り返りをしてみました。
ハッカソン、ニコ生中継、Azureでのプロダクト開発などなど、初めてのことだらけで参加する前はとてもドキドキだったのですが、結果として開発やプレゼンなど、それなりに前向きに参加できてとても満足の2日間でした!
特にAzureを使ってちゃんとプロダクトを作ろうとしたのは今回が初めてでしたので、趣味ではなく実際の開発現場でAzureを使うイメージを少しでも持つことができたのはとても大きな成果でした。
ハッカソンの中では時間の関係で実装できなかった部分もありましたので、また落ち着いて実装を進めてみようと思います。(が、1週間放置してたらサブスクリプションの残額が切れてしまいました、、、どうしたものか)