mcpField
I
ios-watchos

ios-watchos

github.com/alphaonedev開発42 回インストール
リポジトリ

ios-watchos について

ios-watchosは、SwiftとAppleのフレームワークを使ったwatchOSアプリ開発向けのスキルです。文字盤のコンプリケーション、iOSとの同期、健康データへのアクセス、OpenClaw Watch拡張を扱います。

主な機能

  1. 01WidgetKitのコンプリケーションとタイムライン更新
  2. 02WatchConnectivityによるデバイス間同期
  3. 03Apple Watch向けSwiftUIインターフェース
  4. 04HealthKitによる健康データアクセス
  5. 05OpenClaw Watch拡張の統合

活用シーン

  1. 01歩数を表示するフィットネス用コンプリケーションの構築
  2. 02iOSとApple Watch間でのワークアウトデータ同期
  3. 03健康指標を使うwatchOSアプリの開発

インストール

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

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill ios-watchos

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

詳細

ios-watchos

目的

このスキルを使うと、Swift と Apple のフレームワークを使用して watchOS アプリを開発できます。コンプリケーション用の WidgetKit、デバイス間の同期を行う WatchConnectivity、インターフェース用の SwiftUI、ヘルスデータにアクセスする HealthKit、カスタム機能を追加する OpenClaw Watch 拡張機能に重点を置いています。

使用する場面

タイムラインの更新などの動的なコンプリケーション、iOS デバイスからのリアルタイムなデータ転送、Watch 上のカスタム SwiftUI レイアウト、ワークアウトなどの健康指標の照会、または拡張機能のための OpenClaw 統合が必要な watchOS アプリを構築する際に、このスキルを使用してください。フィットネストラッキングアプリや通知ベースのツールなどのシナリオに適用します。

主な機能

  • WidgetKit のコンプリケーション:ウォッチフェイス向けにタイムラインベースの更新を作成します。たとえば、TimelineProvider を使って 15 分ごとにデータを更新します。
  • WatchConnectivity:iOS と watchOS 間でデータを送受信するセッションを確立し、メッセージごとに最大 100KB の転送を処理します。
  • Watch 上の SwiftUI:NavigationView や List などのコンポーネントを使って、44mm ディスプレイなどの小さな画面に最適化された、応答性の高いインターフェースを構築します。
  • HealthKit:HKWorkout や HKQuantityTypeStepCount などの健康データ型にアクセスし、バックグラウンド配信を使ってリアルタイムの更新を受け取ります。
  • OpenClaw Watch 拡張機能:アプリの機能を拡張するカスタム API を活用します。安全な接続のため、$OPENCLAW_API_KEY による認証が必要です。

使用パターン

効果的に実装するには、次のパターンに従ってください。

  1. コンプリケーションの場合:Xcode で WidgetKit 拡張機能を設定し、TimelineProvider のサブクラスを実装して、getTimeline(in:completion:) を使ってエントリーを生成します。例:プロバイダーで、日付とビューを含む TimelineEntry オブジェクトの配列を返します。
  2. HealthKit を統合する場合:特定のデータ型へのアクセス許可をリクエストしてから、サンプルを照会します。例:権限を確認した後、HKSampleQuery を使ってワークアウトデータを取得します。
  3. 一般的なパターン:WatchConnectivity を使ってデータを同期します。AppDelegate で WCSession を有効化し、didReceiveMessage で受信メッセージを処理します。
  4. OpenClaw の場合:API キーを使って拡張機能を初期化し、デリゲートでイベントを処理します。例:アプリの起動シーケンスで OpenClawSession.shared.start(with: $OPENCLAW_API_KEY) を呼び出します。
  5. 具体的な使用例 1:フィットネスアプリ用のコンプリケーションを構築します。HealthKit で歩数を照会し、毎時更新する TimelineProvider を作成します。let entry = TimelineEntry(date: Date(), stepCount: 500); provider.getTimeline(in: context, completion: { timeline in ... })。
  6. 具体的な使用例 2:iOS から Watch にワークアウトデータを同期します。iOS アプリで WCSession.default.sendMessage(["workoutID": "123"], replyHandler: nil) を使い、Watch アプリの session(didReceiveMessage: handler) で処理します。

共通のコマンド/API

  • Xcode コマンド:xcodebuild -scheme WatchAppExtension -destination 'platform=watchOS Simulator,name=Apple Watch Series 6' -configuration Debug を使用して、watchOS アプリをビルドして実行します。CI/CD パイプラインで使用してください。
  • WidgetKit API:シンプルな TimelineProvider を実装します:class MyProvider: TimelineProvider { func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) { let entry = SimpleEntry(date: Date()); completion(entry) } }。
  • WatchConnectivity API:WCSession.default.activate() でセッションをアクティベートします。データを送信します:WCSession.default.sendMessage(["key": "value"], replyHandler: nil, errorHandler: nil)。
  • HealthKit API:認証をリクエストします:let typesToRead = Set([HKObjectType.workoutType()]); HKHealthStore().requestAuthorization(toShare: nil, read: typesToRead) { granted, error in if granted { // Proceed } }。
  • OpenClaw API:認証を指定して初期化します:let session = OpenClawSession(apiKey: ProcessEnv.get("OPENCLAW_API_KEY")); session.connect(endpoint: "wss://api.openclaw.com/watch"); session.delegate.didReceiveData で応答を処理します。
  • 設定形式:OpenClaw 用の JSON 設定を使用します:{ "apiKey": "$OPENCLAW_API_KEY", "endpoint": "wss://api.openclaw.com/watch", "watchID": "device-uuid" }。let config = try JSONDecoder().decode(OpenClawConfig.self, from: data) で読み込みます。

統合に関するメモ

Xcode で watchOS ターゲットを追加して、このスキルを統合します:File > New > Target > watchOS > Watch App の順に選択し、グループのケイパビリティを使って iOS アプリにリンクします。HealthKit を使用するには、プロジェクト設定で HealthKit ケイパビリティを有効にし、NSHealthShareUsageDescription キーを Info.plist に追加します。WatchConnectivity を使用する場合は、iOS アプリと watchOS アプリの両方が同じ App Group エンタイトルメントを共有していることを確認します。OpenClaw を使用する場合は、ビルドスクリプトで $OPENCLAW_API_KEY 環境変数を設定し(例:export OPENCLAW_API_KEY=your_key)、Swift Package Manager 経由で OpenClaw SDK をインポートします:.package(url: "https://github.com/openclaw/sdk.git", from: "1.0.0")。Simulator で統合をテストします:Apple Watch Simulator で watchOS アプリを実行し、Console アプリでログを確認してデータの流れを検証します。

エラー処理

エラーには事前に対処します:WidgetKit では、getTimeline 内でタイムラインエラーを確認し、失敗した場合は再試行します(例:context が無効な場合はログを記録して空のタイムラインを返します)。WatchConnectivity では、.notReachable などの WCSession エラーを捕捉し、メッセージを後で送信できるようキューに追加します。HealthKit では、クエリの前に認証を確認します。たとえば、HKError.Code.errorAuthorizationDenied の場合は、再試行ボタン付きの UIAlertController でユーザーに促します。OpenClaw では、API エラー(例:401 Unauthorized)を解析し、有効期限が切れている場合は $OPENCLAW_API_KEY を更新します。API 呼び出しには Swift の try-catch を使用します:do { try OpenClawSession.shared.connect() } catch let error as OpenClawError { print(error.localizedDescription); retry after delay }。デバッグ用に、すべてのエラーを os_log で記録します。

グラフ上の関係

  • 関連先:mobile クラスター(例:クロスプラットフォーム機能のため、ios スキルとタグを共有します)。
  • リンク先:iOS と Watch の同期には、WatchConnectivity 経由で ios スキルにリンクします。
  • 接続経由:watchos タグ、フィットネス関連スキルとの healthkit 統合、カスタム拡張機能用の openclaw-watch。

コメント