👟
<DAY1> 走らないとお金が取られるアプリを作成するぜ
やったこと
- アイデア考えた
- アイデアをgptと友人に投げた
- 軽くアーキテクチャ考えてここまで作らせた。
- テンション上げるためにアイコン生成した

あまり勝算があるわけではないが、iosの審査を通してみたいのと、俺も走りたいのでこれを作る。
イメージこんなことを考えている。
- ユーザーが登録する
- 今月いくらを預けるかを聞かれる。
- healthkitで走行距離計測
- 強制的に走らざるを得ないので、日本人の運動習慣の貢献に寄与する。
- ユーザーが設定した距離に満たない場合、ユーザーのお金が出金される。
ちなみにだが僕は個人開発2回目だが基本vibe coderです!普段はコードをたまーにかくデータアナリストみたいなことしてます(ほぼ営業)
仕様
今月、走れなかったら
いくら失ってもいいですか?
※ 目標を達成した場合、請求は発生しません
[ ¥500 ] [ ¥1,000 ] [ ¥3,000 ]
↑おすすめ
[ カスタム入力 ]
ルール
- 最低:¥500
- デフォルト選択:¥1,000
- 上限:¥10,000
2026/01/23 作業ログ
完了タスク
1. iOS プロジェクト骨格作成
DDD アーキテクチャに基づくディレクトリ構造を作成:
ios/RunForPay/
├── App/
│ ├── RunForPayApp.swift # アプリエントリポイント
│ ├── AppContainer.swift # DI コンテナ
│ └── ContentView.swift # ルートビュー
├── UI/
│ ├── LoginView.swift # Sign in with Apple
│ ├── ChallengeView.swift # 進捗表示
│ ├── DepositSelectView.swift # 金額選択
│ └── ChallengeViewModel.swift
├── Domain/
│ ├── Challenge.swift # エンティティ
│ ├── Minutes.swift # Value Object
│ ├── DepositAmount.swift # Value Object
│ └── Ports.swift # Protocol群
├── UseCases/
│ ├── GetMonthlyRunningMinutes.swift
│ └── AuthorizeDeposit.swift
├── Infra/
│ ├── Measurement/
│ │ └── HealthKitMinuteSource.swift
│ ├── Payments/
│ │ └── StripeAuthorizer.swift
│ └── Persistence/
│ └── InMemoryChallengeStore.swift
└── Shared/
└── DateUtils.swift
2. Xcode プロジェクト設定
-
RunForPay.xcodeprojを作成 -
Info.plist- HealthKit 許可メッセージ設定 -
RunForPay.entitlements- HealthKit / Sign in with Apple 権限
3. 全16ファイルのスケルトン実装
- Domain 層: Challenge, Minutes, DepositAmount, Ports
- UseCase 層: GetMonthlyRunningMinutes, AuthorizeDeposit
- UI 層: LoginView, ChallengeView, DepositSelectView, ChallengeViewModel
- Infra 層: HealthKitMinuteSource, StripeAuthorizer, InMemoryChallengeStore
- Shared: DateUtils
ブロッカー
- Xcode インストール不可: macOS 15.6 以降が必要
- macOS アップデートが必要
次回やること
- macOS アップデート
- Xcode インストール
- Xcode でプロジェクトを開いて Team ID 設定
- Stripe SDK / Supabase SDK を SPM で追加
- ビルド確認
Discussion