
Claude Code ã®äžŠè¡ã»ãã·ã§ã³ããPC ã®åèµ·åãã2åã®æäœã§æ»ã â é£ããã£ãã®ã¯ãæ»ãããããèœãšããŠããããã®å€å®ã ã£ã
Windows Terminal ã®ã¿ãã6æã»ã©éããŠãããããå¥ã®ãããžã§ã¯ãã§ Claude Code ã䞊è¡ã§åãããŠãããPC ãåèµ·åãããã³ã«ããããå šéšå ã«æ»ãã®ãé¢åã ã£ããããã§ãåèµ·åã®åã«1åæŒããä¿åããšãç«ã¡äžããåŸã«1åæŒãã埩å ããäœã£ãã
çµè«ãå ã«æžãã
æ»ãããšèªäœã¯ç°¡åã ã£ããClaude Code 㯠--resume ã«ã»ãã·ã§ã³IDãä»ããã°äŒè©±ãåéã§ãããèŠãã®ã¯ãã©ã®ã¿ãã§ã»ã©ã®ãã©ã«ãã§ã»ã©ã®ã»ãã·ã§ã³ãåããŠããããã®å¯Ÿå¿è¡šãšãããã1åã§éãçŽãã³ãã³ãã ãã
é£ããã£ãã®ã¯ãä¿åããç¬éã«ããã®ã»ãã·ã§ã³ã¯ä»ãèœãšããŠãããããæ±ºããããšã ã£ããåãããªããã®ã¯åããŠãããšã¿ãªãã確å®ã«åããŠãããã®ã¯æ¢ããçããããã®ã¯ææãç»é¢ã«åºããŠç§ã y/N ã§æ±ºããããã®2段ã«ãã
åäœãã¹ããã2ã4ã¿ãã§ã®å®æ©ç¢ºèªãå šéšéã£ãŠããã®ã«ãæ¬åœã®åèµ·åã§ã¯5æ¬äž2æ¬ãæ»ããªãã£ãã埩å ã¯ãè€æ°ã®ã¿ããåãç¬éã«èµ·åãããå¯äžã®å Žé¢ã§ãããã§ã ãåããã°ãã¡ã€ã«ãžã®æžã蟌ã¿ãè¡çªãããçŽããŠããããäžåºŠåèµ·åãããã5æ¬ãšãæ»ã£ãïŒãã ãæ¡ä»¶ã¯1åç®ãšå°ãéããåŸã§æžãïŒ
åå°ã¯ãåã«èšäºã«æžãããã»ãã·ã§ã³ã®èªååæ¿ããšåããèªäœã®èµ·åã¹ã¯ãªããïŒã©ãããŒïŒã ã
èªååæ¿ã¯ãClaude Code ã®äŒè©±ïŒã³ã³ããã¹ãïŒã決ããéãè¶ ããããåŒãç¶ãè³æãæžãããŠãã claude ãçµããããåãã¿ãã§æ°ãã claude ãç«ã¡äžããŠè³æãèªãŸããä»çµã¿ã ãAI ã¯èªåã§ /clear ãæŒããªãã®ã§ãã©ãããŒãããã»ã¹ããšå ¥ãæ¿ãããå ¥ãæ¿ãããã³ã«ã»ãã·ã§ã³IDã¯æ°ãããªãããã¿ããšãã©ã«ãã¯ãã®ãŸãŸæ®ãããã®èšäºã§ãèªååæ¿ããšæžãããããã®å ¥ãæ¿ãã®ããšã ã
äœãé¢åã ã£ãã
åèµ·åã®åã«ãç§ã¯æ¯åããããŠããã
å šéšã®ã¿ããç®ã§èŠãŠãClaude Code ãè¿äºã®éäžã§ãªãã確ããã
å šéšã®ã»ãã·ã§ã³ã« /rename ã§ååãä»ãã
åèµ·åãã
ã¿ãã1æãã€éããŠå ã®ãã©ã«ãã«ç§»åãã/resume ã®äžèЧããååã§æ¢ããŠéžã¶
ååãä»ããã®ã¯ã/resume ã®äžèЧã§èŠåããããã§ãããªããæ¬åœã«èŠãã®ã¯ãã¿ããšãã©ã«ããšã»ãã·ã§ã³IDã®å¯Ÿå¿è¡šãã ãã§ãããã¯æ©æ¢°ãèŠããŠãããã
äœã£ããã®
ãã¿ã³ã¯ãã¿ã¹ã¯ããŒã®ã¢ã€ã³ã³2ã€ã«ããïŒãã³çãã¯æåã«æã§1åã ãïŒã
ä¿åïŒèœãšãåã«1åæŒããåããŠãã Claude Code ã®ã»ãã·ã§ã³ãå šéšèª¿ã¹ãŠãèœãšããŠãããã°å¯Ÿå¿è¡šãä¿åãã
埩å ïŒç«ã¡äžããåŸã«1åæŒããä¿åãã察å¿è¡šãããåã¿ããå ã®ãã©ã«ãã»å ã®äŒè©±ã§éãçŽãããŠã£ã³ããŠã®äœçœ®ãšå€§ãããæ»ãïŒããã¯åŸããè¶³ããïŒ
ãããªãããšã決ããã
黿ºæäœã¯ããªããä¿åããåŸã®åèµ·åã¯èªåã§ããããã®ãããä¿åããŠããåèµ·åãããŸã§ã®éã«å§ããäœæ¥ã¯ãä¿åããèšé²ã«å ¥ããªããä¿åã¯åèµ·åã®çŽåã«æŒã
ãã°ã€ã³ããæã®èªå埩å ã¯ããªããæŒããæã ãåã
ã©ãããŒãéããã«èµ·åããçŽ ã® claude ã¯æ»ããªããèŠã€ããããæ°ã ãèŠåãã
èšé²ä¿ã¯ hook 3æ¬
察å¿è¡šã¯ãClaude Code ã® hook ã§äœã£ãŠããã
SessionStartïŒã»ãã·ã§ã³ãå§ãŸã£ããããã®ã¿ãã®èšé²ãäœãïŒãã©ã«ãã»ã»ãã·ã§ã³IDã»ããã»ã¹IDã»èµ·åæå»ã»èµ·åãã©ã°ïŒ
UserPromptSubmitïŒããã³ãããéãããããåããŠãããã«ãã
StopïŒè¿äºãçµãã£ãããåŸ ã£ãŠãããã«ãã
èšé²ã®éµã¯ãã»ãã·ã§ã³IDã§ã¯ãªããã©ãããŒãã¿ãããšã«æ¯ãIDã«ãããèªååæ¿ãåããšã»ãã·ã§ã³IDã¯å€ããããã¿ãã¯åãã ããã ã
çããŠãããã©ããã¯ãããã»ã¹IDãšäœææå»ã®äž¡æ¹ãäžèŽãããã§èŠããããã»ã¹IDã ãã ãšãçªå·ãåå©çšããå¥ã®ããã»ã¹ããçããŠããããšèªãã§ããŸããã©ãããŒèªèº«ã®ããã»ã¹IDãèšé²ãããèªååæ¿ã®éäžã«ã¯ãclaude ã¯çµãã£ãŠãããã©ãããŒã¯çããŠããééãããããã ã
äœãåã«æž¬ã£ãããš
hook ããã€æ¥ãŠããã€æ¥ãªããã¯ãäœãåã«æã§ç¢ºãããïŒClaude Code 2.1.301ïŒãèšèšã«å¹ããã®ã¯æ¬¡ã®4ã€ã ã
Esc ã§è¿äºãäžæãããšãStop ã¯æ¥ãªãããã®ãŸãŸã ãšãåããŠãããã®ãŸãŸæ®ããããã§ãäŒè©±ãã¡ã€ã«ã®æåŸã®äŒè©±ã®è¡ãäžæã®èšé²ïŒRequest interrupted by userïŒãªããåŸ ã£ãŠããããšã¿ãªãããšã«ããããã ãããã¡ã€ã«ã®ç©ççãªæåŸã®è¡ã¯ãäŒè©±ã§ã¯ãªãã¿ã€ãã«ãªã©ã®ã¡ã¿æ å ±ã®è¡ã§ããããšãå€ããäŒè©±ã®è¡ã ããæŸã£ãŠå€å®ãã
æš©éã®ç¢ºèªãåŸ ã£ãŠããéããStop ã¯æ¥ãªããããã¯ãåããŠãããã®ãŸãŸã§æ£ãã
äœæ¥ã®éäžã§ cd ãæ®ããšãhook ã«æž¡ããã©ã«ããããã«è¿œåŸããããã©ã«ã㯠SessionStart ã®æã®ãã®ã ããèšé²ããäžæžãããªã
èããŠããéäžã«æã£ã2ã€ç®ã®ããã³ããã¯åãã¿ãŒã³ã«åã蟌ãŸããUserPromptSubmit ã ããæ¥ããéã« Stop ã¯æãŸããªã
ã»ãã«ãresume ããŠãã»ãã·ã§ã³IDã¯å€ãããªãããšãèšå®ã«è¶³ãã hook ã¯æ¢ã«éããŠããã»ãã·ã§ã³ã«ãå¹ãããšãhook 1åã®åŠçãããã»ã¹äžèЧã®ååŸèŸŒã¿ã§0.6ã1.2ç§ã§æžãããšã確ãããã
ãã¡ã°ãé£ããã£ãã®ã¯ãèœãšããŠãããã
ä¿åãã¿ã³ã®ä»äºã®å€§åã¯ã察å¿è¡šãæžãããšã§ã¯ãªããæžããŠããããæ±ºããããšã ãè¿äºã®éäžã®ã»ãã·ã§ã³ãä¿åããŠåèµ·åããã°ããã®äœæ¥ã¯éäžã§æ¶ããã
å€å®ã¯2段ã«ããã
確å®ïŒæ¢ããïŒïŒè¿äºã®éäžãèªååæ¿ã®éäžãèšé²ãç¡ãã»èªããªããåãããªããã®ã¯åããŠãããšã¿ãªã
çãïŒç§ã決ããïŒïŒclaude ã®åå«ã«æ®ã£ãŠããèæ¯ã®ã·ã§ã«ïŒè£ã§èµ°ãããã³ãã³ããªã©ïŒãšãã©ã®ã¿ãã«ãå±ããªãå®ã«æµ®ããã·ã§ã«ãã©ã®ã¿ããã»ããã»ã¹IDã»èµ·åæå»ã»ã³ãã³ãã©ã€ã³ãç»é¢ã«åºããä¿åããããç§ã y/N ã§æ±ºãããæ¢å®ã¯ãä¿åããªãã
y/N ã®ç»é¢ã«ã¯ããä¿åããŠãããã®ä»äºã¯æ¢ããªããåèµ·åã§æ¶ããŠã埩å ããŠãæ»ããªãããšåºããy ãæŒããåŸã«ããäžåºŠå šéšãèŠçŽããæŒãåããç¶æ ãå€ãã£ãŠãããä¿åããªãã宿©ã§è©Šããæã¯ãy ãæŒããŸã§ã«ç§ãçŽ1ååãããŠãããç§ãè¿·ã£ãŠããéã«ããã»ãã®ã¿ãã®ç¶æ ã¯å€ããã
y ã§ä¿åããèæ¯ã®ä»äºã¯ãä¿åããèšé²ã«ã¡ã¢ããŠããã埩å ã®æã«ãåèµ·åã®åããã®ã¿ãã§ãããåããŠããããšåºããèªåã§åå®è¡ã¯ããªãã
ã»ãã«ãä¿åã®å¯Ÿè±¡ã0ä»¶ãªãä¿åããªãïŒåèµ·åã®çŽåŸã«ãã£ããæŒããŠã空ã®è¡šã§äžæžãããªãããïŒãä¿åã¯10äžä»£ãŸã§æ®ãããå ¥ããã
ãªãå šéšæ¢ããªãã®ã
çããããã®ãå šéšæ¢ããã°ãå€å®ã¯1æ®µã§æžããããããªãã£ãã®ã¯ãèªååæ¿ã®ãã°ãå šæéæ°ããããã ã
èªååæ¿ããå ¥ãæ¿ããåã«åãããšã確ãããŠãããè£ã§èµ°ã£ãŠããäœæ¥ãããã®ã« claude ãçµãããããšããã®äœæ¥ãäžç·ã«æ¶ããããã ãèŠã€ãããããã®åã®å ¥ãæ¿ãã¯èŠéãã
ãã®èŠéãã®çç±ãæ°ãããšã1äœã¯è£ã§èµ°ã£ãŠããäœæ¥ïŒ61åïŒã ã£ãã2äœã®ãäŒè©±ããŸã 決ããéã«å±ããŠããªããïŒ51åïŒããå€ããäžèº«ãèŠããšãåãããã»ã¹ãå¥ã ã®ã¿ãã§ç¯äººæ±ããããäŸã7åãã£ããããããã»ã¹ã¯ã1æ¥ã«4ã€ã®å¥ã®ã¿ãã®åãæ¿ããæ¢ããŠããããã·ã³å šäœããå®ã«æµ®ããã·ã§ã«ãæŸãå€å®ããç¡é¢ä¿ãªã¿ãã«ãŸã§å¹ããŠããã®ã ã
ä¿åãã¿ã³ã§åãããšããããšãã©ããã«éè¯ã®ã·ã§ã«ã1åããã ãã§ãæ¯åä¿åã§ããªããªããæ¯åæ¢ãŸããã¿ã³ã¯ãããã«ä¿¡çšãããªããªããã ããã確å®ã«åããŠãããã®ã ããæ¢ããæ®ãã¯ææãç»é¢ã«åºããŠãä¿åããããèªåã§æ±ºããããšã«ããã
埩å 㯠wt ã§ã¿ããéãçŽã
埩å ã§ã¯ãWindows Terminal ã®ã³ãã³ã wt ã§ãä¿åããã¿ããæ°ãããŠã£ã³ããŠã«éãçŽããæåã®åœ¢ã¯ãwt ã1åã ãåŒãã§å šã¿ãã1ã€ã®ãŠã£ã³ããŠã«éããã®ã ã£ãïŒãŠã£ã³ããŠã®äœçœ®ãæ»ãããã«ããŠããã¯ãå ã®ãŠã£ã³ããŠããšã«1åãã€åŒãã§ãããåŸã§æžãïŒã1ååã®åœ¢ã¯ãããªãã
wt -w new new-tab -p PowerShell -d <ãã©ã«ã> --title <åå> pwsh -NoExit -File <ã¿ãçšã¹ã¯ãªãã> <åŒæ°âŠ> ; new-tab -p PowerShell -d <ãã©ã«ã> --title <åå> pwsh -NoExit -File <ã¿ãçšã¹ã¯ãªãã> <åŒæ°âŠ> ; âŠã¿ãçšã¹ã¯ãªããã¯ãã©ãããŒãéã㊠claude ã --resume ã§èµ·åãããå ã®èµ·åãã©ã°ïŒ--model ãªã©ïŒãä»ãçŽããèµ·åã®èšé²154ä»¶ãèŠããšã䜿ãããŠããèµ·åãã©ã°ã¯ --model ã®3ä»¶ã ãã ã£ãã®ã§ãä»ã¯ããã§è¶³ããŠããã
æ¢ã«çããŠããã»ãã·ã§ã³ã¯é£ã°ããåãäŒè©±ã2æéããªã
æ»ããã¿ãã¯å ¥ååŸ ã¡ã§æ¢ãŸããããã³ãããèªåã§éããªã
PowerShell ãã wt ã«æž¡ããšããã§ã2ã€èžãã ã
wt ã¯ãåŒæ°ã®èŠçŽ ã®äžã«ããã»ãã³ãã³ããã¿ãã®åºåããšããŠèªãããã©ã«ãåãªã©ã®å€ã«ã»ãã³ãã³ãå ¥ã£ãŠãããšãããã§ã¿ããå²ãããå€ã®äžã®ã»ãã³ãã³ã¯ãåã«ããã¯ã¹ã©ãã·ã¥ãä»ããŠéãã
Start-Process ã® -ArgumentList ã¯ãåŒæ°ã®é åã1ã€ã®æååã«æœ°ãã®ã§ã空çœãæ¥æ¬èªãå«ããã©ã«ãåã®åŒçšã厩ããã.NET ã® ProcessStartInfo.ArgumentList ã§ã1èŠçŽ ãã€æž¡ã
$psi = [System.Diagnostics.ProcessStartInfo]::new('wt.exe')
foreach ($a in $wtArgs) { $psi.ArgumentList.Add($a) } # 1èŠçŽ ãã€ãåŒçšã¯ .NET ã«ä»»ãã
[System.Diagnostics.Process]::Start($psi) | Out-Nullæ»ãã claude ããäŒè©±ãä¿åããªãã£ã
äœã£ãŠããéäžã§ããã¡ã°ãæ°ã¥ãã«ããã£ãã®ãããã ãClaude Code ã®äžããïŒAI ã« Bash ã§ïŒåŸ©å ã詊ããããæ»ããã¿ãã® claude ãæ¬¡ã®èŠåãåºããäŒè©±ãä¿åããªãã£ãã
â Transcript saving is off â inherited CLAUDE_CODE_CHILD_SESSION markerwt ã¯ãåŒã³åºãå ã®ç°å¢å€æ°ãæ°ããã¿ãã«ãã®ãŸãŸæž¡ããClaude Code ã®äžããåŒã¶ãšãåã®ã»ãã·ã§ã³ã§ããããšã瀺ãå°ïŒCLAUDE_CODE_CHILD_SESSION=1ïŒãæž¡ããæ»ãã claude ã¯èªåãåã ãšæã£ãŠäŒè©±ãèšé²ããªãã£ããã»ãã«ããå ã®ã»ãã·ã§ã³ã®IDãããã»ã¹IDãå éšã®éä¿¡çšã®å€ãæž¡ã£ãŠããã
ã¿ãçšã¹ã¯ãªããã®æåã§ããŠãŒã¶ãŒãšãã·ã³ã®æ°žç¶ã®ç°å¢å€æ°ã«ç¡ã Claude ç³»ãšã©ãããŒã®å€æ°ïŒãš GIT_EDITORïŒãããã®ããã»ã¹ããæ¶ãããã«ããŠè§£æ¶ãããã¿ã¹ã¯ããŒã®ã¢ã€ã³ã³ããæŒãæ®æ®µã®çµè·¯ã¯ã芪ã Explorer ãªã®ã§èµ·ããªããAI ã«é Œãã§è©Šããæã ãå£ããéã ã£ãã
2ã4ã¿ãã®å®æ©ç¢ºèªã¯éã£ã
hook ãšå€å®ãäœã£ãåŸã2ã4ã¿ãã§å®æ©ç¢ºèªãããã
è¿äºã®éäžã§ä¿åãæŒããšã確å®ã®ã»ãã§æ¢ãŸã£ã
è£ã§ sleep ãèµ°ãããŠä¿åãæŒããšãçãã®ã»ãã§ y/N ãåºãŠãN ã§ä¿åãããªãã£ã
y ã§4ä»¶ãä¿åãããã»ãã·ã§ã³IDã®éè€ã¯0ãæ¥æ¬èªãšç©ºçœãå«ããã©ã«ãåããã®ãŸãŸå ¥ã£ã
2ã¿ããéããŠãã埩å ãããšãå ã®ãã©ã«ãã»å ã®äŒè©±ã§å ¥ååŸ ã¡ã«ãªã£ããéãããŸãŸã®2ä»¶ã¯é£ã°ããã
ããã4ä»¶èŠã€ãããçŽããŠç¢ºããçŽããã
/exit ã§ claude ãçµããŠããã¿ãã®ã·ã§ã«ïŒïŒã©ãããŒïŒã¯æ®ããããããèªååæ¿ã®éäžããšå€å®ããŠç¢ºå®ã®ã»ãã§æ¢ããåŸ ã£ãŠãå€ããªãã£ããèªååæ¿ã®æé ã¯ãclaude ãçµãã£ãŠããæ°ãã claude ãèŒããŸã§ãã©ã®ç¬éãå°ã®ãã¡ã€ã«ã1ã€ä»¥äžããäœãã«ãªã£ãŠãããããã§ãå°ãç¡ããã°ãclaude ãçµããã¿ãããšã¿ãªããä¿åã®å¯Ÿè±¡ããå€ããŠ1è¡ç¥ãããããã«ãã
Claude in Chrome ã®åžžé§ãã¹ãïŒclaude.exe ã --chrome-native-host ã§èµ·åãããã®ïŒããã©ãããŒã®å€ã® claude ãšæ°ããŠãããé€å€ãã
èæ¯ã®ä»äº1ã€ããGit Bash ã®å ã¿ã®ããã§3ã4è¡ã®é·ã衚瀺ã«ãªã£ãŠãããããã»ã¹ã®æšã®èã ãã1è¡ã§åºãããã«ãã
äžã«æžãããy/N ãåŸ ã£ãŠããéã®ç¶æ ã®å€å
æ¬åœã®åèµ·åã§ã5æ¬äž2æ¬ãæ»ããªãã£ã
ãããŸã§å šéšéã£ãã®ã§ãæ¬åœã« PC ãåèµ·åããã5ã¿ããä¿åããåèµ·åããŠã埩å ãæŒããã3æ¬ã¯æ»ã£ããæ®ãã®2æ¬ã®ã¿ãã«ã¯ãããåºãŠããïŒäžéšãçç¥ïŒã
"3" åã®åŒæ°ãæå®ã㊠"AppendAllText" ãåŒã³åºãäžã«äŸå€ ⊠log.jsonl because it is being used by another processåå ã¯ã5æ¬ã®ã©ãããŒãåãç¬éã«ãåããã°ãã¡ã€ã«ãž1è¡ãã€æžããããšã ã£ãããã°ã«ã¯ã0.005ç§ã®éã«æžããã3è¡ã ããæ®ã£ãŠããã
PowerShell ãã .NET ã® AppendAllText ã§è¿œèšãããšããã¡ã€ã«ã¯ãä»ã®ããã»ã¹ã«ã¯èªãããšããèš±ããªããå ±æã¢ãŒãã§éããããå ã«éãã1æ¬ãæžããŠããéãæ®ãã¯éããã«äŸå€ã«ãªããã©ãããŒã¯ãšã©ãŒã§æ¢ãŸãèšå®ïŒ$ErrorActionPreference ã StopïŒã§åããŠããã®ã§ãäŸå€ã§ãã®ãŸãŸçµäºãããããããclaude ãèµ·åããçŽåŸã«ã ãclaude æ¬äœã¯è£ã§çãæ®ããã©ã®ã¿ãã«ãç¹ãã£ãŠããªãç¶æ ã«ãªã£ãã
ãã®å Žã§ã¯ãçãæ®ã£ã claude ãæ¢ããŠïŒäŒè©±ã®èšé²ã®æå»ãèŠãŠãå ¥åãç¡ãããšã確ãããŠããïŒã1æ¬ãã€éãçŽããŠæ»ããã
å ±æã§éãã ãã§ã¯ãè¡ãæ¶ãã
çŽ çŽãªçŽãã¯ãä»ã®ããã»ã¹ã«ãæžã蟌ã¿ãèš±ãå ±æã¢ãŒãïŒReadWriteïŒã§éãããšã ãããã§äŸå€ã¯åºãªããªããã ãã5ããã»ã¹ãã100è¡ãã€åæã«æžããããšã500è¡ã®ã¯ãã423è¡ããæ®ããã2è¡ãå£ããŠããã
åããã»ã¹ã¯ãéããæã«ç¥ã£ãŠããæ«å°Ÿã«æžããå¥ã®ããã»ã¹ãå ã«æžãè¶³ããŠããŠãããããç¥ããã«åãäœçœ®ãžæžããäžæžããåããäŸå€ãåºãªããªã£ãã ãã§ãé»ã£ãŠè¡ãæ¶ããå£ãæ¹ã«å€ãã£ãã
çŽãã¯3ã€éããã
ååä»ãã® mutexïŒããã»ã¹ããŸããéµïŒã§ãæžãé çªã1æ¬ãã€ã«ãã
å ±æã¢ãŒãã§éããæžãçŽåã«æ«å°Ÿãžç§»åïŒSeekïŒããŠããæžã
æžããªããŠãèœã¡ãªããäœåºŠãããçŽããŠé§ç®ãªã諊ãããæžããªãã£ãããš1è¡åºããŠç¶ããããã®ãã°ã¯èšºæçšãªã®ã§ã1è¡æ¬ ãããããã©ãããŒãèœã¡ãŠ claude ãå®ã«æµ®ãã»ãããã£ãšå°ã
è¯ã®éšåãç°¡ç¥åãããšããããªãïŒå®ç©ã¯ãããããã¡ã€ã«ã䜿çšäžã®æã ãæ°åããçŽããé§ç®ãªã1è¡ç¥ãããŠç¶ããïŒã
$m = [Threading.Mutex]::new($false, 'Local\session-log')
$acquired = $false
try {
try { $acquired = $m.WaitOne(2000) } catch [Threading.AbandonedMutexException] { $acquired = $true }
if ($acquired) { # éµãåããªããã°æžããã«è«ŠããïŒéµãªãã§æžããšããŸãäžæžããåãïŒ
$fs = [IO.FileStream]::new($logPath, [IO.FileMode]::Append, [IO.FileAccess]::Write, [IO.FileShare]::ReadWrite)
try { $null = $fs.Seek(0, [IO.SeekOrigin]::End); $fs.Write($bytes, 0, $bytes.Length) } finally { $fs.Dispose() }
}
} catch {
# èªã¿åãå°çšã»æš©éã®æåŠãªã©ãå«ããŠãããã§ã¯èœãšããªã
} finally {
if ($acquired) { $m.ReleaseMutex() }
$m.Dispose()
}ãã ãããã®éµã«å ¥ã£ãŠããã®ã¯ PowerShell ã§æžããã©ãããŒåŽã®æžãæã ãã ãåããã°ã«æžããã1ã€ã®æžãæïŒPython ã§æžããåŽïŒã¯ããŸã å ¥ã£ãŠããªãã
ãã¹ãã¯3æ¬è¶³ãããä»ã®æžãæãšå ±æããŠæžããããšãããã¯ããããŸãŸã§ãèœã¡ãªãããšã5ããã»ã¹ãåæã«æžããŠ500è¡ã1è¡ãæ¬ ããªãããšãçŽãåã®ã³ãŒãã§èœã¡ãã®ã確ãããŠããçŽããã
å¥ã®ã¢ãã«ã®ã¬ãã¥ãŒããããã«2ã€èŠã€ãã
çŽããåŸãå¥ã®ã¢ãã«ïŒDeepSeek V4.1 FlashïŒã«ã¬ãã¥ãŒããããã2ä»¶åºãŠããã
æåã®çŽãã¯ãmutex ã2ç§åŸ ã£ãŠåããªããŠããéµãªãã§æžããŠãããããã§ã¯ãæ··ãã§ããæã»ã©äžæžããåããåããªããã°æžããã«è«Šããããã«ããïŒäžã®ã³ãŒãçã¯ãã®åŸã®åœ¢ïŒ
IOException ããæãŸããŠããªãã£ãããã¡ã€ã«ãèªã¿åãå°çšã ã£ãããæš©éãæåŠãããããããšãå¥ã®çš®é¡ã®äŸå€ã§ã©ãããŒããšèœã¡ããIO 以å€ã®äŸå€ã§ã諊ããããã«ãã
ãã®2ä»¶ã«ããã¹ããè¶³ããïŒå¥ã®ããã»ã¹ãéµãæ¡ã£ããŸãŸæŸããªãïŒãã¡ã€ã«ãèªã¿åãå°çšïŒãçŽãåã®ã³ãŒãã§ã2æ¬ãšãèœã¡ãã®ã確ãããã
ãã¹ããå šéšéã£ãŠããã®ã«ããªãæŒããã
åäœãã¹ãã«ã¯ãè€æ°ã®ããã»ã¹ãåããã¡ã€ã«ã«åæã«æžãå Žé¢ãç¡ãã£ãã宿©ç¢ºèªã§ã¯åŸ©å ã§2ã¿ããåæã«éããŠãããã2æ¬ã§ã¯åœãããªãã£ãã5æ¬ã§åããŠåœãã£ãã
æ®æ®µã¯ãã¿ãã¯ç§ãæã§1æãã€éãã®ã§ãã©ãããŒãåãç¬éã«èµ·åããããšã¯ãªãã埩å ã¯ãè€æ°ã®ã¿ããåãç¬éã«èµ·åããå¯äžã®å Žé¢ã§ãããã¯ãã®éå ·ãååšããçç±ãã®ãã®ã ãéå ·ã®ç®çãããããŸã§äžåºŠãèµ·ããªãã£ãè¡çªãäœã£ãã
ä»ã¯ã5ããã»ã¹åæã®ãã¹ãããã®è¡çªã®çªäººã«ãªã£ãŠãããN æ¬ãåæã«èµ·ããéå ·ãäœããªããN æ¬åæã®ãã¹ãã¯æåã«çœ®ããŠããã¹ãã ã£ãã
çŽããŠãããããäžåºŠåèµ·åãã
2åç®ã®åèµ·åã®åã«ããã1ã€è¶³ããŠããããŠã£ã³ããŠã®äœçœ®ãšå€§ããã®åŸ©å ã ãæåã®åœ¢ã§ã¯ãå ãäœæã®ãŠã£ã³ããŠã«åãããŠããŠããå šã¿ãã1ã€ã®æ°ãããŠã£ã³ããŠã«ãŸãšãŸã£ãŠéããç§ã¯ãŠã£ã³ããŠãç»é¢ã«æšªã«äžŠã¹ãŠäœ¿ã£ãŠããã®ã§ãããã§ã¯äžŠã¹çŽãã®æéãæ®ãã
ã¿ãããããããèŒããŠãããŠã£ã³ããŠãåŒã
ä¿åã®æã«ãåã¿ãã® claude ãã©ã® Windows Terminal ã®ãŠã£ã³ããŠã«èŒã£ãŠãããã調ã¹ããWindows Terminal ã®ãŠã£ã³ããŠã¯ claude ãšã¯å¥ã®ããã»ã¹ã®ãã®ãªã®ã§ãclaude ã®ããã»ã¹IDããæ¢ããŠãèŠã€ãããªããããã§ãã³ã³ãœãŒã«ãçµç±ããã
claude ã®ããã»ã¹ã®ã³ã³ãœãŒã«ã«ã€ãªãïŒAttachConsoleïŒ
ãã®ã³ã³ãœãŒã«ã®çªãåãïŒGetConsoleWindowïŒ
ãã®çªã®æã¡äž»ãæ ¹å ãŸã§ãã©ãïŒGetAncestor ã« GA_ROOTOWNERïŒããããšããã®ã¿ããèŒããŠãã Windows Terminal ã®ãŠã£ã³ããŠã«çããåããŠã£ã³ããŠã®2ã¿ãããã¯ãåããŠã£ã³ããŠãè¿ã£ã
çãããŠã£ã³ããŠã®ã¯ã©ã¹åã Windows Terminal ã®ãã®ïŒCASCADIA_HOSTING_WINDOW_CLASSïŒãã確ãããŠãããäœçœ®ã»å€§ããã»æå€§åãã©ãããèšé²ã«è¶³ããåããªãã£ãã¿ãã¯è¶³ããªãã ãã§ãä¿åã¯æ¢ããªãã
è¯ã®éšåã¯ãããªãïŒWin32 ã®å®£èšãšã倱æããæã®åŸå§æ«ã¯çç¥ïŒã
[void][Win32]::FreeConsole() # èªåã®ã³ã³ãœãŒã«ãå€ããŠãã
if ([Win32]::AttachConsole($claudePid)) { # claude ã®ã³ã³ãœãŒã«ã«ã€ãªã
$con = [Win32]::GetConsoleWindow()
$wtWindow = [Win32]::GetAncestor($con, 3) # 3 = GA_ROOTOWNER
[void][Win32]::FreeConsole() # 次ã®ã¿ãã®åã«å€ã
}1ã€èœãšã穎ããã£ããã€ãªãã§ããéã«äœããåºåãããšãããã¯ã€ãªãã å ã®ã¿ãã®ç»é¢ã«æµããã調ã¹ãåŽã¯äœãåºåãããçµæã¯ãã¡ã€ã«ã«æžããŠãä¿åã®æ¬äœããããèªã圢ã«ããã
埩å ã¯ãŠã£ã³ããŠããšã« wt ãåŒã¶
埩å ã§ã¯ãå ã®ãŠã£ã³ããŠããšã« wt ã1åãã€åŒã¶ãåŒã¶åã« Windows Terminal ã®ãŠã£ã³ããŠã®äžèŠ§ãæ®ããåŒãã åŸã«å¢ãããŠã£ã³ããŠã1æã«çµããæã ãããããå ã®äœçœ®ãžåããïŒSetWindowPosïŒãçµããªããã°ãå¥ã®ãŠã£ã³ããŠãåãããŠããŸããããäœçœ®ãæ»ããªãã»ããéžã¶ãwt ããŠã£ã³ããŠãéãåãåã«åãããšäœçœ®ãå±ããªãããšãããã®ã§ãå°ãåŸ ã£ãŠç¢ºããããããŠããã°äžåºŠã ãæãçŽãã
çµæ
2åç®ã®åèµ·åã§ã¯ã5æ¬ãšãæ»ã£ãã5æ¬ãšãä¿åããã»ãã·ã§ã³IDã® --resume ã§èµ·åããŠãå ¥ååŸ ã¡ã§æ¢ãŸã£ããåæã«åãåºããã¿ãããåãäŒè©±ã2æéããã¿ããç¡ãã£ãã4æã®ãŠã£ã³ããŠã®äœçœ®ãšå€§ããããä¿åããå€ãšå®å šã«äžèŽããã
ãã°ã«ã¯ã5æ¬ãšãèµ·åã®è¡ãæ®ã£ããåããŠã£ã³ããŠã«æ»ãã2ã¿ãã¯ã0.0048ç§å·®ã§ã»ãŒåæã«æžãã2è¡ãšãæ®ã£ããéµãå¹ããŠããã
ãã ããããã¯1åç®ãšåãæ¡ä»¶ã®åçŸã§ã¯ãªãããŠã£ã³ããŠã1æãã€éãããã«ããã®ã§ãåãç¬éã«èµ·åããã®ã¯ãåããŠã£ã³ããŠã®äžã®2æ¬ã ãã ã£ãã1åç®ã«åœãã£ãã5æ¬ãåãç¬éã«èµ·åãããå Žé¢ã¯ãçŽããåŸã®æ¬åœã®åèµ·åã§ã¯ããŸã èµ·ããŠããªãããããå®ã£ãŠããã®ã¯ãä»ã5ããã»ã¹åæã®ãã¹ãã ã
ã¿ãŒããã«ã¯éžã³çŽããªãã£ã
åèµ·åã§æ¶ããã®ã¯ claude ã®ããã»ã¹ãªã®ã§ãã©ã®ã¿ãŒããã«ã䜿ã£ãŠãã--resume ã§èµ·ããçŽãæéã¯æ®ããã¿ãŒããã«ã«èŠãã®ã¯ãã³ãã³ã1çºã§è€æ°ã®ã¿ããéãããããšã ãã ãããã€ãèŠãããã§ãWindows Terminal ã®ãŸãŸã«ããã
WezTermïŒåŸ©å ã®æ©èœã¯ãããéšåç
WarpïŒæ©èœã®äžéšãã¯ã©ãŠãåæ
Claude ã®ãã¹ã¯ãããã¢ããªïŒã©ãããŒãèŒããªããWindows ã®åèµ·åã§ã»ãã·ã§ã³ãäžèЧããæ¶ãããšããå ±åãããïŒanthropics/claude-code ã® issue 54759ïŒ
å è¡äŸãšããŠãGitHub gist ã®ãRestore-ClaudeããèŠããSessionStart hook ã§èšé²ã㊠wt ã® new-tab ã§éãçŽãéªšæ Œã¯åãã ããçããŠãããã»åããŠãããã®ç¢ºèªãç¡ããèªååæ¿ãèããŠããªããä»åã®æéã®å€§åã¯ããã®2ã€ã«ãã£ãã
ãŸã 確ãããŠããªãããš
5æ¬ãåãç¬éã«èµ·åããå Žé¢ã¯ãçŽããåŸã®æ¬åœã®åèµ·åã§ã¯ããŸã èµ·ããŠããªãïŒãŠã£ã³ããŠããšã«éãããã«ããããïŒãä»ã¯ãã¹ããçªäººã
ãã°ãæžããã1ã€ã®æžãæïŒPython ã§æžããåŽïŒã¯ããŸã mutex ã«å ¥ã£ãŠããªããåæã«æžãçªã¯å°ãããã0ã§ã¯ãªã
ç§ã®1å°ã»ç§ã®äœ¿ãæ¹ã§ã®è©±ã ãæ®æ®µã¯6ã¿ãååŸãWindows 11 ãš PowerShell 7ãClaude Code 2.1.301 ã§ç¢ºããã
ãŸãšã
Claude Code ã®äžŠè¡ã»ãã·ã§ã³ãåèµ·åããæ»ãã®ã«èŠãã®ã¯ããã¿ããšãã©ã«ããšã»ãã·ã§ã³IDã®å¯Ÿå¿è¡šããšãããã1åã§éãçŽãã³ãã³ãã ãã ã£ãããã㯠hook 3æ¬ãš wt ã§æžãã
æéãããã£ãã®ã¯ãä¿åã®ç¬éã«ãèœãšããŠãããããæ±ºããã»ãã ã£ããåãããªããã®ã¯åããŠãããšã¿ãªãã確å®ãªãã®ã ãæ¢ããŠãçããããã®ã¯ææãç»é¢ã«åºããŠèªåã§æ±ºãããå šéšæ¢ãããã¿ã³ã¯ãéè¯ã®ã·ã§ã«1åã§äœ¿ããªããªãã
ãããŠããã¹ããå šéšéã£ãŠããŠããæ¬çªã®åèµ·åã§5æ¬äž2æ¬ãæ»ããªãã£ãïŒçŽããŠããã®åèµ·åã§ã¯ã5æ¬ãšãæ»ã£ãïŒãè€æ°ã®ã¿ããåæã«èµ·åããã®ã¯ããã®éå ·ãåãæã ãã ãéå ·ãäœãç¶æ³ã¯ãéå ·ãäœãåã«ã¯äžåºŠãèµ·ããŠããªãã