筋トレアプリ自作で「作らない」を先に決めた

10月に入って、朝5時半にジムへ向かう道が、だいぶ暗くなってきました。

ジムでは、いまも自分で作った筋トレ記録アプリ「キロク」を使っています。9月8日にApp Storeで公開してから、だいたい1ヶ月です。今回は、そのキロクを作りはじめたときの話です。作ったものではなくて、作らなかったもののほうの話になります。

決めた5つの「やらない」

アプリを作るとなると、入れたい機能がどんどん出てきます。グラフ、カレンダー、SNSでのシェア、ほかの人との比較。既存の筋トレアプリには、だいたい全部入っていました。で、私はそれが合わなかった。機能が多すぎて、直感的に使えなかったんですよね。

なので、作りはじめる前に「これは作らない」を先に決めました。手元には「やらないと決めたこと」というファイルがあって、冒頭にこう書いてあります。「このファイルは『何を作るか』ではなく『何を作らないか』を記録するもの」。新しい機能を思いついたら、作りはじめる前にこのファイルを読む。そういう決まりにしています。いろいろ必要な機能とかが思い浮かんでしまうんですけど、そういったものは徐々に使いづらくなったり、初見の人がよくわからないなってなりそうだったので、本当に必要な機能は何かっていうところを、エッセンシャル思考で作ってみました。

最初に決めたのは4つです。ひとつは、SNSで共有しないこと。筋トレの記録アプリの多くには、今日の記録をシェアする機能がついていますが、キロクにはつけませんでした。私がジムにいるのは朝5時半から、筋トレに使えるのは62分くらい。シェアする余裕はないですし、シェアすることを意識したとたんに、記録のしかたが変わってしまう気がしたので。なんか記録を盛ってしまったり、実際の事実とは違う情報を発信してしまいそうでした。

もうひとつは、AIのコーチをつけないこと。「今日はこのメニューがおすすめです」と提案してくれる機能です。メニューはもう決まっていて、曜日ごとに固定してあります。アプリに提案されると、それを受けるかどうか判断する時間が生まれる。朝の62分の中に、その時間を入れたくありませんでした。

3つ目は、カロリーや食事の管理をしないこと。食事は別のアプリ(あすけん)で記録しています。キロクは筋トレの記録だけ。範囲を広げると、毎朝ひらくアプリとしての軽さがなくなるので。

4つ目は、ほかの人と比べないこと。ランキングも、ほかの人の記録も出しません。筋トレの重さの上げ方は、「決めた回数を全部こなせたら、次回は2.5kg上げる(下半身は5kg)」という考え方でやっています。これは、自分の前回と比べるだけで完結するんですよね。ほかの人の数字は、判断の材料になりません。なんか自分まだまだだなとか、全然ダメだなみたいに、一瞬思っちゃいます。本当は自分との戦いというか、過去の自分との比較でどれだけ成長したかが大事なんですけど、やっぱり比較してしまいます。

作っていく途中で、5つ目も増えました。重さを自動で上げない、というものです。全部のセットをクリアしたら、次回は自動で2.5kg上げて表示する。これは技術的にはそんなに難しくありません。でも、やらないと決めました。アプリは、前回の重さを覚えているだけ。上げるかどうかは、私が決める。そこをアプリに渡すと、朝の画面で「なんでこの数字になってるんだっけ?」と考える時間が入ってきてしまいます。ほかにも、プッシュ通知を出さない、ソースコードは公開しない、といった小さい「やらない」がいくつか足されていって、いまはそれなりの長さのファイルになっています。

入れたくなった瞬間

決めたら終わり、というわけでもなくて。9月9日、公開した次の日に、SNS共有を一度考え直しています。「その日やった画面を、キャプチャしてシェアするだけなら?」と思ったんですよね。技術的には軽いんです。iPhoneに最初からある共有の仕組みを呼ぶだけなので。

でもそのとき、「なんでシェアしたいんだっけ」をちゃんと分けて考えてみました。ブログで画面を見せたいから、という理由なら、開発用の画面のスクリーンショットで足ります。アプリに機能を足す理由にはなりません。記録が続いている実感がほしいから、という理由なら、それはシェアの話じゃなくて、履歴の見せ方の話かもしれない。誰かに見せたい、見せられると嬉しいから、という理由であれば、これは本物の動機で、考え直す価値があります。

で、自分の動機がどれなのか、はっきりしなかったんですよね。なので、そのときは見送りました。これから筋トレを頑張りたいと思っていたパートナーにシェアして、使ってもらいたいなと思いました。そして何より、自分が続けて、そして深く記録していくことができることに、ワクワクしました。

作らなかったことが、申請で効いた

これは、やってみるまで想像していなかったことです。App Storeにアプリを出すときには、いろいろな質問に答える必要があります。年齢制限を決めるための質問、プライバシーに関する質問、コンテンツの権利に関する質問。そこで、作らなかったものが全部効いてきました。

SNS共有がないので、「ソーシャルメディア」「ユーザーが作ったコンテンツ」「メッセージやチャット」の質問には全部「いいえ」で答えられました。通信をしないので、プライバシーの質問には「データを収集していません」。アニメーションを外から拾っていないので、権利の質問は「該当なし」。センサーや健康データを使わないので、医療機器かどうかの質問も「いいえ」です。初回の申請は一度却下されたのですが、そのときに追加で聞かれた「使っている外部サービスの一覧」と「地域による違い」にも、どちらも「なし」と答えられました。機能を足さなかったぶん、説明しなきゃいけないことが、まるごと減っていたんですよね。まずは7割8割でリリースするっていうのが目的だったので、「いいえ」を押すことで記入するべきところが少なかったりして、そもそもの申請のハードルをすごく減らすことができました。

ただ、割り切りが通じない場面もありました。初回の却下の理由は、アプリの中身ではなくて、「このアカウントは審査の実績が少ない」というもの。初めて申請する人に来る、決まった確認でした。実際に動いているところを、iPhoneの画面収録で見せる必要がありました。作らない判断で手間は減るけれど、動くところを見せる手間だけは省けない、ということみたいです。

「やらない」と「まだ作っていない」の境目

ひとつ、失敗もあります。9月4日、申請の準備をしていたときのことです。手元のメモの「実装済みの機能」の中に、実際には作っていない機能が2つ混ざっていました。休憩タイマーと、重さの自動アップです。それを信じて、App Storeの説明文を書いてしまいました。存在しない機能を宣伝する文章です。提出の直前で気づいて、止まりました。AIと一緒に作っていくことの怖さを、ちょっとだけ感じました。

原因は、「やらないと決めたこと」と「作るつもりだけど、まだ作っていないこと」を、同じ場所に書いていたことでした。混ざっていると、どれが本当にあるのか分からなくなる。それで、ファイルを分けて書き直しました。第1部は「やらないと決めたこと」、第2部は「やらないと決めたわけではないが、まだ作っていないもの」。第2部の頭には、太字で「このセクションの機能は存在しません」と書いてあります。

逆に、「やらない」を取り下げたものもあります。種目を自由に追加する機能です。最初は「やらないこと」に入れていました。メニューは固定でいい、と思っていたので。でも、68種目の一覧(図鑑)を作ったら、話が変わりました。「一覧から選ぶ」という形なら、いつもの1タップの流れを邪魔せずに追加できる。前提が変わったので、作りました。やらないと決めたことでも、前提が変われば見直していい。ただ、「なんで最初にやらないと決めたんだっけ」を思い出してから、にしています。

いまの手順と、まだ決めていないもの

「やる」とも「やらない」とも決めていないものも、同じファイルに書いてあります。ひとつは、Apple Watchへの対応。これはやる方向です。✓を手首で押して、横のつまみ(Digital Crown)で重さや回数を変える。くるくる回して数字を変えるのは、±ボタンの延長なので、いまの考え方と合います。ただ、時計のアプリは、iPhoneのアプリとは別のアプリとして作る必要があって、データも自動では共有されません。土台がぐらついたまま2台にすると、「同期がおかしいのか、もとの保存がおかしいのか」が切り分けられなくなる。なので、前回の値を覚える仕組みを先に固めてから、と順番を決めていました。

もうひとつは、英語版。これは止めてあります。筋トレの記録アプリは、App Storeの中でもいちばん混み合っている分野のひとつですし、無料アプリは何語にしても売上はゼロです。それに、EU圏で配信するには別の登録が必要で、個人の場合は自宅の住所がアプリのページに公開されます。多言語にするかどうかは、住所を出すかどうかとセットの話でした。これは調べるまで知りませんでした。有料にするかどうかも、まだ決めていません。いまは完全に無料で、アプリの中の課金も広告もありません。Apple Watchをよく使うので、Apple Watchとの連携のところを、よく考えちゃいますね。

何度か失敗したあとで、新しい機能を思いついたときの手順を6つに決めました。

  1. まず「やらないと決めたこと」を読む。すでに決めた話じゃないか
  2. 「まだ作っていないもの」を読む。作ろうとして手をつけていないものじゃないか
  3. コードで、いまの状態を確かめる。メモを根拠にしない
  4. 一行目の原則に照らす。1タップの流れを複雑にしないか
  5. 足したくなったら、代わりに何を捨てるかをセットで考える
  6. 作ったら、翌朝ジムで実際に使って決める

3番は、説明文の失敗から足したものです。6番は、ボタンを小さくして押しづらくなったときに足しました。手順のひとつひとつに、もとになった失敗があります。

次のバージョン(v1.1)で直した不具合を並べてみたら、ちょっと面白いことが分かりました。問題を起こしていたのは、割り切って作らなかったものではなくて、中途半端に作ったもののほうだったんです。たとえば、図鑑の検索欄。アプリの中でキーボードが出る、たったひとつの場所です。そこだけ、キーボードを閉じる手段が抜けていました。例外として1か所だけ残したから、後始末が漏れた。作らなかったものは、問題を起こしません。当たり前なんですけど、不具合の一覧を見て、初めてそう思いました。検索欄については、「そもそも消してしまう」という案も考えました。68種目なら、部位で絞れば指2回のスクロールで足りるので。今回は残して直しましたけど、不具合のもとごとなくす、という手は、いつでも残してあります。

特段、不満はないです。6つの手順のうち、5番(代わりに何を捨てるか)と6番(翌朝ジムで使って決める)は、いまのところ守れています。キロクの次に作りはじめた旅行の予約アプリ「タビロク」でも、最初にやったのは同じことでした。予約、ビザの手続き、持ち物リスト。やりたいことが3つあって、最初の版では予約だけにしています。

行く前に知りたかったこと

  • 作ったもの:筋トレ記録アプリ「キロク」。作りはじめる前に、入れない機能を4つ(のちに5つ)決めた
  • つまずいた箇所:9月4日、実装していない機能(休憩タイマー・重さの自動アップ)を説明文に書いてしまい、提出直前に気づいて止めた
  • 初めてでもできるか:初めてのApp Store申請では、審査の実績が少ないという理由で一度却下された
キロク - 筋トレ記録

キロク – 筋トレ記録

TAKAHITO MOTOJIMA 無料

 

写真や日々の断片は、こちらにも置いています。
X(@kiokuroku_)/Instagram(@kiokuroku_photo)

関連記事