こんにちは、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の記事にまとめました。
面白いと思ってくれた方はいいね!を頂けると嬉しいです!
ハッカソンでやったこと
ここでは、ハッカソン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のページへチームの登録を行った。
そのときの写真がこれである。
11:00頃~ アイディア検討
事前に目ぼしいテーマ2つを決めていたので、そのアイディアを共有し、すぐにとりかかることに。
- 【C-2】山火事マップ
- 【B-1】地球アート作品
2人チームなので、大きく以下の分担で進めることにした。
- 僕:インフラ構築、システム開発
- 相方:災害規模の学習データ準備、ロゴ作成、プレゼン資料作成
11:10頃~ 画面イメージ&DB設計
ざっくりと画面イメージを書き、その実現に必要となるDBのテーブルも設計。
11:30頃~ サービス名検討
色々と悩んだ末にサービス名を Disaster Map と Moon Emoji Artとしました。
12:00頃~ ドメイン設定
サービス名をもとにすでに、とっていたドメインのサブドメインを使うことにした。
ドメインの管理画面よりサブドメインが使えるように設定。
12:20頃 ちょまどさん到着
豊橋にちょまどさん来豊!!
前日に新幹線のトラブルがありながらも来て頂けました!
#spaceapps
— ちょまどMadoka🇺🇸🇯🇵帰国した (@chomado) 2018年10月19日
明日は豊橋会場なんだけど
名古屋に向かう新幹線が
人身事故で完全に止まってしまった…
前日入りするつもりだったけど、
当日入りになるかもしれないhttps://t.co/1T6Ju4rVpI
大変な状況の中、ありがとうございました!
12:30頃~ Apacheの設定
既に使っているAWSのインスタンスを使用することにした。
なので、ほとんどApacheのVirtual Hostの設定を追加し、設定を反映。
12:50頃~ SSL証明書の取得
すぐにLet's Encryptを使って取得。
13:00頃~ 中部大学のホンダ先生と中継
NASA主催の宇宙ハッカソン #SpaceApps の
— ちょまどMadoka🇺🇸🇯🇵帰国した (@chomado) 2018年10月20日
愛知県豊橋会場!
中部大学の GIS (地理情報システム)に詳しいホンダ先生と中継なうです☺️
各チーム、進捗や悩みを先生に相談しています pic.twitter.com/wYeKWSEnTv
山火事のテーマについて中部大学のホンダ先生に相談させて頂き、山火事の位置の推定方法のアイディアをご教授頂きました! すごく良いアイディアを頂いたのですが、ハッカソン内で作り上げるのは難しいと判断し、今後の展開として組み込むことに。
13:20頃~ GitHubでリポジトリを作成
プライベートリポジトリを作成し、とりあえず入れ物を用意
13:30頃~ アプリケーションのテンプレをコミット
これまでで開発する際に必要となるテンプレを用意してるので、とりあえずそれをGitへコミット。
13:20頃~ configの設定変更&アクセス確認
用意したドメイン、アプリケーションパスにあわせて更新が必要な設定ファイルを編集してコミット。
Git経由でサーバへデプロイ。
デプロイ後にアクセスして画面が表示されることを確認。
これでひとまず開発の準備は整った!
13:30頃~ ランチ
ちょうどコンビニでちょまどさんをお見かけし、豊橋カレーうどんを食べて頂くミッションに成功する!
松屋警察のことを聞けたり、プログラミングを始めた頃のお話も聞けました!
本物の松屋警察を間近で見せて頂きました!
— 2z@AIメーカー開発者 (@2zn01) 2018年10月21日
特に松屋の学習データはめっちゃ綺麗なものばかり、かつ、ご自分で集められたデータは100以上あるとのことで凄すぎた。。
自分が作ったまがい物とは比べ物にならない程の、愛あるが故の精度。
そして、Azureすごい!https://t.co/w5l1ltXDQZ https://t.co/Ww85k2NDpP
同じ文系出身のエンジニアということもあり、共感することばっかでした!
14:30頃~ ちょまどさんの講演
NASA/JAXA のオープンデータを使用したアプリを開発する #SpaceApps ハッカソンの
— ちょまどMadoka🇺🇸🇯🇵帰国した (@chomado) 2018年10月21日
参加者の方々に
Microsoft Azure と Microsoft Cognitive Services について紹介しています☺️
反応的に画像認識のサービス https://t.co/bNnI6YN6yd が人気☺️
(写真撮っていただきありがとうございます!) pic.twitter.com/zC1wEUHprt
ハッカソンに使えるMicrosoft Azureのサービスを紹介頂きました!
その中でも特に Cognitive Servicesは使える箇所が多そう!
15:00頃~ Moon Emoji Artの実装
以下の記事を参考に実装。
フロントエンドは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サービスについて、ちょまどさんからレクチャーを頂きました!
ちょまど氏レクチャー中#SpaceApps #SpaceAppsToyohashi #ええじゃないか宇宙データ #トラビレ #trialvillage pic.twitter.com/njDSCPAtXV
— トライアルビレッジ (@TrialVillage) 2018年10月21日
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日間で作り上げた成果を発表!
僕は発表に精一杯だったので、各チームの成果物についてはぜひ、からあげ先生の記事をご覧ください!
そして、審査へ
握力日本一の男@hiroki_niinuma と骨年齢75歳@chomado による審査が始まった!#SpaaceAppsToyohashi#ええじゃないか宇宙データ pic.twitter.com/5yK2xtt57p
— SpaceAppsToyohashi (@SpaceAppsTyhs) 2018年10月21日
18:00~19:00 審査結果発表!
僕らのチームは2つの賞を受賞し、NASAのグローバル審査に出させて頂くことになった!
2日間の NASA Space Apps Challenge Toyohashiで2つの賞を頂きました!
— 2z@AIメーカー開発者 (@2zn01) 2018年10月21日
なんとNASAのグローバル審査へ出して頂けることに!
ちなみにチームのモットーは「Fight for win!」
超絶ださいww けど、なんとか勝ちました!#spaceapps pic.twitter.com/hA3Wgcds9J
ウェブ魚拓の創業者であり、日本一の握力160kgの持ち主である、新沼さんの賞も頂くことができたのですごく嬉しかった!
#spaceapps 審査員の1人が
— ちょまどMadoka🇺🇸🇯🇵帰国した (@chomado) 2018年10月21日
握力日本一の男だ!
「web魚拓」を作った新沼さん pic.twitter.com/5EOVd4Kpnu
こんなすごい方々が豊橋に来て頂けるとは!
19:00~20:00 懇親会
何とか無事に成果発表を終え、やっと一息をつけた。
発表を見に来てくれていた、からあげ先生ともそこでようやくゆっくりと話すことができた。
ちなみに僕が開発を手伝ったチーム Tweet Rocketer は、ちょまどさん賞を受賞してすごく羨ましかったので、「僕も手伝ったんですよー」と話していたら、なんと ちょまどさんから絵を描いた色紙を頂けることに!!
2日間で3つも作るなんて常人の沙汰ではなかったです。。
— 2z@AIメーカー開発者 (@2zn01) 2018年10月21日
発表の30分前に何とか、とりあえず動くところまでしか持っていけなかったので悔しい。
また、開発ばっか気をとられてる時点でハッカソン参加者としてダメだったと反省。。
でも開発サポートにより、ちょまどさん賞もらえたので、すべて良し!! https://t.co/ho1cWpvGWh
それまで、ハッカソン疲れを感じていたのが一気に吹き飛びました!
そして、新沼さんにもウェブ魚拓の話も少しだけさせて頂き、GCPのCloud FunctionsでPuppeteerが使えるという有益な情報も頂きました!
懇親会の様子はこんな感じでした!
筋肉ファンとして
— ちょまどMadoka🇺🇸🇯🇵帰国した (@chomado) 2018年10月21日
私も同じポーズをしたよ!
💪(*゚▽゚* っ)З きんにく!
(新沼さん、握力160kgらしい。すごすぎる。本職プログラマーで「運動不足だから筋トレするか」でここまで極めるの凄い) pic.twitter.com/DAgodpu7Ce
20:00 解散
会場の片づけをして解散。
2日間のハッカソンを何とか無事に終了!