スキマノート

AIメーカーなどのwebサービスを作っています。ここでは気になった技術、話題などをまとめたり、雑記を書いたりします。

NASAの宇宙ハッカソンに参加してきました!

f:id:no2z1:20181023000827j:plain

こんにちは、2z(Twitter: @2zn01 )です。

2018年10月20日~21日の週末の2日間でNASAの「Space Apps Challenge」に参加してきました!

「Space Apps Challenge」とは

Space Apps Challengeは、米国航空宇宙局(NASA)や、宇宙航空研究開発機構(JAXA)などが公開している宇宙・地球環境・衛星関連のデータを使ったアプリを開発するハッカソンイベントである。世界各国の複数の都市で同時に開催されている。

Wikipedia Space Apps Challenge - Wikipedia より

作ったもの

ハッカソンで作った3つのwebアプリについては、以下のQiitaの記事にまとめました。

qiita.com

面白いと思ってくれた方はいいね!を頂けると嬉しいです!

ハッカソンでやったこと

ここでは、ハッカソン2日間でやったことを時系列順にざっと振り返ってみます!

< 1日目>

5:30~8:00 開発

週末開発エンジニアの朝は早い。
5:00には起き、趣味の開発をスタート!

8:40~9:35 会場へ

5分の遅刻である。
早く起きすぎて開発に夢中になって遅刻するという失態をおかした。

9:30~ 主旨・テーマ説明

主催者よりハッカソンの主旨、テーマの説明を頂いた。

10:00頃~ チームビルディング

いよいよチームビルディング。

僕は2人のチームとなった。
チーム名はSpace Species、チームモットーは Fight for win!(ださい...)

チームが決まったところで2人でマックに向かう。
朝マックで優雅にキメるはずが、レジの前で10:30を超え、無情にも朝マック終了の合図が響いた。。

とりあえずマックシェイクを飲んで、2人で集合写真をとってNASAのSpace Apps Challengeのページへチームの登録を行った。
そのときの写真がこれである。

f:id:no2z1:20181023001042p:plain

11:00頃~ アイディア検討

事前に目ぼしいテーマ2つを決めていたので、そのアイディアを共有し、すぐにとりかかることに。

  • 【C-2】山火事マップ
  • 【B-1】地球アート作品

2人チームなので、大きく以下の分担で進めることにした。

  • 僕:インフラ構築、システム開発
  • 相方:災害規模の学習データ準備、ロゴ作成、プレゼン資料作成
11:10頃~ 画面イメージ&DB設計

ざっくりと画面イメージを書き、その実現に必要となるDBのテーブルも設計。

11:30頃~ サービス名検討

色々と悩んだ末にサービス名を Disaster Map と Moon Emoji Artとしました。

12:00頃~ ドメイン設定

サービス名をもとにすでに、とっていたドメインのサブドメインを使うことにした。
ドメインの管理画面よりサブドメインが使えるように設定。

12:20頃 ちょまどさん到着

豊橋にちょまどさん来豊!!
前日に新幹線のトラブルがありながらも来て頂けました!

大変な状況の中、ありがとうございました!

12:30頃~ Apacheの設定

既に使っているAWSのインスタンスを使用することにした。
なので、ほとんどApacheのVirtual Hostの設定を追加し、設定を反映。

12:50頃~ SSL証明書の取得

すぐにLet's Encryptを使って取得。

13:00頃~ 中部大学のホンダ先生と中継

山火事のテーマについて中部大学のホンダ先生に相談させて頂き、山火事の位置の推定方法のアイディアをご教授頂きました! すごく良いアイディアを頂いたのですが、ハッカソン内で作り上げるのは難しいと判断し、今後の展開として組み込むことに。

13:20頃~  GitHubでリポジトリを作成

プライベートリポジトリを作成し、とりあえず入れ物を用意

13:30頃~ アプリケーションのテンプレをコミット

これまでで開発する際に必要となるテンプレを用意してるので、とりあえずそれをGitへコミット。

13:20頃~ configの設定変更&アクセス確認

用意したドメイン、アプリケーションパスにあわせて更新が必要な設定ファイルを編集してコミット。
Git経由でサーバへデプロイ。
デプロイ後にアクセスして画面が表示されることを確認。

これでひとまず開発の準備は整った!

13:30頃~ ランチ

ちょうどコンビニでちょまどさんをお見かけし、豊橋カレーうどんを食べて頂くミッションに成功する!

松屋警察のことを聞けたり、プログラミングを始めた頃のお話も聞けました!

同じ文系出身のエンジニアということもあり、共感することばっかでした!

14:30頃~ ちょまどさんの講演

ハッカソンに使えるMicrosoft Azureのサービスを紹介頂きました!
その中でも特に Cognitive Servicesは使える箇所が多そう!

15:00頃~ Moon Emoji Artの実装

以下の記事を参考に実装。

qiita.com

フロントエンドはPHP、バックエンドはPythonで実装し、連携するカタチへ。

  • 画像アップロード
  • PHPで画像をうけ、Pythonに投げかける
  • 画像を月の絵文字に置き換える
  • 月の絵文字に置き換えたものを結果として表示する
  • html2canvasを使って画像化
  • 画像をダウンロード
17:00頃 別チームからの開発依頼

Tweet Rocketerのチームから開発の相談がきて、手伝うことに!
この時点でハッカソン中に3つのwebアプリを作ることに、、、本当にできるんか、これ、、となる。

18:00~ 中間発表

Moon Emoji Artは実装もプレゼン資料もひとまず出来上がったので、デモも含めて一通り発表!

18:30~ Disaster Map、Tweet Rocketerの実装

実装は残り2つで後半戦へさしかかる。
幸いなことに、Disaster Map、Tweet Rocketerはいずれも地図を使ったサービスだったため、両方に使える共通箇所から実装を進めていきました!

20:00 1日目終了

< 2日目>

3:00~8:00 開発

2日目とて週末開発エンジニアの朝は早い。
前日は23:00頃に寝て3:00には起き、開発をスタート!

朝早く開発したおかげで、Disaster MapとTweet Rocketerの共通部分はだいたい出来上がった!

8:30頃 会場到着

遅刻せずに来れたので、今度こそ優雅に朝マックをキメた!

9:00 2日目スタート
9:00~10:30 Tweet Rocketerの実装

Twitterからの"launch"をキーワードにツイートを収集する機能を実装。

10:30頃~11:00頃 ちょまどさんからレクチャーを受ける

MicrosoftのAzureサービスについて、ちょまどさんからレクチャーを頂きました!

Custom Vision Serviceには物体検出機能がついたとのことで、他のプラットフォームよりも一歩進んでいる印象あり。
その他にもText Analytics APIによるテキスト分析など、サービスに組み込めるものが盛りだくさん!

11:00頃~13:00頃 Tweet Rocketerの実装

収集したツイートをヒートマップとして地図に描画する機能を実装。
実装を一通り完了し、無事にチームへ引き渡す

13:00頃~14:00頃

発表は17:00からのため、あと4時間しかない。。
自分たちの本命である、Disaster Map(災害マップ)の実装にいよいよとりかかる。

まずは地図の作成機能を実装。

14:00頃~15:30頃

以下の機能を実装

  • 画像のアップロード機能
  • 画像のExif情報から位置情報を取得する機能
  • 画像からの被害度の推定(ディープラーニングを使った画像分類により被害度を数値化)
16:00頃~16:30頃

被害度をもとにしたヒートマップの可視化を実装も終え、なんとか発表の30分前に完成。。

16:30頃~17:00

プレゼンの発表をどうやるかを相談。
練習する時間はないので、発表はぶっつけ本番とし、流れだけ2人でどう発表するかをまとめた。

17:00~18:00 各チームの発表

各チームとも2日間で作り上げた成果を発表!
僕は発表に精一杯だったので、各チームの成果物についてはぜひ、からあげ先生の記事をご覧ください!

karaage.hatenadiary.jp

そして、審査へ

18:00~19:00 審査結果発表!

僕らのチームは2つの賞を受賞し、NASAのグローバル審査に出させて頂くことになった!

ウェブ魚拓の創業者であり、日本一の握力160kgの持ち主である、新沼さんの賞も頂くことができたのですごく嬉しかった!

こんなすごい方々が豊橋に来て頂けるとは!

f:id:no2z1:20181023000827j:plain

19:00~20:00 懇親会

何とか無事に成果発表を終え、やっと一息をつけた。
発表を見に来てくれていた、からあげ先生ともそこでようやくゆっくりと話すことができた。

ちなみに僕が開発を手伝ったチーム Tweet Rocketer は、ちょまどさん賞を受賞してすごく羨ましかったので、「僕も手伝ったんですよー」と話していたら、なんと ちょまどさんから絵を描いた色紙を頂けることに!!

f:id:no2z1:20181026023945j:plain

それまで、ハッカソン疲れを感じていたのが一気に吹き飛びました!

そして、新沼さんにもウェブ魚拓の話も少しだけさせて頂き、GCPのCloud FunctionsでPuppeteerが使えるという有益な情報も頂きました!

懇親会の様子はこんな感じでした!

20:00 解散

会場の片づけをして解散。
2日間のハッカソンを何とか無事に終了!

NASAのグローバル審査編

to be continued...