ハッカソンはいいぞ!ー Revenuecat主催のハッカソンに参加してみて
TLDR
先日RevenueCat主催のDevpostで開催されたハッカソンに参加して、子供向けアプリをリリースしました。
結論結果はふるいませんでした。。。残念。
とはいえ、今回、個人開発者はハッカソンで外的に期限を設定すると良いなと感じました。
元々作ろうと思っていたプロダクトだったので開発は少ししていたのですが、今回リリースまでこぎつけられたのはこのハッカソンがあったからです。
個人開発は孤独でペースメークを自分でするしかなく、期限を設定することで一定程度価値を得られると思います。
伝えたいこと:デッドラインがないと完成しない
元々作ろうと思っていたけど進まなかった
KORENANIのアイデアは数ヶ月前からありました。
- 子供の写真を撮る
- AIで認識する
- 多言語で保存する
- 音声で再生し、自分の経験や思い出から言葉を学べる
技術的にも実現可能だと思っていました。でも、実際に手を動かしていたのはほんの少しだけでした。
典型的な「いつか作る」状態。
ハッカソンの締め切りが背中を押してくれた
RevenueCat Shipathonに参加し、2ヶ月後が締め切りが決まったことでいつまでに作るかが決まりました。
私の開発スケジュールは以下のような感じでした:
- 2ヶ月前:「よし、やるぞ!AとBとCとDとEと...(永遠に繰り返す)をやろう」
- 1ヶ月半前: 「appleの審査時間かかるらしいし、子供向けって無理と聞くので取り急ぎ最低限のAとBとCだけでリリースしよう」
- 1ヶ月前: 「最初のバージョンリリースできた。けど改善点は山積み。DとEと...(永遠に繰り返す」
- 2週間前:「いくつか進捗したけどマーケティングとかしたほうがいいのでは?というかデモ動画撮らないと。」
- 締め切り当日:「細かい改善点はあるけど、やれることやった!やった!」
典型的な締め切り駆動です。でも、これがなければ完成していませんでした。
期限があると何が起きるか
優先順位が勝手に決まる
✅ これがないとリリースできない:写真撮影→認識→保存
✅ これがないとリジェクトされる:iOS審査対応
⏸️ あったら良いけど後回し: カスタマイズできる音声やリッチなクイズ機能
何を優先すべきか迷わなくなります。「今やるべきこと」が明確になります。
(まあ本来締め切りがなくともそうすべきなんですが。。)
完璧を諦められる
個人開発だと、誰も止めてくれないので、どこまでも改善し続けてしまいます。
でも締め切りがあると:
「80点でいいからとにかく出そう」
この割り切りが、完成させる上でとても大事です。
実際に手を動かし続けられる
人は締め切りが近づくと集中力が上がるし、無駄が削ぐので効率も上がる。
個人開発は孤独だからこそ
個人開発の難しさは技術力ではないかもしれません。(蔑ろにしているわけではない)
- 誰も進捗を確認しない
- 誰も褒めてくれない
- 誰も期待していない(と思ってしまう)
この状態でモチベーションを保つのは本当に難しい。
でも、ハッカソンに「参加する」と決めた瞬間、外部にコミットメントができます。
- 締め切りが明確に見える
- 他の参加者の作品に刺激を受ける
- 「やる」と言った手前、やらないわけにはいかない
孤独は変わらないけど、ペースメークがしやすくなります。
デメリット:結果が振るわなかった時
悲しい、、、。
負け惜しみっぽく聞こえますが、自信のあるいいプロダクト作れたと思っています。RevenueCatの統合もうまくいったし、子供も楽しそうに使ってくれている。
でも、賞は取れませんでした。
それでも参加する価値はありました。
- 完成したプロダクトが手に入った
- リリースまでの一連の流れを経験できた
- 子供が喜んでくれた
賞を取れなくても、自分が作りたかったものを形にできた。それだけで十分価値があったと思います。
そもそもゴールはハッカソンに勝つことではなく、自分が良いと思うプロダクトをリリースすることだったので、価値はありました。
まとめ:ハッカソンで期限を作ろう
「いつか作りたい」と思っているアイデアがあるなら、ハッカソンに参加してみてください。
- オンライン開催なら自宅でできる
- 長期間のものなら本業と並行できる
- リリース必須のものならポートフォリオにもなる
結果が振るわないかもしれません。でも、締め切りという強制力が、あなたの背中を押してくれます。
個人開発は孤独です。だからこそ、外部から期限を設定する。それだけで、「いつか」が「今」に変わります。
以上がこの記事で伝えたいことです。
ここからは、プロダクト開発で取り組んで良かったことや学びになった技術的な話を紹介します。
これ以降も読んでいただけたら嬉しいですが、本題とは逸れるのでお任せします!
おまけ:プロダクトと技術的な話
完成させたプロダクト「KORENANI」
プロダクトの背景
子どもの頃夢中だった某有名ゲーム。図鑑を集めるのが楽しくてそのゲームのモンスターの名前を全部覚えられました。子供ごころにこれが現実でもできたらおもしろいのになと思ったことを覚えています。
技術も進歩し、私自身も親になり、それを実現したい・できると思いました。
子供が写真を撮るだけで、その被写体を9言語で認識してちょっとした説明と共に保存できるアプリです。動物園や水族館での体験を、子供専用の図鑑にできます。
主な機能
- 写真撮影→AI認識→9言語で保存
- アルバム管理(「動物園の日」「お気に入りの車」など)
- 子供が楽しめるクイズモード (「動物園の日」のアルバムからいくつかの選択肢を出し「ライオンはどれだ?」 「Whichi is Lion?」のような出題)
- ゲーミフィケーションで学習を促進
技術スタック
- Swift (iOSアプリ)
- Nest.js (Backend)
- Supabase (認証、DB、ストレージ)
- Vertex AI (画像認識とラベルや説明の作成)
- Kindwise (虫・花の分析)
- RevenueCat (サブスクリプション管理)
- Cloud Run (API サーバー)
- Vercel (管理画面とアプリページ)
参加したハッカソン
RevenueCat Shipathon 2025
RevenueCat主催、Devpostプラットフォーム上での開催。
特徴:
- オンライン開催(約2ヶ月)
- リリース必須
- デモビデオ提出必須
- RevenueCat統合推奨
やって良かったこと
これらは個別で記事を書くかもしれませんが、簡単に。
1. ステージング環境の用意
iOSアプリなので、本番で壊すと怖い。
ローカルのシミュレーターだけでなく、クラウド環境の実機で検証できるステージング環境を用意しました。
Webならわざわざ用意しないかもしれませんが、iOSアプリだったので合って良かったなと思いました。
Cloud RunとsupabaseのDBをそれぞれ別で立てています。
2. AI駆動開発で良かったこと
今回、AIを積極的に活用して開発しました。その中で、AIに任せやすい環境を整えることが大事だなと感じたので、簡単に共有します。
1.テストを書いてAI駆動を安定させた
AIにコードを書かせる時、テストをまず先に書き実装しました。
Unit / E2Eで分割
E2Eは落としたくないところ中心に書きデグレードチェックを行う。
落ちたら異常検知し、最終はstaging環境で確認するという流れ。
テスト自体もAIに書かせられる部分はあるものの、どのようなテストがあると安心かを考え実装しました。「テストがあるから安心してAIに任せられる」という好循環ができ、結果として全体の速度を上げたように思います。
2.ドメインロジックの集約
DDDの考え方で、業務ロジックをドメイン層に集約しました。
コンテキストが1つのファイルに集約されているので、AIに「○○ドメインを見て」と指示すれば関連ロジックがすべて分かります。変更範囲も明確なので、意図しない影響を与えにくい。
また初期はビジネス仕様書として、各役割の振る舞いをMarkdownで記述しており、ドキュメントとの整合性を比較することができました。ただ最終的にはソースコードに内容が集約されたので、ビジネス仕様書はいつしか不要になりました。
3. 設計ルールの明文化した
みなさんやっていることだと思いますが、プロジェクトの設計方針をドキュメント化しました。
AIに「このプロジェクトの設計方針に従って実装して」と指示できるし、新しい機能を追加する時も既存の設計と矛盾しにくくなります。
AI駆動開発については、テストの書き方やドメイン設計の詳細など、別で記事を書く予定です。
3. 妻と子供に使ってもらう
身内からあれこれ言われるのはちょっと複雑なのでですが、忖度なく聞けるので一番良いフィードバックでした。
- 「ここが分かりにくい」
- 「これ、こうした方がいいんじゃない?」
- 「これ息子は使えないな」
想定するユーザーが近くにいることはとても良い
4. マーケティングに挑戦
思ったよりずっとずっと難しかったです。
- Instagram広告
- Apple Search Ads
- ランディングページ
- SNS投稿
結局合計で10万円くらい使いました。ようやく100人くらいが使ってもらっている状況なので、目に見える効果はなかったのですが、それぞれ傾向など見えていい勉強だった(強がり震え声と怒り)
効果的なマーケティングって何なんでしょうね。今後の課題です。
5. Supabaseはいい
本当に良かったです。
- 無料枠が広い
- ストレージも認証かませるのでとても良い
- ローカルでテストしやすい&認証も実装可能
- Row-Level Securityが協力
特にRLSは、iOSの子供向けアプリ審査を通過する上で重要でした。データベースレベルでセキュリティを保証できます。
supabaseについても、別で記事を書く予定です。
6. プレゼン動画作った
なぜこのプロダクトを作り、何ができるのかを説明するというのは、実はなかなかない貴重な経験ですね。
(英語だったので、がんばりました)
最後に
RevenueCat Shipathonでは賞を取れませんでした。
でも、プロダクト自体には自信を持っています。何より、子供が楽しそうに使っている姿を見られたことが何よりです。
今後もKORENANIの開発は続けますし、Instagramを中心にマーケティング活動を続けていきます。
ダウンロードもしてもらえたら幸いです。
もし興味を持っていただけたら、インスタもフォローしてください!
参考リンク
最後まで読んでいただき、ありがとうございました!
Discussion