連載「carb-icr 開発日誌」· 第14編/全14編
自動化は、手入力を奪ってはいけない
仕組みが届かない時間を、設計に織り込む(開発日誌 14)
センサーが値を返さない時間が、現実にはどうしても生まれます。そのとき手で入れられないと、道具は止まってしまう。自動化が、人の手を奪わない。現実の空白を前提に置く。最後まで守ったその一線の話を、一緒に。
連載「carb-icr 開発日誌」· 第14編/全14編
仕組みが届かない時間を、設計に織り込む(開発日誌 14)
センサーが値を返さない時間が、現実にはどうしても生まれます。そのとき手で入れられないと、道具は止まってしまう。自動化が、人の手を奪わない。現実の空白を前提に置く。最後まで守ったその一線の話を、一緒に。
何かを自動化したとき、いざ自動がうまく働かない場面で、手でやる道までふさがってしまうことがあります。便利にしたつもりが、自動が空振りした瞬間に、人は何も入れられなくなる。自動化を足すときに見落としやすいのは、足したことではなく、元からあった手の道を知らないうちに削っていないか、というところです。今日は、その一点を設計でどう守ったかを一緒に考えます。
前回は、要らない機能をあえて削る話でした。そうやって削ぎ落とした道具に、ひとつだけ、最後まで守った一線があります。それは、自動化しても、人が手で入れる道を、決してふさがない、ということでした。今日は、その一線の話です。きっかけは、自動化のいちばんの土台である、血糖のセンサーそのものにありました。
血糖を自動で取りに行く仕組みは、センサーが値を流してくれることが前提です。でも、そのセンサーには、値を返せない時間があります。新しいものに付け替えると、なじむまでに1時間ほど、何も返ってこない。しかも、いつでもすぐ付け替えられるとも限りません。前のものが切れてから、次を着けるまでに、間が空くこともある。つまり、自動の血糖値には、ぽっかり穴があく時間が、現実に生まれます。
ここが、設計の分かれ目でした。自動でぜんぶ埋まる、という前提で作ってしまうと、その穴の時間に、道具が手も足も出なくなる。値が来ないのに、手で入れる道もない、という状態です。これは、便利さのために、いちばん大事な「とにかく記録できる」を手放すことになりかねません。自動化を、ありがたい近道として足すのはいい。でも、その近道が通れないときに、元の道までふさいでしまっては、本末転倒です。
理屈の順番を整理しておきます。自動化は、もともとできていたことに、速さや手間の軽さを上乗せする働きです。上乗せである以上、土台の能力は減らさないのが筋になります。ところが実装では、自動を主役に据えるほど、手入力は「自動が効かないときの例外」に格下げされやすい。例外扱いになった経路は、設計の注意も実装の手当ても薄くなり、いちばん必要な穴の時間に限って動かない、ということが起きます。自動を足すと決めたなら、手の道は格上げこそすれ、格下げしてはいけない。これが、この記事を通して守った原則です。
身のまわりにも、似たことがあります。自動で開くドアが、停電のときに手でも開けられないと、閉じ込められてしまう。便利な自動レジに、人の対応が1つも無いと、機械が戸惑った瞬間に、列ごと立ち往生する。自動は、うまく働くときはありがたい。でも、働かないときに、人が手で引き継げる余地を残しておかないと、便利さが、そのまま弱点に変わります。足すのはいい。引いてはいけない。その順番だけは、守る必要がありました。
そこで、決めました。自動で入る仕組みは、あくまで手入力の上に、足すだけにする。手で入れる道は、何があっても、いつでも開けておく。
具体的には、こうしました。血糖を入れる欄は、ふつうに手で打てる、ただの入力欄のままにしておく。自動で値が取れたときだけ、そこにそっと入れる。取れなかったときは、何もしない。欄は空のままで、手で打てば、それでいい。そして、自動が入れにいくのは、欄がまだ空のときだけ。すでに手で何か入れてあれば、自動はそれを上書きしません。自動はあくまで、空いているところを埋める手伝いであって、人の入れたものを書き換える主役ではない。足すことはあっても、引くことはしない。この一線を、はっきり引きました。
この設計には、もうひとつ利点があります。自動の挙動が「空のときだけ書く」と一文で言い切れると、振る舞いが読みやすくなる。いつ値が入るのか、入らないのかを、その一文に照らせば判断できます。逆に、状況に応じて上書きしたりしなかったりと条件を増やすほど、使う人は何が起きるか予測しづらくなる。優先順位を「人の手が常に上」と固定したことは、安全のためだけでなく、振る舞いを単純に保つための選択でもありました。
細かいところでは、こんな気もつかいました。自動の取得には、少し時間がかかります。その取得を待っているあいだに、人が先に手で打ち始めることがある。もし、取得が後から終わって、人の打った値を上書きしてしまったら、台無しです。だから、自動が値を入れるのは、その瞬間にも欄がまだ空のときだけ、と念を押しました。人の指のほうが、いつでも自動より優先される。自動は、人が手を出していない隙間にだけ、そっと入る。ささいなことに見えて、ここを外すと、せっかく手で入れた値が、知らないうちに書き換わる。判定の基準を「処理を始めた時点」ではなく「実際に書き込む瞬間」に置く。この置き場所の違いが、上書き事故を防ぐ要でした。主役は、あくまで人の手のほうです。
もうひとつ、気をつけたことがあります。それは、自動が空振りしたときに、黙って何もしないと、壊れたように見えてしまう、ということでした。
センサーが穴の時間にあると、自動で取りにいっても、値がありません。ここで無言のままだと、使う人は「あれ、入らない。故障かな」と受け取ります。同じ「値が入らない」でも、それが仕組みの想定どおりの空白なのか、本当の不具合なのかは、画面の外からは見分けがつきません。だから、そういうときは、ひとこと案内を出すようにしました。この時間帯は値が無いので、手で入れてください、と。放っておかれるのと、手で入れてと案内されるのとでは、次の一手の分かりやすさがまるで違います。自動が届かないことを、隠さずに伝えて、人の手へなめらかに渡す。穴があるのを前提に、その穴をどう橋渡しするかまで、設計のうちでした。案内とは、つまり、自動から手動への引き継ぎを言葉で明示することです。引き継ぎが宣言されていれば、人は迷わず手の道へ移れます。
ふりかえると、ここで効いたのは、現実には穴があく、と最初から認めたことでした。センサーは時々値を返さない。通信は時々途切れる。仕組みは、いつも完璧には届かない。それを「めったに無いから」と見ないことにすると、ちょうどその穴に落ちたときに、道具ごと立ち往生します。確率が低いことと、起きないことは違う。低い確率のほうこそ、起きたときに備えがないと、いちばん困る場面になります。
自動化を考えると、つい、全部がうまく回る晴れた日を思い描きます。でも、ほんとうに設計が試されるのは、雨の日のほうです。仕組みが届かないとき、人が手で引き継げるか。自動が、人の手段を奪っていないか。完璧に動くことより、うまく動かないときにどうなるかのほうに、その道具が信頼できるかどうかが、表れます。信頼とは、調子のいいときの性能ではなく、調子が悪いときの振る舞いのほうで決まるものでした。
うまくいくときの設計は、つい先に思いつきます。難しいのは、うまくいかないときの設計のほうです。値が来なかったら。通信が切れたら。途中で力尽きたら。そのときに、何が起きて、人はどう引き継ぐのか。ここを先に考えておくと、いざ穴に落ちても、道具は止まりません。逆に、晴れた日しか想定していない道具は、最初の雨で止まります。自動化を信頼できるものにするのは、うまく動く部分ではなく、うまく動かないときの受け身のほうでした。失敗のしかたを先に決めておくこと、と言い換えてもいい。どう壊れるかを設計しておいた道具は、壊れても人を置き去りにしません。
もしあなたが、これまで手でやっていたことを自動化するなら、その自動が働かないときに、手でやる道が残っているか、を確かめてください。自動はあくまで、上に足すもの。下にあった手の道を、ふさいではいけません。
仕組みは、いつか届かない時間を作ります。そのとき、人が手で引き継げるようにしておく。そして、自動が空振りしたら、黙らずに、手へ案内する。便利さは、いざというときの手の道を残したうえで、足すものでした。自動化の本来の仕事は、人の手を奪うことではなく、人の手が空く時間を増やすことなのだと思います。手を奪う自動化は、空白の時間に人を困らせる。手を空ける自動化は、いつでも手に戻れる余地を残したまま、ふだんの手間だけを軽くしてくれます。
今日からできるのは、何かを自動化したら、わざと1度、その自動を止めてみることです。電源を抜く、通信を切る、わざと変な入力をしてみる。そのときに、自分が手で続けられるか。続けられないなら、自動が、いつのまにか手の道をふさいでいた合図です。うまくいく確認だけでなく、うまくいかないときの確認まで。両方をそろえて初めて、その自動化がどんな日でも使えるかどうかが分かります。次回は、その自動が、ちゃんと裏で働いていたのに、なかなか実感できなかった話を。動いていることと、届いていることも、また別でした。
これは、自分の治療のために作っている自作自用版での話です。広く公開しているのは記録と集計に絞った carb-icr(無料・通信なし・ブラウザで動くPWA)。プロジェクトの概要は carb-icr のプロジェクトページ に。
本アプリは記録と集計の補助で、表示される値はすべて参考です。診断・治療、インスリン投与量の計算、治療パラメータの決定は行いません。投与量・治療方針は必ず主治医の指示に従ってください。