これはなに?
2025年5月17~18日にかけて行われた、「58ハッカソン2025 feat.関西学生エンジニア in 近畿大学」に参加した際のレポです。たのしかった~~~。
例によって九州からの参加者は(どりーさんを除いて)僕だけっぽく、知らない人だらけでたのしかったです。
メンバー
以下のようなゆる募ツイートをしたところ、3人がきてくれました。
うち2名は4月に別のハッカソンで知り合ったメンバー(panくん、zatunnohitoくん)で、もう一人(Ogataくん)は初対面でした。おれより全然強く、今でも何事...?と思っています。
つくったもの
GitHubのステータスからプレイヤーステータスを生成し、フィールドから押し合って落とし合うゲームがプレイできるサービスです。ちなみにずっと「3DSのすれ違い乱闘みたいなやつ」と表現していますが、今のところ1割程度にしか伝わっていません。
ステータスは過去一年の「コミット数」「コミット日数」「連続コミット日数」「PR/Review数」を対象に取得しています。イイ感じのグラフも出せたりします。

ゲームはこんな感じ。だれかが部屋を立て、あいことばを共有することで参加する形式にしてみました。ゴッドフィールドリスペクトです。
アイデアについて
例によってこういう実用性のないアイデアは僕から出てるんですが、最近は意図的に「実用性のなさ」に振ったアイデアを出すようにしています。いつもインターンとかで頑張ってお堅いモノ作ってるんだし、ハッカソンまで難しいことしなくていいよね~と。
その代わり、ユーザー体験には気を遣うようにしています(今回はあまり改善できなかったけど...)。ジョークみたいな作品が細部までこだわって作られていたら、なんかオモロくないですか?そんな感じです。
むずかしかったこと
リアルタイム性が必要なアプリなので WebSocket を使用しているんですが、とにかくつなぎ込みに苦労しました。ページ遷移時にコネクションが途切れてしまい、それまで MPA でつくってきたものを SPA にしないといけないかも、というタイミングが(一日目の深夜に)ありましたが、あの時は走って博多まで帰ろうか悩みました。(結果的にほかの方法で回避しました)
今回のゲームは WebSocket 上で各ユーザーのイベントを送信しあい、各クライアントがそれぞれゲームの演算処理をするような分散方式をとっています。これによってサーバを持たなくてよかったのはよかったですが、対価として完全な処理の同期ができませんでした。プレイヤーがぶつかり合うようなシチュエーションでは、微妙なイベントタイミングの違いで演算結果が変わったりしてしまいます。サーバーでシミュレーションした結果を各クライアントに送信するような方式(権威サーバー方式、と呼んでいます)であればこれが実現できたのかもしれませんが、これはまたどこかでやりたい。
サーバ側などの見えない部分は Ogata くんがほとんど持ってくれており、僕は万全を期してゲーム部分の実装に取り掛かれました。結果的に作品として形になったのはこの分担のおかげだと思います。
おまけ1:観光
これはチラ裏ですが、ちょこちょこ観光とかご飯に行ったりしていました。過去イチ距離感の近かったチームだと思っています。


おまけ2:ぼやき
実は表彰式で「これは負けたな~」と思わされるような作品があったので、ここに共有。
ここだけの話ほんとに負けたと思っていたので、最終週賞の発表直後の集合写真の顔が死んでいます。ウケる。


ちなみに上のアプリは discord Activity を使用したエンジニアもくもく会用のアプリケーションで、Github 上の各種イベント情報(commit, pushなど)をリアルタイムに表示してくれるスグレモノです。スゴいのはDiscord Proxyの迂回方法で、(詳しくは省きますが)独自の方法でCSPを回避することで外部リソースにアクセスしているみたいです。Discord Activityといい前例の少ない実装が多い中このテーマを選んだのは素直に敬服。
また、実装の過程で一年前に書いたぼくの入門レポが役に立っていたらしく、それはそれですごくうれしかったです。
さいごに
宣言した通り本買っちゃうぞ~~~~~~~~~~~~~~~
またいつか関西でやりましょう。お疲れさまでした。