「失敗の通知」は動いたときしか鳴らない — 体組成計の自動取得を3か月動かして分かったこと

「失敗の通知」は動いたときしか鳴らない — 体組成計の自動取得を3か月動かして分かったこと ガジェット・健康管理

体組成計に乗る習慣はついたのに、その数字を記録する習慣がつかなかった。

アプリを開いて手で入力する、というたったそれだけの手間が越えられない。数日は続いても、そのうち止まる。止まると、それまでの記録も見返さなくなる。だったら自動で集めればいい。使っているのはタニタの体組成計で、測定データは同社の会員サービス「ヘルスプラネット」に溜まっている。そこから月に一度、自動でデータを取ってくる仕組みを自分で組んだ。

この記事は、その仕組みの「組むまで」「初回が来なかった月」「そのあと」を1本にまとめた記録だ。8月に組んでから、3回の月初をまたいでいる。

体組成計や自動化に縁が無くても、たぶん関係がある。口座の自動引き落とし、スマートフォンのバックアップ、家計簿アプリと銀行の連携。自動で動いているつもりのものは、止まっても、止まったことを知らせてくれるとは限らない。この記事の軸はそこにある。持ち帰ってほしいのは2つで、「動かない」ことは誰が見張るのか、ということと、「未解決」と書いた記録はまず書いた本人を疑う、ということだ。なお、手入力をやめたいだけなら、こんな仕組みは要らない。それは最後に書く。

組むまでの8日間 — 疑っていた相手が違った

最初につまずいたのは自動ログインだった。ユーザー名とパスワードの入力までは進むのに、その先へ行かない。手で同じ操作をすると通る。プログラムから押すと落ちる。この非対称さを見て、自分は「ツール側の問題だ」と結論し、メモに「未解決」「既知の不具合」と書いた。書いた瞬間、その先を調べるのをやめている。

8日後に腰を据えて調べ直すと、ツールのバグではなく、自分の設定の問題が3つ重なっていた。細かい話なので、急ぐなら3つ目だけ読んでもらえれば足りる。

1つ目と2つ目は、仕組みの書き方の話だ。押すべき送信ボタンが、ページの内部ではボタンではない別の部品として作られていて、仕組みの側は永久に現れない「ボタン」を待ち続けていた。さらに、ログインが成功しても結果の受け取り方が間違っていて、成功が失敗として届いていた。

3つ目がいちばん気づきにくかった。ログインできたかを「画面に『ログアウト』の文字があるか」で判定していたのに、画面を読み取る設定が抜けていて、日本語がすべて文字化けしていた。化けた画面に「ログアウト」の4文字は無い。だからログイン済みでも「切れている」と判定され続けた。後から見返すと、成功を知らせる1行が、化けた形で毎回画面に出ていた。鍵は最初から開いていたのに、ドアノブの表示が読めずに、閉まっていると思い込んでいた。

体組成計データの自動取得で重なっていた3つの不具合(押すべきボタンがボタンではなかった/成功を失敗と受け取っていた/文字化けが判定を壊していた)が、1つの大きな謎に見えていたことを示す図解。

実際は、回避策で運用しながら7日放置し、8日目に調べたら半日で解けた。時間がかかったのは難しかったからではなく、「未解決」と書いて手を止めていたからだ。

初回は、来なかった

仕組みは、毎月1日の朝、決めた時刻にパソコンが自動で処理を起動し、前月分のデータを取ってファイルに保存する形にした。取れなければ処理が自分でエラーを記録し、画面に通知を出す。わざと失敗させて、通知が出ることも確かめてあった。

9月1日の朝、パソコンの電源は切ってあった。それ自体は想定内で、Windowsに最初から入っている予定実行の機能(タスクスケジューラ)に「開始時刻を逃した場合は、次に起動したときにすぐ実行する」という設定を入れてあった。以下、この後追いの実行を「追い掛け」と呼ぶ。夕方に起動すると、ほかの予定は追い掛けでまとめて走った。月次の取得だけが、そこに含まれていなかった。

気づいたのは、この処理を見に行ったからではない。同じ日に初回を迎える予定がほかにもあり、まとめて確かめていたついでに見つかった。記録には9月1日の行が1行も無い。エラーも通知も無い。留守中に荷物が届けば不在票が残るが、この予定は不在票を残さなかった。

通知が鳴らなかった理由は単純で、通知を出すのは処理自身だったからだ。「動いて失敗した」なら、処理がエラーを書いて知らせる。だが処理が起動しなければ、知らせる主体がそもそもいない。自分が作った失敗検知は、「動いて失敗する」ことしか想定していなかった。

失敗検知の穴を示す図解。動いた上での失敗は通知が出て想定の範囲内だが、処理が起動しない場合は通知を出す主体がいないため気づけず、設計の外側になることを表す。

そのとき自分は、原因を絞れないまま記事を書き、こう約束した。外から見張る仕組みだけは原因と関係なく置けるので、次の初回の前に置く、と。

10月1日 — 約束した見張りを置かないまま

正直に書く。その見張りは置かなかった。忘れていた。

9月30日の夜から10月1日の夕方まで、パソコンは止まっていた。10月1日の朝の予定時刻にも電源が切れていて、月次の取得は動かず、起動後の追い掛けにも入らなかった。9月とまったく同じ形だ。

しかも、そのことに半月気づかなかった。見つかったのは10月中旬、別の作業(通知の棚卸し)のついでで、「8月に手で動かして以来、一度も取れていない」と分かった。9月と同じく、見に行ったのではなく、ついでに見つかった。「そもそも動いたかは別に見張る必要がある」と書いた本人が、それを実行できていなかったことになる。

見つけた翌日、予定の回ごとに記録が残っているかを、処理とは別の一覧画面で確かめる仕組みを置いた。置いてすぐ、同じ欠けをちゃんと拾った。ただしこれは後から付けた確認で、10月1日の時点で働いていたわけではない。

原因の見立てと、作り替え

原因は、確かなことと、有力なことと、確かめていないことに分けて書く。

  • 確か: 9月1日も10月1日も、予定の時刻にパソコンの電源が切れていた。
  • 有力: 月単位の予定は、起動後の追い掛けの対象にそもそも入っていない。8月中旬以降の追い掛けの記録を遡っても、月単位の予定が走った記録は1件も無かった。
  • 確かめていない: これを公式の資料で裏付けたり、同じ条件を作って再現させたりはしていない。

9月にこの記事で書いていた「実行の権限や打ち切りの条件の組み合わせ」という見立ては、いまは有力な候補から外している。条件の違いを探すより、「月単位の予定が追い掛けで走った記録が1件も無い」という事実のほうが、2回の失敗を素直に説明するからだ。

そのうえで、原因を突き止めるより確実さを取った。毎月1日の朝という予定をやめ、パソコンにログオンしたとき(電源を入れて使い始めたとき)に「今月分はもう取れているか」を見て、まだなら取る形に作り替えた。電源が切れていようが、予定の日を逃そうが、その月に初めてパソコンを使った時点で取りに行く。月単位の予定に頼るのをやめた、と言った方が近い。この形なら、有力な見立てが外れていても困らない。原因が何であれ、その月に一度でもパソコンを使えば取りに行くからだ。

作り替えて最初のログオンでは、取りこぼしていた9月分が取れた。ただし取ったあとに後片付けの残りが居座り、ほかの処理が1時間ほど足止めされた。これはその夜に直した。翌日のログオンでは「今月分は済み」と判断して、何もしなかった。作ったとおりだ。

11月1日 — 作り替えて最初の月初

11月1日は日曜日だった。予定の時刻に頼らない形にしたので、何時にパソコンを点けるかは関係ない。その日最初にログオンしたあと、少しして10月分のデータが取れていた。

10月に取れた9月分は、作り替えたあとに取りこぼしを拾い直したものだった。月が替わって、その月の最初のログオンで前の月の分が取れたのは、8月に組んでから、これが初めてになる。まだ1回だけで、来月も動くとは言い切れない。それでも3回目の月初で、ようやく「動いた」と書ける。

3回の月初で分かったこと

冒頭の2つを含めて、3回の月初で自分が持ち帰ったのは次の4つだ。

  • 「失敗したら通知」は、動いたときしか守ってくれない。そもそも動いたかは、処理の外から別に見張る必要がある。
  • 「何も起きていない」と「確認できていない」は、見た目が同じ。記録に何も無いときは、「無い」ことを誰が保証しているのかを一度考える。
  • 「未解決」「既知の不具合」と書いた記録は、書いた本人を疑う。自分の場合、原因を外に置いた記録は、書いた時点で調査が止まっていた。
  • 失敗の表示は、処理の失敗ではなく、判定の失敗のことがある。

最後の1つは、別の自動処理でも起きた。仕事は済んでいたのに、記録に1行書けなかっただけで「失敗」になっていた話を、点検ジョブが「失敗」で終わった朝、計測は成功していたに書いた。

もう1つ足すなら、「次までにやる」と書いた約束は、書いただけでは実行されない。自分は記事に書いた約束を、次の初回まで忘れていた。

割に合ったか、記録が続かない人へ

率直に言えば、手で入力し続けた方が早かった。月に数分の入力を消すために、組むまでに8日、そのあとも2回の取りこぼしと作り替えを挟んでいる。元が取れるのはだいぶ先だ。それでも続けたのは、記録が続かない原因が根気ではなく手間の側にあると確かめたかったからで、時間対効果で選んだ道ではない。

手入力をやめるだけが目的なら、こんな回り道は要らない。体組成計とスマートフォンのアプリを連携させれば、乗るだけで記録が残る機種は多い。自分が遠回りしたのは、データを表形式のファイルとして手元に置いておきたかったからで、目的が違えば道具も違う。同じ健康まわりでも、スマートバンドのデータを書き出したあとにどう読んだかは、スマートバンドの書き出しデータを、全部読まずに集計した手順に書いた。こちらが「取ってくる側」なら、あちらは「読む側」の話になる。

なお、使った自動操作ツールの名前と具体的な設定は、この記事でも書いていない。同じ手順が、自分以外のアカウントへ自動ログインする手がかりにもなりうるからだ。

自動で動いているつもりのもの(引き落とし、バックアップ、アプリの連携、パソコンの定期処理)が手元にあるなら、今日ひとつだけやってほしい。その記録が最後に増えた日付を見る。それだけで、この記事に書いたことの半分は確かめられる。

本記事にアフィリエイトリンクやPR案件は含まれていない。

Comments

タイトルとURLをコピーしました