4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初めてのハッカソンで優秀賞!SPAJAM2025 開発の裏側と学び

Posted at

はじめに

先日開催された「SPAJAM2025 九州予選」にチームで参加し、優秀賞をいただくことができました!
初めてのハッカソン参加でしたが、2日間を全力で走り抜けた経験と学びをここにまとめます。

今回のテーマは 「星」。最優秀賞に選ばれれば本戦(箱根行き)への切符が手に入るとあって、チーム一丸となってアイデア出しから頑張りました。結果は惜しくも優秀賞でしたが、敗者復活戦に望みを繋ぎます!

チーム紹介:研究室メンバーで挑戦!

今回は、大学の研究室メンバーでチームを組みました。構成は以下の通り、学年もスキルもバラバラな5人です。

  • 学部4年生: 1名
  • 学部3年生: 1名
  • 私(学部2年生)
  • 学部1年生: 2名

特筆すべきは、1年生2人がプログラミング未経験だったこと。ハッカソン参加に向けて、まずは2人の育成からスタートするという面白い挑戦でした。
全員がプログラマー志望でしたが、イラストや音楽が得意なメンバーもおり、自然と役割分担ができたのが強みでした。

開発したアプリ:「ZUBARIBOSHI」

私たちが開発したのは、実際の星空を舞台にした1vs1の対戦ゲーム「ZUBARIBOSHI」です。

アプリ概要

  • コンセプト: 夜空に隠された相手の「図星(ずぼし)」を、質問を駆使して「ズバリ」当てる対戦ゲーム。
  • ゲームの流れ:
    1. プレイヤーIDを元に出題者と回答者に分かれる。
    2. 出題者: 実際の星空(※)にダミーの星である「図星」を隠す。
    3. 回答者: アプリ内の質問機能(例:「オリオン座の近く?」「一番明るい星より上?」など)を使い、「図星」の位置を特定していく。
    4. 先に相手の「図星」を見つけられたら勝利!

(※)画面に表示される星は、CoreMotionと天体計算ライブラリを使い、実際にデバイスを向けた方位の星空がリアルタイムに描写されます。

技術スタック

  • 言語: Swift
  • 通信: GameKit (Game Center) を利用したリアルタイム通信
  • センサー: CoreMotion (デバイスの向きや方位を取得)
  • 天体計算: SwiftAA (天体の座標計算)
  • その他: 生成AI (UIのモック作成)

ハッカソン開発の道のり

Day 1:アイデアソンと技術の壁

当日は別チームの方とのアイデアソンから始まりましたが、「どこまでアイデアを共有していいのか…?」というハッカソン初心者ならではの悩みに直面。他のチームと交流しつつ、自分たちのアイデアの核を固めていきました。

チームリーダーとして「こんなアプリ面白くない?」と共有したところ、メンバーの反応も上々で、すぐに開発の合意が取れました。
私はMVPの完成に向けてすぐに実装を開始し、他のメンバーは詳細な仕様の詰めを行いました。

しかし、開発はすぐに壁にぶつかります。

苦労した点1:情報が皆無の天体計算ライブラリ「SwiftAA」

星の座標を赤道座標から地平座標(ユーザーが見ている座標)に変換する必要があり、「SwiftAA」というライブラリを採用しました。しかし、このライブラリは日本語の情報が全くなく、公式ドキュメントも非常にシンプル。
最終的には、著者のリファレンスコードを読み解き、引数と返り値から使い方を推測してなんとか実装しました。

苦労した点2:CoreMotionのジンバルロック問題

スマホの動きと画面を連動させるためにCoreMotionを使いましたが、特定角度で座標が不安定になるジンバルロック現象に悩まされました。ユーザー体験に直結する部分だったため、安定した挙動を実現するのに多くの時間を費やしました。

会場の閉館後は大学の研究室に戻り、差し入れに助けられながら深夜開発を続けました。

Day 2:ラストスパートと結果発表

2日目は、残ったバグの修正、技術仕様書の作成、そしてプレゼンの準備を同時並行で進めました。
プレゼン資料は1年生が担当。「私たちの技術の面白さを最大限に伝えてほしい!」とだけオーダーし、作成を任せました。

そして結果は…優秀賞
最優秀賞には一歩届かず、悔しい思いをしましたが、審査員の方の講評を聞いて納得する部分も多くありました。

ハッカソンを終えて得た学び

「技術」だけでなく「体験」をデザインする重要性

今回、私たちは「面白い技術で、面白いものを作る」ことに全力を注ぎました。しかし、最優秀賞チームのプレゼンを見て、私たちに欠けていた視点に気づかされました。それは 「ユーザーがどう使うか」という体験のデザインです。

最優秀賞のチームは、アプリのデモ動画で「誰かと共有したくなる機能」が実際に使われるシーンを効果的に見せていました。
自分たちの技術が、ユーザーのどんな課題を解決し、どんな楽しい体験を届けられるのか。その視点を持って開発を進めることの重要性を痛感しました。

人との出会いが最大の収穫

賞の発表後は、審査員の方々や他のチームの参加者とたくさん交流することができました。ここでの出会いは本当に刺激的で、「来年は一緒にチームを組んで出よう!」と意気投合した方までいました。技術的な学びはもちろんですが、こうした繋がりができたことがハッカソンに参加して一番の収穫だったかもしれません。

最後に

初めてのハッカソンは、悔しさも喜びも、そしてたくさんの学びもある、非常に濃い2日間でした。
来年こそは最優秀賞を獲って箱根に行きます!そしてまた、この経験をQiitaにまとめたいと思います。


著者について

高校時代に独学でWeb開発を始め、大学からSwiftでのネイティブアプリ開発にのめり込んでいます。Swift自体は半年前にMacを買いまして日々勉強しています。今回のハッカソンでは座標変換のコードや星の画面描写、またリアルタイム通信コードを書きました。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?