Skip to content
This repository was archived by the owner on Feb 3, 2026. It is now read-only.
/ ZenDo-iOS Public archive

iOS瞑想タイマーアプリ ZenDo(Swift 2/3時代・2016年)- アーカイブ

Notifications You must be signed in to change notification settings

stlwolf/ZenDo-iOS

Repository files navigation

zenApp

⚠️ アーカイブ: このリポジトリはSwift 2/3時代(2016年)のコードで、現在はメンテナンスされていません。歴史的アーカイブとして公開しています。

iOS向け瞑想サポートアプリ。シンプルなカウントダウンタイマーと和風の通知音で瞑想をサポートします。

公式HP(アーカイブ)

概要

シンプルなカウントダウンタイマーと和風の通知音で瞑想をサポートするアプリ。 終了時に鐘や琴などの音で優しく瞑想の終わりを知らせる。

スクリーンショット

メイン画面 設定画面 通知音選択

機能

メイン機能

機能 説明
カウントダウンタイマー 分単位で設定可能。Stepperで時間調整
終了通知音 鐘1/2、琴、二胡、シンギングボウル、サイレント
バイブレーション タイマー終了時にバイブレーション(ON/OFF切替)
リマインダー 毎日決まった時間に瞑想を促すローカル通知

画面構成

MainViewController      - タイマー画面(メイン)
├── SettingsViewController  - 設定画面
│   └── SoundListViewController - 通知音選択画面

アーキテクチャ

技術スタック

カテゴリ 技術
言語 Swift 2.x → Swift 3対応途中
UI UIKit + Storyboard
リアクティブ Bond 7.5.0
日付処理 SwiftDate 6.0.3
音声再生 AVFoundation
ローカル通知 UILocalNotification(iOS 9以前のAPI)
永続化 UserDefaults(SwiftyUserDefaultsラッパー)
広告 nend SDK 3.1.2
分析 Firebase Analytics 3.3.0
クラッシュレポート Fabric/Crashlytics
CI Bitrise

ディレクトリ構成

zenApp/
├── Sources/
│   ├── AppDelegate.swift           # アプリケーションデリゲート
│   ├── config.swift                # 設定値(APIキー等)※要設定
│   ├── Bridging-Header.h           # Objective-Cブリッジ
│   │
│   ├── ViewControllers/
│   │   ├── MainViewController.swift      # タイマー画面(346行)
│   │   ├── SettingsViewController.swift  # 設定画面(397行)
│   │   └── SoundListViewController.swift # 通知音選択(207行)
│   │
│   ├── Manager/
│   │   ├── AudioManager.swift           # 音声再生管理
│   │   ├── NotificationManager.swift    # ローカル通知管理
│   │   └── userDefaultsManager.swift    # 設定値の永続化
│   │
│   ├── Extensions/                 # UIKit拡張(9ファイル)
│   │   ├── UIView+Extension.swift
│   │   ├── UIColor+Extension.swift
│   │   ├── NSDate+Extension.swift
│   │   └── ...
│   │
│   └── Library/
│       └── SwiftyUserDefaults.swift # UserDefaultsラッパー
│
├── Resources/
│   ├── Assets.xcassets/           # 画像リソース
│   │   ├── AppIcon.appiconset/    # アプリアイコン
│   │   ├── mainBackground.imageset/
│   │   ├── startButton.imageset/
│   │   └── cancelButton.imageset/
│   │
│   └── Sound/                     # 通知音ファイル(和風サウンド)
│       ├── bell01.mp3             # シンギングボウル
│       ├── kane01.mp3             # 鐘1
│       ├── kane02.mp3             # 鐘2
│       ├── koto01.mp3             # 琴
│       └── niko01.mp3             # 二胡
│
├── StoryBoards/
│   ├── Main.storyboard
│   ├── Settings.storyboard
│   └── SoundList.storyboard
│
├── SupportingFiles/
│   ├── Info.plist                 # アプリ設定
│   └── Settings.bundle/           # 設定アプリ連携
│
├── GoogleService-Info.plist       # Firebase設定 ※要設定
│
└── development/                   # 開発用リソース
    └── design/
        ├── screenShot/            # App Store用スクリーンショット
        └── icon/                  # アイコン原本

データモデル

NotifySound(通知音)

enum NotifySound: String {
    case Silent  // サイレント
    case Kane1   // 鐘 1
    case Kane2   // 鐘 2
    case Koto1   // 琴
    case Niko1   // 二胡
    case Bell1   // シンギングボウル
}

永続化データ(UserDefaults)

キー 説明
lastMinutes Int? 最後に設定したタイマー分数
NotifySound String? 選択中の通知音
Vibration Bool? バイブレーション設定
Remainder Bool? リマインダー有効/無効
RemainderTime Date? リマインダー時刻

使用サービス

サービス 用途 備考
Firebase Analytics アプリ分析 Google提供のモバイル分析基盤
nend 広告配信 日本向けモバイル広告ネットワーク(2023年サービス終了
Fabric/Crashlytics クラッシュレポート 現在はFirebaseに統合
Bitrise CI/CD モバイルアプリ向けCI/CDサービス

依存ライブラリ

CocoaPods

ライブラリ バージョン 用途
Firebase/Core 3.3.0 Firebase基盤(Analytics等)
NendSDK_iOS 3.1.2 nend広告SDK(サービス終了

Carthage

ライブラリ バージョン 用途
Bond 7.5.0 リアクティブプログラミング。UIバインディング
ReactiveKit 3.12.2 Bondの基盤ライブラリ
SwiftDate 6.0.3 日付操作の拡張
Eureka 5.0.0 フォーム構築(設定画面用)
DatePickerCell 1.0.7 日時選択UI(リポジトリ削除済み
FontAwesome.swift 1.7.1 FontAwesomeアイコン
Log 1.1 ロギング(Swift 3対応fork)
Quick 2.1.0 BDDテストフレームワーク
Nimble 8.0.2 マッチャーライブラリ(Quick用)
Differ 1.4.3 コレクション差分計算

標準フレームワーク

フレームワーク 用途
AVFoundation 音声再生(通知音・BGM)
UserNotifications ローカル通知(リマインダー)
UIKit UI構築

ビルド手順

必要環境

  • macOS 10.12以降(Swift 3対応のXcodeが動作する環境)
  • Xcode 8.x(Swift 3)
  • CocoaPods 0.39.0
  • Carthage

セットアップ

# 依存関係インストール
pod install
carthage bootstrap --platform iOS

# ワークスペースを開く
open zenApp.xcworkspace

セットアップ(参考)

このプロジェクトを動作させるには、以下のファイルに適切な値を設定する必要があります:

ファイル 設定内容
zenApp/GoogleService-Info.plist Firebase設定(Firebaseコンソールから取得)
zenApp/Sources/config.swift nend広告SDK設定
zenApp/SupportingFiles/Info.plist Fabric/Crashlytics APIキー
fastlane/Fastfile CI/CD用の各種トークン
fastlane/certificate/ iOS配布証明書

開発履歴

時期 内容
2016年6月 開発開始
2016年7月 App Store リリース
2017年頃 Swift 3移行を試みるも断念
現在 アーカイブとして保存

関連記事

メディア掲載

今後の展望

このリポジトリは歴史的アーカイブとして保存しています。

  • SwiftUI + Swift 5.x での新規リビルドを検討中
  • 瞑想記録・統計機能の追加
  • HealthKitマインドフルネス連携
  • Live Activity対応

当時の技術的チャレンジ

2016年当時、以下の技術的挑戦を行いました:

  • リアクティブプログラミング: Bondを使用したUIバインディング
  • 関数型アプローチ: Swiftの関数型プログラミング機能の活用
  • CI/CD構築: Bitrise + fastlaneによる自動デプロイ
  • バックグラウンド処理: タイマーのバックグラウンド動作対応

ライセンス

MIT License

作者

eddy (@stlwolf)

About

iOS瞑想タイマーアプリ ZenDo(Swift 2/3時代・2016年)- アーカイブ

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published