CLAUDE LABEN
WORKFLOWS — Claude CodeのDynamic Workflowsが一般提供に。Claudeが計画し、1セッションで数百の並列サブエージェントを走らせ、報告前に出力を検証しますSCALE — Opus 4.8と組み合わせると、数十万行規模のコードベース移行をキックオフからマージまで任せやすくなりましたULTRACODE — effortメニューから有効化するultracode設定は、effortをxhighに上げ、ワークフローを使うかどうかをClaudeが自動判断しますEFFORT — claude.aiのモデルセレクタ横にeffortコントロールが加わり、extra(Codeではxhigh)やmaxで難所により深く取り組みますWFSIZE — /configのDynamic workflow size設定で、ワークフローの規模(small/medium/largeのエージェント数目安)を指定できますOPUS48 — Claude Opus 4.8は引き続き一般提供中。コーディング・エージェント能力・推論・実務知識がOpus 4.7から底上げされていますWORKFLOWS — Claude CodeのDynamic Workflowsが一般提供に。Claudeが計画し、1セッションで数百の並列サブエージェントを走らせ、報告前に出力を検証しますSCALE — Opus 4.8と組み合わせると、数十万行規模のコードベース移行をキックオフからマージまで任せやすくなりましたULTRACODE — effortメニューから有効化するultracode設定は、effortをxhighに上げ、ワークフローを使うかどうかをClaudeが自動判断しますEFFORT — claude.aiのモデルセレクタ横にeffortコントロールが加わり、extra(Codeではxhigh)やmaxで難所により深く取り組みますWFSIZE — /configのDynamic workflow size設定で、ワークフローの規模(small/medium/largeのエージェント数目安)を指定できますOPUS48 — Claude Opus 4.8は引き続き一般提供中。コーディング・エージェント能力・推論・実務知識がOpus 4.7から底上げされています
記事一覧/Claude Code
Claude Code/2026-07-15上級

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

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

Claude Code189TypeScript24型カバレッジ移行2CI4個人開発109

プレミアム記事

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-07-14
空の変数と rm -rf の夜 — Claude Code auto モードの事前確認に助けられた片付けの記録
複数のアプリ用リポジトリのキャッシュをまとめて掃除する作業を Claude Code に任せた夜、空になった変数のせいで危うく広範囲を削除しかけました。auto モードの rm -rf 事前確認に救われた実運用の記録と、そこから整えた自分の確認ルールを丁寧に綴ります。
Claude Code2026-07-08
自コードの Required Reason API 申告漏れを Claude Code で棚卸しする
PrivacyInfo.xcprivacy の理由コードは、依存ライブラリだけでなく自分のコードにも必要です。個人開発の壁紙アプリで申告漏れを見つけた経験から、Swift ソースを走査して該当 API と理由コードを突き合わせる Claude Code ワークフローをまとめます。
Claude Code2026-07-07
検知はできても、鳴りすぎて気づけなくなった — 個人運用のアラートを一通の『起こす価値のある報せ』に絞るまで
無音の不発を検知できるようにした途端、今度は通知が鳴りすぎて麻痺しました。事象ではなく行動を単位にアラートを畳み、ヒステリシスと静音時間、段階的エスカレーションで『起こす価値のある報せ』だけを残すまでの設計メモです。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →