きっかけ
朝の /make-diary を回し終えたあとに、ふと「ここ何日かの積み残しって何かないですかね」と Claude Code に聞いてみた。返ってきたリストの中に、自分でも忘れかけていた /check-earnings の TODO がぶら下がっていた。
あれ?Ticker のデフォルトを全銘柄に変更しておいてください。あれ?これ知ってなかったかな?多分それ進捗更新漏れてる気がするんで、全部チェックしてやってないんだったらやっといてください。ただ、ダイナミックワークフローだけはもうやらない、当面ちょっとやらないっていう意思決定したので、それはちょっとメモ書いておいてください。
声で口走ったまま放流したが、要するに2つ。
/check-earningsの対象 ticker を毎朝手で渡すのではなく、KID 登録済みの全銘柄を勝手に拾うデフォルトにする- 「Dynamic Workflows」構想は当面やらない、と memo に固定する
これを Claude Code に並列で進めさせた。
何が嫌だったのか
/check-earnings は毎朝 1 回叩いて、Koyfin Estimates と株価を Turso に流し込み、SEC EDGAR の 8-K を Google Chat に送るパイプラインだ。実装当初は --tickers MU,NVDA,SNDK のように手で渡していた。
ところが /add-ticker で銘柄をどんどん足していった結果、tickers テーブルの koyfin_kid 登録済みが今朝の時点で 29 銘柄まで増えた(韓国メモリ 2 社も含めて)。そして手元の Make-Diary フローでは、相変わらず --tickers MU,NVDA,SNDK が直書きされている。新しく足した銘柄のスナップショットが取れず、ビート判定の母集団から漏れる。
積み残しチェックの過程で「進捗更新漏れてる気がする」と本人が呟いていたのはこのこと。実装計画書のチェックボックスは数日前に立てたものの、いつのまにか追記が止まっていた。
修正方針
check_earnings.py の --tickers を未指定で叩いたら、set_koyfin_kid.py --list-json 経由で tickers.koyfin_kid IS NOT NULL の全銘柄を引いて使う設計にした。CLI 側は何も変えず、明示指定すれば従来通り上書きできる、というセマンティクスを残す。
擬似的にはこんな差分。
# Before: 引数必須
tickers = args.tickers.split(",")
# After: 未指定なら KID 登録済みの全銘柄を自動展開
if args.tickers:
tickers = [t.strip() for t in args.tickers.split(",") if t.strip()]
else:
tickers = load_kid_registered_tickers() # set_koyfin_kid.py --list-json
load_kid_registered_tickers() は別ファイルの set_koyfin_kid.py --list-json をサブプロセスで叩く形にした。Turso への接続情報や認証を check_earnings.py 側に二重に書きたくなかったので、KID マップを引く責務は元のスクリプトに集約させた。
動作確認
未指定で叩き、ログに展開された ticker リストが流れるかを見た。
$ python check_earnings.py
[info] tickers expanded from KID registry: 29 tickers
[info] MU NVDA SNDK ... ASYS HYNIX
[ok] snapshot finished: 29/29 succeeded
29 銘柄に自動展開された。韓国メモリ 2 社(HYNIX / SSNLF 相当)も含まれている。/make-diary から呼ぶときは引数を渡さなくてよくなり、毎朝の Make-Diary パイプラインから 1 行ぶん命令を減らせた。
ついでに直したもの
.claude/commands/make-diary.mdの中に残っていた--tickers MU,NVDA,SNDKの古い記述を更新- ここ数日の実装計画書(beat-monitoring の auto-update plan)に積まれていたチェックボックスのうち、すでに実装済みのものを
[x]に修正 - ↑ をやって初めて、計画書と実装の進捗ずれが見えるようになった。「全部チェックしてやってないんだったらやっといて」と言われたのはここを指していた
Dynamic Workflows は当面やらない、と memo に固定する
もう一つの依頼が「Dynamic Workflows は当面やらない、と意思決定したのでメモに書いといて」。
これは少し前に話題にしていた構想で、「/check-earnings 自体を、ticker ごとに分岐する動的なワークフローに昇格させる」という方向性のことだった。例えば NVDA はオプション IV の取得を追加、MU はガイダンス差分を Google Chat に流す、SNDK は HDD ASP の引用元を抽出する、みたいに、銘柄ごとに枝葉を生やしていくイメージ。
ただし今回の判断としては、「やらない」。
理由は本人の言葉に出ていた範囲で要約すると、
- 銘柄ごとに枝を生やすほど、毎朝 1 回叩く Make-Diary の所要時間がだらしなく伸びる
- 銘柄差分を表現したいなら、ワークフロー側に閉じ込めるより記事側(個別ページ)の自由度で吸収するほうが軽い
- 今は「ビート判定の母集団を増やす」ほうが先で、ワークフローを賢くするのは後でいい
これらを memo/2026-06-08/dynamic-workflows-paused.md に短く書いた。再着手したくなったときに「なぜ止めたか」を思い出せるよう、/check-earnings のシンプル維持を選んだ理由を1段落で残しただけ。長く書くと自分でも読まないので、3 行のチェックリスト形式にした。
- [ ] Dynamic Workflows 構想に着手する
- 当面保留(2026-06-08 決定)。理由: /check-earnings の単純さを優先し、銘柄差分は記事側で吸収する
- 再開する時の判断材料: ビート判定の母集団が安定し、銘柄ごとの追加データ取得が定常運用に乗ったとき
学び
毎朝叩く CLI のデフォルトを「全銘柄」にする、という小さい変更だが、/make-diary の中での引数受け渡しが消えた瞬間に脳の負荷が一段下がった。手で 3 銘柄ぶん打っていたものを、KID 登録時点で母集団に勝手に追加される構造にした。次に /add-ticker を叩いたとき、その翌朝から自動で /check-earnings の対象に入ってくる。「銘柄を追加する」と「毎朝モニタリングする」が同じ操作で連動するようになった。
積み残しチェックも、たまに「Claude Code に全部洗ってもらう」をやらないと、自分の感覚値だけで「だいたいできてる気がする」と勘違いして放置する案件が必ず出る。今回の /check-earnings の TODO も、計画書のチェックボックスは止まっていたのに、実装は半分進んでいた、という宙ぶらりんの状態だった。実装と計画書のズレは、人間が手で潰すよりも Claude Code に並列で diff を取らせて潰させたほうが速い。
そして「やらない」を memo に書く決断は、思った以上にコスパが高い。明日の自分が同じ構想を思いついたとき、「あ、これ昨日やらないって決めたやつだ」と 5 秒で却下できる。やらないことを記録するのは、やることを記録するのと同じくらい重要。
明日以降の小さい宿題
-
check_earnings.pyの自動展開について Vitest 相当のテストはないので、Python 側でpytestのテストを 1 本足す(KID 0 件のときのフォールバック挙動を固定したい) - 韓国メモリ 2 社の KID は取れているが、SEC EDGAR には載らない。Google Chat 通知のフォーマット側で「米国上場でない銘柄は EDGAR スキップ」を明示する
- Dynamic Workflows 保留メモを
memo/2026-06-08/に置いたが、半年に 1 回くらい棚卸しするタイミングを別途決める