毎朝の自動配信を25日数えた。止まった12回のうち3回はブラウザの更新で、新しいchromedriverはWindowsに止められた
当社のサイトは、当社の PC が毎朝9時に配信しています。配信の途中には、本物のブラウザでページを開き、計算のボタンを押して結果の表が出るかを確かめる点検(Selenium)があります。止まったら、3時間おきに同じ日のうちにやり直す作りです。
この配信が1回ごとに書く記録を、25日ぶん数えました。
結論から書きます。2026-09-16〜2026-10-11 の25日(記録の無い1日を除く)のうち、9時の回で通ったのは19日、やり直して同じ日のうちに通ったのは6日、通らなかった日は0日でした。止まった12回のうち、Firebase の認証切れが5回、ブラウザの更新と運転手(chromedriver など)が3回です。3回のうち1回は、新しく取ってきた chromedriver を Windows のアプリ制御が止めた回でした。
この記事の数字の出どころは、当社サイトに置いた元データです(日ごとの回・止まった理由・ブラウザと運転手の流れ・測り方・この数字で言えないことつき)。
→ 元データ:毎朝の定期の配信25日
1. 配信の記録を1回ずつ数える
配信は1回ごとに、始めた時刻と「配信できました」か「配信で止まりました」かを記録に書きます。止まったときは、どの段で止まったかの記録も別に書きます。
「今日ぶんに挑みます」で始まる1回を1回と数えました。その日はもう通っていて、何もしないで終わる回は数えていません。
import re
LINE = re.compile(r"^\[(\S+) (\S+)\] (.*)$")
def runs(lines):
"""「挑みます」で始まる1回を1回として、結果の行を拾う"""
cur = None
for line in lines:
m = LINE.match(line)
if not m:
continue
day, tm, msg = m.groups()
if "今日ぶんに挑みます" in msg:
if cur:
yield cur
cur = {"day": day, "start": tm, "result": None}
elif cur and "配信できました" in msg:
cur["result"] = "ok"
elif cur and "配信で止まりました" in msg:
cur["result"] = "stopped"
if cur:
yield cur
挑んだ回は38回で、通った25回・止まった12回・結果の行が無い1回でした。通った回の所要は、中央6.7分(5.5〜9.3分)です。
2. 止まった12回は、何で止まったか
止まった回ごとに、止めた段の記録と突き合わせ、その中の文で分けました(12回とも記録が在りました)。
| 理由 | 回 | 止めた段 |
|---|---|---|
| Firebase の認証切れ | 5 | deploy |
| ブラウザが上がり、運転手の版が合わない | 2 | calc_e2e_selftest |
| 新しい運転手を Windows のアプリ制御が止めた | 1 | calc_e2e_selftest |
| python の取り違え(selenium の無い方で走った) | 1 | calc_e2e_selftest |
| 押した後に計算の結果が出なかった | 1 | calc_e2e_local |
| 記事の見張りが中身で止めた | 1 | kiji_guard |
| 説明文の見張りが中身で止めた | 1 | setsumei_guard |
いちばん遅く通ったのは 2026-09-18 です。認証切れで3回、ブラウザの更新で1回止まり、その日の最後の回(21:05 に通った)でようやく通りました。
3. ブラウザは自分で上がる。運転手は合わせ続けるしかない
Selenium でブラウザを動かす運転手(chromedriver・msedgedriver)は、ブラウザと同じ版でないと起動できません。ブラウザは自分で上がるので、版がずれた日に点検が止まります。25日のうち2回、Chrome の更新で止まりました。
| 日時 | できごと |
|---|---|
| 2026-09-18 18:00 | Chrome 153.0.8010.48 に運転手が合わず止まった |
| 2026-09-18 18:41 | chromedriver 153.0.8010.52 が置き場に入った |
| 2026-10-11 09:00 | Chrome 155.0.8059.39 に運転手 153 が合わず止まった |
| 2026-10-11 11:53 | chromedriver 155.0.8059.39 を取った |
| 2026-10-11 12:00 | Windows のアプリ制御が chromedriver 155 の起動を止めた |
| 2026-10-11 12:24 | Edge の運転手 msedgedriver 155.0.4283.45 を取った |
| 2026-10-11 12:27 | 点検を Edge で走らせた配信が通った |
12時の回は、こう止まりました。
[WinError 4551] アプリケーション制御ポリシーによってこのファイルがブロックされました。
この PC は、Windows のスマート アプリ コントロールがオンです。置き場の運転手の署名を、Windows で確かめました。
Get-ChildItem "$env:USERPROFILE\.cache\selenium" -Recurse -Include chromedriver.exe, msedgedriver.exe |
ForEach-Object {
$s = Get-AuthenticodeSignature -LiteralPath $_.FullName
$cn = if ($s.SignerCertificate) { ($s.SignerCertificate.Subject -split ',')[0] } else { '' }
"$($_.Directory.Name) $($s.Status) $cn"
}
当社の PC では、こう出ました(測った3本だけ)。
153.0.8010.52 NotSigned
155.0.8059.39 NotSigned
155.0.4283.45 Valid CN=Microsoft Corporation
chromedriver は署名が無く、msedgedriver は Microsoft の署名つきでした。当社は保護を切らず、点検を Edge に移しました。運転手は「ブラウザと同じ版」の写しだけを選び、無ければ selenium に取りに行かせます。
from pathlib import Path
def browser_version(exe):
"""ブラウザ本体の隣にある、版の名前のフォルダから版を読む"""
vs = [p.name for p in Path(exe).parent.iterdir()
if p.is_dir() and p.name.replace(".", "").isdigit()]
return max(vs, key=lambda v: tuple(map(int, v.split(".")))) if vs else None
def pick_driver(kind, want):
"""置き場の写しのうち、ブラウザと大きな版が同じ物だけを使う。無ければ None=selenium に取りに行かせる"""
root = Path.home() / ".cache" / "selenium" / kind
major = want.split(".")[0]
same = [p for p in root.glob(f"*/*/{kind}.exe") if p.parent.name.split(".")[0] == major]
return max(same, key=lambda p: p.stat().st_mtime) if same else None
ここまでの数字(日ごとの回・止まった理由・運転手の流れと署名)は、元データに載せています → 元データを見る
当社はこう読んだ
- 3時間おきのやり直しで、25日すべてその日のうちに通った。 ただし 2026-09-18 は、その日の最後の回でようやく通っています。
- 点検に本物のブラウザを使うと、運転手の版を合わせ続ける仕事が付いてくる。 Chrome の更新で2回止まりました。
- 新しい運転手は、Windows の保護に止められることがある。 保護を切るのではなく、署名つきの運転手で動く Edge に移しました。
この数字で言えないこと
- 止まった回の数は、配信の出来の悪さとは限りません。見張りが中身で止めた2回は、止まるのが正しい回です。
- chromedriver 153 も署名は無いが、Chrome 155 に上がるまでの配信では起動できていました。155 だけが止められた理由は測っていません。
- Edge も自分で上がります。Edge が次に上がった日に、同じ版の運転手が取れて通るかは、まだ起きていません。
- 2026-10-11 の15時の回で計算の結果が出なかった理由は測っていません。18時の回では同じ点検が通りました。
- 記録の無い日が1日あります(2026-09-17)。
- 当社の PC 1台・1つの配信の記録です。
元データと引用のしかた
日ごとの回・止まった理由・運転手の流れと署名・測り方は、当社サイトに置いています → 元データを見る
数字を引用するときは、記事ではなく元データを出典にしてください。そのまま貼れる形はこうです。
出典:ブレインコミュニティ合同会社「毎朝の定期の配信25日:9時の回で通ったのは19日、止まった12回のうち3回はブラウザの更新と運転手だった(当社の PC・2026-09-16〜2026-10-11)」
https://braincommunity.jp/jissoku/teiki-haishin.html (2026-10-12 測定)
当社が自分で測ったほかの数字も、同じ置き場にまとめています。
→ 当社が自分で測った数字
業務システムの内製化と、AI活用の受託開発をしています。
ブレインコミュニティ合同会社 — braincommunity.jp