◉CLAUDE LABEN
●2.1.296 — サブエージェントごとに autoCompactWindow を指定でき、ワークフロー用のモデルも環境変数で固定できます●AGENTS — Managed Agents の動的ワークフローがベータに。大量の文書を扱う実行を agent が自分で組めます(10/09)●SONNET 4.5 — Claude API での提供終了は 11/30、残り48日。移行先は Sonnet 5.5●Q&A — ストリーミングを途中で止めても、閉じたタブへの課金が続かない実装が共有されています●WORKTREE — claude --worktree で同じリポジトリを並行して動かすとき、先に知っておきたい点が整理されています●NEW — つまづき集を毎回全文読ませるのをやめ、番号で一節だけ読む●2.1.296 — サブエージェントごとに autoCompactWindow を指定でき、ワークフロー用のモデルも環境変数で固定できます●AGENTS — Managed Agents の動的ワークフローがベータに。大量の文書を扱う実行を agent が自分で組めます(10/09)●SONNET 4.5 — Claude API での提供終了は 11/30、残り48日。移行先は Sonnet 5.5●Q&A — ストリーミングを途中で止めても、閉じたタブへの課金が続かない実装が共有されています●WORKTREE — claude --worktree で同じリポジトリを並行して動かすとき、先に知っておきたい点が整理されています●NEW — つまづき集を毎回全文読ませるのをやめ、番号で一節だけ読む
記事一覧/Cowork
◈ Cowork/2026-08-29上級

連携フォルダに置いたロックが、二度目の無人実行を締め出すまで

クラウド同期の連携フォルダでは作成も改名も通るのに、削除だけが拒まれます。そこへ二重起動防止のロックを置いた結果、二度目以降の無人実行が永久に見送られました。三方式の実測と、ロックの置き場所を分ける実装をまとめます。

Cowork44スケジュールタスク25連携フォルダ3排他制御無人運用9

✦ プレミアム記事

前の晩に仕込んだ処理が、翌朝には一行だけログを残して終わっていました。エラーではありません。「別のプロセスが実行中のため、今回は見送ります」という、私自身が書いた分岐です。

けれども、そのとき動いていたプロセスはひとつもありませんでした。

個人開発の作業を無人のスケジュール実行に任せるようになってから、同じ連携フォルダを複数の枠が触る場面が増えました。二重起動だけは避けたいと考えてロックを置いたのですが、その置き場所を「いちばん確実に共有されている場所」——連携フォルダそのもの——にしたことが原因でした。

排他は効いていました。効きすぎて、解除できなくなっていたのです。

排他制御そのものは、正しく動いていました

最初に疑ったのはロックの取得側です。競合していないのに競合したと判定しているのなら、取得の条件がおかしいのではないか。そう疑って、まず排他が本当に働いているかを確かめました。

# 1本目が3秒間ロックを保持している間に、2本目を投げる
( flock -n 9 && sleep 3 ) 9> "$SHARED/slot.lock" &
sleep 0.5
( flock -n 9 && echo "2本目が取得(想定外)" \
              || echo "2本目はブロック(想定どおり)" ) 9> "$SHARED/slot.lock"
wait

結果は 2本目はブロック(想定どおり) でした。連携フォルダの上でも、flock の排他はきちんと働いています。ネットワーク越しのファイルシステムでロックが効かない、という古典的な話ではありませんでした。

問題は取得ではなく、その後にありました。

削除だけが、静かに拒まれていました

同じ場所で、ファイルの一生を分解して試しました。作成、追記、読み取り、改名、ディレクトリ作成、そして削除です。

T="$SHARED/probe_test"
echo x >  "$T"          # 作成
echo y >> "$T"          # 追記
cat "$T" > /dev/null    # 読み取り
mv  "$T" "$T.renamed"   # 改名
rm -f "$T.renamed"      # 削除
mkdir "$SHARED/probe_dir" && rmdir "$SHARED/probe_dir"

私の環境で返ってきた結果です。

操作連携フォルダ(クラウド同期)サンドボックスのローカル領域
作成(>)成功成功
追記(>>)成功成功
読み取り成功成功
改名(mv)成功成功
ディレクトリ作成(mkdir)成功成功
削除(rm)Operation not permitted成功
ディレクトリ削除(rmdir)Operation not permitted成功

書けるかどうかだけを確かめていたら、この場所は合格します。実際、私は合格させていました。作れて、追記できて、名前まで変えられるのですから、書き込み権限の観点では何の問題もありません。

拒まれるのは削除だけです。そして二重起動防止のロックは、削除できて初めて成り立つ仕組みでした。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦無人タスクを二度目に走らせる前に、自分のロック方式がその置き場所で解除まで通るかを判定できるようになる
✦mkdir ロック・noclobber ロック・flock の三方式を、削除が拒まれる保管先でも安全に動く形へ置き換えられるようになる
✦ロックが原因の見送りを「成功」ではなく記録の残る結果として扱えるようになり、無音のまま何日も止まる事故を防げるようになる
✦ロックの置き場所の選定と解放に潜む二つの競合を、二本同時に走らせる試験で自分の手元で見つけられるようになる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

◈ Cowork2026-10-01
定期タスクの手順書を削る前に、その一冊が何回読み直されるかを数えました
前読みの手順書を13KB削った見積もりは、再読込で数え直すと呼び出し約1.3回ぶんでした。削る前に何回読み直されるかを数える台帳と、実行中に読み込み量を残す関数をお伝えします。
◈ Cowork2026-09-24
Cowork の定期タスクは、来週の土曜にも動きますか
一度で止まる定義、1本に詰めた二つの時刻、書き換えで空いた曜日。Cowork のスケジュールタスクは、ログに何も残さないまま欠けることがあります。定義を台帳に書き写し、意図と突き合わせる点検スクリプトを動くコードでまとめました。
◈ Cowork2026-09-23
書き込みを任せたのは三番目でした — Cowork にフォルダを渡す順番
Cowork にフォルダを渡すとき、読み取りだけ・作ってよい場所・書き込みありの三段を順に開けています。受託で預かった素材フォルダで引いた線と、渡す前に決めておく三つのことを書き残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます