見出し画像

【技育CAMP】マンスリーハッカソン vol.12に参加したら受賞した話

0.はじめに

先日、基本情報技術者試験の合格体験記を投稿しましたが、初投稿にも関わらずスキが10を超えて驚いています。記事を読んでくださり、ありがとうございます。

本題に移りますが、私は先日技育CAMPが主催しているマンスリーハッカソンに参加してきました!そもそも、【技育CAMP】マンスリーハッカソンとは何ぞや?と思う人もいるかもしれません。株式会社サポーターズが主催している、技育プロジェクトの中の技育CAMPの活動の1つで、年に約20回オンラインやオフラインの形式で開催されています。今回参加したマンスリーハッカソンハッカソンはオフライン形式で行われました。

この記事では、私が【技育CAMP】マンスリーハッカソンvol.12に参加した感想や開発期間で何をしていたのかを詳細に伝えていけたらと思います。


1.参加の動機

私は情報系の学科に通っている大学2年生です。しかし、これまで講義以外で開発を行った経験がなく、このままではまずいと焦りを感じこのハッカソンに飛び込みました。ざっくりとWebアプリケーションを作りたい、バックエンドをやりたい、チーム開発がしたいと思っており、技育CAMPのマンスリーハッカソンでなら仮に失敗してもよい経験ができるのではないかと感じていたからです。

2.事前開発期間(11/24~12/1)

11/24(金) キックオフ

いよいよ、キックオフです。ここからハッカソンが始まるということで、既に緊張していました。キックオフではハッカソンにおける注意事項や簡単なアンケートを行い終了しました。アンケートではハッカソンに個人で参加、チームを組んで参加、即席チームを組んで参加するという3つの形態があり、私は即席希望で参加しました。(ハッカソンに誘えるような友達もいないので…泣)

11/25,26(土日) チーム発表&初回ミーティング

11/25(土)
キックオフの翌日にチーム名簿が公開され、Slack上で簡単な自己紹介を行い、今後使う会議ツール(Discordに決定)、初回のミーティングの日程を決定しました。
11/26(日)
初回ミーティングはチーム発表の翌日に行いました。
メンバーは初参加が3人、2回目が1人、3回目が1人と経験者がいてくれたため、その2人が中心にまとめてくれました。メンバー全員の技術スタックを考慮し、Webアプリの開発をすることに決定し、目標は「メンバーみんなで楽しく面白うWebアプリを作る!(賞を狙う)」となりました。

そして、ここからが難しいプロダクトの決定です…
過去のハッカソンを見ても最近のトレンドはChatGPTやずんだもんを取り入れた開発が行われており、なんとなくGPTの開発になるかな~と思っていました。プロダクトを決定する前に、メンバーが今どんなことで悩んでいるかという話題になり、自分に合う映画・ドラマを見つけたいという悩みが出ました。その中でもミステリーの話題が少し盛り上がり、ドラマに疎い私は意見やアイデアを出すことができず、黙り込んでしまいました…(緊張&コミュ障もある)
さらにこの話題の深堀りは進んでいき、映画やアニメのランキングサイトだとどうしても人気なものしか出てこないよね、ニッチな作品も知りたいよねという意見が出ました。他にもアイデアを出しあっていたのですが、プロダクトのテーマは上の話題に決定しました。アンケートに答えて、自分に合う作品から学習してユーザーの個性を決める、というプロダクトの仕様も決定しました。私は聞いただけだと「そんなものを1週間で完成させられるのか?」と正直思っていました。

初回のミーティングは長時間かけて行い、私はバイトがあったため途中で退出しました。帰宅したらDiscordに連絡が入っていて、最初のタスク振りが決まっていました。

初回ミーティングのタスク割り振り

個性を決める機械学習モデルの作成…???
それを私が担当…???
できる気がしない、終わらなくて責められるかもしれない、このまま何もできずにハッカソンが終わってしまうかもしれない…と初回ミーティングで早くも絶望感を抱いていました。

11/27~12/1(月~金) 事前開発

11/27(月)
まずは当たって砕けろ!ということで何も行動しないままにはいきません。ですが、機械学習のモデルなんて作ったことがないので、まずはどんな手法で個性を決定することができるかを調べていきました。それらしい手法を見つけることはできましたが、モデルの作成方法も分からず、進捗確認の時間になってしまいました。しかし、同じタスクに割り当てられたメンバーが自分と近いユーザーを探すライブラリを持ってきて、サンプルモデルもあると聞き、驚愕しました。すごすぎる…
モデルも決定し、1回目のタスク作業は終わりました。

11/28(火)
とりあえず他の方のタスクが分からないと次の作業に移ることも出来ないため、この日は特に作業はしませんでした。しかし、進捗確認の時間に別タスクをこなしているメンバーは来ず…
みなさん結構忙しいみたいです。他のタスクを進めるわけにもいかないので、この日はかなり早くミーティングを切り上げました。

11/29(水)
この日はこれまでの進捗確認に参加できなかった人も来てくれたため、昨日より全体の現状の把握をすることができました。最初のタスク振りも終わりが見えたため、2回目のタスク振りをしました。

2回目のタスク割り振り

私のタスクはアンケート結果をデータベースに保存するというものに決まりました。今回は1人での作業になるため、前回よりも気を引き締めて作業に取り組みました。しかし、何をどうすればいいのかが分からず、メンバーから「GETやPOSTのメソッド使えばいいと思うよ」というヒントをいただき、タスクに取り掛かることができました。

11/30(木)
講義の合間に参考資料を基にコードを書いていき、何とか自力でアンケート結果をデータベースに保存することができました。バックエンドのコードを書くのは初めてでGETとPOSTについても理解していなかったため、結構悩みました…
タスクを振られた翌日に完了したため、進捗確認は気持ちよく参加出来ました(笑)

12/1(金)
月曜日以降連絡が取れていないメンバーが1人いて明日が少し不安に…
明日からの本番に備えて進捗確認のミーティングも早めに終了しました。
私は早起きできるかが心配です。

事前開発期間最終ミーティング

3.1日目(12/2)

7:50に起床!早起きえらい!優勝!!!
チームでの集合時間は10:00だったため、それまでゆっくり過ごしていました(おい!?)
10:00から1度チームで進捗確認とプロダクトに欲しい機能をまとめていました。メンバー1人と連絡が取れず…
私はまずユーザーページのバックエンドを行いました。
欲しい機能はいくつかありましたが、まずはログインしているアカウントのユーザー名を表示させることを目標に。
ユーザー名を表示させたら、次にアンケート結果の表示に移りました。
ユーザーページ上で自分のアンケート結果を表示させたいのですが、アンケート結果はマッチングの近傍探索の仕様上、数値で格納しています。そのため、数値からHTMLのアンケートの質問とその回答を引っ張ってくる必要がありました。そのために必要なのが、BeautifulSoup4というライブラリです。参考資料をいくつか見つけてどのようにHTMLのデータを取得するかということは分かったのですが、またもやライブラリのインストールでエラーが…😭
エラーメッセージを調べても解決策は分からず、色々試していたら何とかインストールすることができました。原因は何だったんだ…
まあでも…インストールできたのならヨシ!
ということでアンケート結果の表示はライブラリのインストール以外はそれほど苦戦せず、終わらせることができました。
アンケート結果の表示ができるようになったときはすでに夜でした…

この辺りのタイミングでプロダクト名の話し合いが始まりました。とりあえず、それっぽい名前を挙げていくかという感じで案を出し合いました。

プロダクト名のアイデアを出し合う

最終的にコミック+コネクト⇒comict(コミクト)という名前に決まりました。初回ミーティングの時からどうするか全員で悩んでいましたが、いい名前が決まったので一安心です。ここから開発も終盤に入っていきます。
最後に、ユーザーページ上で好きな作品のリストを入力し、Firebaseに保存・ページ上で表示させるという機能を実装していきましたが、これはかなり苦戦しました…GETとPOSTの理解がまだできていないですね…最終的に2:40頃にこのバックのタスクが終了しました。これでバックエンドの大きいタスクは終了し、これから徹夜でフロントをやることも覚悟していましたが、明日は発表もあるのでそれに備えて寝ることにしました。

最終日に備えて残りのタスクの整理

2日目の集合時間は朝の9:00、起きれるかな……(就寝3:30)

4.2日目(12/3)

8:40に起床!えらい!優勝!!!
集合時間の9:00にもギリギリ間に合いました。しかし、私含めて2人しか集まっておらず、時間もないので2人でコードオフ&発表までにやるタスクを再確認しました。
私はまずアンケートの質問のブラッシュアップを行いました。2日目の朝会までには全員が集まって、それぞれの作業をしていました。自分もアンケートのブラッシュアップが終わり、ユーザーページのデザインに移りました。
最後の追い込みをしていたところであることに気づきました。

「あれ…?〇〇さんがいない…?」
まさかのメンバー1人との連絡が途絶えてしまいました。😱
そして、私もデザインが思うようにいかなく、CSS何もわからん…という状態になってしまい、「これフロント間に合うのか…」とピンチになっていました。

そんなこんなでバックエンドの修正やフロントエンドの仕上げを行っていたら、コードオフぎりぎりになってしまっていました。一度チームでバックとフロントの作業を切り上げたとき、私はプレゼン資料の作成に先に取り掛かって、2人が合流したらデザイン案を話し合いました。プレゼン資料を作成していたら完成したのが成果発表の開始15分前、15:45でした。「まずい!時間がない!」と焦って練習を始めました。3人で発表することに決定し、2分以内に収める見積もりは立ったものの、実際にzoomへの投影までできずに成果発表の時間が来てしまいました…

5.発表会!そして結果発表…

私たちのチーム、αの発表は9番目、全部で約30チームあるので早い方であり、非常に緊張しています。
出番が回ってくるまで、もちろん他チームの発表を見ていましたがどれもレベルが高く、これ賞取るの無理じゃない?と不安になり、さらに緊張してきました。
そして、自チーム「α」の出番が回ってきました。
メンバーがzoomでの画面共有がうまくいかず、一応私が共有してもいいように準備はしていたため、すぐにカバーすることができました。(1回はzoomでの投影をしておくべきでしたね。準備不足でした。)
声が震えながらの発表になってしまいましたが、何とか発表を終えました。
(自分の担当が終わったら安心してしまい、スライド遷移を忘れていました…)
発表を終えて自チームのシートを見ると、

フィードバックシート

暖かいコメントが多く、感動して涙が出そうになりました。
まだ終わっていないけど、この1週間頑張ってきてよかったと思えた瞬間でした。
その後も、発表を聞いて成果発表が終わったらアンケートの回答&結果発表に移っていきました。
成果発表は優秀賞→最優秀賞→企業賞(2つ)の順に発表されていきました。
優秀賞と最優秀賞はどちらもすごく完成度が高く、納得のいく受賞作品でした。
そして、企業賞の発表に移ります。株式会社マイクロアド様の企業賞は…

…え?…えええええええええええええええ!?!?!?!?
まさかの株式会社マイクロアド様から企業賞をいただきました…
素晴らしい作品が多くて受賞は諦めていたので、ほんとにまさかです。
即席チームでこれだけのものを作れるのはすごい、おすすめの漫画やユーザーを表示させるのは面白いなどのフィードバックまでいただきました。

チーム名を呼ばれた時の反応

6.初のハッカソンを終えて

今回のハッカソンで多くの学びを得ることができました。
初のチーム開発でトラブルも多かったですが、マイクロアド様より企業賞をいただくという素晴らしい結果を残すことができました。
しかし、反省点も多く最後の最後までバタバタしてしまいました。特に反省したい点はコミュニケーション不足です。最初から最後までうまくコミュニケーションを取ることができなかったです。私がずっと受け身で、最後の発表までグダグダになってしまいました。
そして、期間中に連絡が取れなかったメンバー2人は…
無事連絡を取ることができました!急にいなくなってしまい、とにかく心配だったので確認が取れてよかったです。

私は開発初心者で右も左も分からない状況でしたが、この短期間で成長できたと思っています。私が行った作業を挙げると、
バックエンド
〇アンケート結果をデータベースに保存する
〇アンケート結果をデータベースから取り出し、質問文とその人の回答を取得して表示する
〇ユーザーページに現在ログインしているユーザーのユーザー名を表示
〇好きな作品を入力し、その作品タイトルをデータベースに保存
フロントエンド
〇ユーザーページのデザイン(ク〇デザイン)
その他
〇アンケートのブラッシュアップ
〇スライド作成(分担)
〇成果発表時のスライド共有
となります。他のメンバーと比べてあまり重い作業ではありませんが、バックエンドの機能の実装が難しくかなり苦労しました。

7.最後に

まさか当初の目標であった賞を取ることが達成できるとは思いもしなかったです。自分が貢献できた部分はあまり多くないけど、これを自信にしていきたいです。また、チーム開発がすっごく大変だったけどそれ以上に楽しかったのでこれからは個人でも色々開発していきたいと思います。
また、今回即席で出会えたチームメンバーの方、サポーターズの運営様、メンターさん、スポンサー企業の審査員の皆様には心より感謝申し上げます。

次の舞台はハッカソン受賞者だけが参加できるリアルイベント、
技育CAMPアドバンスに参加します!
憧れであったこのイベントに自分が参加できることになり、感無量です。
これからまたチームメンバーと話し合ってcomict(コミクト)のブラッシュアップをしていき、技育CAMPアドバンスでも受賞が出来るレベルまで持っていきたいと考えています!
12月にサポーターズのオフィスが移転したらしく、虎ノ門ヒルズタワーで開発ができるみたいです…めちゃくちゃ楽しみ…👀

PS.ハッカソンが終わって、余韻に浸っているときにインスタを確認したら、友人が彼女と何やら綺麗な場所へ行ってる様子を投稿していました。一気に悲しい気分になりました。僕も彼女がほしいです。

この記事が気に入ったらサポートをしてみませんか?