「軽いはず」の自動処理が同時実行でPCを固める|チェックリストで安全を決めてはいけない理由

同時実行の安全性を実測で確認しているイメージイラスト トレード自動化実録

「このファイルは軽いから、同じ時刻に3本まとめて動かしても大丈夫」と自分の頭の中で仕分けしていたのに、実際に走らせるとPCが固まる。表の見た目と、実際の動きが食い違っている。

大丈夫です。表の見た目と実際の動きがズレるのはよくあることで、見ている範囲さえ正しく直せば防げます。落ち着いて、実測から確認していきましょう。

⚠️ この記事の情報は2026年9月時点のものです。記事に出てくる自動処理のシステムは観測・研究用のもので、自動発注はしません(read-only)。実際のお金での発注はしていません(仮想発注のみ・実発注なし)。

こんな「安全なはず」に心当たりはありませんか

「同時に動かしても大丈夫」と表やチェックリストで判定していた自動処理が、実際に走らせた瞬間だけPCを固まらせてしまい、原因がつかめないまま同じことを繰り返していないでしょうか。

この記事では、次の3点が分かります。

  • 「軽い」の判定を表や記憶だけで下してはいけない理由
  • 安全と判定したはずの処理が実際は重かった実例と、見落としの構造
  • 実測してから安全かどうかを決め直す、具体的な3ステップ

症状・原因・対処の順に、実際に起きたことだけをたどっていきます。

症状 – 「安全リスト」に残っていた1つが、PCを固めた

この記事のもとになった自動処理は、複数の処理をグループに分け、グループ内は同時に実行するように組まれていました。「同時に走らせて安全」と分類する条件には「別のプログラムを起こさない」という項目が含まれていて、その条件を満たすものだけが同時実行の対象として並んでいました。

ところが、安全リストに残っていたうちの1つを、実際の実行タイミングに合わせて計測してみると、動いている最中に別のプロセスが2つ生まれていました。表の上では「安全」に分類されていたのに、実際に動かすとそうではなかった、というギャップがここにあります。

その処理は動いている間、作業用のメモリを大量に使い、機械の空きメモリをほぼ食い切っていました。同じ時間帯に他の処理も並んで動いていたため、PC全体が重くなり、固まったように感じられる状況になっていました。

原因 – 事前チェックが見ていたのは「呼び先」までだった

表による事前チェックと実測による確認の違いを比較した図
図:表判定と実測判定は、見ている範囲が違う

分類作業自体は手を抜いていたわけではありません。事前の自動チェックと組み合わせの洗い出しによって、当初は「安全と判定できるもの73件」「直列で動かす必要があるもの19件」に分けられており、判定に迷うものはすべて安全側ではなく直列側へ倒す、という慎重な方針も取られていました。

それでも見落としが起きたのは、事前チェックが見ていた範囲そのものに理由があります。チェックは各ファイルの本体だけを読んでいて、そのファイルが呼び出す先、さらにその呼び出す先が何をしているか、というところまでは追いかけていませんでした。

日常の作業に置き換えると分かりやすくなります。たとえば集計用のブックAを開いて数式を確認しても、その数式が支店のブックBを参照していて、ブックBがさらに外部のCSVを取りに行っている、という構造になっていることがあります。この時、あなたが目で確認できているのはブックAだけで、BやCSVの中身までは見えていません。今回のケースも構造としてはこれと同じで、「呼んだ先」までは分かっても、「呼んだ先の、さらに先」で何が起きているかは、ファイルを読むだけでは分からなかったのです。

確認方法見ていた範囲分かったこと
事前の自動チェック(ファイルを読む)各ファイルの本体のみ「安全」と誤って判定
実測(本来の実行時刻に観察)呼び出し先まで含めた実際の挙動別プロセス2つの発生・空きメモリの逼迫

対処 – 「安全かどうか」を実測で確かめる3ステップ

表や記憶での判定に頼らないためには、実際に動かして測るしかありません。ただし測り方を間違えると別のトラブルを招くので、対象がタスクスケジューラの登録済みタスクか、Excelのブックかで、確認の仕方を分けています。

タスクスケジューラの場合

  • ①プロパティを開き、〔操作〕タブに書かれている内容を読むだけにする。何が実行されるかを確認する段階で、ここではまだ何も操作しない。
  • ②内容に送信・上書き・削除が含まれているタスクは、確認のために手動実行しない。登録済みのタスクは本番の副作用を伴うのが普通で、手動で走らせること自体がリスクになる。
  • ③計測は、そのタスク本来の実行時刻に合わせてタスクマネージャーを開き、眺めることで行う。開くのは『プロセス』タブで、メモリの列を見る。ここでは何も終了させない。

一度見ただけで判定を終わらせないことも重要です。開始直後・数分後・一番負荷が高くなりそうな段階の、最低3回は確認するか、処理が終わるまで画面を開いたままにして最大値を追います。

プロセスの数で「別のプログラムを起こしていないか」を確かめる場合も、1回だけ見て判定しません。実行前にプロセス数を数え、実行後にもう一度数えて、その差分で判断します。

Excelの場合

Excelのブックで外部参照の有無を確かめたいときは、そのブック自体を直接開くのではなく、開いているブックのコピーを作り、そのコピーのほうを開いて確認します。開いた際に「リンクを更新しますか」と聞かれても、必ず〈更新しない〉を選びます。自動保存もオフにしておきます。

Excelは何冊開いても実行ファイル(EXCEL.EXE)が原則1つのままなので、プロセスの数は判定材料になりません。Excelで見るべきなのはメモリの増え方と、外部参照が実際にあるかどうかの2点です。タスクスケジューラ側で見るプロセス数の差分とは軸が違う、と整理しておくと迷いません。

是正と再発防止 – 「なぜ直列に戻したか」を実測値つきで残す

実測の結果、別プロセスを起こしていたことが確認できた処理は、該当グループの同時実行の対象から外し、グループ自体を空にして全面的に直列実行へ戻しました。特別な仕組みを追加したわけではなく、対象を空にするという単純な形に落ち着いています。

空にした理由は、コードのすぐ手前に、実測した数値つきで残してあります。「なぜ空なのか」を後から見て分かるようにしておかないと、次に誰かが良かれと思って対象を増やしてしまい、同じことが繰り返されるからです。

再発を防ぐために、恒久的なチェックを6件追加しました。たとえば「対象が空であること」「別プロセスを起こすものが、どのグループにも入っていないこと」「空にした理由が実測値つきで残っていること」などが含まれています。

自分の管理表でも、同じ考え方を使えます。判定を一度覆したら、その理由を隣のセルにコメントで残すだけでは弱いです。一覧表に〈実測日〉〈実測値〉〈確認した人〉の3列を、コメントではなく値として追加し、入力規則で空欄のまま確定できないようにします。空欄を「問題なし」の意味に使わないための工夫です。

列を追加する前に、シートをコピーしてバックアップを取っておきます。次に表全体を選択してからCtrl+Tでテーブル化し、そのテーブル単位で並べ替えを行うと、行がずれる事故を防げます。判定の列は実測値の列から数式で自動的に出るようにし、シートの保護で判定列だけをロックしておくと、あとから手で書き換えられる心配がなくなります。

非エンジニアが得た教訓(まとめ)

一番の学びは、「表やチェックリストで安全だと決めた時点」と「実際に動かした時点」の間には、ズレが起きうるということでした。表は判断の出発点であって、答えそのものではありません。

とくに「呼んだ先の、さらに先」まで見ないと分からないことがある、という点は、Excelの数式でも自動処理のタスクでも共通して起きうる落とし穴です。時間がかかっても、実際の動きを実測してから安全かどうかを決める習慣を持つほうが、結果的には早く済みます。

  • 「軽い」を表や記憶で決めない。実測してから判定する
  • 登録済みタスクは、まず〔操作〕タブを読むだけ。送信・上書き・削除を含むものは手動実行しない
  • 判定を覆したら、実測日・実測値・確認した人を一覧表に値として残し、空欄のままにしない

関連記事

無料テンプレート配布のお知らせ

非エンジニアの自動化ラボ メルマガ 読者登録フォーム

Claude Codeを安全・便利に使うための設定テンプレート(CLAUDE.md)を無料配布しています。メールアドレスをご登録いただくと、すぐにダウンロードリンクをお送りします。


免責事項

本記事は執筆時点(2026年9月)の情報に基づく、筆者個人の体験の記録です。記事中の自動売買システムに関する記述は、特定の投資手法や自動売買の利用を推奨するものではありません。投資には元本割れのリスクがあり、最終的な判断はご自身の責任で行ってください。また、本記事ではセキュリティに関わる話題に触れていますが、悪用防止の観点から、具体的な脆弱性や攻撃手法の詳細は記載していません。AIツールの仕様は予告なく変更される場合があります。最新情報は各公式ドキュメントをご確認ください。本記事の内容を用いて生じたいかなる損害についても、筆者は責任を負いかねます。

コメント

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