CLAUDE LABEN
SUNSET — 旧 Workbench と実験的プロンプトツール API の廃止は明日8月17日です。残り1日となりましたLATEST — 最新は8月15日の v2.1.233 です。GitLab のマージリクエスト URL が --worktree と claude agents で扱えるようになり、MR は !N 形式で表示されますSECURITY — Windows で NT の \??\ デバイスプレフィックスを含むパスが UNC 検証をすり抜ける問題が直りました。NTLM 資格情報が漏れる経路が塞がれていますTODO — Opus 4.8・Sonnet 5・Fable 5・Mythos 5 以降では TodoWrite と Task 系ツールが既定で無効になりました。CLAUDE_CODE_ENABLE_TODO_TOOLS=1 で戻せますFORK — 8月14日の v2.1.232 で subagent_type: 'fork' が既定になり、会話全体とプロンプトキャッシュをそのまま引き継げるようになっていますMENTION — プロンプトで @ を打つと別のセッションを名前で呼び出せます。SendMessage がそのセッションへ直接届きますSUNSET — 旧 Workbench と実験的プロンプトツール API の廃止は明日8月17日です。残り1日となりましたLATEST — 最新は8月15日の v2.1.233 です。GitLab のマージリクエスト URL が --worktree と claude agents で扱えるようになり、MR は !N 形式で表示されますSECURITY — Windows で NT の \??\ デバイスプレフィックスを含むパスが UNC 検証をすり抜ける問題が直りました。NTLM 資格情報が漏れる経路が塞がれていますTODO — Opus 4.8・Sonnet 5・Fable 5・Mythos 5 以降では TodoWrite と Task 系ツールが既定で無効になりました。CLAUDE_CODE_ENABLE_TODO_TOOLS=1 で戻せますFORK — 8月14日の v2.1.232 で subagent_type: 'fork' が既定になり、会話全体とプロンプトキャッシュをそのまま引き継げるようになっていますMENTION — プロンプトで @ を打つと別のセッションを名前で呼び出せます。SendMessage がそのセッションへ直接届きます
記事一覧/Claude Code
Claude Code/2026-07-15上級

型は付いたのに、安全にはならなかった — JS→TS 移行で Claude Code に任せた範囲と任せなかった範囲

tsc が緑でも any は静かに漏れます。型カバレッジで移行の実態を測り、Claude Code に任せて速い作業と人が決めるべき判断を線引きし、悪化を止める CI ゲートまでを実装付きで整理した運用メモです。

Claude Code222TypeScript24型カバレッジ移行4CI4個人開発112

プレミアム記事

tsc --noEmit が緑になった翌週に、本番で Cannot read properties of undefined が出ました。

移行そのものは順調だったのです。JavaScript のままだったユーティリティ層をひととおり .ts に変え、strict: true も入れ、CI も通っていました。手元では「終わった」と思っていました。

落ちた場所を追うと、外部 API のレスポンスを受け取る関数でした。型はちゃんと付いています。ただしその型は、私が書いたのでも Claude Code が推論したのでもなく、as ApiResponse と手で押し込んだ嘘でした。

型が付いていることと、安全であることは別でした。個人開発で四つのサイトを回している身としては、痛いところを突かれた気分でした。

tsc が緑でも安全にならない、四つの漏れ道

移行後のコードベースを調べ直して分かったのは、any は「消した」つもりでも別の姿で残るということでした。私の場合、漏れ道は四つに整理できました。

漏れ道tsc は通るか実際に起きたこと
as による断定通る外部レスポンスを as ApiResponse で押し込み、欠けたフィールドが undefined のまま流れた
型定義のない依存パッケージ通る(noImplicitAny でも import 経由なら素通り)@types がない小さなライブラリの戻り値が実質 any で、そのまま伝播した
ジェネリクスの既定値通るuseState() や自作関数の型引数を省略し、推論が広がった
catch 節の値通るunknown のまま扱わず error.message に触れる分岐が残った

いずれも「エラーが出ないから気付けない」という共通点があります。移行の進捗を「変換したファイル数」で見ているかぎり、この四つは最後まで見えません。

進捗の指標を、ファイル数から型カバレッジに変える

そこで指標を入れ替えました。式レベルで型が付いている割合、いわゆる型カバレッジです。type-coverage を使えば一行で出ます。

npx type-coverage --detail --strict
# 12043 / 12876 94.53%
# src/lib/api-client.ts:42:15 - res
# src/lib/api-client.ts:58:9 - payload

--detail を付けると、any のまま残っている式が行番号付きで並びます。これが移行の実態でした。ファイル単位では 100% 変換済みなのに、式単位では 94.5% だったのです。残りの 5.5%、約 830 箇所が、先ほどの四つの漏れ道に分布していました。

数値そのものより、内訳が読めることに価値があります。漏れをファイル別に束ねると、手を入れる順番が決まります。

#!/usr/bin/env bash
# scripts/type-coverage-report.sh — any 残存をファイル別に集計する
set -euo pipefail
 
npx type-coverage --detail --strict 2>/dev/null \
  | grep -E '^[^ ]+\.tsx?:[0-9]+:[0-9]+' \
  | cut -d: -f1 \
  | sort | uniq -c | sort -rn \
  | head -20

私の場合、上位 5 ファイルに漏れの 6 割が集まっていました。全体を薄く直すより、この 5 ファイルの境界設計をやり直すほうが確実に速い、という判断がここで立ちます。移行は面ではなく、点から崩れていました。

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

この記事の続きを読む

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

この記事で得られること
type-coverage で式単位の型付与率を測り、ファイル数 100% 裏の 94.5% を可視化する集計スクリプト
Claude Code に任せて速い三つの作業と、as を嘘に変えないため人が決める四つの判断の線引き表
型カバレッジ 94.5%→99.2% を守ったラチェット式 CI ゲート(GitHub Actions・baseline 更新の記録法)
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Claude Code2026-08-10
同じ rm -rf が、10箇所では戻せて5箇所では戻せませんでした — auto モード既定化の前に可逆性を測る
8月14日から auto モードが Pro / Max / Team の既定になります。止まる境界は「取り消せない・破壊的・環境の外」ですが、可逆性は操作の名前ではなく実行時点の状態で決まりました。復旧不能バイトを数えるプローブと、15対象の実測をまとめます。
Claude Code2026-07-19
auto モードの設定が、いつの間にか自分でも思い出せなくなっていた — 既定へ戻す claude auto-mode reset の使いどころ
夜間の自動運用を続けるうちに、auto モードの設定を少しずつ触り足していました。ある朝の違和感で、自分が何を変えたのか思い出せないことに気づきます。既定へ戻す claude auto-mode reset を基点にして設定を組み直した、個人開発の片付けの記録です。
Claude Code2026-07-14
空の変数と rm -rf の夜 — Claude Code auto モードの事前確認に助けられた片付けの記録
空になった変数のせいで rm -rf が広範囲に化けかけた夜の記録です。set -u が空文字を素通りさせる理由を手元のシェルで検証し、ドライランを既定にした掃除スクリプトの実行結果まで残しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →