ハッカソン参加記
先日、初めてハッカソンというものにとある機会で参加しました。初心者向けを謳ってはいましたが、私は開発経験がないに等しいため参加自体がかなりの冒険でした。2人チームで10時間程度かけプロダクトをひとつ形にすることができました。覚えているうちに色々書き残しておこうと思います。
チーム編成
完全オンライン、2日間(7時間×2)のハッカソンでした。全体では30人程度の人が参加していたように思います。ぱっと見みなさん大学生くらいで、友人とチームを組んでいる人もいました。私のチームには本当は4人いるはずだった。。のですが私ともう1人しかいませんでした。情報専攻ではないのに個人開発を趣味でされているというすごい方(Aさん)だったので、とても心強かったです。しかしお互いチーム開発の経験はゼロだったため、二人とも普段使うgitコマンドは正直3つくらいしかないんですよねトホホえ同じですか!?ということで会話が盛り上がりました。
アイデア出し
始めはアイデアソンというのに参加しました。インストラクターの指示に従い、身の回りの人間を思い浮かべ、それぞれの困りごとを想像するということから始めました。実際にこんなサービスがあったらという具体的な想像をするところで、私は3つのサービスを考えました。そこそこいいペースだったと思います。他のグループのアイデアを聞く時間もありました。はじめClaudeに作らせたプロトタイプを見せ合う時間があったのですが、全てメインカラーが紫だったため、いかにClaudeが紫を好きかを再確認することになりました。
チームで話し合い、今回はAさんのアイデアの、海外転職したい人や海外在住者が情報交換できるサイトを開発することになりました。
投稿にタグをつけたいという話が上がり、アカウント設定画面で投稿に付与されるデフォルトの国と職業を設定し、知見の種類は投稿するたびに変えられるようにしようということになりました。アカウント設定画面で見たい投稿の属性も設定できるようにしようと決まりました。
いざ開発
まずお互いブランチを切って作業したことがほぼなかったため、そのおさらいから始まりました。しかし完全初心者というわけでもなかったので、幸い一度もgit操作でつまづくことはありませんでした。mergeするときは必ずzoomで報告していたので、コンフリクトすることもありませんでした。一時期は会話のほとんどが「mergeしてpushします」「ありがとうございます。pullしますね」でした。始めはずっと相手に自分の顔が見える状態であることに若干の緊張を感じていましたが、普通にそれどころではないためすぐに慣れました。
フロントとバック両方ある開発をしたことがなく、右も左も分からない状態だったので、かなりAI(ほぼCODEX、一部Claude)に頼りました。主に以下の項目でつまづきました。
- フロントとバックの項目名のズレ(country/type/industry vs country_region/knowledge_type/industry_job)
- 認証フローの未接続(トークン保存・送信、ログイン画面の導線)
- CORSエラー(FastAPI再起動や設定差分で Failed to fetch)
- DBスキーマ不整合(posts テーブル未作成 / users.bio などのカラム不足)
- Live Serverの自動リロード罠(DB更新でリロードされてた)
- 設定の保存先がlocalStorageのみで、アカウント切替時に混ざる問題
特にLive ServerがDB更新で自動リロードされる点については、これAIなしでどうやって気づくんだよ。。と思ってしまいましたが、開発者にとっては結構あるあるなんだそうです。いいねボタンを押すたびにページがリロードされることに絶望していましたが、VSCodeのJSONをいじってすぐに解決しました。AIがなかったらこの理由に気づくのにかなりの時間を無駄にしていたように思います。
途中で、プロフィールページ欲しくない?とか、自己紹介ってあったほうがいいかも。。など、どんどん欲しいものが増えていきました。AさんがDBに自己紹介等を保存できるようにしている間に私がプロフィールページを整備するなど、だんだん分業もうまくできるようになっていきました。
AIに関する気づき
AIを使って本当に学びになっているのか?と思う方も多いと思いますが、私はAIがなかったらバックエンドのことがわからなすぎてそもそもこれに参加する勇気が持てなかったと思うので、そういう意味でAIが存在していてよかったです。また、今回初めてデータベースありの開発を経験し、どういう仕組みでフロントとバックがつながっているかも少しずつ理解できてきたように感じています(以前Railsは触ってたんですけど。。)。
個人的にAIがファイルを編集してくれるのになんとなく苦手意識があるため、基本はAIに質問をするにとどめ、どこにどういったことが書かれているのか最低限自分で把握しつつ、自分の手で編集することを心がけました。始めに自分がどのようにAIを利用したいかをAIに対して表明しておけば、その通りの挙動をしてくれます。
AIは基本的な機能しかつけてくれません。例えばなんとなくサイトのロゴは押したくなるもので押した暁にはホームに飛ぶことを期待する、とか、ニックネームを編集するときは既存のニックネームがテキストボックスに打ち込まれていてほしい、みたいな感覚があったりしますが、そういうのは自分で気づく必要がありました。考えれば当然のことですが、こういう細かいことを短時間で気づくのは慣れていないと難しかったです。
CODEXは勝手にとても使いにくい印象を持っていたのですが今回それが覆されました。以前3Dのオーディオビジュアライザを作らせようとしたら話が通じず全くうまくいかなかったので、得意不得意があるのかもしれません。CODEXを使った理由は単にトークンがいっぱいあったからです。しかしもっとClaude Codeを使ってみたい思いがあります。
発表
最後に発表の時間がありました。他の人が話しているのを見ていてとても緊張しましたが、自分の番になると案外すらすら話せていることに気づきました。緊張するとやっぱり饒舌になるみたいです。。無事にデモンストレーションを見せることができました。グループによって進み具合に差がありましたが、それなりに頑張ったほうな気がします。
スクリーンショットとrepo
感想
参加してよかったです。何事もやってみるものですね〜。
目と肩はとても疲れました。Aさんは腰が痛かったみたいです。発表が終わった後は二人で、もっといいデスクトップ環境を考えたいですね。。という結論になりました。Aさんありがとうございました!




