mcpField
S
swift-diagnostics

swift-diagnostics

github.com/johnrogers開発233162 回インストール40 週間前に更新
リポジトリ

swift-diagnostics について

iOS・macOS 開発者向けのデバッグスキルです。診断ツリーに沿って、ナビゲーション、ビルド、メモリ、パフォーマンスの問題を体系的に調べます。

主な機能

  1. 01症状別の診断ワークフロー
  2. 02診断ツリー付きの参照ガイド
  3. 03必須の初期チェック
  4. 04一つずつ変更して検証
  5. 05最小再現例の作成ガイド

活用シーン

  1. 01NavigationStack やディープリンクの不具合調査
  2. 02Swift パッケージのビルドや依存関係の問題調査
  3. 03循環参照やメモリ増加の確認
  4. 04ビルド遅延や Xcode の停止の診断

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/johnrogers/claude-swift-engineering --skill swift-diagnostics

インストール後、Claude Code で/swift-diagnosticsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
build-issues.md
build-performance.md
memory.md
navigation.md
xcode-debugging.md

詳細

Swift Diagnostics

iOS/macOS 開発のための体系的なデバッグワークフローです。これらのパターンに沿って構造化された診断アプローチを実践することで、数時間ではなく数分で根本原因を特定できます。

リファレンスの読み込みガイド

内容が必要になる可能性が少しでもある場合は、必ずリファレンスファイルを読み込んでください。 パターンを見落としたり、間違えたりするより、事前にコンテキストを把握しておくほうが適切です。

リファレンス読み込むタイミング
ナビゲーションNavigationStack が応答しない、予期しないポップが発生する、ディープリンクに失敗する場合
ビルドの問題SPM の解決、"No such module"、依存関係の競合
メモリ循環参照、メモリ使用量の増加、deinit が呼び出されない場合
ビルドパフォーマンスビルドが遅い、Derived Data の問題、Xcode がハングする場合
Xcode のデバッグLLDB コマンド、ブレークポイント、ビューのデバッグ

基本的なワークフロー

  1. 症状のカテゴリを特定する - ナビゲーション、ビルド、メモリ、またはパフォーマンス
  2. 関連するリファレンスを読み込む - 各リファレンスには診断用の決定木があります
  3. 必須の初期チェックを実行する - コードを変更する前に行います
  4. 決定木に沿って進める - 2~5 分で診断にたどり着きます
  5. 修正を適用して検証する - 一度に 1 つの修正を行い、そのつどテストします

重要な原則

「不可解な」問題の 80% は、予測可能なパターンに起因します。

  • ナビゲーション:Path の状態管理または遷移先の配置
  • ビルド:古いキャッシュまたは依存関係の解決
  • メモリ:タイマー/オブザーバーのリークまたはクロージャのキャプチャ
  • パフォーマンス:コードのバグではなく、環境の問題

体系的に診断してください。決して推測しないでください。

よくある間違い

  1. 必須の初期チェックを省略する — 診断を行う前にコードの変更(クリーンビルド、シミュレーターの再起動、Xcode の再起動)に取りかかると、存在しない問題を追いかけることになります。必ず必須チェックから始めてください。

  2. 複数の変更を一度に行う — 「DerivedData を削除して、シミュレーターを再起動して、Xcode を強制終了しよう」では、実際にどの修正が効果を発揮したのか特定できません。変数は一度に 1 つずつ変更してください。

  3. 原因が分かっていると思い込む — 「NavigationStack が動かなくなった。原因は自分の reducer に違いない」——実際には DerivedData が古かっただけかもしれません。診断用の決定木を使えば、思い込みを防げます。推測せず、決定木に従ってください。

  4. メモリに関する基本事項を見落とす — deinit が呼び出されないのは循環参照が原因ですが、初心者はアーキテクチャのせいにしがちです。リファクタリングする前に、Instruments を使ってリークを検証してください。直感ではなく、データに基づいて判断してください。

  5. 問題を切り分けない — アプリ全体でテストすると診断が複雑になります。問題の機能だけを含む最小限の再現例を作成してください。切り分けることで根本原因が明らかになります。

コメント