👻

Kiro ハッカソンの振り返り

に公開

ハッカソン概要

Reddit and Kiro: Community Games Challenge

テーマは Devvit (Reddit の開発者向けプラットフォーム) 上で動くマルチプレイのゲームを作ることで、期間は Oct 13 – 30, 2025 でした

応募のきっかけ

今年夏から Kiro を愛用していたため
(スペック駆動開発の体験が最高 🙌)

作ったゲーム

JetOni

鬼になるとジェットパックを使って空中を飛べる鬼ごっこです

子供が鬼ごっこのテレビ番組に夢中になっているのを見たのと、
昔ハマった FPS のゲーム Starsiege: Tribes に着想を得ました

jet_oni_game で実際にプレイできます
(Reddit のアカウントが必要です 🙇)

マルチプレイのゲームを作るのが始めてだったのですが、何とか提出できました。
Honorable Mention - Kiro Developer Experience をいただきました 🙇

開発変遷

0% => 70% までは爆速で、70% からが忍耐でした

終始ノーコードでした

作業内容 所要時間(目安) 完成度 メモ 感情
アイデア出し 4〜5 時間 0% 楽しい!
設計・開発(初期) 4〜5 時間 0% → 50% 大まかに動く めっちゃ楽しい!
開発(中期) 10〜11 時間 50 → 70% ほぼバグ修正 進捗悪いけどもう一息!
提出ドキュメント整備 1〜2 時間 70% この時点で提出 何とかなった
開発(後期) 20〜30 時間 70% → 80% 忍耐 ... (もしかしたら遊んでくれる人がいるかもだから、がんばろう)

使用したクレジット

3,000 クレジットくらい
(参考: 1,000 クレジットで $20 / month)

振り返り

Kiro のスペック駆動開発

Kiro を spec mode にして「こういうの作りたい」を指示をすると
要件定義 => 設計 => タスク定義と進めて、それぞれファイルも作ってくれます
こちらをレビューするのみです
(・・が最初のレビューが重い 😹)

あとはタスク定義 (tasks.md) のファイルの
それぞれのタスクの開始ボタンをポチッと押すと、Kiro が勝手に進めてくれます

プロトタイプ

前述の最初のレビューが重いのが嫌だったのと、
開発後半で「作りたかったのはこれじゃないー!😹」を防ぎたかったので

いきなり Kiro で開発せず
まずは少し動くものを Claude / Gemini / ChatGPT に
HTML ベースで作って壊し・・をやりました

その中で脈のありそうなものを Kiro に持っていき、
リバースエンジニアリング的に spec を作成・・という流れにしました

こうすることで、「思ってたのと違うな・・」を軽減し、
specs のレビューもスムーズだったように思います

Kiro の hooks と steering

(ご存知の方も多いとは思いますが・・)

specs 以外にも Kiro 独自の設定ファイルがあり、
これらを有効活用できると開発効率が上がりそうです

  • .kiro/
    • hooks
    • specs
    • steering

hooks には特定のイベントが発生した際に、事前定義したタスクを Kiro が実施してくれます

例えば私は specs 側にタスク完了時に単体テストを必ず走らせること、と指示を書いても
Kiro にすっ飛ばされることがよくありました
そこで、単体テストを走らせるコマンドを定義して hooks においたら
確実に実行されるようになりました

steering にはプロジェクトのルール、規約、アーキテクチャ、開発の進め方などを Kiro に指示できます

特にバグ修正では Kiro が堂々巡りの対応となり (私は千日手と呼んでます)、
一向に修正されないことがあります
(A で修正 => ダメだったので B で修正 => またダメだったので A => B ...)

そこで、バグ修正後に一緒にふりかえって、Kiro 自身に steering も書かせていました
(推測で判断せず、まずはログを見る、など)

ご参考までに今回の .kiro はこちらです
https://github.com/kumagaias/jet-oni/tree/main/.kiro

Devvit って何?

Reddit の開発者向けプラットフォームで、SDK のようなものですが
インフラも Devvit 側で用意してくれます

https://developers.reddit.com/ でアプリを作成し、
テンプレートを選ぶと 3 steps くらいで動かせます

Devvit デプロイ

かなりお手軽です
ローカルで開発して・・

開発用 (***_dev) のサブレディットにデプロイ

$ npm run dev

公開用のサブレディットにデプロイ

$ devvit upload

Reddit ではサブレディットという単語が出てくるのですが
slack でいうとチャンネルみたいなものだと思います

そして、サブレディットにゲームをインストールして、皆が使える形となります
(この概念を理解するのが一番時間がかかった)

さらに公開用のゲームのバージョンをアップデートするには、デプロイ後に
https://developers.reddit.com/ から対象のアプリを選択し、update する必要があります
(CLI からもできるかもしれない)

デプロイのタイミングの指示

普通に spec mode でタスク定義を作成させると
最終工程でデプロイして動作確認・・の順番になることが多かったです

これだとリスクが高いので (大体は動かないパターン 😹)
タスクごとにデプロイを行うことを明示し、
タスク定義 (tasks.md) に動作確認ポイントも入れてもらいました

提出直前に・・

実はマルチプレイになっていない (プレイヤー間の位置が同期されていない) ことが判明し
慌てて修正しました

開発後半ではデバッグ効率 = ほぼ開発効率だなと思いました

そしてマルチプレイのデバッグって本当に大変だなと思いました・・
(今回はブラウザを複数立ち上げて・・で何とかやりました)

さいごに

お読みいただきありがとうございました!

個人開発は、仕事と育児と家事で諦めかけていたのですが、
Kiro のおかげでスキマ時間を有効活用できるようになり、
続けられるようになりました

特に 5 分のスキマ時間でも「前回の続きをよろしく頼むよ」と指示すると
私が前回を思い出している間に、シュッとやってくれるのが最高でした
(AI はスイッチングコストが 0 なのか・・?)

Kiro ありがとう 👻

Discussion