
自分の筋トレをより効率的にサポートするために、私は筋トレアプリを作ることを決意しました。愛用していたアプリのサポートが終了したため、代替えとして、自分のニーズに合ったアプリをゼロから開発することになりました。この記事では、その開発過程と、インターバルタイマー機能を追加するための実装の詳細を紹介します。
Contents
アプリの基本設計
最初に思い描いたのは、シンプルで直感的なデザインのアプリでした。基本的な機能として、筋トレの回数をカウントする機能と、トレーニング間の休憩を管理するインターバルタイマーを実装することを決めました。これらの機能は、筋トレ中に最も頻繁に使用するもので、トレーニング効率を向上させるために不可欠だと感じたからです。
回数カウント機能の実装
まず最初に取り組んだのは、筋トレの回数をカウントする機能です。アプリを起動したときに、中央に大きなカウント表示があり、画面をタップするたびにカウントが増加します。これにより、筋トレの回数を簡単に記録できるようにしました。
@State private var count = 0 // 筋トレ回数を記録
タップでカウントアップするシンプルな処理ですが、これを実現することでトレーニングの進行具合を一目で確認できるようになりました。
インターバルタイマー機能の追加
次に挑戦したのは、インターバルタイマーの実装です。筋トレではセット間に休憩が必要ですが、この休憩時間をタイマーで管理することで、トレーニングの効率が格段に向上します。
インターバルタイマーは、画面上部に表示され、一定時間経過後に通知を出す形式で設計しました。このタイマーが開始されると、トレーニング中の休憩時間を管理できるようになります。以下がその基本的なコードです。
@State private var intervalCount = 0 // インターバルタイマーのカウント
@State private var timer: Timer? // インターバルタイマー
タイマーが動作中に1秒ごとにカウントが増え、休憩が終了する前に次のセットに移る準備ができるようにします。
タップでインターバルリセット機能
インターバルタイマーが始まっている最中に、ユーザーが画面をタップした場合に、現在のインターバルタイマーをリセットして、カウントが「0」に戻る機能を実装しました。これにより、ユーザーがインターバルタイマーを途中で止めたい場合に、直感的に操作できるようにしました。
.onTapGesture {
previousCount = intervalCount // 現在のインターバルタイマーの回数を保持
resetIntervalTimer() // インターバルタイマーをリセット
intervalCount = 0 // インターバルタイマーのカウントを0にリセット
}
これにより、インターバルタイマーをスキップしてすぐに次のセットに進みたい場合でも、タップするだけで簡単に操作できるようになりました。
前回のインターバルタイマーの回数を表示
さらに、インターバルタイマーをタップすると、前回のカウントが右上に表示されるようにしました。この機能を追加することで、トレーニングの進行状況をより詳細に把握できるようになります。具体的には、前回のインターバル回数をpreviousCountという変数で保持し、その値を画面上部に表示します。
Text("前回: \(previousCount)")
.font(.title2)
.foregroundColor(.yellow)
.bold()
.padding()
この機能によって、インターバルタイマーが途中でリセットされた場合でも、ユーザーは過去の進捗を簡単に確認することができるため、トレーニングの計画を立てやすくなりました。
最後の仕上げ
最終的に、インターバルタイマーがタップされることで「前回の回数」を表示し、その後タイマーをリセットして0回からスタートするという流れを実現しました。このシンプルでありながら機能的なアプローチは、筋トレ中の効率性を大いに向上させ、トレーニングを楽しむための大きな助けとなっています。
また、デザインにも少しこだわり、タイマーの表示を目立たせるために文字色やフォントを工夫し、直感的に使いやすいインターフェースを目指しました。背景色やフォントカラーの調整を行い、視覚的にストレスなく操作できるようにしています。
今後の展望
現在は、回数カウント機能とインターバルタイマー機能が実装され、基本的な部分は完成しました。次のステップとして、さらなる機能追加を検討しています。例えば、トレーニングメニューを保存したり、トレーニング履歴を管理する機能などです。また、UI/UXの改善を行い、より多くのユーザーが使いやすいアプリにしていく予定です。
まとめ
今回の開発では、シンプルな機能からスタートし、徐々に筋トレの効率を高めるための機能を追加してきました。自分のニーズに合わせたアプリ開発は非常に楽しく、次回のトレーニングにも大いに役立っています。これからも、筋トレを支えるツールとして、よりよいアプリを作り続けたいと思います。