Skip to content

kusababa/LifeCounter

Repository files navigation

Life Counter 🕰️

人生の残り時間をリアルタイムでカウントダウン表示するiOSアプリです。ホーム画面ウィジェットで常時確認可能です。

📱 スクリーンショット

メイン画面 設定画面 ウィジェット
カウントダウン表示 生年月日・寿命設定 ホーム画面表示

✨ 主な機能

  • リアルタイムカウントダウン: 年・月・日・時・分・秒で残り時間を表示
  • 生年月日設定: 正確な計算のための誕生日入力
  • 想定寿命設定: カスタマイズ可能な目標年齢
  • データ永続化: アプリを閉じても設定とカウントダウンを保持
  • ホーム画面ウィジェット: 3サイズ対応(小・中・大)
  • シンプルデザイン: 黒背景に白文字の見やすいインターface

📋 システム要件

  • iOS: 14.0以上
  • デバイス: iPhone/iPad
  • Xcode: 12.0以上 (開発時)
  • Swift: 5.0以上

🛠️ 技術スタック

  • フレームワーク: SwiftUI, WidgetKit, Foundation, Combine
  • データ保存: UserDefaults (App Groups)
  • UI: SwiftUI
  • ウィジェット: WidgetKit
  • アーキテクチャ: MVVM

📂 プロジェクト構成

LifeCounter/
├── App.swift                    # アプリのエントリーポイント
├── ContentView.swift           # メインUI(入力フォーム + カウントダウン表示)
├── DataManager.swift           # データ管理・UserDefaults処理
├── WidgetSetup.md             # Xcode設定手順書
├── CLAUDE.md                  # 開発記録
└── README.md                  # このファイル

LifeCounterWidget/
├── LifeCounterWidget.swift     # WidgetKit実装
└── Info.plist                 # ウィジェット設定

Config/
├── .gitignore                 # Git除外設定
└── .env.example              # 環境変数テンプレート

🚀 セットアップ手順

1. プロジェクトクローン

git clone https://github.com/kusababa/LifeCounter.git
cd LifeCounter

2. Xcodeでプロジェクトを開く

open LifeCounter.xcodeproj

3. Bundle Identifierの設定

環境変数ファイルを設定(任意):

cp .env.example .env
# .envファイルを編集してBundle Identifierをカスタマイズ

4. App Groupsの設定

  1. メインアプリ(LifeCounterターゲット)

    • Signing & Capabilities > + Capability > App Groups
    • group.com.lifecounter.app を追加
  2. ウィジェット(LifeCounterWidgetターゲット)

    • 同様にApp Groupsを追加
    • 同じGroup IDを使用

5. ビルド・実行

  1. メインアプリをビルド・実行
  2. 生年月日と想定寿命を設定
  3. ウィジェットをホーム画面に追加

📱 使用方法

初期設定

  1. アプリを起動
  2. 生年月日を選択
  3. 想定寿命(年齢)を入力
  4. 「開始」をタップ

ウィジェット追加

  1. ホーム画面の空きスペースを長押し
  2. 「+」ボタンをタップ
  3. 「LifeCounter」を選択
  4. ウィジェットサイズを選択して追加

設定変更

  • メイン画面の「設定変更」ボタンから変更可能
  • 変更後、ウィジェットも自動更新

🔧 カスタマイズ

Bundle Identifierの変更

.envファイルで設定:

BUNDLE_ID_PREFIX=com.yourcompany
APP_NAME=LifeCounter

App Groupの変更

DataManager.swift内の以下を変更:

if let sharedDefaults = UserDefaults(suiteName: "group.com.yourcompany.lifecounter") {

🐛 既知の問題・制限事項

  • ウィジェットの更新頻度はシステムに依存
  • バックグラウンドでの動作時間に制限
  • iOS 14.0未満では動作不可

🤝 コントリビューション

  1. このリポジトリをフォーク
  2. 新しいブランチを作成 (git checkout -b feature/amazing-feature)
  3. 変更をコミット (git commit -m 'Add some amazing feature')
  4. ブランチにプッシュ (git push origin feature/amazing-feature)
  5. Pull Requestを作成

📝 今後の予定

  • 複数の目標日時設定
  • プッシュ通知機能
  • カスタムテーマ・色設定
  • 統計・グラフ表示
  • iCloud同期
  • Apple Watch対応

📄 ライセンス

このプロジェクトはMITライセンスの下で公開されています。詳細は LICENSE ファイルをご覧ください。

👨‍💻 開発者

開発: Claude Code との協働開発 作成日: 2025年6月18日

🙏 謝辞

このプロジェクトは Claude Code の AI アシスタント機能を活用して短時間で開発されました。


⭐ このプロジェクトが役に立った場合は、ぜひスターを付けてください!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages