餃子を包み終わってから、何個作ったか思い出せない。棚卸しの途中で「今のは袋だったか、バラだったか」が分からなくなる。夜中の授乳が今日で何回目か、朝になると自信がない。数え間違いは注意力の問題として片づけられがちですが、実際には起きる場面がかなりはっきり決まっています。ここでは、間違いが生まれる瞬間を三つに分けて整理し、それぞれをどう塞ぐかを、最後に場面別の表で引けるようにまとめます。
数え間違いは、三つの瞬間に起きる
目を離した瞬間 ― 見ずに数える
単位が1でない瞬間 ― 数える前に幅を決める
対象が2つ以上ある瞬間 ― 数える場所を分ける
間違えたあとに戻せるか
場面別の早見表
数えるという作業は、「今いくつか」というたった一つの数を、作業が終わるまで頭の中に置き続けることです。この置き場所は他の作業と共用なので、割り込みが入ると簡単に上書きされます。割り込みの種類は、大きく三つしかありません。
一つめは、目や手を数える対象から離した瞬間です。手元のノートに書く、画面を見て数字を確認する、という動作そのものが対象から意識を外します。二つめは、単位が1でない瞬間です。「6個で1天板」「1袋10本」のように、数えた回数と本当に知りたい量のあいだに掛け算が挟まると、その掛け算がまるごと誤差になります。三つめは、数える対象が2つ以上ある瞬間です。良品と不良品、目数と段数のように数が二つあると、押すたびに「どちらか」を判断する処理が増え、そこで取り違えます。
逆に言えば、対策も三つです。見ないで数えられるようにする、数える前に単位を1にしておく、数える場所を物理的に分ける。以下、それぞれを具体的に見ていきます。実装の例として、音量ボタンで数えるカウンターアプリ Counter1234 の作りを挙げますが、考え方自体は紙とペンでも成り立ちます。
指を折る、おはじきを移す、ポケットの小石を持ち替える。昔からある数え方はどれも「見ないで済む」ことを狙っています。共通しているのは、数えた事実が手応えとして体に返ってくることです。手応えがないと、押したのか押していないのかを確かめるために結局目を使うことになります。
Counter1234 が音量ボタンを使うのは、この理屈からです。押すたびに音量を 0.5 に戻し続けることで、上限や下限に当たらず無限に押せるようにしています。副作用として、アプリが前面にある間はシステム音量が 0.5 に固定されます。音楽やポッドキャストは止まりませんが、音量つまみは効かなくなります。
もう一つ、押した手応えの側も分けてあります。物理ボタン・画面のボタン・長押しリセット・元に戻す、で触覚の強さが変えてあり、目で見なくても何が起きたか区別できます。ただし設定のトグルで止まるのはこの4種類だけで、メモリ操作と初期化の触覚はトグルを切っても鳴ります。
制約もあります。0.13秒より速い連続入力は、OSの自動リピートとみなして捨てられます。反映も押した0.13秒後です。また、バックグラウンドやロック中は数えません。ポケットに入れて数えるなら、アプリを前面にしたままにしておく必要があります。置いた端末を横目で確認したい場合は、全画面表示(1000pt相当まで拡大、90度ずつ回転、長押しで戻る)と「画面を消灯しない」設定(既定はオフ)があります。
札を12枚数えてから1000を掛ける、コップ1杯を数えてから200mlを掛ける。この後追いの掛け算は一度きりなので楽に見えますが、間違えると全部が狂います。対して、最初から「1押し=1000円」「1押し=200ml」と決めておけば、間違いは1押しぶんに限定されます。誤差の大きさが違うのです。
Counter1234 では、4つのボタンそれぞれに独立した整数の幅を持たせられます。正の数も負の数も入り、上限も刻みの制約もありません。ここで注意が要るのは既定値です。Vol- ボタンの既定は +1 で、押すと1増えます。Vol+ は +10 です。名前は表示だけで符号とは無関係なので、減らしたいなら自分で負の値を入れます。減算はもともと、50ptの小さい「修正用」ボタン2つ(既定 -1 と -10)が担う作りです。
設定は整数として読めたときだけ反映されます。空欄や全角数字を入れて保存すると、何も言われないまま元の値が残ります。設定を変えたら、一度押して数字の動きを確かめてから本番に入ってください。
二つのものを一つのカウンターで数えようとすると、押す前に必ず「どちらか」の判断が挟まります。判断は疲れると飛びます。基本は、数える場所を物理的に分けることです。器を二つ置く、紙を左右に分ける、といった原始的な方法がいちばん確実です。
Counter1234 では、名前付きの「メモリ枠」がその役割をします。初期は3件、最大100件まで増やせます。先頭3枠は消せません。名前の長押しで自由に付け替えられるので、品番や種名をそのまま入れておけます。数え終えたら「保存」で枠に控え、0に戻して次の対象へ移る、という使い方になります。控えた値は「呼出」でカウント側へ戻せるので、中断した対象の続きから数え直せます。
名前か数値のダブルタップで、1枠だけを「連携」させることもできます。連携中はカウントが動くたびに、その枠へ値と日時が自動で書き込まれます。ただし連携枠は本体のカウントを写す先で、カウントが動くたびに上書きされます。値をそこへ預けておくことはできず、本体を0に戻せば連携枠も0で上書きされます。連携できるのも同時に1枠だけです。編み物の目数と段数のように二重の数えを扱うなら、連携は使わず、目数用と段数用の枠を2つ作るほうが確実です。段が変わるたびに目数を枠へ保存して0に戻し、段数の側は枠の数値を長押しして直接書き換えます。
間違いを完全に防ぐ設計は無理です。だから、気づいた時点で1押しぶんだけ取り消せるかどうかが実用性を決めます。取り消せない記録は、間違いに気づいた瞬間に最初からやり直しになるからです。
Counter1234 の「元に戻す」は直近50回まで、カウントを変える操作をすべてカバーします(枠への保存や名前の変更は対象外です)。やり直し(redo)はありません。この履歴はアプリを終了すると消えますが、カウントそのものは端末に保存されるので、電話で中断しても数は残ります。
0に戻すのは、数字の右にある「リセット(長押し)」ボタンです。数字そのものを長押ししても0にはならず、カウントの編集ダイアログが開きます(左の「編集(長押し)」ボタンと同じ動きです)。画面下にはもう2種類の初期化があり、「枠・名称を残して数量のみ初期化」と「すべてを初期化」です。この2つはどちらもカウントが0に戻り、幅も既定の 10 / 1 / -1 / -10 に、物理ボタンと触覚の設定もオンに戻ります。違いは枠の扱いだけで、前者は枠と名称を残して値だけを空にし、後者は枠そのものを空の3件に戻します。せっかく決めた幅が消えるので、枠を空にしたいだけのときも設定を入れ直す前提で押してください。
カウントには上限も下限もなく、0で止まらずそのまま負の数に進みます。これは残数を数える場面ではむしろ利点で、服薬の残りがマイナスになれば取り過ぎに気づけます。逆に、0で止まってほしい用途では止まりません。
書き出しについても誤解しやすい点があります。CSVに出るのはメモリ枠の現在のスナップショットだけで、番号・名称・カウント・保存日時の4列です。今画面に出ているカウントは、枠に保存するか連携しない限り1件も出力されません。1回ごとの発生時刻が積み上がる履歴ログではない、ということです。Excel対策にUTF-8のBOMが付いているので、書き出したファイルはそのまま開けます。
以下は、三つの瞬間のどれが効いているかで場面を並べたものです。「幅の設定例」はこの記事で想定した値であり、アプリの推奨値ではありません。既定値は Vol- が +1、Vol+ が +10、修正用が -1 と -10 の4つだけです。数える対象が複数ある行のうち、検品ライン・編み物・野鳥・交通量調査のように対象を順番に片づけるものは「1つ数え終えたら枠へ保存して0に戻す」作業になります。入退場や引っ越しの段ボールのように増減が同時に起きるものは、2つのボタンに割り当てて1つのカウントで扱います。
| 場面 | 数え間違いが起きるところ | 防ぎ方 | 幅の設定例 |
|---|---|---|---|
| 餃子・惣菜を包む | 手が粉と餡で汚れて画面を触れず、包み終わってから数え直す | 音量ボタンで加算し、触覚で入ったことを確認 | Vol- = +1(既定のまま) |
| パン生地の分割・仕込み | 「6個で1天板」と塊で進み、天板数と個数が混ざる | Vol+ に天板単位、Vol- に1個単位を割り当てる | Vol+ = +6、Vol- = +1 |
| ネジ・部品の棚卸し | 1袋10本入りとバラ品が混在し、袋か本か分からなくなる | 袋とバラをボタンで分け、品番を名前にした枠へ保存 | Vol+ = +10、Vol- = +1 |
| レジ・金庫の札勘 | 枚数を数えてから金額に掛け直す二度手間で間違える | 最初から金額の幅で数える | Vol- = +1000、Vol+ = +10000 |
| 筋トレのレップ | きつくなるほど数を落とし、画面を見るとフォームが崩れる | 音量ボタンと触覚だけで数える | Vol- = +1 |
| 縄跳び・素振り | リズムに乗ると数が飛ぶ。100を超えると特に | 「画面を消灯しない」を入れ、全画面の巨大な数字を横目で見る | Vol- = +1 |
| プールの往復・トラックの周回 | 1往復=2本など単位が二重で、途中で数え方が入れ替わる | 幅を「1往復=2」にして単位を1つにする | Vol- = +2 |
| 登山の水の残り | 減っていく数をうっかり足す。手袋で画面が反応しない | 減る側を物理ボタンに割り当て、行動食は別の枠で数える | Vol- = -500(ml) |
| 授乳・おむつ替えの回数 | 夜中で寝ぼけていて、暗い部屋で画面を見たくない | 画面を伏せたまま押し、枠を用途別に分けて日ごとに保存 | Vol- = +1、Vol+ = +1 |
| 水分摂取量の記録 | コップ1杯を毎回mlに換算し直すので、そこで狂う | よく使う容量を幅にしておく | Vol- = +100、Vol+ = +200、修正用 = -100 / -200 |
| 服薬の残数 | 減算なのに増やしてしまい、残りゼロを跨いで気づかない | 減る方向で数える。負の数が出れば取り過ぎに気づける | Vol- = -1 |
| 編み物の目数と段数 | 対象が2つあり、段を進めるときに目数のリセットを忘れる | 目数用と段数用に枠を分け、段が変わるたびに目数を保存してリセットボタンの長押しで0に | Vol- = +1 |
| 野鳥・昆虫の種別カウント | 種類が増えると紙のメモが追いつかず、後から合計が合わない | 種名を付けた枠を必要なだけ作り、種を替えるたびに保存して0へ | Vol- = +1 |
| 流星群の観測 | 画面を点けると目の暗順応が失われ、次の1個を見逃す | 画面を伏せたまま音量ボタンだけで数え、触覚で確認 | Vol- = +1 |
| 交通量調査 | 紙の正の字が追いつかず、時間帯の区切りで合計が合わなくなる | 時間帯ごとの枠を作り、区切りで保存して0に戻し、CSVで提出 | Vol- = +1 |
| イベントの入退場 | 出入りが同時に起きて、頭の中で±が混線する | 物理ボタンの片方を入場、もう片方を退場にして在館数を出す | Vol+ = +1、Vol- = -1 |
| 検品ラインの良品/不良品 | 良品を数えながら不良を見つけると、そこで良品の数が飛ぶ | 良品用と不良品用の枠を分けて作り、区切りごとに枠へ保存して0に戻す | Vol- = +1 |
| 封入・宛名貼りの通数 | 単調作業で意識が飛び、中断されると再開位置が分からない | カウントは端末に保存されるので、閉じても数は残る | Vol- = +1、Vol+ = +50(束) |
| ビス・木材の本数 | 手袋と粉塵で画面が反応せず、取り置きと使用分が混ざる | 音量ボタンで数え、部材名を付けた枠に必要数を控える | Vol- = +1、Vol+ = +4 |
| 苗の定植・収穫コンテナ | 畝の途中で中断が入り、どこまで植えたか分からなくなる | 畝ごとに枠を作って区切る | Vol- = +1、Vol+ = +20(1トレイ) |
| 講演での口癖の回数 | 画面を見た瞬間に話の内容を聞き逃す | ポケットの中で押すだけにする | Vol- = +1 |
| 写経の巻数・百度参り | 数を意識すること自体が集中を切る | 目を閉じたまま押し、数え終わってから画面を見る | Vol- = +1 |
| ペットの発作・嘔吐の回数 | その場は対応で手一杯で、記録が後回しになり忘れる | その場で1回押す。枠に保存した時点で日時が入る | Vol- = +1 |
| 引っ越しの段ボール数 | 積み込みと積み下ろしを別々に数え、合わなくなる | 積み込み数を枠に保存し、下ろすときは減らして0になるか見る | Vol+ = +1、Vol- = -1 |
表のどの行も、やっていることは同じです。目を離さずに済む形にし、単位を1に揃え、対象ごとに置き場所を分ける。道具が何であっても、この三つが揃っていれば数は合います。