はじめに
先日、人生で初めてのハッカソンに参加してきました。
結果として、即席チームで入賞することができました!
「実際に使えるものを完成させデプロイする」を目標に走り切った数日間でしたが、得られた達成感と同時に、自分の未熟さも痛烈に感じる濃い時間となりました。忘れないうちに、学んだことや反省点を技術ブログとしてまとめます。
開発したもの:『Meet and Eat』
位置情報を使って中間地点のレストランを自動提案する、ログイン不要のイベント調整サービスを開発しました。
サービスの流れ
- 幹事がイベント作成: イベント名、参加人数、候補日時を設定。
- 参加者が最寄り駅を入力: 出発地点を入力し、日程調整に回答。
- 最適な場所を自動提案: 全員の移動時間を考慮して「中間駅」を導出し、周辺の飲食店(ホットペッパーAPI)を表示。
技術スタック
AIツール(Antigravity, figma-make)をフル活用し、爆速で形にすることを目指しました。
- Frontend: React, Vite, TypeScript, tailwindcss
- UI Library: shadcn/ui, Material UI (MUI), radix
- Backend/BaaS: Supabase
- Design: figma-make
- External APIs:
- Google Maps Platform / Nominatim(位置情報)
- HeartRails Express(駅データ)
- ホットペッパーグルメAPI(店舗情報)
良かった点
1. 「とにかく楽しめた」こと
これが一番の収穫です。初対面のメンバーと一つのものを作り上げる熱狂感は、個人開発では味わえないものでした。焦燥感のある状況でも、冷静かつ楽しみながら作業できるのは自分の長所なのではと気づけました。これからは積極的にハッカソンに挑戦していきたい!
2. サービスの「核」となるロジックと設計を担当できた
初心者ながら、サービスの根幹に関わる部分を任せてもらい、完走できたことは大きな自信になりました。
- DB設計: Supabaseでのテーブル設計を担当。拡張性を意識したデータ構造を考えました。
- プライバシーに配慮したUI/UX: ユーザーが正確な現在地を送信することに抵抗を感じないよう、「住所」ではなく「最寄り駅」を入力してもらう仕様に落とし込みました。
- コアロジックの実装: 全員の出発地点から中間地点を算出し、最適な場所を提案するロジックを担当。アルゴリズムが意図通りに動いた時は感動しました。
3. 後半の積極性
最初は知識不足で気後れしていましたが、後半は「絶対に完成させるぞ」という熱意で、自分にできるタスクをどんどん拾いに行けました。結果としてチームの入賞に貢献できたのは大きな自信になりました。
突きつけられた課題と反省点
1. 圧倒的な基礎知識不足
今回、実装自体はAIエージェント(Antigravity)と対話しながら進めたため順調でした。しかし、以下のWeb技術の基礎理解が弱く、全体のアーキテクチャ設計には深く関与できませんでした。
- Reactのディレクトリ構成やHooksの適切な使い方
- Supabaseからのフェッチやルーティングの基礎
- 技術スタックの正確な把握(プレゼンで構成図を含められなかった一因)
2. グループ開発におけるタスク管理の難しさ
「誰が何をやっているか」の可視化が不十分で、最後はバタバタしてしまいました。
- タスクの洗い出し: 着手前に細かく分解し、進捗報告をまめにすべきでした。
- 心理的安全性の確保: 即席チームだからこそ、もっと雑談や気軽なチャットを増やし、困りごとを出しやすい空気を作るべきだと痛感しました。
3. プレゼンの準備
今回は自信のなさから、発表はチームメンバーにお願いしました。スライド作りをAI任せにした結果、技術構成などの重要な情報を落としてしまったのは大きな反省点です。ぎりぎりの完成だったにもかかわらず、素晴らしい発表をしてくれたメンバーには感謝しかありません。m(_ _)m
他チームのユーモア溢れるプレゼンも非常に勉強になりました。
今後の自分への教訓
- ミーティング前の準備: 効率化のために、話し合いたい内容を事前に決めておく。
- ドキュメントを残す: 最小限でも「何をどこに作ったか」を書いて共有する癖をつける。
- 仲間を助ける余裕を持つ: 自分の作業で手一杯になり、手持ち無沙汰なメンバーをサポートできなかった。次は進捗共有をこまめにして、周りを見れる人間でありたい。
最後に
今回のハッカソンで、ReactやSupabaseといった技術から、コミュニケーションの重要性まで、数ヶ月分の学びを数日で得ることができました。
「もっと学びたい!」というこの火を消さずに、次は技術でも人間としてもチームをリードできる存在を目指したいです。一緒に戦ってくれたチームの皆さん、本当にありがとうございました!
