【開発の裏側㉖】ボタンは赤く光るのに、メールが1通も送られていなかった話

【開発の裏側㉖】ボタンは赤く光るのに、メールが1通も送られていなかった話

記事
IT・テクノロジー
どうも、FXトレーダー兼システムエンジニアのナオトです。

意識ラインのブレイクを知らせるインジケーターを作り直していたときのことです。
メールで知らせる機能が、どの設定でも1通も送っていなかったことが分かりました。
今回は、その原因と、見つけにくかった理由の話です。



このインジケーターには、メールで知らせる時間足を選ぶボタンが9個あります。
押すと赤く光って、その時間足のブレイクをメールで知らせる、という作りです。

画面の見た目は正しく動いていました。ボタンを押せば光り、もう一度押せば消えます。
ところが、どのボタンを光らせても、メールは送られていませんでした。



原因は、ボタンの手前にあった、もう1つのスイッチでした。

メールを送るかどうかを決める判定の1行目に、メール全体を止める変数がありました。
この変数は、パラメーターの画面にも出てこず、プログラムのどこからも書き換えられていませんでした。
最初に止める値が入ったまま、ずっとそのままだったんです。

判定の1行目で必ず止められるので、ボタンを何個光らせても、その先に進めません。
ブレイクの知らせも、それ以外のメールも、同じ所で止まっていました。



見つけにくかった理由は2つあります。

1つは、画面に何の手がかりも無かったことです。
全体を止めるスイッチは、画面のどこにもありません。光っているのに送られない、という、いちばん気づきにくい形でした。

もう1つは、その前にしていた確かめ方です。
時間足ごとのボタンが正しくオンとオフになるかは、9個すべて確かめて合格していました。
ただ、見ていたのはボタンの部品だけで、その手前の条件までは見ていませんでした。
部品を1つずつ確かめても、呼ぶ側に余計な条件が付いていると、それは捕まえられません。



直し方です。

全体を止める変数は、なくしました。
送るかどうかの判定を1か所にまとめて、時間足ごとのボタンだけがスイッチ、という形にしました。
条件をあちこちに散らしたことが、今回の原因だったからです。

そして、判定の確かめを5つ、いつでも走らせられる形で置きました。
ボタンがオフなら送らない。オンなら送る。同じ知らせの間隔の内側なら送らない、といった確かめです。

最後に、この確かめがちゃんと落ちるかも見ました。
判定をわざと直す前の状態、つまり、いつも送らない状態に戻して走らせると、ボタンがオンなのに送らなかった、で2つが落ちました。
通ってしまって何も気づかない確かめでは、意味がないからです。



作り直した e-BreakerDetectPro は、9つの時間足の意識ラインと、そのブレイクを知らせるインジケーターです。


最後までお読みいただき、ありがとうございました。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す