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

Repository files navigation

zenApp

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

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

公式HP(アーカイブ)

概要

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

スクリーンショット

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

機能

メイン機能

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

画面構成

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

アーキテクチャ

技術スタック

カテゴリ技術
言語Swift 2.x → Swift 3対応途中
UIUIKit + 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
CIBitrise

ディレクトリ構成

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(通知音)

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

永続化データ(UserDefaults)

キー説明
lastMinutesInt?最後に設定したタイマー分数
NotifySoundString?選択中の通知音
VibrationBool?バイブレーション設定
RemainderBool?リマインダー有効/無効
RemainderTimeDate?リマインダー時刻

使用サービス

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

依存ライブラリ

CocoaPods

ライブラリバージョン用途
Firebase/Core3.3.0Firebase基盤(Analytics等)
NendSDK_iOS3.1.2nend広告SDK(サービス終了

Carthage

ライブラリバージョン用途
Bond7.5.0リアクティブプログラミング。UIバインディング
ReactiveKit3.12.2Bondの基盤ライブラリ
SwiftDate6.0.3日付操作の拡張
Eureka5.0.0フォーム構築(設定画面用)
DatePickerCell1.0.7日時選択UI(リポジトリ削除済み
FontAwesome.swift1.7.1FontAwesomeアイコン
Log1.1ロギング(Swift 3対応fork)
Quick2.1.0BDDテストフレームワーク
Nimble8.0.2マッチャーライブラリ(Quick用)
Differ1.4.3コレクション差分計算

標準フレームワーク

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

ビルド手順

必要環境

  • 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.plistFirebase設定(Firebaseコンソールから取得)
zenApp/Sources/config.swiftnend広告SDK設定
zenApp/SupportingFiles/Info.plistFabric/Crashlytics APIキー
fastlane/FastfileCI/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

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages