こんにちは、時短ギア管理人の清光です。

コードは書けない現役の営業ですが、AIと一緒に、現場が毎日使う業務システムを1年以上つくり続けてきました。

「たまに入力が消える」という報告、扱いに困っていませんか。

自分で試すと再現しない。でも使っている人からは何度も言われる。

あれが一番やっかいなんですよね。

この記事では、そういう再現しない不具合の切り分け方法として、私に実際に効いた「時間の帯に描く」やり方を紹介します。

電話をしながらスマホで入力している手元
入力から保存までを、1本の時間の線にして考える

再現しない不具合は、原因が1つとは限らない

自作の業務ツールで、こんな報告が上がってきました。

「電話しながらスマホで入力して、すぐ通話に戻ると、書いたものが消えていることがある」。

最初は自動保存の設定ミスだと思って、そこだけ見ていました。でも直しても報告は止まりません。

正直、ここで数日溶かしました。

行き詰まった理由ははっきりしていて、「消える/消えない」の条件を言葉で並べようとしていたからです。

条件を文章で書くと、無意識に原因を1つに決めつけてしまうんです。

操作からデータが確定するまでを、1本の帯に描く

切り替えたのは、絵にすることでした。

横軸を「最後にキーを打ってからの経過時間」にして、紙に1本の帯を引きます。

そのうえで、帯のどこで画面を離れたら消えるのかを、実機で試しながら塗り分けていきました。

手順は3つです。

  1. 起点と終点を決める(起点=最後の入力、終点=データがサーバに届いた時点)
  2. その間に起きる処理を、起きる順に帯の上へ並べる(例:少し待つ → 送信する → 返事が返る)
  3. 区間ごとに画面を離れて、消えるかどうかを実際に試す

大事なのは3つ目で、「離れる」を必ず本番と同じ操作でやることです。

私の場合は通話に戻る動きなので、タブを閉じるのではなく、ホーム画面へ戻る操作で試しました。

帯に描いたら、犯人が2人いた

塗り分けて分かったのは、消える区間が1つではなかったことです。

しかも、区間ごとに消える理由が違っていました。

画面を離れたタイミング 結果 犯人
打ち終わった直後 消える 保存処理がまだ動き出していない
送信が始まった途中 消える 送信が打ち切られ、送れなかった分を捨てていた
送信が終わったあと 残る (正常)

1人目は、入力が止まってから少し待ってまとめて送る作りだったこと。待っている最中に離れると、そもそも保存が始まっていません。

2人目は、送信の途中で画面を離れるとブラウザ側が通信を打ち切ること。しかも打ち切られた分を、後で送り直さずに捨てていました。

この2つは、使う人から見た症状がまったく同じです。

だから「たまに消える」という1件の報告にまとまって上がってきていたわけです。

最初にハマったのが、まさにここでした。1人目を直した時点で「直りました」と伝えてしまい、翌日また同じ報告が来ました。

直し方は、犯人の数だけ層を重ねる

結局この機能は、保存を3層に重ねる形へ作り直しました。

  • 一定間隔で自動保存する(普通に使っている間の保険)
  • 画面を離れる合図が出た瞬間にも保存する(直後の離脱をここで拾う)
  • 送れなかった分は端末の中に一時保存し、次に開いた時に戻す(打ち切られた分をここで拾う)

ポイントは、1層ずつが別々の犯人に対応していることです。

逆に言えば、帯に描いて犯人を2人に分けるまでは、どの層が要るのかも決められませんでした。

3枚重ねた紙で保存の3層を表したイメージ

この切り分け方法は、自作アプリ以外でも効く

ここまで自作ツールの話をしてきましたが、普通の会社員の仕事でも同じことが起きます。

申込フォーム、勤怠の入力、共有のスプレッドシート。「たまに入っていない」が起きる場所は、どれも入力から確定までに時間の幅があります。

その幅を1本の線にして、どこで手を離すと壊れるかを区切ってみる。それだけで、報告の文章では見えなかった境目が出てきます。

コードが読めなくても、この作業はできます。見ているのは画面と時間だけなので。

コードを読まずに不具合を追う考え方は、非エンジニアのデバッグ手順の記事にも書きました。

次に出てくる疑問に先回りします

Q. 再現しないのに、どうやって区間を試すんですか?

「再現させる」ではなく「狙って壊す」と考えると早いです。

打った直後にわざと画面を離れる、を10回続けてやってみてください。狙って壊しに行くぶんには、たいてい再現します。

Q. 犯人が2人いるかどうかは、どう見分けますか?

区間ごとに結果を書き出して、同じ理由で全部説明できるかを見ます。

1つの理由で説明しきれるなら犯人は1人です。説明が途中で苦しくなったら、そこに2人目がいます。

Q. AIには何をどう頼めばいいですか?

帯に描いた事実をそのまま渡すのが一番効きました。私はこう投げています。

入力してから保存されるまでの流れを、時間順に区間で分けてください
各区間で画面を離れたら何が起きるかも、区間ごとに書いてください
まだ直さないで、区間の一覧だけ先に出してください

先に「まだ直さないで」と言うのが効きます。

いきなり直させると、1人目の犯人だけ潰して終わってしまうので。

まとめ

  • 「たまに消える」は、1つの原因では説明できないことが多い
  • 条件を文章で並べるより、操作からデータが確定するまでを1本の帯に描くほうが速い
  • 区間ごとに離脱を試すと、症状が同じでも犯人が分かれて見える
  • 直す層は、見つかった犯人の数だけ必要になる

浮くのは、再現しない不具合を前に固まっている時間です。

私の場合は数日迷っていたものが、帯を描いた日のうちに切り分けまで進みました。

今日はここまで。

この記事が、あなたの時間を少しでも価値に変えるお手伝いになれば嬉しいです。

それでは、また次の時短ハックでお会いしましょう。

自作している業務システムのことや、お仕事のご依頼はお問い合わせからどうぞ。