初ハッカソンに参加！【受賞・ポエム】

# はじめに
この度，[BIPROGY株式会社](https://www.biprogy.com)様主催のハッカソンに参加してきました！本イベントの最後にQiitaへの投稿もOKとして頂けたので，そこでの体験談や感想を書いてみたいと思います．

:::note warn
本記事を投稿するにあたって，BIPROGY株式会社様より以下の注意を頂戴しています．

- 学校名や氏名，アドレス等の個人情報を記載しないこと
- ハッカソンで使用するツールや資料のURLを記載しないこと
- ハッカソンのテーマを記載しないこと

そのため，本ハッカソンの具体的な内容は本記事内ではボカしています．具体的な内容を目的に来られた方はすみません！
:::

ちなみに，私がアサインされたチームは「オーディエンス賞」（参加者による投票で優秀な作品を決定）を頂く事ができました！なので，多少は参考になるのではないかなと思います！

![受賞.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693436/f1db5dc1-697f-f23c-1077-a883400db34e.png)


# 注意事項
先述の通り，記事を書くにあたっていくつかの制限がございますので，以下を目的とされている方には合わないかもしれません……

- どういった経歴や学歴の人が参加するの？
- どんなテーマに取り組むの？
- どういった知識が必要になるの？

一方で，以下のような方にはオススメできるかもしれません！

- ハッカソンに初参加で当日の流れが分からない……
- どういったポイントに注力すれば良いか分からない……
- どういった立ち回りをすれば良いか分からない……


# 参加の経緯
まずは，私が本イベントに参加することになった経緯について紹介したいと思います．

きっかけは，LabBaseでBIPROGY様よりスカウトを頂戴したことです．内容はハッカソンへの招待でした．実は，恥ずかしながら寡聞にもBIPROGY様のことを存じ上げておらず，研究室の先輩に意見を頂戴して参加を決意しました．
研究室の先輩は，BIPROGY様のことを知っておられたのか，良い経験になるんじゃないかと勧めていただきました．

その後，スカウトに承諾させていただき，以降はマイページの案内に従ってエントリー手続きや日程調整をおこない参加が決定しました．


# いざハッカソンへ【Day0】
Day0では「チームビルディング」と「テーマの共有と理解」が主なタスクでした．

どのようなイベントでも同じですが，まずは自己紹介．1分間の自己紹介が多いという印象を持っていますが，本ハッカソンでは3分間の自己紹介のための時間が設けられています．奇を衒う必要はないですが，長めの自己紹介に慣れていない人はどのような自己紹介をするかは考えておくと良いかもしれないですね．

次にDay1で取り組むタスクが発表されます．先にも述べたように内容については言及できませんが，特に事前に準備することは無いです．司会の方が丁寧に進行してくださるため，ハッカソンに初参加の私でも方向性を見失うことなく理解を進めることができました！

最後に，先の内容も踏まえたグループワークがあるのですが，反省がてら注意点を挙げておきたいと思います．

- 議論するポイントを押さえる
- 細かく考えすぎない

我々のチームはDay0のチームディスカッションが他のチームよりも１段２段遅れてしまいました（最終日のメンターさんからのフィードバックでも指摘いただきました……）．いざ振り返ってみると，上記の2点が問題だったのかなと思います．

## 議論するべきポイントを押さえる
BIPROGY様のハッカソンでは，議論すべきポイントを指示いただきながら進めていきます．とはいえ，機械的に進められるものではなく，一定の深堀りは必要です．ここで，私のチームは深掘りをしすぎました（何と1時間オーバー）．
ではどうするのが良かったのか？私の中での答えは「**全体の工程のどの部分を取り組んでいるのかを意識すること**」であると思います．全体の中でこのタスクはどの立ち位置にいるのかを意識できれば，議論すべきポイントにフォーカスすることができます．

## 細かく考えすぎない
先に述べたように，大幅に時間をオーバーした我々のチームですが，その原因として，与えられている情報以外にも目を向けて議論していたという事が挙げられるのかなと思います．Day1のタスクを進める中で判明するのですが，Day0で細かく設定する必要はなく，むしろ**与えられる情報を柔軟に解釈し，論理立てることの方**が重要です．


# ハッカソンのスタート【Day1】
さて，ハッカソン当日です．
Day1では，先ず，Day0で発表されたお題に対してさらに深掘りをおこない，チームの方向性を決定します．また，技術的なサポートに関する説明もこのタイミングでしていただけます．
どういった技術的なサポートがあるのかについては公開できないですが，重要であると感じた点を挙げておきます．

- どんな技術を利用するのかを精査しておく
- 新技術のキャッチアップを可能な限り素早くおこなう
- チームメンバのスキルセットを確認しておく

ちなみに，Day1ではチームの作品とそれに用いる技術をFixできていれば大丈夫です．

## どんな技術を利用するのかを精査しておく
ハッカソンは思っている以上に時間がありません．（表記の時間は長いので，始めはゆっくりできると勘違いしてしまいそうになりますが……）
このような状況では，1から丁寧に理解を進めている時間はありません．そのため，チームの作品に必要な技術スタックを洗い出し，要点を押さえることが必要になります．

## 新技術のキャッチアップを可能な限り素早くおこなう
上記の話にも繋がりますが，とにかく時間がありません．どのような技術があるのかという紹介は，Day1で初めて紹介され，周囲の反応を伺っている感じでは，ほとんどの人が利用した事ないものでした．メンバのキャッチアップの速度で，作品に使用できる技術の幅が広がります．

## チームメンバのスキルセットを確認しておく
Day2にも繋がるのですが，私のチームでは検討していたシステム構成が実現不可能であることが終了の直前に判明しました．最終的に形になったのは良かったのですが，このとき必要であると感じたことは，「メンバのスキルセットを確認しておくこと」でした．

開発を進める中で（普段の開発と同じく）その通りに進むことはまずありません．
そのため，方針を変更する必要が度々発生しますが，チームでどのような技術が利用できるかを把握しておかなければ議論を円滑に進めることができません．チームメンバで1人だけ使える技術でも意味がないですし，かといってチュートリアルをしたことがあるという程度のメンバが多くいても意味がありません……
メンバのスキルセットを確認しておくことで，チームの方向性を素早く決定できます．


# 加速するハッカソン【Day2前半】
いよいよDay2です．
Day2では，Day1の内容を形にしていきます．ただひたすらに手を動かすのみです．

とはいえ，いくつかの重要であると感じたポイントを挙げておきます．

- メンターさん・技術サポートさんを積極的に活用する
- 作品を形にする
- ツールを最大限活用する
- チーム内の理解を確認する

## メンターさん・技術サポートさんを積極的に活用する
**疑問に思ったことは何でも聞く**のが吉です．質問が多いからといって減点されませんし，答えが分からなければ聞いてしまう方が良いです．チーム内で時間をかけて議論した後に，メンターさんに伺うと10分足らずで解決することもあります．**ハッカソンでは時間が何よりも大切**になります．
それに，フルスタック開発に明るい人がいない限りは，議論しても意味が無いことが多い気がします．技術的に実現不可能であることに対してエラー対処をすることもしばしば……
なお，Day2の後半ではこのことにどのチームも気づき始めて，メンターさんや技術サポートさんの取り合いになります．早めに動き出しましょう．

## 作品を形にする
機能をふんだんに盛り込むのも良いかもしれませんが，結果としてモックアップが多くなってしまっているチームも見られました．作品の発表では，どの部分が実装できて，実装できなかったかといった部分をよく聞かれる印象です．
我々のチームは動くものを作ることを目標に進めましたが，結果として最終フィードバックで，その点については良い評価を頂けたので，**動くものを作る**ことを意識するのが良いと思います．
こういった機能があれば良いという話は，今後の展望として述べるので十分だと思います．

## ツールを最大限活用する
これについては当日も案内がありますが，LLMサービスや連絡ツールは最大限活用しましょう．
普段の課題などであればChatGPTにコードを書かせるなど言語道断といった感じですが，ハッカソンは試験やレポートではありません．時間内に仕上げることを目標に，利用できるものは最大限利用しましょう．
ご存知でない方向けに紹介だけしておくと，Github Copilotは学生であれば無料で利用できます．VScodeの拡張機能も併せて使えばコーディングの速度アップが見込めますので，検討されてみてください．

https://education.github.com/pack/offers

また，ハッカソン中に使用する連絡ツールですが，思い立ったら試してみましょう．案内にある使用方法以外の方法で利用しても問題ありません．（常識の範囲内で．）

## チーム内の理解を確認する
Day1でも少し触れましたが，急な方向転換がしばしば発生します．
これは何も技術的な問題に限った話ではなく，作品の意義や目的といった根幹部分にも言えることです．そうなったときに，作品全体の理解や各機能を実装する理由といったことがチーム内で共有できていると，スムーズで正確な議論ができます．


# ハッカソンラストスパート【Day2後半】
Day2の後半では，作品のバグ修正とプレゼン資料作りをおこないました．
バグ修正については特筆すべきこともないので，主にプレゼンについて述べます．

プレゼンで重要だと感じたポイントは以下の通りです．

- 作品の意義 > 作品の魅力
- できたことをアピール

プレゼンは非常に重要です．せっかく良い作品を作成しても，伝わらなければ意味がありません．
ちなみに，我々のチームはプレゼンターを設定し，担当者には発表の1時間半前くらいから専念していただきました．

## 作品の意義 > 作品の魅力
作品の魅力をアピールしたいという気持ちは非常によくわかります．私自身，作り終えた作品をハッカソン終了後に見直す程でした．
ですが，審査員の方々が注目されていたのは「**課題に対する解決策になっているか**」という部分でした．作品の意義がうまく伝わらず，質疑応答で再確認されているチームもありました．
課題に対して「どのような理由 (Why)」で，「どのような解決策が良い (How)」と考え，それを実現するために「どのようなサービスを誰に提案するのか (What / Who)」といった部分を明確に説明するようにしましょう．

とはいえ，作品の魅力を説明してはいけないという訳ではありません．上述のポイントをしっかりと押さえた上で，作品の魅力を伝えましょう，ということです．

## できたことをアピール
2日間という短い期間で実現できることが限られているのは周知の事実です．できなかったことを述べて謙遜するのではなく，できたことを全面にアピールしましょう．
どうしてもできなかったことに言及したい場合は，単に「できなかった」とするのはなく，「どのようにしたら実装できるはず（拡張性）で，どうしてその機能が必要なのか」といったようにプレゼンすると良いかもしれません．


# 最後に
初参加のハッカソンでしたが，「オーディエンス賞」を受けることができ，良いスタートを切れたのではないかと思います．

チームメンバが見ているかは分かりませんが，この場を借りてお礼を．
チームリーダとして頼りなかったと思いますが，皆で良い結果を作り出せたことが良かったです．

末筆ではありますが，どなたかの参考になれば嬉しく思います．
最後に，受賞時のスライドを再掲しておきます．（嬉しかったので）

![受賞.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693436/3e73d4c5-6be5-7499-5dad-843035ec936f.png)