Web開発歴4か月の私がハッカソンの海に飛び込んだ時の話

# はじめに
こんにちは！エンジニア志望の学生です！

今日は人生初めてのハッカソンとして、【技育CAMP2024】ハッカソンVol.18に参加した時のことを書きたいと思います！

「初心者だけどハッカソンに参加してもいいの？」「チームの力になれるかわからない」というような悩みを持っている方の支えになればと思います！

https://talent.supporterz.jp/events/b3e7b1cb-3c95-4d84-a910-3cee34c43223/

# 参加時の私の経歴
初めに参加時の私の経歴を以下に紹介します。

**まずは初ハッカソンどうしようってなってる方にこれを見て安心してほしいです！！**

正直どう見ても圧倒的な初心者ですが、なんだかんだチームに大きく貢献できたかなと思います。

ハッカソン経験：なし
インターン等実務経験：なし
プログラミング経験：高専の授業でCとpythonを少々(ほとんど忘れてしまった）
Web開発経験：HTML/CSS(4か月)、TypeScript(1か月)、React(2週間)
                    

# 技育CAMPハッカソンについて
株式会社サポーターズが年間およそ20回開催しているハッカソンです。

「初心者大歓迎」を特徴としており、毎回7割の方ハッカソン初参加となっています。

チーム、個人での応募どちらでも可能で、個人での応募者は即席チームが組まれます。

今回私は個人で応募し、**即席チーム**として活動しました！

# 動機
#### チーム開発をしてみたかった
web開発についてある程度学んだタイミングで、Github等のチーム開発に関する知識や経験が必要だ！と気づきました。
#### 他の学生エンジニアのレベルを知りたかった
学校が高専ということもあり、周りが「死ぬほど強い情報系の学生」か、「情報系には全く興味ない機械系の学生」の両極端に分かれており、自分と一般的な学生エンジニアとの差が分かりにくい環境にいました。
#### 単純なハッカソンへの興味
チームで何かを作り、それを発表し合うというシステムそのものに面白さを感じ、いつか参加したいなあという思いを募らせていました！

# 作ったもの
「生成AI時代、コードの読解力とコメントを付けるが必要になるだろう」、という背景からコードへのコメントを評価するwebアプリ**CoMentōr**を作成しました。

「コメント」と"指導者"を意味する「メントール」を掛けています。いい名前ですね。

https://x.com/geek_pjt/status/1865658472236494877

ローカルでの動作確認後、デプロイしたら「わあバグだらけ！」というところで今回は終了しました。一応？形になるものを作るところまではできたので良かったです。

今度時間があったらデプロイ後も正常に使えるようにしたいですね！

一応下にリンクを貼っておきます！まだまだバグだらけですが^^

https://code-comment-app-1ii7.vercel.app/

# 私がやったこと
バックエンドの実装を担当し、主に以下の機能を作成しました。正直経歴の割に頑張ったなと思っています！
- プロトタイプの作成
- openAIAPI周りのの整備
- 分析、採点、フィードバック機能
- ヒント生成機能
- 結果データの保存、取得
- 問題文取得

# やってよかったこと～ハッカソン開始以前～
ハッカソンを終えてみて、初心者がハッカソンで活躍するために準備するべきことは、**APIでもフレームワークでもいいから何か一つの技術を自信もって扱えるようにしておく**ことだなと思いました。私の場合はopenAIAPI周りの実装でした。

開始前にも運営の方から、「初心者歓迎とはいえ、完全な初心者はさすがに、、」というような旨のお言葉を頂いたため、色々準備しておいてよかったです。

以下にハッカソンまでに具体的に取り組んだことを書きます。

### TypeScriptの勉強
定番？のサバイバルTypeScriptを粗方読み、ある程度知識を付けてから挑みました

https://typescriptbook.jp/

### Next.jsを使った個人開発
ハッカソン開始2週間ほど前に、生成AIを使った面接練習アプリを作りたくなり、開発に勤しんでいました。ハッカソン対策で始めたというわけではありませんでしたが、結果大きな自信になりました。

### Qiitaへの毎日投稿
こちらもハッカソン対策というわけではなく、何となく自信を付けたいからという理由で始めましたが、思いのほか効果があり、学んだことの記憶への定着が段違いになりました。**なんと今日でちょうど1か月です！**

正直結構きついのであんまりおすすめはしないです。

# やってよかったこと～ハッカソン期間編～
即席チームということもあり、様々な困難がありましたが、以下の部分を徹底することで、結果良い経験になったと思います。
### 恥を捨てて聞く
どうしても人にものを聞くときは恥ずかしさが先行してしまうことが多いかと思います。特に全員が初対面の即席チームではお互いの技術力もわからず、初めは「こんなことも知らないのか」と思われたらどうしようという不安もありました。

幸いチームメイト全員が暖かく、すぐにわからない部分を遠慮なく聞ける雰囲気が出来ていたのが本当にありがたかったです。

Gitについてはほとんど知識がなかったため、前日チームメンバーに無理を承知で講座を開いてもらいました。結果当日、Gitで事故ることはほとんどなかったです。

### なるべくチームで連絡を取り合う
キックオフから開始までの1週間の間、2日に1回ほどの頻度で打ち合わせをできたのが何よりよかったです。

当日も開発中はzoomを繋ぎ続け、出会って1週間とは思えないほどワイワイ楽しく開発することが出来ました。

### 自分でプロトタイプを作ってみる
事前開発期間中に製品のプロトタイプを一人で作成し、デプロイまで行いました。結果的に自分が慣れた技術スタックでの開発が始まり、当日すごくやりやすかったです。

（技術力の高いチームメンバーの存在に救われました）

こちらについては自分の案が採用されなかったら活きなかったため、多少結果論にはなります。


# 反省
### スケジュールの見積もりの甘さ
元々徹夜覚悟での参加でしたが、各々のタスクの完了が思いのほか早く、一日目終了時にはほとんどの機能が完成し、夜の1時程に解散しました。

そして二日目、蓋を開けてみれば細かいバグやUXの改善点、デプロイなどといった課題が多く見つかり、結局最後の2時間は焦りっぱなしでした。もう少し高い粒度でタスクを組めたらよかったなと思います。

### チームメンバーへの配慮
即席チームならではの反省点ですが、初回の顔合わせ時に参加できなかった一人と連絡がつかなくなりました。結果彼のみ失格処分という形にはなりましたが、もう少しこちらも上手くやれたかなという思いはあります。

# まとめ
以上になります！

「この人半端なく強いな...」っていう人がいたり、「この技術おもしろ！」と思わされたり、個人的にはかなりいい経験になりました。チームメンバーの方々には感謝しかありません。

これは運営の方々の言葉ですが「土日を使ってハッカソンに参加しているだけで十分偉い」です！

迷っている人がいたら是非参加して欲しいなと思います！