mcpField
S
swift-networking

swift-networking

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

swift-networking について

Apple の Network.framework を使う Swift 開発者向けのネットワークスキルです。TCP、UDP、QUIC の接続設定、ライフサイクル管理、移行、トラブルシューティングを扱います。

主な機能

  1. 01TCP、UDP、QUIC の選択
  2. 02NWConnection の設定と管理
  3. 03NetworkConnection の async/await ガイド
  4. 04送受信とエラー処理
  5. 05ネットワーク切り替えと再試行のガイド

活用シーン

  1. 01カスタムプロトコルや UDP 通信の実装
  2. 02接続状態と障害の管理
  3. 03ソケットや URLSession からの移行
  4. 04タイムアウトや TLS 障害の調査

インストール

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

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

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

同梱ファイル

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

references/
connection-states.md
getting-started.md
ios26-networking.md
migration.md
troubleshooting.md

詳細

Swift Networking

Network.framework は、Apple の最新のネットワーク API です。TCP/UDP 接続に対応し、BSD ソケットを、インテリジェントな接続確立、ユーザー空間ネットワーキング、シームレスなモビリティ対応に置き換えます。

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

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

リファレンス読み込むタイミング
Getting StartedTCP/UDP 用の NWConnection の設定、API の選択
Connection States.waiting、.ready、.failed の状態遷移への対応
iOS 26+ Networkingasync/await、TLV フレーミング、Coder プロトコルを使用した NetworkConnection の利用
Migration Guideソケット、CFSocket、SCNetworkReachability、URLSession からの移行
Troubleshootingタイムアウト、TLS エラー、接続問題のデバッグ

基本的なワークフロー

  1. 用途に応じてトランスポート(TCP/UDP/QUIC)を選択します
  2. NWConnection(iOS 12+)または NetworkConnection(iOS 26+)を作成します
  3. 接続のライフサイクルに対応する状態ハンドラーを設定します
  4. 適切なキューで接続を開始します
  5. 適切なエラー処理を行いながらデータを送受信します
  6. ネットワークの切り替え(Wi-Fi からモバイル通信)に対応します

Network.framework と URLSession の使い分け

  • URLSession:HTTP、HTTPS、WebSocket、シンプルな TCP/TLS ストリーム
  • Network.framework:UDP、カスタムプロトコル、低レベルの制御、ピアツーピア、ゲーム

よくある間違い

  1. 状態ハンドラーを無視する — 状態変更ハンドラーを設定せずに NWConnection を作成すると、接続の準備が整ったときや失敗したときに把握できません。まず必ず状態ハンドラーを実装してください。

  2. メインスレッドをブロックする — メインキューで receive() を呼び出さないでください。すべてのネットワーク操作には、バックグラウンドの DispatchQueue または Task を使用してください。

  3. キューの選択を誤る — 誤ったキュー(ネットワーク処理に UI キューを使う、または並行読み取りにシリアルキューを使うなど)は、デッドロックや、気付かないまま発生する失敗の原因になります。キューは必ず明示的に選択してください。

  4. ネットワークの切り替えに対応しない — Wi-Fi とモバイル通信の切り替えやネットワークの切断は、常に自動検出されるとは限りません。堅牢なアプリにするには、到達可能性のチェックと状態監視を実装してください。

  5. エラーからの復旧が不適切 — ネットワークエラーには、バックオフを伴う再試行ロジックが必要です。一時的なエラー(タイムアウト、一時的な切断)ですぐに失敗すると、UX が損なわれます。

コメント