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?

毎朝の自動配信を25日数えた。止まった12回のうち3回はブラウザの更新で、新しいchromedriverはWindowsに止められた

0
Posted at

毎朝の自動配信を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

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?