Watchが早く発売されて欲しいと切望しているわけです。Wareを投げ捨てすぐさまWatchに乗り換えるよ。今日はAppleWatchです。AppleのデベロッパーサイトでNDA無しに閲覧出来る情報を元に解説したいと思います。WatchKitに関する情報は下記のサイトから得られます。Watchにインストールされる一連のUIの2つのパーツで構成されます。Watchでアプリを起動すると、iPhone上のWatchKitエクステンションはUIを更新しユーザー操作に反応するため、バックグラウンドで実行されます。WatchKitはiPhoneを拡張するための3つの機能(WatchKitアプリ・一見性=ぱっと見でわかること・実行可能な通知)を提供します。Watch上のアプリは完全なUIを含んでいます。Watchに固有な方法で起動、制御、対話することができます。Glance(一見性:チラッと見て理解できること)https://developer.apple.com/watchkit/一見するだけで、ユーザーがタイムリーに気になる情報を読み取ることを可能にします。https://developer.apple.com/watchkit/アクション可能なNotificationWatchKitのアクション可能な通知は、ユーザーが手首から適切なアクションができるようように構築・デザインされました。デザインガイドとテンプレートWatchKitアプリ・Glance・Notificationを作成する助けになる網羅的なデザインリソースを入手してください。Developerログインが必要。WatchKitはい、https://developer.apple.com/watchkit/には、Xcodeの最新版βへのリンクが貼ってあります。Developerならここからダウンロード、インストールしましょう。6.2betaからWatchKitが含まれていますが、今回は最新の6.3betaをダウンロード、インストールします。GuideWatchKitのプログラミングガイドです。こちらもDeveloperログイン不要の公開情報になっています。Guidelinesこちらはログイン不要の公開情報です。Watchは次のテーマを体現する。Watchは身につけるためにデザインされてるので、そのUIは着用者の存在に調和している。腕をあげ時間と新着アラートをみる。デジタルタッチ(特にハートビートとSketch機能)はとてもパーソナルな新しいタイプのコミュニケーションを可能にする。加速度センサーと心拍数センサーはパーソナライズされた着用者の日常の活動情報を提供する。他のApple端末は着用者と常につながっているわけではなかった。Watchのアプリデザインにおいて重要です。Watchはモノとソフトの境界があいまいになるように設計された。Crown(つまみの事)は微妙なソフトウェアナビゲーションを細かく制御可能なハードウェアだ。Tapicエンジン(?)は微妙な、アラートと画面上の操作に結びついた物理フィードバックを生み出す。Forceタッチ(ハードウェアに理解される物理ジェスチャー)前後関係を鑑みたソフトウェアによる制御の新しい次元を示す。物理境界としてはRetinaディスプレイが採用されており、UIデザインの境界が見えないように効果的に表示することができる。気の利いたアプリデザインでハードウェアとソフトウェアが見分けのつかない感じの体験を与えるべきです。Watchのアプリは、表示サイズと手首の位置を最大限に活用し、すばやく、軽量な操作方法としてデザインされている。プライバシーとユーザビリティの両方のために情報はすばやく簡単にアクセス可能または非表示可能である。通知は短時間見ればよく、例えば、最小限のアラートを提供するが、もし着用者が関与している場合のみより多くの情報を表示するように設計されている。Glanceはスワイプ可能なインタフェースでアプリからの情報に簡単にアクセスできる。Watch用アプリは着用者のおかれる状況を尊重する必要がある。小さなディスプレイで、頻繁に、チラッと見る。アプリはiOSアプリを補完する。iOSアプリにとって変わるものではない。あなたのアプリの操作が数分ならば、WatchKitアプリ操作は秒単位で操作できると期待される。操作は短く、インタフェースは簡潔であるべきだ。サンプルコードサンプルコードも一般に入手可能な状態で公開されています。ここからダウンロードができます。Watchの開発ガイドに沿って説明していきます。ProjectWatchKitアプリを作成するためにまずは既存のiOSアプリを用意します。WatchKitアプリはXcodeプロジェクトの別のターゲットとして実装され、iOSアプリバンドルにパーケージされます。Project既存のiOSアプリにWatchKitターゲットを追加します。XcodeでiOSアプリを開きます。Watchセクションに移動します。Nextをクリックします。GlanceまたはカスタムNotificationを実装するならば、該当するチェックボックスをチェッックします。Notificationインタフェースの場合、すぐに実装する予定でなくても、チェックボックスにチェックをすることをお勧めします。チェックをいれると、Notificationをデバッグするファイルをプロジェクトに追加します。オプションを選択しない場合、手動でファイルを作成する必要があります。Fnishをクリックします。XcodeはWatchKitアプリとWatchKit拡張のターゲットを設定し、必要なファイルをiOSプロジェクトに追加します。新しいターゲットの両方にiOSアプリのバンドルIDに基づきバンドルIDが自動で設定されます。3つ全てのバンドルIDが一致している必要があります。iOSアプリのバンドルIDを変更した時には、それに応じて他のバンドルIDを更新する必要があります。ターゲットを追加し、2つの新しい実行ファイルを作成し、プロジェクトの依存関係を追加します。iOSアプリのビルドは3つ全ての実行可能ファイル(iOSアプリ、WatchKitエクステンション、WatchKitアプリ)をビルドしそれらを一緒にパッケージします。XcodeはWatchKitアプリのデバッグビルドするbuildスキーマも作成します。Libraryからの転載です。この図はiOSアプリとWatcKitの実行ファイルの構造を示しています。extensionの中に入っていてそれがiOSアプリの中に入っているという順番になっています。Watchが利用可能であればユーザーにアプリをインストールするためのプロンプトを表示します。インストール処理はiOSにより自動的に処理されます。tergetを作成すると、Xcodeは自動的にWatchKitアプリの実行とデバッグ用のbuildスキーマを構成します。起動しシミュレータやデバイスでアプリを実行するにはこのスキーマを使用してください。notificationインタフェースを含むアプリでは、追加でそれらのインタフェースをテストするためのビルドスキーマを構築してください。notificationインタフェースをテストするにはnotificationスキーマを使用します。glanceとnotificationのインタフェース用のカスタムbulidスキーマを構築するには既存のWatchKitアプリのスキーマを選択します。Scheme」を選択します。https://developer.apple.com/既存のWatchKitアプリのスキーマをDuplicatして、適切な名前を設定します。app」をつけ、スキーマがglanceの実行とデバッグ用であることが明確であるようにしておきます。スキーマエディタの左側で、Runオプションを選択します。Infoタブで、新規スキーマに適切なExecutableを選択します。https://developer.apple.com/スキーマエディタを閉じて変更を保存します。payloadに使うJSONファイルを指定します。インタフェースをデバッグする場合、あなたがテストでインタフェースに配信したいJSON形式で格納されたデータを指定することができます。スキーマエディタを使い、notificationインタフェースが動作中にどのplayloadデータを提供するのか指定します。payload自身はファイル名に.apnsという拡張子を持つファイルとして作成します。Sceneオプションにチェックしている場合、Xcodeはテストデータのための初期PushNotificationPayload.apnsファイルを提供します。Filesディレクトリに配置されます。payloadファイルを後から手動で作成することもできます。notificationをシミュレートするのに必要なキーのほとんどを含んでおり、必要に応じてキーを追加することができます。https://developer.apple.com/全てではありませんがほとんどのJSONデータはdictionaryにパッケージされ、実行時にコードに配信されいます。iOSシミュレータはiOSアプリの登録済みアクションへのアクセス権を持たないため、payloadファイルはインタフェースに表示するアクションボタンを指定することもできます。Actionsキーは1つのdictionaryのarrayを持ち、インタフェースに追加するアクションボタンを表しています。controllerに渡される文字列です。メソッドに渡されます。このキーの値は1か0です。1は削除アクションを提供することを示すボタンとして表示され、0は通常ボタンとして表示されます。このキーはオプションです。payloadを持つinformationインタフェースをテストするには、適切なpayloadファイルをbuildスキーマに設定します。Executableでnotificationインタフェースを選択すると、Xcodeはpayloadファイルを選択するためのメニューを表示します。payloadを使う別のbuildスキーマを作ることもできますし、テスト前に既存のbuildスキーマのpayloadファイルを更新することもできます。Extensionの2つのパーツで構成されます。Watch内に存在し、コードは無く、ストーリーボードとリソースだけが含まれています。アプリのインタフェースを管理するためのコードとリソースファイルを含んでいます。Extensionはインタフェースを実行するために互いに連携し合って動作します。Watch上のアプリでユーザーインターフェースが必要な時、WatchKitアプリはユーザの操作を処理するためストーリボードから適切なシーンを選択します。glanceを表示するとき、それはglanceシーンを選択します。extensionを起動しシーンの管理に必要なオブジェクトを作成するように指示します。Watch上に表示されます。extension間での情報の伝達はシーンの裏側で透過的に実行されます。controllerオブジェクトによって管理されます。controllerと同じ目的を果たたします。それは画面上のコンテンツを提供・管理し、そのコンテンツによりユーザーとの対話に応答します。controllerは実際のビューとインタフェースを管理しないという点です。それらのビューはWatchKitによってシーンで管理されている。controllerは異なるタイプの情報を表示する。controllerを提供します。controllerを提供します。controllerを提供するか決定する。Navigationを参照してください。CycleAppleWatchとユーザーとのやりとりはアプリの起動とそのライフサイクルで動作します。ユーザーはアプリをホームスクリーンより起動、glanceと対話、そしてカスタムUIを使用したnotificationの表示を行うことができます。extensionと通信します。ユーザーがアプリの操作をやめその時点でiOSが次のユーザー操作までextensionをサスペンド状態にするまでWatchKitアプリとWatchKitは情報をやり取りします。起動時には、WatchKitは自動的に現在の操作に適切なシーンを読み込みます。glanceを表示した場合、ストーリーボードからglanceシーンを読み込み、ユーザがアプリを直接起動した場合、アプリの初期シーンを読み込みます。extensionに依頼します。次の図はこの一連のステップを示しています。メソッドをインタフェースオブジェクトに値をセットするのに必要なデータを読み込み、インタフェースが表示されるように準備するために使用します。controllerの初期化に使用しないでください。willActiveメソッドは、画面上にインターフェースが表示される前の短い呼び出しです。そのため、直前の変更のみに使用すべきです。アニメーションを開始したり、インタフェースが画面に表示されている間のみに発生させたいタスクを開始するためにこのメソッドを使用する場合が有ります。controllerのカスタムアクションメソッドによって処理されます。ユーザーがテーブル・ボタン・スイッチ・スライダーなどのコントロールを操作すると、WatchKitはそれに対応できるようにアクションメソッドをコールします。インタフェースを更新したり関連するタスクを実行するためにそれらのアクションを使用します。別の契機によりタスクを実行するには、NSTimerオブジェクトを使い指定した時間にコードが実行されるようにします。注意Glanceインタフェースはアクションメソッドをサポートしません。glanceインタフェースをタップするとアプリケーションが立ち上がります。Watchで操作している間のみ実行されています。controllerは軽量で長時間のタスクを実行しないようにします。controllerを停止し、extensionをサスペンドします。Lifeアプリの様々な状態において、iOSは応答の機会を与えるためWKInterfaceControllerオブジェクトのメソッドを呼び出します。controllerに実装すべき重要なメソッドです。controllerを初期化する最初の機会です。controllerを設定できます。データの読み込みと、ストーリボードのシーンのラベル、画像、テーブルなどのインタフェースオブジェクトを更新するために使用します。controllerの設定を支援するために提供するデータです。controllerをプッシュする場合、次のレベルを表示するデータが含まれるコンテキストオブジェクトを指定します。コンテキストオブジェクトの提供が推奨されていますが、必須ではありません。このメソッドによりインタフェースがユーザーに表示されることを知ることができます。このメソッドではインタフェースの軽微は変更のみに使用してください。新しいデータに基づきラベルを更新する場合はこのメソッドを使用します。まとまったインターフェース初期化処理はinitかawakeWithContext:メソッドで実行すべきです。didDeactivateメソッドはインタフェースの後処理を行い、休止状態に入るときに使用されます。このメソッドはタイマーを無効にしたりアニメーションを停止するために使用します。このメソッドではインターフェースオブジェクトに値を設定することはできません。このメソッドが呼ばれた時点からwillAcitiveが再び呼び出されるまでの間は、インターフェースオブジェクトに値を設定する試みはすべて無視されます。Simulatorテスト中はアクティブ化・非アクティブ化コードが期待通り動作していることを確認するためにシミュレータをロック・アンロックできます。controllerのdidDeactivateメソッドを呼び出します。controllerのwillActivateメソッドを呼び出します。group共有を使用します。groupは複数のプロセスがアクセスできるセキュアなコンテナです。extensionとiOSアプリは別のサンドボックス環境で実行されるため、通常互いにファイル共有や直接通信することが出来ません。groupは2つのプロセス間でのファイルの共有やユーザーデフォルト情報(NSUserDefaults)の共有を可能にします。group共有を設定します。機能を有効にすると(必要ならば)両方のターゲットに資格ファイルを追加し、そのファイルにcom.apple.security.application-groups権限を与えます。groupを選択する必要があります。ディレクトリでファイルを読み書きすることでプロセス間でファイル共有を行います。containerディレクトリにアクセスするには、NSFileManagerのcontainerURLForSecurityApplicationGroupIdentifier:メソッドを使いディレクトリのベースURLを取得します。得られたURLはディレクトリの内容を列挙したり、新たにディレクトリ内にファイルへのURLを作るために使用します。アプリ間でプリファレンスデータを共有するためには、共有グループの識別子を用いてNSUserDefaultsオブジェクトを生成します。NSUserDefaultsのinitWithSuiteName:メソッドは共有ユーザーデフォルトデータへのアクセスを許可したオブジェクトを生成します。互いのプロセスはこのデータにアクセスし変更内容を書き込むことが出来ます。AppアプリがiOSアプリと密に連携するためにopenParentApplication:reply:メソッドを使いアプリにリクエストを送信し、レスポンスを受け取ることが出来ます。Watchを操作している間のみ実行され、バックグラウンドでの実行モードをサポートしません。extensionの代わりに情報を収集するように構成することが出来ます。extensionに情報を返却すべきです。openParentApplication:reply:メソッドを呼び出すことで、iOSはiOSアプリをバックグラウンドで起動またはサスペンドより復帰させ、application:handleWatchKitExtensionRequest:reply:デリゲートメソッドを呼び出します。extensionにデータを返すためにdictionaryを提供するために使用します。extensionはiOSアプリと同じ技術へのアクセスを持ってますが、extensionなので、幾つかの機能については制限されたり推奨されなかったりします。次に特定の技術の使用するタイミングを決定する幾つかのガイドラインを示します。Locationのような、ユーザーの許可を必要とするような機能は使用しないでください。extensionでこの機能を使用して最初のリクエストを行うときにユーザーのiPhone上で予期しないプロンプトを表示します。悪い事に、それはiPhoneがユウーザーのポケットに入っていて見れない時に発生するかもしれません。機能としてバックグラウンド実行モードを使用しないでください。extensionはWatchKitアプリの操作時のみ実行され、それゆえにフォアグラウンドのextensionである。extensionは幾つかの機能でサポートされているバックグラウンドモードを実行することができません。機能として長時間にわたるタスクを実行することは避けてください。extensionはユーザーがWatchKitアプリの操作を停止した直後に中断されます。WatchKitアプリの操作は一般的に短いので、extensionはリクエストしたデータを受け取る前に中断されることがあります。長時間にわたるタスクを実行するための最適な方法は、iOSアプリでタスクを実行するようにすることです。extensionで位置情報サービスを開始するのではなく、iOSアプリで開始するようにします。groupにデータを格納することができます。openParentApplication:reply:メソッドを使います。Appを参照してください。WatchはHandoffを用いて他のデバイスで完了することのできるアクティビティの作成をサポートします。メソッドを使うことができます。Watchは他のデバイスにより生成されたアクティビティを処理することができません。controllerでは、メインアプリで使われる情報を指定するアクティビティディクショナリーを使用することができます。controllerにアクティビティーディクショナリーを提供します。controllerはアプリのUIを更新するためにディクショナリーのコンテンツを使用することができます。Glanceを参照ください。WatchはペアリングされたiPhoneの音楽や動画の再生を管理するためリモートコントロールイベントシステムを使っています。glanceのトランスポートコントロールは、現在コンテンツを再生しているアプリへのリモートコントロールイベントを生成します。MPRemoteCommandCenterオブジェクトのコマンドを処理するように登録されたiOSアプリでは、それが「再生中」アプリであるとき、それらのイベントを自動的に受け取ります。extensionに追加の作業をする必要はありません。WatchはlocalizedTitleやMPFeedbackCommandオブジェクトを使う代わりに、localizedShortTitleを使います。Playing」情報を自動的に表示します。iOSアプリはMPNowPlayingInfoCenterを使いこの情報を提供します。ディクショナリの値を更新すべきです。Watchは自動的にこの情報を見つけ、ディスプレイに表示します。再生中glanceでトラックタイトルをタップすると、利用可能な場合、アプリのWatchKitアプリを起動します。iOSイベント処理ガイドの遠隔制御イベントを参照してください。アプリの基本XcodeはWatchKitアプリインタフェースを作成するためにストーリーボードのサポートを提供します。wearにiPhoneの通知を表示することができるようになったとか。wearにiPhoneの通知を表示することができるようになったとか。エンガジェットに記事が出ていました。Mobileで使用できる暗号化について調査。コメントをキャンセルメールアドレスが公開されることはありません。著書ベストセラーが新しいレイアウトエディタに対応して大改訂。wearにiPhoneの通知を表示することができるようになったとか。