View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

その他のビデオ

ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。

  • 概要
  • トランスクリプト
  • 独立したWatch Appを開発する

    watchOS 6ではAppを完全に独立させることができ、Apple Watch専用のAppを開発できるほか、Apple Watch用のApp Storeも用意されるため、watchOSのユーザー体験がまったく新しいレベルに引き上げられます。このセッションでは、多くのiOSフレームワークとテクノロジーの力をwatchOSで活用することで、Apple Watchで完全に独立した体験を作り出す方法を紹介します。

    リソース

    • Creating independent watchOS apps
    • WatchKit
      • HDビデオ
      • SDビデオ
    • プレゼンテーションスライド(PDF)

    関連ビデオ

    WWDC19

    • 認証の新機能
    • Appleでサインインの紹介
    • watchOS 6でオーディオをストリーミングする
    • watchOSでのSwiftUI
  • このビデオを検索

    (音楽)

    (拍手) watchOSのエンジニア ニール・デサイです 本日はIndependent Watch Appsの 作成方法を説明します

    Apple Watchだけで外出できる喜びを 多くの人が享受しています 操作の迅速性と自由度が ユーザに愛されているのです Apple Watchだけを身に着け 運動できたり 電話にも出られます

    そしてApple Watchは 大切な人や情報やAppと つながる手助けをしてくれるのです

    このようにApple Watchの 自由度を享受している時ユーザは iPhoneをオプションと考えています

    我々はユーザの期待に応える Watch Appを求めています そのためのIndependent Watch Apps という新コンセプトを紹介します iPhone Appは 任意のエクスペリエンスとなります

    すでに多くのAppは ある程度 独立しています Outcastは Apple Watchから全てが 操作可能なPodcast Appのいい例です CARROT Weatherもその一例で 私はいつもApple Watchだけで操作しています また 海外旅行の際の通貨換算には Elkを使っています これらのiPhone Appもありますが iPhone Appはオプションなんです 今回初めて― iOS AppなしでApple Watch Appが 提供できるようになりました (拍手) どうも (拍手) Appを独立させるため今年 多くの新機能を導入します 例えば プッシュ通知をデバイスに 直接送信できるようにしたり サインオンをさらに簡単にするなどの 多くの機能です まずは これらのアプリケーションの インストール方法について話します

    watchOS 5までは Watch Appが iOS Appに組み込まれているため 両方がiPhoneに ダウンロードされていました そしてiPhoneがWatch AppをApple Watchに インストールするタスクを担っていました

    iOS 13とwatchOS 6では これを完全に変更します App StoreのServerはインストールする必要があるものを 適切な場所にインストールするようになります そしてこれは現在App Storeにある 全てのアプリケーションに適用されます

    そのため iOS Appには Watch Appが含まれなくなり iOS Appのダウンロード制限の 対象にはなりません そして… どうも (拍手) これは App StoreのServer上にある 全てのAppのビットコードを再コンパイルして iOS AppをWatch Appから切り離すことで 可能になります これは各デバイスでそれぞれのApp (iPhoneではiPhone AppをWatchはWatch App)を ダウンロードするという意味です

    デバイスへ直接インストールすることが できるようになったことで Watch Appのアセットとバリアントの 軽減が可能になりました ユーザがSeries 4のデバイスを 持っている場合― このサイズに合う適切なバリアントと アーキテクチャのみをインストールできます このロジックは アセットにも適用されます アセットカタログに 特定のデバイス用の特定のアセットを設定した場合は そのアセットだけをそのデバイスに インストールできます つまり ダウンロードと Watch Appのバイナリのサイズが はるかに縮小されるのです Swiftを使用している場合ですが Swift 5とABIの安定性により Swift dylibは Appには含まれません ダウンロードは さらに縮小されます 次に ユーザはどのようにAppを 取得するか説明します

    Appは継続して iOS App Storeで見られますが watchOS 6の新機能として Apple Watch向けApp Storeを紹介します それは主要なセクションを完備した フル機能のApp Storeです 詳細なプロダクトページや検索 特集やエディターのおすすめも完備しています Appの購入もApple Watch上でできます 本当にすばらしいと思います それでは 新しいWatch App Storeの Appの種類とそれらの動作について説明します

    現在のApp Store内にあるものは全て 依存アプリケーションと呼ばれています Watch Appはシステムにより iPhone Appに依存しているとみなされるからです

    例えば Watch App Storeから 依存アプリケーションを取得すると システムは iPhoneへ iPhone Appのダウンロードを開始します iPhone Appがインストールされるまで watchOS Appの起動はブロックされます システムがWatch Appは iPhone Appに 依存していると みなすからです

    しかし依存Appと違い 独立したWatch Appは 起動するためにiPhone Appを インストールする必要がありません

    つまり Watch Appは 独立してインストールされます ユーザが両方のAppを インストールしている場合 iPhone Appをアンインストールしても Watch Appは残り続けます

    自分のAppへの影響を 不安に思っている方は iOS Appを伴う独立したwatchOS Appは 古いOSと完全な互換性があるので安心してください この新しい… (拍手) どうも (拍手) 新しいWatch専用のアプリケーションは watchOS 6以降でサポートされています

    企業内ででAppを配信する場合も Xcodeが 種々のバリアントを作成し iPhoneとWatch Appを分離します Xcodeでのフローを確認すると 生成されるマニフェストplistの中に 新しいプラットフォームの IDキーが追加されて どこへ何をインストールするかを システムに指示します

    これで 独立したWatch Appの 重要性が分かりました では Watch Appを独立させる 方法を説明します

    既存のAppを独立Appにするのが どれほど簡単かお見せします

    これがXcodeです 現在この Watch Appは依存型です すでにこのAppを 独立させる作業は完了しています

    このアプリケーションを ビルドして実行すると iPhoneとWatchのシミュレータは 通常のデバッグのフローと同じです

    これでWatch Appが起動し すぐにデバッグ処理も開始できます このAppを独立させるよう システムに伝えましょう ではデバッグを停止して

    WatchKit Extensionの Target EditorのDeployment Targetの下に “Supports Running Without iOS App Installation” という新しいチェックボックスがあります そこにチェックを入れ ビルドして実行します チェックを入れることにより 独立したとシステムが認識します 少し早かったので、 もう1ついいものをお見せしましょう

    このアプリケーションは 独立させたので― iPhoneシミュレータを 閉じても大丈夫です 今度はWatchシミュレータに対してだけ           ビルドして実行します すると デバッグは はるかに高速になります (拍手) どうも (拍手) それでは 独立したWatch Appを 今回初めて構築してみます まず このプロジェクトを閉じて 新しいアプリケーションを作るため “File”にある“Project”に進みます

    watchOSの下に“Watch App”と “iOS App with Watch App”があります 今は WatchだけのAppの作成なので

    “App”のほうを選択します

    そしてSwiftUIを使います これはすごく好評ですね “Include Complication”にも チェックを入れます これをデスクトップに保存します

    ビルドして実行してみます 先ほど話した独立したAppと同様に iPhoneシミュレータは不要です Watchだけのアプリケーションをビルドし Watchシミュレータで直接実行しています 上出来です

    (拍手) ありがとう (拍手) 既存のAppを 独立した― Watch Appに移行する方法を 説明しました Watch専用の アプリケーションを構築して― シミュレータの改善についても 話しました シミュレータエクスペリエンス と同様の趣旨で― デバッグについて説明しましょう watchOS 6シミュレータのデバッグは 10倍も高速になりました (拍手) どうも (拍手) デバイスのデバッグは2倍の速さです 信頼性を高めるために 今年は多くの努力を重ねました

    デバッグはiPhoneを介して行われますが ちょっとしたヒントをお教えします iPhoneとWatchがWi-Fiに接続されていれば システムはより速いルートを選択し 高速でデバッグできます

    Appを独立させる方法の さまざまな側面について説明します

    主要な点は3つです 認証やプライベートユーザデータから 直接ユーザのデータを取得する方法 デバイスに情報をプッシュする方法 そして Connectivityの取り扱いと 自身のアプリケーションデータの 収集です まずは認証について話します

    認証を扱う主要な方法はサインインと サインアップです watchOS 6ではWatch上で直接 サインアップ認証を構築できます WKAlertAction APIを使用して 利用規約をサポートできます 他の全プラットフォームと同様に watchOSは Appleでサインイン をサポートします

    次に カスタムパスワードを使った サインインの構築方法を説明します まずは Appleでサインイン から 始めます

    これはユーザから認証を得るための 簡単で安全でプライベートな方法です ユーザはフォームの記入や 新規の パスワードを考える必要はありません Eメールアドレスを選ぶだけで サインインを続けられます

    各アカウントには2ファクタ認証が 組み込まれており ユーザはEメールによる 確認の必要がありません 全てのデバイスで サインインできます 他の種類のデバイスに向けた JavaScript SDKもあります

    Appleでサインイン を使うには 必ずwatchOSでも利用可能になった― AuthenticationServices フレームワークを使ってください

    構築したい特定のUIがある場合は "AuthorizationAppleIDButton"を アプリケーション内に 組み込むことができます ユーザがボタンをタップすると IDアクションを受け取り AuthenticationServices フレームワークを使用して 適切なシステムUIを表示します

    Appleでサインイン に関する 他のセッションも参考にしてください

    WatchKit ExtensionのXcodeプロジェクトで Appleでサインイン を有効にするには 新しいCapabilityを追加して― Appleでサインイン のエンタイトルメントを 有効にするだけです これで簡単にスタートできます

    現在はカスタムパスワードで サインインしているかもしれませんが 今年は新しくwatchOSに TextFieldを導入します SwiftUIかWatchKit内から TextFieldを組み込めます

    このようなUIを構築して ユーザ名とパスワードを尋ねます プレースホルダテキストを使用して ユーザに特定の入力内容を指示します

    特定のフィールドに適切な textContentTypeを設定した場合 システムのテキスト入力コントローラが起動し 適切なテキストタイプに変わります

    このフローでは ユーザが ユーザネームをタップします するとテキスト入力コントローラが 立ち上がります ユーザは 音声か指書き入力の どちらかを選択できますが 今回 コンティニュイティ キーボードという 選択肢が加わりました ユーザがこれをタップすると― Apple WatchはiOSかiPad OSの デバイス上でテキスト入力を求めます 同じiCloudアカウントに ログインしている場合は iPhoneやiPadで通知を受け取ります tvOSでTextFieldを使用した経験が ある方は 見覚えがあるでしょう

    ユーザがタップするだけで 簡単にiOSキーボードでの 入力が可能になります 先ほど紹介したtextContentTypeが 自動入力の提案をします ユーザはiCloudキーチェーン または 好みのパスワードマネージャから 自動入力の候補を選択できます

    システムがPassword AutoFillの候補を 適切に挙げる事を確認してください そのためには 必ず正しい textContentTypeを設定して Associated DomainをWatchKit Extensionに追加してください Associated DomainはWebサイトと Appの連携に最適です ユーザのiCloudキーチェーンに存在する 可能性があるクレデンシャルを iOSキーボードのトップに表示するよう システムに認識させます

    ユーザが自動入力の候補を 選択すると システムはユーザ名とパスワードを 同時に自動入力するよう尽力します

    パスワードを使うサインインでは ワンタイムコードが必要な場合があり 正しいtextContentTypeを 設定すると iMessageかテキストメッセージを介せば ワンタイムコードは自動入力されます 入力コントローラが自動入力の 候補を表示するので ユーザは容易に選択でき 認証を続行することができます (拍手) TextFieldはSwiftUIか WatchKitから使うと説明しましたが Associated Domainを設定して適切な 自動入力の候補を表示するよう注意して コンティニュイティキーボードで フローをテストし 必要であればワンタイムコードの サポートを構築してください

    プライベートユーザ情報が 必要な場合もあります これは異なるフレームワークを介して ユーザに情報を求めます watchOSではすでに カレンダーや連絡先 モーションやロケーションなどを Apple Watch上で 直接サポートをしています watchOS 6では Apple Watch上で直接ヘルスアクセスを 与えるサポートをします (拍手) ありがとう (拍手) ユーザは 要求された全てのデータか 特定のタイプのデータか アクセスの範囲を 選択して許可することができます

    これが独立したAppでの ユーザデータの取り扱い方法です 情報をデバイスにプッシュする 方法を説明します 最善の方法は プッシュ通知を介して行うことです watchOS 6により 初めて独立型の プッシュターゲットになりました (拍手) これは ユーザに可視の通知と バックグラウンドの通知を 直接Apple Watchに 送れるということです これはUserNotification フレームワークに基づいており 全てのAppleのデバイスに共通の 基盤を使用しています

    デベロッパのServerはAPNsリクエストヘッダと ペイロードを直接APNsに送ります APNsとは“Apple Push Notification Service”です そしてAPNsは そのペイロードを 適切なデバイスに送ります watchOSのペイロードは 他の全てのプラットフォームと同じです APNsリクエストヘッダには 新しいキーが1つあります それは それは apns-push-typeですです

    これは 全てのAppleプラットフォームと OSでサポートされています

    そのキーをalertまたは backgroundに設定可能です 私の考えですが ユーザに通知を見てもらうためには alertのプッシュタイプが 最適です 新しいコンテンツが利用可能になった場合等に ユーザのデバイス内の バックグラウンドで Appを立ち上げたい時は backgroundのプッシュタイプを 使用するといいでしょう

    レジストレーションのために WatchKitのトークンを取得します 過去にリリースされた 転送通知と同様に アラート通知は WatchKitとUserNotificationsを使って 以前と同じ方法で Watch Appに送信されます バックグラウンド通知は WKExtensionDelegateに送信されます Notification Service Extensionの watchOSでのサポートも始まったので 暗号化されたペイロードもデバイス上で 復号してユーザに表示できます

    Xcodeプロジェクトで プッシュ通知を有効にする方法です Target EditorでWatchKit Extensionを選択し 新しいCapabilityを追加して― “Push Notifications”の エンタイトルメントを有効にします バックグラウンド通知のサポートには “Background Modes”を有効にして “Remote notification”に チェックを入れてください

    次は コードの説明です これはExtensionDelegateの applicationDidFinishLaunchingです 通知を登録する際には まずユーザに許可を求めます UNUserNotificationCenterで 承認リクエストを出します ユーザがアクセスを許可すると WKExtension.sharedの registerForRemoteNotificationsを 呼び出すことができます

    その後― didRegisterForRemoteNotifications の呼び出しを実装している場合 デバイスのトークンを取得し 通知を Server用のプロバイダに転送します 万が一 失敗した場合の、 didFailToRegisterForRemoteNotificationsも実装します

    バックグラウンド通知の場合は didReceiveRemoteNotificationに fetchCompletionHandlerと WKBackgroundFetchResultを表示します これを受信するとバックグラウンド通知の 処理が可能になり 適切なBackgroundFetchResultを使って CompletionHandlerを呼び出します

    もう一度言いますが 新しいAPNsのリクエストヘッダの apns-push-typeキーはwatchOSへの送信に必要で 全プラットフォームで サポートされています どの通知を どのAppleデバイスに送る時も必ず apns-push-typeを追加してください

    APNsリクエストヘッダの APNSトピックキーは WatchKit Appバンドルの IDになります WatchKit Extensionではないことに 言及しておきます

    iPhone AppとWatch Appのように 複数のAppがある場合は 両方のデバイスに 同時に通知を送ってください そうすることで システムは 通知を適切に重複排除します

    もう1つの優れた方法は コンプリケーションプッシュです コンプリケーションが文字盤で 有効になっている場合は Appのアップデートに最適です

    これは watchOSで利用可能になった PushKitを介して行います PushKitはレジストレーションと デリバリの両方で使用可能です iOSの 古いコンプリケーションの プッシュメカニズムを使っている場合は 今後はコンプリケーションのプッシュを 直接Watchへ送るようお勧めします

    コードでは PKPushRegistryと delegateを設定し desiredPushTypesを指定すれば コンプリケーションプッシュを 登録できます

    その後 デバイスのトークンを取得し Serverへ転送して 起こりうる無効化にも対応できます

    実際にプッシュを送信する時には 適切なPushKitメソッドを実装し― コンプリケーションプッシュの 受信処理をして コンプリケーションタイムラインを 再度読み込みます

    以上がデバイスに情報を プッシュする方法です 次に アプリケーションデータの収集と Connectivityについて説明します

    ネットワークは これまでもwatchOSで 利用可能だったURLSessionを使います CloudKitでもアプリケーション データを収集することができます

    WatchConnectivityを使っていて 特定のデータがiPhone Appに 依存している場合 WatchConnectivityの使用の全てを NSURLSessionに移行してください

    多くの場合ユーザはWatch Appを 2~3秒しか使わず すぐに閉じるので 必ずバックグラウンドセッションを 使って URLSessionsが適切に完了するよう 確認してください

    WatchConnectivityは 引き続き利用可能で どんなコンパニオンAppの 特定のインタラクションにも使えますが やむを得ない場合のみ 使用してください

    そしてiPhone Appがあるかを知らせるため Booleanプロパティ ”isCompanionAppInstalled” が導入されています

    すでにCloudKitを使っているならば watchOS上で完全に CKSubscriptionがサポートされ それはCloudKit通知の サポートと連携しています 独自のServerや通知プロバイダの管理を 避けたければ CloudKitを使えます CloudKitと そのベストプラクティスに 関する詳細はオンラインで調べられます

    CKSubscriptionは 他のデバイス上で起きた データベースの変更をSubscribeするのに最適です アプリケーションの アップデート時期を知らせる― バックグランドのプッシュ通知を受け取り AppとCloudKitコンテナの中で 変更されたものだけを取得できます

    例えば iPhone Appを 使っているユーザが データベースを変更したとします その変更はCloudKitに送信され CloudKitはそれを認識して APNsに対し サブスクリプションを持つ他のデバイスにも バックグラウンドで通知するよう伝えます この例ではWatch Appです

    ユーザがWatch Appで変更を加えた場合 このサイクルが繰り返されます 通知の送信方法は全てのデバイスに 共通のルールによって管理されています CloudKitサブスクリプションを 設定するには notificationInfoを設定して souldSendContentAvailableが trueかを確認してください するとCloudKitが 先ほど話していた デリゲートコールバック― didReceiveRemoteNotificationで プッシュをデリバリします。 そしてAppと CloudKitコンテナの中で― 変更されたものだけを取得します

    以上3つがWatch Appを独立させる 主な方法です ユーザデータの取得方法 デバイスに情報をプッシュする方法 そして 自分のアプリケーションデータの 取得に関する対処方法です

    ユーザはApple Watchが提供する 自由と独立性を享受します そして システムとデベロッパ向けの機能が ふんだんになった今 ぜひWatch Appを 独立させてください ユーザはこれまで以上に Watch Appが 独立することを期待しています

    オンラインで セッションや 優れた情報が確認できます ご来場ありがとうございました WWDCを楽しんでください (拍手)

Developer Footer

  • ビデオ
  • WWDC19
  • 独立したWatch Appを開発する
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン