Claude Media
Claude CodeでApple Watchアプリを作る — watchOS独立実行アプリの手順

Claude CodeでApple Watchアプリを作る — watchOS独立実行アプリの手順

Apple Watch上でClaude Codeは動かず、Macで開発します。Claude CodeでwatchOSアプリを作る2つの経路と、独立実行アプリの作り方、シミュレーター名の調べ方、見た目確認でつまずく点をまとめます。

Claude CodeでwatchOSアプリを作る経路は2つあります。ターミナルでSwiftUIのコードを書いてxcodebuildでビルドする経路と、Xcodeに組み込まれたClaude for Xcodeを使う経路です。違いが出るのは、シミュレーターで見た目を確かめる場面です。

Apple Watch上でClaude Codeは動くのか

Apple Watchの上でClaude Codeは動きません。Claude Codeの動作環境はmacOS 13.0以上、Windows 10 1809以上、Ubuntu 20.04以上で、watchOSは含まれません。Apple Watchアプリを作るときは、Mac上のClaude Codeでコードを書き、ビルドしたアプリをApple Watchのシミュレーターか実機で動かします。

Apple Watchでの利用を考えている場合は、次の2つに分けて読むと迷いません。

やりたいことこの記事の該当部分
Claude CodeでApple Watch向けアプリを作るこの記事の該当部分全体(独立実行アプリの作り方からビルドまで)
XcodeからClaudeを使うこの記事の該当部分「CLIとClaude for Xcodeの使い分け」とClaude for Xcodeの解説

前提 — macOSとXcode、そしてシミュレーターの有無

watchOSアプリの開発にはmacOSとXcodeが必須です。WindowsやLinuxではXcodeが動かないため、macOS上での作業になります。Claude Codeを使う場合も同じです。

CLIの見た目確認(Computer use)はmacOS限定で、ProまたはMaxプランが条件です。Team・Enterpriseプランでは使えず、-pによる非対話モードでも使えません。

作業を始める前に、手元のXcodeにwatchOSのシミュレーターが入っているかを確かめます。Xcode 26.6とwatchOS 26.5のランタイムが入った環境では、次のように確認できます。

xcodebuild -version
xcrun simctl list runtimes | grep -i watchos
xcrun simctl list devices available | grep -A3 "watchOS"

出力は次のとおりです(デバイスのIDは省略しています)。

Xcode 26.6
Build version 17F113
watchOS 26.5 (26.5 - 23T570) - com.apple.CoreSimulator.SimRuntime.watchOS-26-5
-- watchOS 26.5 --
    Apple Watch Series 11 (46mm) (Shutdown)
    Apple Watch Series 11 (42mm) (Shutdown)
    Apple Watch Ultra 3 (49mm) (Shutdown)

watchOSの行が出なければ、xcodebuild -downloadPlatform watchOSでランタイムを入れます。-downloadPlatformの引数にwatchOSが選べることは、xcodebuild -helpの出力に載っています。ここに出たApple Watch Series 11 (46mm)のような名前が、後でxcodebuildの-destinationに渡すシミュレーター名になります。

独立実行アプリにするか、iPhoneとセットにするか

Apple Watchは、iPhoneが手元になくても動くことが期待されます。Appleは、iPhone側のアプリを必要としない独立実行アプリを推奨しており、作り方は2通りあります。

くらべる

watchOSアプリの2つの作り方

Watch専用

Watch-only App

iOS側のアプリを持たない、Apple Watch専用アプリです。Xcodeで「File > New > Project」から、watchOSタブのAppを選び、プロジェクト名の入力画面で「Watch-only App」にします。ペア設定されたiPhoneには何もインストールされません。

独立動作に切り替え

iOSアプリとセット

「Watch App with New Companion iOS App」で作ると、既定は依存型(dependent)のwatchOSアプリです。iPhone側のアプリのインストールが終わるまで起動できません。独立動作にするには、Watch Appターゲットの「Deployment Info」で「Supports Running Without iOS App Installation」を有効にします。この項目は、新規プロジェクトでは既定で無効です。

既存のiOSプロジェクトにwatchOSを足す場合は、プロジェクトエディタの「Add a target」からwatchOSタブのAppを選び、「Watch app for Existing iOS App」を指定します。

Watch-only Appを選ぶと、Xcodeは4つのターゲットを作ります。1つ目のルートターゲットはiOS側のラッパーとなるスタブで、ルートのバンドルIDの設定とApp Store向けのパッケージングを担います。このバンドルIDはUniversal Purchaseやデバイス間の通信に使われます。スタブからiOSの実行ファイルは作られません。残る3つがアプリ本体と、そのユニットテスト・UIテストです。

独立実行アプリでApple Watch単体のテストが必要な4項目

独立実行アプリは、アカウント作成やデータ取得をiPhoneなしで済ませる必要があります。Appleが挙げる確認項目は次の4つで、Claude Codeに実装を頼むときも、そのまま依頼文の受け入れ条件にできます。

確認

Apple Watch単体で確かめる項目

  • アカウント

    アカウント作成とサインインを、Apple Watch上で完結させます。

  • 権限

    システム機能の許可を求めるダイアログを、iPhoneではなくApple Watch上に出します。

  • データ取得

    WatchConnectivityを主な経路にしません。CloudKitや自前サーバーとの同期を検討します。

  • 通知

    コンプリケーション用を含むプッシュ通知を、Apple Watchへ直接送ります。

連携するiOSアプリがあれば、iPhoneが使えるときに限ってWatchConnectivityで情報を受け取れます。

Claude Codeでビルドする — CLIの手順

Claude Codeは他の言語のプロジェクトと同じように、Bashツール経由でコードを書いてビルドします。ビルドにはxcodebuildを使い、watchOS向けの違いは-destinationの指定です。

先ほど調べたシミュレーター名を使って-destinationを指定します。次のスキーム名とシミュレーター名は、書式を示すための例です。

xcodebuild -scheme "MyWatchApp Watch App" \
  -destination "platform=watchOS Simulator,name=Apple Watch Series 11 (46mm)" \
  build

スキーム名とシミュレーター名は、自分のプロジェクトと環境のものに置き換えます。シミュレーター名が合わないときは、xcodebuild -scheme "..." -showdestinationsで宛先の一覧を出せます。-showdestinationsはxcodebuild -helpに載っています。CLAUDE.mdに「watchOSのビルドは上のコマンドで行う」と書いておくと、セッションごとに宛先を探し直さずに済みます。

シミュレーターの見た目を確認する — Computer useの設定

ビルドが通ったあとの見た目確認には、CLIのComputer useを使います。公式ドキュメントは「Swiftアプリをコンパイルし、起動し、すべてのボタンをクリックして、コードを書いたのと同じ会話の中でスクリーンショットを撮る」ことができると説明しています。例に挙がっているシミュレーターはiOS Simulatorです。

Claude Code DesktopのiOS SimulatorペインはiOS向けの機能です。watchOSのシミュレーターはCLIの画面操作で扱います。

有効化はCLIの対話セッションで行います。

手順

CLIでComputer useを有効にする

  1. 1

    /mcpを開く

    対話セッションで/mcpを実行します。一覧にあるcomputer-useは、最初は無効です。

  2. 2

    サーバーを有効にする

    computer-useを選んで「Enable」を選びます。設定はプロジェクト単位で保持されます。

  3. 3

    macOSの権限を許可する

    最初に画面操作が必要になったとき、「アクセシビリティ」と「画面収録」の許可を求められます。許可しても、画面収録の反映にClaude Codeの再起動が要ることがあります。

有効にしたあとも、すべてのアプリが操作対象になるわけではありません。セッションの中で初めてアプリが必要になったとき、端末にそのアプリの許可を求める確認が出ます。Simulatorを操作させたいときは、ここで「Allow for this session」を選びます。

操作中は次の点が挙動として表に出ます。

  • 操作を始めると他のアプリが隠れ、ターンの終了時に元へ戻ります。端末のウィンドウは隠れず、スクリーンショットにも写りません
  • 画面操作ができるセッションは同時に1つだけです。2つ目のセッションは、ロックを持つセッションを名指しするエラーで失敗します
  • 途中で止めたいときはEscを押します。ターミナルならCtrl+Cでも止まります

依頼文は、操作対象のアプリを名前で書くと意図が伝わりやすくなります。

watchOS Simulatorでアプリをビルドして起動し、各画面をタップして
クラッシュしないか確かめてください。エラー状態はスクリーンショットを撮って。

SwiftUIでアプリの骨格を書く

watchOSアプリはSwiftUIで作ります。Appプロトコルに準拠した構造体が、アプリのエントリーポイントです。

import SwiftUI
 
@main
struct MyProject_Watch_App: App {
    var body: some Scene {
        WindowGroup {
            NavigationView {
                ContentView()
            }
        }
    }
}

通知のカテゴリごとに専用の画面を出したいときは、WKNotificationSceneを追加します。表示内容はWKUserNotificationHostingControllerを継承したクラスで組み立てます。

scenePhase環境値だけでは扱えないイベントがあります。ワークアウトの設定と復旧、拡張ランタイムセッション、リモート通知の登録などです。これらにはWKApplicationDelegateに準拠したアプリデリゲートを用意し、@WKApplicationDelegateAdaptorで組み込みます。

SwiftUIのListは、storyboard時代のテーブルにはなかったプラッタースタイル、スワイプアクション、行の並べ替えに対応します。Xcodeのキャンバスでプレビューしながら実装できるため、アプリを起動せずにUIを調整できます。

CLIとClaude for Xcodeの使い分け

Claude for XcodeはXcode 26.3に入ったClaude Agent SDKの統合です。XcodeはiPhone・iPad・Mac・Apple Watch・Apple Vision Pro・Apple TV向けアプリの開発環境で、Claude for Xcodeはその中で動きます。

どちらの経路でも、Xcode Previewsを使った見た目の確認ができます。Claude for XcodeはXcode Previewsをキャプチャして、作っているSwiftUIのビューが実際にどう見えるかを確かめ、直してゆけます。さらにXcode 26.3は、その機能をModel Context Protocol(MCP)経由でも使えるようにしています。Claude CodeからXcodeにMCPで接続すれば、CLIから離れずにPreviewsを取得できます。

Claude for Xcodeの土台はClaude Agent SDKで、Claude Codeと同じ実行基盤です。そのためサブエージェント、バックグラウンドタスク、プラグインを、Xcodeの中を離れずに使えます。

観点CLI(Computer use)CLI + Xcode MCPClaude for Xcode
視覚確認の対象CLI(Computer use)起動したシミュレーター画面CLI + Xcode MCPXcode PreviewsClaude for XcodeXcode Previews
条件CLI(Computer use)macOS、Pro・MaxCLI + Xcode MCPXcode 26.3以降Claude for XcodeXcode 26.3以降(Claude Agent SDKの統合)
向く場面CLI(Computer use)ビルドからシミュレーター実行までを1つの会話で通すCLI + Xcode MCPCLIのままPreviewsを見て直すClaude for XcodeIDEの中で長い作業を任せる

よくあるつまずき

画面収録を許可したのにプロンプトが消えない

macOSが、許可後にClaude Codeの再起動を求めることがあります。Claude Codeを完全に終了して、新しいセッションで試します。それでも出る場合は、「システム設定 > プライバシーとセキュリティ > 画面収録」に端末アプリが入っているか確認します。

作業が終わったのに別のセッションが画面を操作できない

ロックは、最初の画面操作で取られ、セッションを抜けたときに外れます。タスクが終わった時点では外れないので、操作を終えたセッションを閉じるまで、別のセッションは待たされます。操作中のセッションが異常終了した場合は、プロセスがなくなったことをClaude Codeが検知して、ロックが自動で外れます。

まとめ

独立実行にするかどうかはプロジェクト作成の時点で決まり、後から変えるなら「Supports Running Without iOS App Installation」の1項目です。Previewsで繰り返し直す段階とシミュレーターで通し確認する段階で、使う経路を切り替える選択肢があります。

参照した一次ソース

この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。

  1. developer.apple.com/documentation/watchos-apps
  2. developer.apple.com/documentation/watchOS-Apps/creating-independent-watchos-ap…
  3. developer.apple.com/documentation/watchOS-Apps/setting-up-a-watchos-project
  4. developer.apple.com/documentation/watchOS-Apps/building_a_watchos_app
  5. code.claude.com/docs/en/computer-use
  6. anthropic.com/news/apple-xcode-claude-agent-sdk
  7. code.claude.com/docs/en/setup
この記事を共有:XはてブLinkedIn