コンテンツへスキップ

筋トレアプリのUX設計 - 操作を半分に減らしたZero Friction手法

筋トレアプリのUX設計 - 操作を半分に減らしたZero Friction手法 のアイキャッチ
Contents

ベンチプレス80kgで潰れた直後、スマホで「重量入力 → 回数入力 → 保存 → タイマー開始」という4ステップを要求されたとき、こう思いました。

「こんなの、続くわけがない」

既存の筋トレアプリは「正確な記録」を優先し、ユーザーに多くを求めすぎています。

この記事では、1回のワークアウトで操作回数を半分以下に削減した「Zero Friction UX」の設計思想を解説します。

TL;DR

  • ジムで息が上がっている時、スマホ操作は認知的負荷が高すぎる
  • 「ユーザーが考える前にアプリが答えを出している」状態 = Zero Friction を目指した
  • Smart Pre-fill では、重量入力を「前回値コピー」から「文脈を読む提案」へ進化させた
  • Intent-Based Timer では「タイマー停止ボタン」を削除し、行動から意図を推測するUIにした

この設計思想を実装した筋トレ記録アプリ Attain を公開中。コア機能は無料で使えます。 👉 アプリを見る


課題: ジムでのスマホ操作は「苦痛」である

Cognitive Tunneling(認知トンネル)問題

高強度のトレーニング中、人間の認知リソースは極端に制限されます。 心理学では「Cognitive Tunneling」と呼ばれる状態です。

通常時: 判断・記憶・操作・計画に余裕がある

高負荷トレーニング中: 認知リソースの大半が「呼吸・筋肉制御」に消費され、UIを操作する余裕がほぼない

この状態で「重量を入力 → 回数を入力 → 保存ボタン → タイマー開始」という4ステップを要求するのは、ユーザーへの暴力です。

既存アプリの問題点

多くの筋トレアプリ・ワークアウト記録アプリは「正確な記録」を優先し、ユーザーに多くの入力を求めます。UX設計の観点から見ると、これは問題です。

操作認知負荷問題
重量入力「前回何kgだっけ?」と思い出す必要
回数入力セット終了直後なら覚えている
保存タップでも「もう1回タップ」が地味にダルい
タイマー開始「あ、タイマー押し忘れた」問題
タイマー停止「次セット始めたいけど、まずタイマー消さないと」

合計5回以上のインタラクション。 これを1セットごとに繰り返す。10セットやれば50回以上の操作です。


設計哲学: Zero Friction

目標

ユーザーが考える前に、アプリが答えを出している

「設定画面は敗北」という思想のもと、以下の原則を定めました。

  1. Learn, Don't Configure - 設定画面を作る代わりに、行動から学習
  2. Silent Learning - 学習していることをユーザーに意識させない
  3. Intent over Action - 明示的な操作より、意図の推測を優先

Smart Defaults の優先順位

優先度データソース
1学習値このユーザーの過去の行動
2文脈推論直前のセットの状態から推測
3カテゴリデフォルト胸筋なら○kg等
4グローバルデフォルト最終フォールバック

解決策1: Smart Pre-fill(文脈を読む重量提案)

「前回と同じ」では不十分

単純な「前回値コピー」は、以下のケースで破綻します。

  • 失敗セット後はどうする? 前回80kg×8回で潰れた → 次も80kg? それとも75kgに落とす?
  • ウォームアップ後はどうする? 40kg×10回のウォームアップ → 次はメイン重量に飛びたい
  • 漸進性過負荷の場面は? 先週80kg×8回できた → 今週は82.5kgに挑戦すべき?

ルールベースの提案エンジン

新しいセットを開始する際のロジック:

  1. 前セットがあるか確認
  2. 前セットなし → 履歴のベスト重量を提案
  3. 前セットあり → 前セットが失敗かどうか確認
  4. 失敗 → 同じ重量を維持
  5. 成功 → ウォームアップかどうか確認
  6. ウォームアップ → ベスト重量へジャンプ
  7. 通常セット → 前セットの重量を維持

なぜ「失敗後は維持」なのか

ユーザーは「リトライ派」と「ドロップ派」に分かれます。

  • リトライ派は同じ重量で再挑戦したい
  • ドロップ派は重量を落として確実にこなしたい

どちらが正解かはユーザー次第。 だからデフォルトは維持し、減量オプションをUIチップで提示します。

+-----------------------------------+
| Suggestion: 80 kg |
| |
| [-5%] [-10%] |
+-----------------------------------+

リトライ派は0タップ、ドロップ派は1タップ。どちらも最小限の操作で済みます。


解決策2: Intent-Based Timer(意図駆動タイマー)

「タイマー停止ボタン」を削除した理由

従来のタイマーUIには「停止」ボタンがあります。

+-----------------------------------+
| 2:30 |
| [-10s] [Stop] [+10s] |
+-----------------------------------+

問題点は明確です。

  • 「停止」を押す操作が必要
  • 押し忘れるとタイマーが鳴り続ける
  • 「次のセット始めたいけど、まずタイマー消さないと」というフリクション

Intent-Based(意図駆動)アプローチ

「入力開始 = 休憩終了」と再定義する

ユーザーが重量や回数の入力を始めた瞬間、それは「次のセットの準備ができた」という意図のシグナルです。

  1. ユーザーがセット完了 → タイマー自動開始
  2. 休憩中...
  3. ユーザーが入力欄をタップ → タイマー自動停止
  4. 実測値を学習

タイマー停止ボタンは不要になりました。 ユーザーの「次やるぞ」という意図を検知して、自動で停止します。

実際に触ってみませんか? Smart Pre-fillとIntent-Based Timerは Attain で体験できます。コア機能は無料。

実測値から学習する

休憩時間の学習には中央値を使います。

過去5回の休憩時間: [90, 95, 180, 88, 92](180秒は電話が来た等の外れ値)

  • 平均は109秒 ← 外れ値に引っ張られる
  • 中央値は92秒 ← ユーザーの「普段」を反映

UI実装: フローティングタイマー

なぜ画面下部なのか

+-----------------------------------+
| Header |
+-----------------------------------+
| Set Input Area |
+-----------------------------------+
| [Add Set Button] |
| +-------+ |
| | 2:30 | <-- Here |
| +-------+ |
+-----------------------------------+
  • 視線移動が少なく、入力エリアと近い位置にある
  • 親指が届く。片手操作でタップできる
  • 入力の妨げにならないサイズなので邪魔にならない

最終セット検出

「3セットやる人」が3セット目を終えた時、タイマーは自動開始しません

ロジック:

  1. セット完了時に何セット目かを確認
  2. 1-2セット目 → タイマー自動開始
  3. 3セット目 → 過去の履歴を確認
  4. 普段3セットで終わる → タイマー開始しない
  5. 普段4セット以上 → タイマー自動開始

ユーザーの「普段」を学習し、不要なタイマーを出さない。 これもSilent Learningの一例です。


結果: 操作回数の削減

操作BeforeAfter
重量入力手動入力プリフィル済み
回数入力手動入力手動入力
保存タップ必要タップ必要
タイマー開始タップ必要自動
タイマー停止タップ必要自動

5操作 → 2-3操作 に削減。

1回のワークアウトで50回以上の操作が25回以下に。この差が、継続率に直結します。


おわりに: 「設定画面は敗北」

ユーザーに設定を求めることは、開発者の怠慢です。 ユーザー自身も、最適な値を正確には把握していません。

シナリオ設定画面アプローチSmart Defaultアプローチ
休憩時間種目別設定画面前回の値を記憶
単位設定で切り替え前回使った単位を維持
重量刻み選択画面よく使う刻み幅を学習

「設定してください」ではなく「覚えました」

このUX設計を、React Native + TypeScriptで実装した筋トレ記録アプリ「Attain」を公開しています。

Attainを試す(無料)

この記事で紹介したZero Friction UXを、実際に体験してみませんか?

3つの特徴

  1. 操作回数を半減 - 1回のワークアウトで25回以上の操作を削減
  2. 設定画面ゼロ - 使うだけで学習し、最適化される
  3. PWA対応 - Webブラウザから即利用可能(iOS/Androidアプリは準備中)

すぐに始められます

  • PWA対応 - Webブラウザからも利用可能
  • コア機能は無料 - ワークアウト記録、Smart Pre-fill、Intent-Based Timer

👉 Attainを試す

※ 開発中のため、機能は今後変更される可能性があります。


質問・フィードバックは X (@paveg_) まで!

X Facebook B! Hatena