作成日: 2025-12-12 05:25:43

更新日: 2025-12-12 05:41:23

179 views

team411 Advent Calendar 2025
技術

部内ハッカソンで優勝した話 🎉

この記事は「team411 Advent Calendar 2025」の 12 日目です。

昨日は Daccho さんの「JPHacks体験記(恋AIあり)」でした。 恋 AI は開発段階でも不定期に相談を受けていましたが、 自走してあのクオリティのものを仕上げられるのは、少なくとも初心者ではないと思います。

はじめに

team411 は毎年 (?) 合宿を開催しています。一昨年は新宿の代々木オリンピックセンター、今年は館山のコテージを借りて行われました。

今の所合宿ではハッカソンを開催しています。 この記事では、今年の合宿の感想と、ハッカソンで私たちのチームが優勝したので、その話を紹介します。

詳しい合宿の話は公式のアウトプットに任せようと思います。

レギュレーション

合宿は 2 泊 3 日に行われ、ハッカソンは最初の 2 日間で開催されました。 ハッカソンは 3 チームに分かれていて、2 日目の夜に成果発表会が行われます。 事前に準備とかちょっとした開発は許されています。

それと、開発だけで終わるのも面白くないということで、1 日目の夜にバーベキューが開催されました。

まあ、事前に開発といっても、私たちのチームはアイディアと大雑把な技術選定しかしていなかったので、ほぼ当日開発でした。

開発の様子

メンバー

私たちのチームは、私と、昨日の記事 を書いていた Daccho さんと、4 日目の記事 を書いていた みおずねさんの 3 人でした。 Daccho さんはバックエンドが得意とのことだったのでバックエンド担当、みおずねさんはなんでもできる人なので、とりあえずフロントを任せました。 私はインフラ、CI/CD、コードレビューなど残りの部分を担当しました。

アイディアと技術選定

Daccho さんが持ってきてくれた「友達の声で起こしてくれるアラーム」というアイディアがそのまま採用されました。AI を使ってみたいという意図のようです。

まず、友達の声を録音してデータを収集、AI に学習させてその声でアラームを鳴らす、という流れになります。

技術選定は、それぞれのスタックに合わせて、

  • フロントエンド: Next.js
  • バックエンド: Hono
  • インフラ: Cloud Run + CloudFlare Workers

という構成にしました。Voice Cloning は Eleven Labs を使用しました。開発費もちょっとあったので、有料プランを契約しました。

Hono の選定に関しては Zod OpenAPI が決め手になりました。今まで、Hono でここのインテグレーションがなかったため手が出せなかったのですが、今回初めて使うことができました。

開発

開発は特に言うこともなく、順調に進みました。 全員ある程度のスキルがあったので、特に大きな問題も発生せず予定通りに進みました。 今回早めに CI を導入したのも良かったと思います。 唯一、React と Recording API の相性が悪くて、録音部分の実装に苦労しましたが、みおずねさんの努力でどうにかなりました。

なんか隣のチームは夜遅くまで晩酌してたみたいですが、私たちは真面目に寝て真面目に開発してました。偉いね!

私がインフラ担当だったので、ちょっとだけインフラの話をします。 今回の開発は team411 の Organization の GitHub リポジトリでやっていました。 Next.js を素直にデプロイしようとすると Vercel という選択肢がいいと思うのですが、Organization のプライベートリポジトリからデプロイするのは有料プランが必要です。 そこで、Cloud Run にデプロイすることにしました。 初めて使ったのですが、Cloud Run はリポジトリを選ぶだけでビルドからデプロイまで全てやってくれるので、非常に楽でした。

バックエンドは CloudFlare Workers にデプロイしました。また、定型文を持つためのデータベースには D1 を使用しました。データベース周りは Daccho さんがきつそうな顔をしてたので私がフォローに入ってたりしましたね。

※ 今撮ってきたので、エラーが出てます。

発表

ハッカソンは発表が重要だと勝手に思っています。 今回のテーマは幸い、みんなに体験してもらえる内容だったので、デモのウケは非常に良かったです。

Voice Cloning のために 1 分程度の音声を録音する必要があるのですが、発表会の場で録音してもらい、その場でアラームをセットして体験してもらいました。 今回は、1 日目の記事を書いていた elmo さんに 某 YouTuber のミーム を読み上げてもらいました。

結果発表

優勝は投票で決まります。 発表会の後、各自が良かったチームに投票しました。 私たちのチームは見事優勝しました。実は、私は去年も優勝しており、2 連覇となりました。

合宿の話

合宿は非常に楽しかったです。 結構ど田舎で開発する以外にやることがなかったですが、宿泊場所自体が広くてテンションが上がりました。

↑ こんな感じのところに行きました。コンビニまで車で 10 分くらいかかりました。

バーベキューも楽しかったです。

おわりに

明日はみおずねさんの「Java8でコンパイルされたjarを最新のJavaで動かす黒魔術Minecraft mod」です。 かなりやばそうな匂いがしています。JVM をハックでもするのでしょうか。

ところで来年は合宿やるんですかね?