「自動化できるものは全部自動化して」:まず数えると、修復処理 66 個が一度も定期実行から呼ばれていなかった。全部は載せず、6 個だけ載せた

English version

トレカダッシュ 開発の記録 / 2026年8月

iOS アプリ「トレカダッシュ」の開発で、ユーザーから、「自動化できるものは、全部自動化して」という指示がありました。

2026 年 8 月 28 日、まず、数えました。すると、直すための処理が 66 個、定期実行から一度も呼ばれていませんでした。この記事は、その数え方と、66 個を「全部は載せなかった」理由の記録です。

数字は、2026 年 8 月 28 日の作業の記録から書いています。

数えた:66 個が、「手で URL を叩かないと動かない」状態だった

HTTP のエンドポイント 319 個と、定期実行 184 個を、名前ではなく、関数の呼び出しで突き合わせました。名前が違っても、定期のジョブから呼ばれていることがあるからです。

結果、66 個が、手で URL を叩かないと動かない状態でした。人が「そろそろ回すか」と思い出すまで、直せるはずの記事が、直りません。

66 個を、一度に定期実行にはしなかった

66 個は、3 つに分かれました。

  1. 継続的に必要なもの(新しいデータが来るたびに要る)→ 定期実行に載せる。
  2. 一度きりの移行(backfill*、reclassify* など)→ 載せない。毎日走らせても無駄で、事故の余地が増えるだけ。
  3. 破壊的なもの、人の判断が要るもの(孤立した商品の削除、手動の紐付け直し など)→ 載せない。

新しい定期ジョブは、配備した瞬間に、一度走ります。載せる前に、全部、書き込まない下見(ドライラン)で、当たりを確かめました。

載せた 6 個

処理下見の結果
X の締切が空の記事を直す対象 32 件、更新 0 件
まとめ由来の店名を直す5 件(アカウントの宣伝文が、そのまま販売元になっていた)
送料が値段に入っているものを直す0 件
総称の商品への紐付けを直す0 件
分割した記事の題名を直す新設したもの
まとめ由来の締切を直す新設したもの

時刻は、ばらしました。同時に走らせると、同時実行の枠を食い合って、待ち行列が伸びるからです。定期実行は、184 個から 190 個になりました。

残りの候補(締切の修復、壊れた商品画像の修復、楽天のアフィリエイトリンクの修復)は、実行に 2 分以上かかり、下見が時間内に終わらなかったので、見送りました。確認せずに、載せません。

商品カタログは、すでに、全自動だった

「商品カタログも、自動にできるよね」という問いへの答えは、「もう、なっている」でした。15 ジャンルすべてに、公式カタログの取り込みがあり、1 時間前に更新されていました。記事と商品の紐付けも自動で、実測 1,415 件中 1,406 件が、紐付け済みでした。残りは、「公式サイトに、まだ載っていない、新しい弾」で、公式が出せば、自動で入ります。

待ち行列が、伸び続けていた

もう 1 つ、数えている途中で、見つけたことがあります。待ち行列が、81、86、91 と、45 秒で増え続けていました。

原因は、ジョブを積む処理(enqueue)が、「実行中か」しか見ておらず、キューで順番待ちしている分を、見ていなかったことでした。同時実行の上限に達している間に、「1 分おき」のジョブの時刻が、何度も来ると、同じジョブが、何重にも積まれます。

順番待ちの名前も覚えて、二重に積まないようにしました。待ち行列は、0 のままになりました。

分かったこと

自動化は、全部を載せることではない。数えて、仕分けて、確かめて、載せる。

この話に出てくるもの

ほかの記録

コメント

感想や、記事の間違いの指摘は、ここへ。書くには、GitHub のアカウントが要ります。

押すと、giscus(giscus.app)と GitHub に接続します。押さなければ、接続しません。詳しくはあつかいに書いています。