「愛知県大学対抗ハッカソン HackAichi 2020」に参加した

11/7 (土) ~ 11/15 (日) に開催された大学対抗のハッカソンに友人らとの5人チームで参加した.

各大学1チームしか参加出来ないルール(複数チーム応募が来た場合は抽選)だったので,参加できたのは運が良かった.


あと別の大学の参加者に高専時代の1つ上の先輩が居たのでとても驚いた.


アイデアソン(11/7)

まず最初にアイデア出しの集まりがあった.

協賛企業さんから4つの課題が出され,各チームがその中から1つ選んで課題解決のためのアイデアを出すという流れだった.


今回提示された4つの課題

  1. 在宅勤務って難しい?~お母さんお父さんを助けよう~
  2. 世界中の設備を「愛知県」から保守管理したい!
  3. 三密を避けたリモートワークで失われたFACE TO FACE コミュニケーションをAI/IoTを使って復活せよ
  4. 自宅でもファッションを楽しむことができるアイデアを考案せよ



課題選択の時間も課題解決案を出す時間も想像以上に短かったので,僕らのチームは他とアイデアが被らないかつある程度解決案が考えやすそうなファッションの課題を選んだ.

最終的には,気軽にファッション雑誌を作って共有できるサービスを作ろうとなった.



アイデアをまとめた後は各チームのアイデア発表を全体で行い,参加者全員で良かったと思う2つのチームに投票した.

投票結果は15大学中4位だったので「頑張って実装すれば受賞ワンチャンあるな…」と思ってた.




開発期間(11/7~11/14)

アイデアはこの1週間で実装した.


メイン機能(雑誌ページor表紙作成)の班3人とSNS班2人で分かれて開発を進めた.

僕はSNS班のバックエンド担当となった.

ハッカソンの大枠のテーマが “「モノづくり×AI・IoT」で新型コロナウイルスの脅威を解決しよう!”だったので,AIとなるとメイン機能の言語は python 確定となり,Webアプリケーションフレームワークもそれに合わせてDjangoになった.



11/8に将棋大会スタッフのバイトがあったので,Djangoの入門本を買って実装に着手したのは11/9 からとなった.



実装の流れ(自分視点)
  1. 入門本に沿ってSNSを作る(本に「簡易SNSを作ろう!」という章があった):11/9~11/10
  2. フロント担当にページを作ってもらう,この間自分はDjangoの勉強しつつメイン機能の動作確認とDB設計:11/11~11/12 
  3. フロント担当が作成した部分のマージ:11/13
  4. メイン機能のマージを行い,ローカル環境で一通り動かしてデモ動画撮影:11/14
  5. AWS EC2 サーバへデプロイ:11/15



ハッカソンなので当然と言えば当然だが,開発の全てがギリギリだった.


最終プレゼン資料を 11/14 (土) の18時までに上げないといけなかったので,それに伴ってデモ動画も上げる必要があり,18時までに一通り動かすところまで到達する必要があった.

実際に動いたのは17時を超えてからで,充電が30%を切った画面開きまくり(タブいっぱいChrome,開発用ターミナル,通話&画面共有Discord)のMacBookAir上でデモ動画を撮った.

動作がカクカクでメイン機能の実行に1分以上かかってたので本当に最低限のデモ動画だったが,自分としては何とか動いて良かったと心から思った.





今 GitHub を見直してみると,金曜日と土曜日(下2段)に多くの草をはやしており,修羅場ってたことが分かる(水曜日と木曜日はサボっているわけではなく,ブランチへのpushでは草が生えない仕様のせい…のはず).

GitHubの
コントリビューション




最終プレゼン等(11/15)

最終プレゼン資料にはとりあえずでSNSサービスにアクセスするためのQRコードを載せてもらい,11/15 (日) の15時30分最終発表開始までにデプロイすれば大丈夫だと考えていた.

甘かった.

「IPアドレスとかAWS感のあるURLだとダサいからドメイン取っとくか~」と言って取得したドメインの紐づけ以前に,本番用DBへの切り替え,ネットワークの設定,そもそものプロジェクトフォルダの置き場,全てにつまずいてきちんとしたデプロイが間に合わなかった.



結局,IPアドレスのままZoomのチャットにURLを送り,メイン機能は動きません状態で公開した.



プレゼンはチームメンバーが良い感じに行ってくれた.

自分は前半のうちはデプロイ作業してをしていて前半の発表をほぼ見てないが,後半の他の発表と遜色のない良い物だった.

課題の定義,解決案の提示,AI使ってるアピール(人物切り抜きやキャプション生成),今後の展望を短い時間の中でスムーズに発表してくれた.


ただ,結果は受賞ならずだった.

やはり審査員はアイデア+実際に動くかの2点を見るため,本番環境でメイン機能が動かなかったのは説得力に欠けていた.

チームみんなごめん.




感想

久しぶりに集中して開発をした気がする.

大学の友人と通話を繋いで開発を行う日が来るとは思ってもみなかった(高専時代はプログラミング同好会に入っていたが大学では将棋部に入っているだけなので).

Discordのメッセージやら通話やらで友人とやり取りをしながら開発をするのはめちゃくちゃ楽しかった.

一人で開発している時間はBanG Dream!の曲をヘビロテしてた.



開発期間1週間となると時間的に余裕がなく,人間的な生活が出来なくなるので突然鼻血が出てきたり足がむくんで小指が謎に痛かったりしたが,無事にイベント終了まで生きていたのでヨシ.



技術的なところでは,WebアプリケーションフレームワークのうちRails と Laravel は触ったことがあったのでこの機会に Django を触ることが出来て良かった.

謎のパッケージ管理?仮想環境構築?システムの pipenv を知ることが出来たのもデカい.

今後修士の研究でも python をぼちぼち触ると思うのでまた機会があればよろしくしたい.





最後に,ハッカソンを運営して下さったJerryWareさんおよび協賛企業さん,そしてハッカソンに誘ってくれたチームメンバーに感謝.


1週間お疲れ様でした.