初めてのハッカソン参加
今回、私は初めて サポーターズ という企業が主催するハッカソンに参加しました。これまでは、Next.jsやReactを使ったWebアプリケーション開発をUdemyの動画で学んでいました。ハンズオン形式で理解を深めることはできましたが、アウトプットをする機会が少なかったため、ハッカソンで実際に手を動かしてみたいと思いました。
ただし、チーム開発の経験がなく、GitHubも基本的な操作(add
、push
、clone
、pull
など)しか使ったことがありませんでした。そのため、初めてのチーム開発と初めてのハッカソンに、とても緊張して臨みました。
初めてのチーム開発
今回のハッカソンでは、個人で申し込み、即席で編成された4人チームで参加しました。チームメンバーのうち2人は過去にハッカソン経験があり、その方々の意見を参考にしながら開発を進める方針を決めました。
初めてのチーム開発でしたが、メンバーは皆とても優しく、すぐに打ち解けることができました。
作成したアプリ
私たちのチームは、Fashonista というアプリを作成しました。このアプリは以下の機能を備えています:
- 今日の天気情報を取得し、その情報をもとに適した服装を提案
- 提案した服装に応じた画像の表示
- NextAuth を用いたログイン機能
- ログインユーザーが過去に調べた服装の履歴を確認可能
このアプリは、天気情報を活用して日々の生活に役立つ提案を行うことを目的にしています。
苦戦したこと
1. GitHubのコンフリクト解決
チーム開発でGitHubを使うのが初めてだったため、コンフリクトが発生した際の対応方法が全く分かりませんでした。最終的には ChatGPT を活用し、何とか解決することができました。
2. 状態管理の混乱
メンバーそれぞれがコンポーネントや状態管理をバラバラの場所で実装したため、リファクタリングに時間がかかりました。
学んだこと
1. 開発前の設計の重要性
開発を始める前に、ある程度の設計をしておく必要性を痛感しました。特に、以下の点をチームで共有することが重要です:
- ステートの管理方法
- コンポーネントや機能の依存関係の整理
Next.jsの場合、最低限 src
ディレクトリの直下に components
フォルダを作成 し、大まかな機能ごとにステート管理を分けるべきです。また、複数の機能で共有するステートがある場合、その管理方法を事前に決めておくとスムーズに進みます。
2. GitHubブランチの運用
今回、ブランチ設計をほとんどせずに進めたため、マージ時に多くのコンフリクトが発生しました。その結果、以下の運用が必要だと感じました:
-
役割ごとにブランチを分ける(例:
frontend
、backend
) - 各役割の中でさらに機能ごとのブランチを作成
- 不要なブランチは適宜削除する
特に、Pull Requestでマージ後に使わなくなったブランチは、その時点で削除するのが理想的です。
参加して感じたこと
サポーターズのハッカソンでは、2日間とも19時ごろに交流会がありました。この場で、他のチームがどんなアプリを作成しているかや、大学での学び、就活状況などを話すことができました。また、最終発表では、どのチームも素晴らしいアプリを作成しており、大きな刺激を受けました。
この経験を通じて、勉強のモチベーションが大幅に向上しました。また、即席チームでの参加でしたが、メンバーとは非常に仲良くなりました。
結果として、努力賞 を受賞することができました。このハッカソンでは、参加するだけで1,000円をもらえるうえ、受賞すると賞金も追加で受け取れます。
ハッカソンへの参加をおすすめする理由
ハッカソンに参加すると、自分の足りない部分が明確になります。そのため、ある程度インプットを終えた方には、積極的な参加をおすすめします。チーム開発や新しい技術の実践的な経験が得られるだけでなく、モチベーション向上にもつながります。