0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自動起動タスクは「成功」なのに何も動いていなかった:起動記録の存在判定と終了コード伝播の修正

0
Posted at

みなさん、こんにちは!
トレーディング支援端末「ALPHA FORGE」を開発している八咫烏(やたがらす)です。

Windowsのログオン時に自作アプリを自動起動していたところ、タスクの結果は「成功」なのに、アプリが何も起動していない状態になっていました。
本記事では、2026年9月28日のコミットで直した「起動記録の存在だけで稼働中と判断する問題」と「内側の失敗が外側へ伝わらない問題」を整理します。

確認範囲:当時のコミット本文と起動スクリプトの差分を照合しました。旧版での再現や本番の起動・停止操作は行っていません。

起動の構成

入口は1本で、中で別の起動スクリプトを呼びます。外側が準備をし、内側がアプリを立ち上げる役割分担です。
二重起動を避けるため、起動したプロセスの番号を記録するファイルがありました。とくに決まった時刻に仕事を発火する時計役が2つ動くと、同じ処理が重なるため必要な用心です。

問題1:記録ファイルの「存在」だけを見ていた

修正記録によると、9月15日から中身が空({})の古い起動記録が残っていました。プロセスの番号は入っていません。
当時の判定はファイルが存在すれば「すでに起動中の可能性がある」として終了コード1を返し、起動を中止するものでした。

名札が置いてあるだけで、本人が出勤していると判断していた状態です。

問題2:内側の失敗が外側で途切れていた

内側は終了コード1を返していましたが、外側のスクリプトが内側の終了コードを自分の終了コードとして返していませんでした。
その結果、起動していないのにタスクは成功扱いになりました。

なお、古い記録が9月15日から残っていたことは確認できますが、その間アプリが一度も動かなかったとまでは言えません(別の入口から起動できるため)。

修正内容

  1. 記録されたプロセスの生存確認:生きたプロセスがあれば二重起動を避けて中止。すべて停止済みなら古い記録を片づけて起動を続ける
  2. 記録に載らない起動の確認:別の入口から起動した裏方のプロセスや、画面とAPIの待ち受けを調べ、すでに動いているなら止まる
  3. 終了コードの引き継ぎ:外側は内側を呼んだ直後に終了コードを受け取り、ログへ残し、最後にその値で終了する

「記録があれば止まる」から「実際に動いていれば止まる」へ変えることで、古い記録に邪魔されず、二重起動の用心も残しました。確認を全部外して「とにかく起動する」にはしていません。

AIへの頼み方

次は、今回の修正から組み立てた読者向けの作例です(当時の発言の引用ではありません)。

起動の入口から実際のプロセスまで追って、途中の失敗が外側へ伝わるか確認してください。
記録ファイルの存在と、現在の稼働状態は分けて報告してください。
まだ起動・停止はしないでください。

見る場所を指定し、調査と操作を分けると、AIの返す「成功」の根拠を人が読み取れます。

チェックリスト

  • 起動記録があるだけで、稼働中と扱っていないか
  • 記録したプロセスが、いまも生きているか
  • 記録に載らない別経路の起動も見ているか
  • 内側の終了コードを、外側へ返しているか
  • 成功表示に加え、目的の画面や処理の応答を確かめたか

まとめ

  • 記録の存在と実際の稼働を分けて判定する
  • 途中の失敗はいちばん外側の終了コードまで伝える
  • 成功表示の根拠(ログ・プロセス・応答)がどこまでかを確認する

本記事はnote連載『ALPHA FORGE 開発秘話 #39』の技術的再構成版です。
https://note.com/featured_stocks/n/n0d826a13714c

AIとペアプログラミングを進める中で得た運用・設計の知見を、今後も連載形式で発信していきます。
よろしければLGTMやフォローをいただけると励みになります!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?