swift-networking について
Apple の Network.framework を使う Swift 開発者向けのネットワークスキルです。TCP、UDP、QUIC の接続設定、ライフサイクル管理、移行、トラブルシューティングを扱います。
主な機能
- 01TCP、UDP、QUIC の選択
- 02NWConnection の設定と管理
- 03NetworkConnection の async/await ガイド
- 04送受信とエラー処理
- 05ネットワーク切り替えと再試行のガイド
活用シーン
- 01カスタムプロトコルや UDP 通信の実装
- 02接続状態と障害の管理
- 03ソケットや URLSession からの移行
- 04タイムアウトや TLS 障害の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ johnrogers/ claude-swift-engineering --skill swift-networkingインストール後、Claude Code で/swift-networkingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/connection-states.mdgetting-started.mdios26-networking.mdmigration.mdtroubleshooting.md詳細
Swift Networking
Network.framework は、Apple の最新のネットワーク API です。TCP/UDP 接続に対応し、BSD ソケットを、インテリジェントな接続確立、ユーザー空間ネットワーキング、シームレスなモビリティ対応に置き換えます。
リファレンスの読み込みガイド
内容が必要になる可能性が少しでもある場合は、必ずリファレンスファイルを読み込んでください。 パターンを見落としたり、間違えたりするよりも、関連情報を把握しておくほうが確実です。
| リファレンス | 読み込むタイミング |
|---|---|
| Getting Started | TCP/UDP 用の NWConnection の設定、API の選択 |
| Connection States | .waiting、.ready、.failed の状態遷移への対応 |
| iOS 26+ Networking | async/await、TLV フレーミング、Coder プロトコルを使用した NetworkConnection の利用 |
| Migration Guide | ソケット、CFSocket、SCNetworkReachability、URLSession からの移行 |
| Troubleshooting | タイムアウト、TLS エラー、接続問題のデバッグ |
基本的なワークフロー
- 用途に応じてトランスポート(TCP/UDP/QUIC)を選択します
- NWConnection(iOS 12+)または NetworkConnection(iOS 26+)を作成します
- 接続のライフサイクルに対応する状態ハンドラーを設定します
- 適切なキューで接続を開始します
- 適切なエラー処理を行いながらデータを送受信します
- ネットワークの切り替え(Wi-Fi からモバイル通信)に対応します
Network.framework と URLSession の使い分け
- URLSession:HTTP、HTTPS、WebSocket、シンプルな TCP/TLS ストリーム
- Network.framework:UDP、カスタムプロトコル、低レベルの制御、ピアツーピア、ゲーム
よくある間違い
-
状態ハンドラーを無視する — 状態変更ハンドラーを設定せずに NWConnection を作成すると、接続の準備が整ったときや失敗したときに把握できません。まず必ず状態ハンドラーを実装してください。
-
メインスレッドをブロックする — メインキューで
receive()を呼び出さないでください。すべてのネットワーク操作には、バックグラウンドの DispatchQueue または Task を使用してください。 -
キューの選択を誤る — 誤ったキュー(ネットワーク処理に UI キューを使う、または並行読み取りにシリアルキューを使うなど)は、デッドロックや、気付かないまま発生する失敗の原因になります。キューは必ず明示的に選択してください。
-
ネットワークの切り替えに対応しない — Wi-Fi とモバイル通信の切り替えやネットワークの切断は、常に自動検出されるとは限りません。堅牢なアプリにするには、到達可能性のチェックと状態監視を実装してください。
-
エラーからの復旧が不適切 — ネットワークエラーには、バックオフを伴う再試行ロジックが必要です。一時的なエラー(タイムアウト、一時的な切断)ですぐに失敗すると、UX が損なわれます。