概要
2023技育展決勝進出 ゆめみ賞・WingArc1st賞 受賞作品
今回技育展に内定先の同期と2人チームで参加し、結果企業賞を2つ頂くことが出来ました!
開発経緯
今年に入って地震・台風・豪雨による災害がとても増えており、実際に多くの被害が出ている状況。しかし、多くの人が避難する場所すらよくわかってない状況であり、非常に危険な状態になっています。
そこで「災害を通知し避難をサポートするアプリ、Evacuete」を開発しました。
主な機能
主な機能としては以下のような機能を登載しています。
- 高速軽量避難所map(他社避難所mapはかなり重たい課題が多かった)
- 避難所のAR確認機能
- 地域の地震危険確率可視化
- 災害発生時の避難所通知機能(いざというときlineからすぐに避難所ページを開く)
- windy気象可視化マップ
- pwa化(キャッシュでオフライン使用・高速化対応)
登壇資料:
ブログ記事:
ちなみにこちら技育CAMPマンスリーの方で一回大失敗した作品です,,
技育展予選で多発しましたが、canvaでのプレゼンでフリーズするアクシデントが結構ありました。今後プレゼンする人はお気をつけて、、!
2023技育展とは
技育展とは、サポーターズ様が主催する国内最大規模の学生エンジニア向けピッチコンテストです。
まず各地域ごとのブロック予選があり、そこから勝ち抜いた60チームが決勝に進出。決勝では東京大学でプレゼンをし優勝者には100万円が贈呈される太っ腹なコンテストになります。
※ちなみに去年参加してきたときの感想や作品まとめはこちら
使用技術
- バックエンド:django,python
- フロント:leaflet.js, AR.js
- render
- Github
- LINEmessageAPI(LINEへの災害・避難所通知に使用)
- LINElog inAPI(ログイン周り・lineへの災害通知に用いるLINEID会得の際使用)
- 地震ハザードステーションAPI(地震危険地域見える化機能に使用)
- P2P地震情報API(LINEへの災害・避難所通知に使用)
- Windy.com API(気象予測可視化マップに使用)
- heartrailsAPI (ジオコーディング、フロントでの住所選択に使用)
- 国土地理院API(フロントからの住所選択をバックにもっていき、それを用いた逆ジオコーディングに使用)
- 国土地理院 避難所データ
技術選定理由
主な技術選定理由として、もともとの開発機会がハッカソンだったため開発速度を考慮し以下の選定をしました。
API,オープンデータをよく使用する内容から、データ解析など得意なPythonを選択
バックとフロントを繋げる所で詰まるリスクのないdjango(ハッカソンでは度々ここでトラブる)
そして私たちは学生でありお金が本当になかった、、余裕がない上全体的に継続して使用していきたかったためできるだけ無料のものを使用していました。(賞金頂いたので有料のものも今後は使えるかな、、!)
また、mapに関しては既存の避難所mapがとにかくまあ重いものが多い課題点があったため、この課題を解決するべくなるべく軽くなるようleaflet選定しました。
※ちなみにいくつかmapライブラリ試しましたが、leafletに落ち着いた理由は以下になります。
googlemap等のクラスターマーカーの際、12万5000件のマーカープロットの際とにかく重くなってしまいました。
勿論クラスターマーカーのzoom倍率による集約設定など改善を重ねることでなんぼかましになる可能性もあるんですが、以下の点から無理してgooglemap等を使わずleafletを使用する方向にしました。
比較的カスタマイズしやすい
Leafletは比較的軽量なライブラリであり、必要な機能に焦点を当てて最適化されている
LeafletではMarkerClusterプラグインを使ってマーカーを効果的にクラスタリングできるが、googlemapだと設定や最適化が適切でないとパフォーマンスが著しく低下する(この辺適切にしきれない場合が面倒)
また、実際プロットした際かなり表示速度に差があったので以下の利点もありそうでした。
Leafletはビューポート外のマーカーをレンダリングしない最適化してるぽい
特に詰まった点
LINElog inAPI周りで発生したcallbackURLエラー
RailwayなどのサーバーではdeployURLはhttpsなのに、callbackURLはhttpにしないといけないということがどこの情報にも乗っておらず、かなりマジでハマりました。
現実的に使用できる且つ迅速に会得できる災害情報APIを見つけるのに苦労した
こういった災害情報APIは企業向けのものが多く、国が出しているプッシュ型APIがいい例だがとんでもなく金額が高く学生が手を出しにくい現状がありました。
- 気象庁XML(定時PULL)随時のバッチ処理(バッチ処理だと即時性がない)
- 気象庁push型(まあ高い)
- 強震モニタextension json送信(なぜか会得出来ない+json送信でラグがある)
概要Chrome拡張機能「強震モニタ」からPythonのWebサーバーにJSONをPOST受け取ったJSONを料理してD…
などなど。
最終的には「websocket通信が可能で即時性があること・お金の心配がなく継続的に運用可能」という点からP2P地震情報APIを使用するに至りました。
※Project DM(Disaster Mitigation)-Data Send Serviceも無料ではないが低価格で安心な情報を会得できるみたいなので、費用に余裕が出た上で継続運用していける場合はこちらの使用を検討してもよさそうだと考えています。
今後の展望
本当は決勝までに上記の展望部分かなり進めていきたかったのですが、以下のことからなかなか進めることが出来ませんでした、、。
開発メンバー二人とも働いており仕事が忙しかった
家庭の事情もバタバタ
そしてまさかのコロナ感染(後遺症引きずり)
なのでこの今後の展望は大会が終わった後でもどんどん着手していきたいと考えています!!
(より利便性を高めるために、webアプリpwaと同時にモバイルアプリも出すかな、、!)
来年から社会人であり人生最後の技育展出場。全てが本当にいい経験でした。
今回開催して頂いたサポーターズ様とスポンサー企業の皆様、賞をくださったゆめみ様・WingArc1st様、そして最高のチームメンバーに心からの感謝です!!