一言で言えばAppleWatch:iOS開発者のための機能紹介
公開: 2022-03-11昨年6月にWWDCで発表され、つい最近リリースされたApple Watch SDKには、多くの不安がありました。
これは最初のラウンドであり、機能が制限されています。 Apple Watch v2が続くが、すぐには続かない-したがって、先見の明のあるiOS開発者は、数ヶ月待つ準備をする必要がある。
開発者の気持ちは非常に多様です。 多くのiOS開発者は、AppleWatchSDKとその機能によって課せられる多くの制限に失望しています。 その一方で、私たちの多くは興奮していますが、他の人は中立的な立場からそれほど遠くありません。 しかし、結局のところ、誰もが遊ぶための新しいおもちゃを持っていることを喜んでいるようです。
目を引くのは、AppleWatchユーザーがどのように呼ばれるかです。 彼らはユーザーでもモバイルユーザーでもありませんし、ウォッチユーザーでも(オリジナリティのある)ウォッチャーでもありません。 彼らは単に着用者です。 少し奇妙に聞こえる用語。ユーザーがを使用する場合、それは彼が相互作用することを意味し、着用者は着用し、それは受動的な使用法のように聞こえます。 もちろん、AppleWatchはパッシブデバイスとはほど遠い。 これは、時計の従来の機能と、特にiPhoneと組み合わせて使用する場合に、最新のテクノロジーによって可能になるより高度なオプションを組み合わせたものです。 電話が単なる電話以上のものになり始めたのはそれほど昔のことではありませんでした-歴史は繰り返されています。
ただし、最終的には着用者の名前が賢明な選択のようです。 少なくともユーザーストーリーを書くときは、「 Apple Watchユーザーとして…したい」を完全に指定する必要はありません。それを「着用者として、…したい」に短縮できます。あいまいさは少なくなります。
デバイスとUI
開発に厳密に関連していないすべてのAppleWatch機能を省略して、設計者と開発者が対処しなければならない最も重要な問題はサイズです-実際、2つの異なるAppleWatchモデルがあります。
- 解像度272x340ピクセルの38mm画面
- 解像度312x390ピクセルの42mm画面
どちらの場合も網膜ディスプレイを備えています。
言うまでもなく、アプリケーションが両方のバージョンで見栄えがすることを保証するのはiOS開発者です。
AppleWatchの接続性
AppleWatchはBluetooth4.0を介してコンパニオンiPhoneと通信し、NFCも有効になっています。 どうやら、それはWiFi接続がありません。 iPhone経由でテザーし、WiFiとセルラーデータ接続の両方を使用できます。 しかし、プレス情報では、AppleはWi-Fi 802.11b/gも備えていると明確に述べています。
ユーザーインタラクション
ユーザーの操作(または、必要に応じて着用者の操作)は、次の4つの方法で発生します。
- シンプルなタッチ:ボタンをタップするのが典型的な例です
- 感圧タッチ:画面をタップして押したままにするときに、より多くの力を加えることでアクティブになります。 PCを右クリックするのと同様に、コンテキストメニュー(最大4つのアイテムを含む)が表示されます。
- ジェスチャ:垂直方向にスワイプしてスクロール、水平方向にスワイプしてページ間を移動、左端にスワイプして戻る
- デジタルクラウン:微調整されたスクロールに使用されるハードウェア入力
ユーザーの操作、特にジェスチャーに関して、いくつかの制限があります。
- それらは事前に決定されているため、カスタムジェスチャはサポートされていません
- マルチタッチはサポートされていないため、ズームするためのピンチや、複数の指を必要とする同様のジェスチャはありません
これは、AppleWatchKitガイドのコンテキストメニューのサンプルです。
ユーザーインターフェース
Apple Watch UIと言えば、画面サイズの縮小、デザインの選択、そして多くの場合、基盤となるハードウェアの自然な結果として課せられるいくつかの制限があります。 実際に何が変更されるかを予測または予測することはできませんが、SDKの将来のリリースでそれらの一部がより良いものに変更されることを期待しています。
最初の制限は、ユーザーインターフェイスの実装方法に関するものです。ストーリーボード経由のみです。
AppleWatchナビゲーション
WatchKitは、AppleWatchアプリのビュー間を移動するための2つの相互に排他的な方法を提供します。
- iOSで使用されているものと同様の階層型ナビゲーションモデルで、ナビゲーション中にビューが積み上げられます
- フラットページベースのモデル。ユーザーは左右にスワイプしてページ間を移動できます。
残念ながら、同じアプリでこれら2つのナビゲーションモデルを組み合わせることはできません。 それらの1つを選択し、アプリ全体で使用する必要があります。
ただし、任意のインターフェイスコントローラは、ページナビゲーションモデルを使用して配置された単一のインターフェイスコントローラまたは複数のインターフェイスコントローラのいずれかであるモーダルインターフェイスコントローラを提示できます。
UI要素
11の異なるインターフェースコンポーネントがあります。
- ボタン
- スライダー
- 画像
- ラベル
- セパレーター
- スライダー
- スイッチ
- テーブル
- 日付:現在の日付または時刻を自動的に表示します
- タイマー:カウントダウンタイマーを表示し、自動的に更新されます
- グループ:1つ以上の子コンポーネントのコンテナ
- マップ:非インタラクティブマップを表示します。オプションで最大5つの注釈を付けます
レイアウト
グループコンポーネントを使用して、AppleWatchUI要素を垂直または水平レイアウトで組み合わせることができます。 要素は、サイズに応じて自動的に配置されます。 グループをネストできるため、ここではある程度の柔軟性があります。
残念ながら、自動レイアウトは利用できません。 しかし、ユーザーインターフェイスがiOSの対応するものと比較してはるかに単純であることを考えると、それはおそらく大きな損失ではありません。
リストの場合、テーブルコンポーネントは、 UITableView
と同様に、単一の列モデルを使用してコンテンツを作成および管理します。 ただし、委任パターンは使用していません。最初に行数を指定し、次にforループで各行の内容を初期化することにより、データソースがテーブルに直接提供されます。 ポジティブなことに、カスタムテーブル行(つまり、iOS用語のセル)を使用することはまだ可能です
一瞥
Glanceは読み取り専用、単一ページ、スクロール不可のビューであり、タイムリーで関連性のあるアプリ固有のデータのスナップショットを表示するために使用されます。 タップイベントを除いて、ユーザーの操作は許可されていません。 一目でタップするとアプリが起動し、オプションでアプリに特定のインターフェースコントローラーを表示させるためのコンテキストが提供されます。
たとえば、Apple Watch天気アプリはGlanceを使用して現在の気温や場所などを表示できます。タップするとアプリが開き、より詳細な情報が表示されます。
これは、公式のAppleWatchKitガイドからのサンプルGlanceです。

AppleWatchの通知
通知には、ショートルックとロングルックの2種類があります。
ショートルック通知は、何かが起こったことを着用者に警告するために使用され、手首を下げると自動的に閉じられます。 レイアウトは非常にシンプルで、アプリアイコン、アプリ名、通知タイトルで構成されています。
手首をしばらく上げたままにするか、明示的にショートルック通知をタップすると、ロングルック通知に変わります。 このタイプの通知は詳細を提供し、カスタマイズ可能なボタンを介したユーザー操作をサポートします。 これらのボタンは、アプリケーションに通知を送信できます。 短い通知とは異なり、ユーザーはビューの下部に自動的に表示されるボタンをタップして、長い外観の通知を明示的に閉じる必要があります。
Apple Watch Notificationsの使用の詳細については、こちらをご覧ください。
発達
建築
WatchKitをサポートするXcodeバージョン(現在は6.2ベータバージョン)をダウンロードし、ドキュメントを読まずにWatchKitプロジェクトを開始しようとすると、WatchKitテンプレートがないため、開発者は混乱する可能性があります。
スタンドアロンのウォッチアプリケーションはなく、ウォッチアプリは既存のiOSアプリケーションに新しいターゲットとしてのみ追加できます。
その理由は、アーキテクチャと、時計アプリが関連するiOSアプリと相互作用する方法に依存しています。
アプリが時計で起動されると、コンパニオンiOS拡張機能が自動的に起動されます。 これらは両方とも相乗効果を発揮し、時計アプリは着用者にコンテンツを表示し、インタラクションに応答しますが、iOS拡張機能は他のすべてを実行します。 実際には、時計でアプリケーションコードは実行されません。すべての処理は、iOS拡張機能に委任されます。
このモデルはブラウザ<->Webアプリケーションモデルによく似ており、ドメインロジックはサーバー側で実行され、クライアント側はユーザーにコンテンツを表示し、ユーザーのアクションに応答する責任があります。
デバイスにインストールされているWatchAppは、ストーリーボードと関連するすべての静的リソースで構成され、バンドルにパックされています。 このバンドルは静的です。つまり、実行時にリソース、ビュー、イメージなどを追加または変更することはできません。
この静的なクライアントサーバーモデルは、Watchアプリをレペトワールに追加したいiOS開発者にいくつかの制限を課します。これは、一部の開発者が積極的に反応しなかった主な理由の1つです。 もう1つの人気のある発言は、アニメーションに関するものです。アニメーションは単にサポートされていません。 アニメーションを模倣する唯一の方法は、個々のフレームを時計アプリにパックし、画像を順番に表示してアニメーションをシミュレートすることです。 幸いなことに、フレームに順番に名前を付けることで、Interface Builderから直接アニメーションを自動化できますが、画像制御メソッドを1回呼び出すだけでコードから同じことができます。
ただし、Appleは、ネイティブアプリケーションをサポートする新しいバージョンが来年リリースされることをすでに発表していますが、詳細はまだわかりません。
Apple Watch Framework:クイックルック
WatchKitはUIKitを使用、継承、または特殊化しません。 新しいフレームワークが実装され、時計、小さなディスプレイ、限られたハードウェア向けに特別に設計され、最適化されています。 フレームワークは15のクラスのみで構成され、そのうち12はUIコンポーネント(ラベル、ボタンなど)です。
フレームワークによって公開される最も重要なクラスは、UIViewControllerのUIViewController
WKInterfaceController
。 つまり、iOS(およびOSX)ではビューコントローラーと呼ばれ、AppleWatchではインターフェイスコントローラーです。
深く掘り下げることなく、Apple開発者の観点から見たUIKitの最も顕著な改善は、インターフェースコントローラー間でデータを渡すためのパターンの確立です。 イニシャライザの概要:
Swift init(context: AnyObject?) // context from pushing controller or nil
は、任意のオブジェクトをインターフェイスコントローラーインスタンス(すべてのAPIでcontext
と呼ばれる)に提供し、あるインターフェイスコントローラーから別のインターフェイスコントローラーへのデータの受け渡しを簡素化および標準化できることを示しています。 唯一の欠点は、オブジェクトがジェネリック型ではなく、宛先インターフェイスコントローラーの初期化子内で予期される型にダウンキャストする必要がある不透明なAnyObject
であるということです。 これはおそらく、Objective Cを使い続けること(そしておそらくまた望んでいること)とのトレードオフです。
インターフェイスコントローラーのライフサイクルは、ビューコントローラーの対応するものと比較すると単純化されており、3つの遷移のみで構成されています。
-
init
:オブジェクトがインスタンス化されたときに呼び出されます willActivate
:コンテンツが表示されようとしているときに呼び出されますdidDeactivate
:インターフェースが非表示になったときに呼び出されます
ユーザーにコンテンツを表示するだけでなく、インターフェイスコントローラーは次のことも行います。
- ユーザーインタラクションの処理
- コンテキストメニューの管理
- ハンドオフアクティビティを調整する
- 通知に応答する
Apple WatchKitは準備ができていますか?
いくつかの制限がありますが、時計キットは未熟な製品として表示される場合があります。 そして実際にはそうです。 まだ市場に時計デバイスがないことは言うまでもなく、ネイティブの時計アプリケーションをサポートしていないため、開発者はまだアプリをテストできず、アプリの動作について実際の感覚とフィードバックを得ることができません。
さて、シミュレーターがあります。これは実際には独立したシミュレーターではありませんが、iOSシミュレーターの外部ディスプレイとしてアクセスできます([ハードウェア]-> [外部ディスプレイ]メニューから)。 しかし、シミュレーターが実際のデバイスに取って代わることはありません。開発中やデバッグには適していますが、十分ではありません。
WatchKitは単なるプレビュー、ベータ版、前菜であり、新しいリリースごとに進化していきます。 iOS開発者は最初のバージョンを入手しました。それを試して、それを最大限に活用してみましょう。