Apple Watch Human Interface Guidelinesを読んだメモ

この投稿は Apple Watch Advent Calendar 2014 の 12日目の記事です。

<p>
  <a href="https://developer.apple.com/library/prerelease/ios/documentation/UserExperience/Conceptual/WatchHumanInterfaceGuidelines/index.html">Apple Watch Human Interface Guidelines</a> （一般に公開されているもの）を読んで自分が気になったポイントをメモしておきます。</P>
<p>※画像はすべて<a href="https://developer.apple.com/library/prerelease/ios/documentation/UserExperience/Conceptual/WatchHumanInterfaceGuidelines/index.html">Apple Watch Human Interface Guidelines</a>のものを引用しております</p>
<h1>UI Design Basics</h1>
<h2>App Anatomy</h2>
<p>Apple Watchは必ずユーザのiPhoneとペアで動きます。</p>
<h3>Interface Styles</h3>
<p>Watch appsは2つのナビゲーション方法をサポートします。</p>
<ul>
  <li>
    <strong>Hierarchical</strong> - 階層的なナビゲーション。iPhoneのメールアプリのようにどんどん潜っていくイメージ。</li>
  <li>
    <strong>Page-based</strong> - ページ間を横にスワイプして遷移できる。画面の下には現在位置を表すドットが表示される。</li>
</ul>
<p>これら2つを混合させて使うことはできません。</p>
<h3>User Interactions</h3>
<ul>
  <li>
    <strong>Action-based events</strong> - シングルタップが最も主要な動作。この動作がWatchKit extensionにアクションを伝える。</li>
  <li>
    <strong>Gestures</strong> - ジェスチャーには次のようものがあるが、<strong>開発者はアクセス出来ない</strong>
    <ul>
      <li>縦スクロール（画面に表示しきれない情報を読み進める）</li>
      <li>横にスワイプ（先述のPage-basedインターフェースで使用）</li>
      <li>Watchの左端を右にスワイプすることで「戻る」の動作（iPhoneにもありますね）</li>
    </ul>
  </li>
</ul>
<p>Apple Watchはマルチタップをサポートしていませんし、ピンチイン・ピンチアウトもできません。</p>
<ul>
  <li>
    <strong>Force Touch</strong> - 長押しのようなもの？これと組み合わせることでメニュー（2x2のボタンが並ぶ）を表示することもできる。</li>
  <li>
    <strong>The Digital Crown</strong> - Watchの右側についてる竜頭。これを回すことで画面をスクロールさせることができるが、やはり開発者はアクセス出来ないらしい。</li>
</ul>
<h2>Glances</h2>
<p>Glance（グランス）はWatch Appからの情報を素早く表示するための機能です。</p>
<p><img src="https://qiita-image-store.s3.amazonaws.com/0/8292/91a68e9a-9166-5385-27ae-810e86a28bf4.png"></p>
<p> </p>
<ul>
  <li>
    <strong>Template-based</strong> - グランスの画面は upper と lower の部分から構成される。テンプレートがpsd形式で公開されているので、それに従ってデザインしていくことになりそう。</li>
</ul>
<ul>
  <li>
    <strong>Not scrollable</strong> - すべてのコンテンツは一画面に収めないといけない。スクロールはできない。</li>
</ul>
<ul>
  <li>
    <strong>Read-only</strong> - グランスのどこをタップしてもWatchアプリが開く。</li>
</ul>
<p> </p>
<ul>
  <li>
    <strong>Optional</strong> - グランスを必ず実装する必要はない。</li>
</ul>
<p>グランスの下部領域はページインジケータのドットを表示するために予約されています。</p>
<p>
  <strong>Configure the Glance based on the user’s current context.</strong> 古く不適切な情報はグランスを有益でないものにしてしまう。時と場所にマッチした有益な情報を表示してあげるべき。</p>
<p>
  <strong>Glances can deep link into their corresponding app.</strong> iOS 8の Handoff 機能と組み合わせることにより、Watch上で見ていた情報を他のデバイスに表示することもできるらしい。</p>
<p>
  <strong>Glances must provide useful content to the user.</strong> グランスを単なるアプリを起動しやすくするもの、として提供してはいけない。</p>
<h2>Notifications</h2>
<p>通知にはShort Look、Long Lookの2種類が用意されています。</p>
<p>Short LookはLocal/Remote Notificationがユーザに情報を伝える必要がある際に表示されます。Short Lookは最小限の情報をユーザに提供します。もしユーザが腕を低い位置に下げた場合、Short Lookは閉じられます。</p>
<p>Long Lookはユーザが腕を高い位置に上げたままの場合、もしくはShort Lookをタップした場合に表示されます。Long Lookはより詳細で機能的な情報を提供し、ユーザによって能動的に閉じられます。</p>
<p>
  <strong>Be sensitive to the frequency with which you send notifications to users.</strong> あまりにも頻繁な通知はユーザを苛立たせ、通知をオフにする原因となってしまいます。通知する情報は常にユーザにとって必要なものであるべきです。</p>
<h3>Short Look Notifications</h3>
<p>Short Lookはどのアプリが通知を受け取ったかをユーザに知らせるために、少しの間表示されます。<span>Short Lookのインターフェースはテンプレートベースで、アプリ名、アイコン、そして通知に含まれるタイトル文字列から構成されます。アプリ名はそれぞれのアプリのキーカラーで表示されます。</span>
</p>
<p><img src="https://qiita-image-store.s3.amazonaws.com/0/8292/6b995635-9915-e77b-21a6-6040ead25f7f.png"></p>
<p>
  <strong>Keep title strings short and focused.</strong> タイトル文字列を表示するスペースは限られていますので、簡潔に内容を表示するべきです。詳細な内容までを表示するべきではなりません。何についての通知なのか？を簡潔に伝えるべきです。</p>
<h3 class="p1">
  <span class="s1">Custom Long Look Notifications</span>
</h3>
<p class="p1">
  <span class="s1">Long Lookはより詳細な情報をユーザに提供します。システムは標準の外観を提供しますが、アプリは独自の画像等を取り込んで外観をカスタマイズすることも可能です。Long Lookの構造はどのアプリも共通のものが使われます。上部にはアプリアイコンとアプリ名を載せた帯が表示されます。下部には「dismiss」ボタンと予め定義された複数のボタンが表示されます。その間にはカスタマイズされたコンテンツを表示できます。</span>
</p>
<p><img src="https://qiita-image-store.s3.amazonaws.com/0/8292/a7a7be59-0728-63c3-338b-fbd19f5fad16.png"></p>
<p>帯の部分はコンテンツに重ねることも可能です。写真などのグラフィックを表示する場合は <strong>underlapping</strong> オプションを使ってください。文字がメインコンテンツの場合は <strong>Offset Notification Content</strong> オプションを使って、文字と重ならないようにするとよいでしょう。</p>
<p><img src="https://qiita-image-store.s3.amazonaws.com/0/8292/a0fe8288-aa00-4b90-9fab-e274043e16d1.png"></p>
<p>
  <strong>Long look notifications can display up to four custom action buttons.</strong> Long lookには最大4つのカスタムボタンを表示することができます。iOSアプリ側で登録されたボタンが自動的に表示されます。</p>
<p>
  <strong>The Dismiss button is always present.</strong> Dismiss（閉じる）ボタンは4つのカスタムボタンとは別に表示されます。</p>
<h2>Modal Sheets</h2>
<p>下から上がってくるモーダル画面のことです。一つの画面からなる <strong>Single screen</strong> と、複数の画面からなる <strong>Page-based layout</strong> が存在します（両方とも正式な呼び方は無いっぽい）。両者の決定的な違いは、画面下部にページコントロールを持つかどうか？です。</p>
<p><img src="https://qiita-image-store.s3.amazonaws.com/0/8292/47452630-d5c1-26f9-cb5b-2a77f550ab9f.png"></p>
<p>
  <strong>The top-left corner of a modal interface is reserved for the close button.</strong> 画面左上の領域は「閉じる」ボタンのために確保されています。ユーザがこのボタンをタップ（もしくは画面左端をスワイプ）すると、システムはモーダルを閉じます。「閉じるボタン」を置くのは必須ですが、ボタンに表示される文字列を変更することは可能です。あなたはコンテンツ上に「閉じる」ボタンを表示する必要はありません。「閉じるボタン」の色は<strong>常に白が使われます</strong>。</p>
<p>
  <strong>If the task requires acceptance, provide the accept button in the body of the modal interface.</strong> Acceptanceなアクション（OKとか？）には標準のボタンを利用してください。ボタンがタップされたら、適切な処理を行った上でモーダルを閉じるようにしてください。</p>
<p>
  <strong>Keep modal tasks simple.</strong> モーダル画面からさらに新しいモーダル画面を開くのは避けましょう。</p>
<h2>Layout</h2>
<h3>Layout Guidelines</h3>
<p>
  <strong>Limit the number of side-by-side controls in your interface.</strong> ボタンを横一列に並べて表示する場合は、ボタンを認識させるためにテキストではなくアイコンを使いましょう。この場合、決して3つ以上のボタンを並べてはいけませんよ。これ以上置いてしまうと、ユーザーがタップするには小さすぎるボタンになってしまいます。</p>
<p>
  <strong>Use the space all the way up to the edges of the screen.</strong> コンテンツは画面いっぱいに表示しましょう。なぜならApple WatchのベゼルがPaddingの役割を果たすため、わざわざ余白を用意する必要が無いためです。なお、iOSシミュレータではこのPaddingの部分が表示されないことに注意してください。</p>
<p>
  <strong>Apps use relative positioning for items.</strong> アイテムを置く際は相対指定を使いましょう。なぜなら、異なる大きさのApple Watchで同じインターフェースが使われるからです。相対指定にしておけば、画面サイズに合わせて、コンテンツをうまい具合に表示してくれます。</p>
<p>
  <strong>Prefer the use of left alignment during layout.</strong> すべての要素は上から下へ、左から右へ流れるべきです。左寄せされた要素は、すべてのコンテンツを拡大して表示する余地があることを保証できます。（ここがうまく和訳できませんでした）</p>
<p>
  <strong>Make text buttons full width.</strong> ラベルを表示するボタンを作る際は、常にラベルが見えるように横幅いっぱいに作っておくべきです。</p>
<p>
  <strong>Use the context menu to present secondary actions.</strong> あまり頻繁でないアクションの場合は、ボタンを設置するよりむしろコンテキストメニューを用いるべきです。</p>
<h2>Color and Typography</h2>
<h3>Color</h3>
<p>色の重要性について書かれています。</p>
<p><img src="https://qiita-image-store.s3.amazonaws.com/0/8292/c57bce5c-077e-f3f4-d9db-63495b66cdb8.png"></p>
<p>
  <strong>Use black for your app’s background color.</strong> 黒い背景を使うようにしましょう。ベゼルが黒であるため、背景も黒に合わせることで浸透性が増すとのことです。明るい背景色は使うべきではありません。</p>
<p>
  <strong>Use your app’s key color for branding or status.</strong> すべてのアプリには<strong>キーカラー</strong>を定義します。キーカラーは画面左上に表示されるタイトルの文字色として使われたり、通知画面のアプリ名やその他の上をハイライトするために使われます。キーカラーはアプリのブランディングと同様に使われるべきです。</p>
<p>
  <strong>Use high contrast colors for text.</strong> 文字を読みやすくするためにハイコントラストな色を使いましょう。</p>
<p>
  <strong>Avoid using color to show interactivity.</strong> ブランディングのために適切な色を使いましょう。ただ単純にボタンやその他の部品の相互作用を示すために色を使ってはいけません。（訳があやしい）</p>
<p>
  <strong>Be aware of color blindness.</strong> 色盲の方のほとんどが赤と緑を見分けるのが困難です。自分のアプリの中に、赤と緑の色だけで状態を見分ける個所がないかテストするべきです。</p>
<p>
  <strong>Color communicates, but not always in the way you intend.</strong> 色が表す意味は文化によって異なります。他の国や文化でそれぞれの色がどのように使われるのか、研究する時間を割くべきです。そして、可能な限り、あなたのアプリの中でそれぞれの色が適切なメッセージを伝えることを確認するべきです。</p>
<h3>Typography</h3>
<p>Watchアプリは <strong>Dynamic Type</strong> に対応しましょう。Dynamic Typeに対応することで、フォントサイズに合わせて自動的に字間や行間を調整してくれる等のメリットを得ることができます。</p>
<p>
  <strong>Use the built-in text styles whenever possible.</strong> 標準で組み込まれたスタイル（Headline等）は自動的にDynamic Typeをサポートしており、Apple Watch上で綺麗に表示されるようデザインされています。</p>
<p><img src="https://qiita-image-store.s3.amazonaws.com/0/8292/b42257fa-aa8c-527b-90a2-659438444984.png"></p>
<p>
  <strong>Prefer the use of a single font throughout your app.</strong> Watchアプリは追加されたフォントを<span>ブランディング目的で使うこともできますが、控えめに使用するべきです。いろいろな種類のフォントを使うことで、あなたのアプリはまとまりのない杜撰なものになってしまいますよ。UIFont text stylesは文字領域の違いを定義する目的で使いましょう。</span>
</p>
<p>
  <strong>When specifying system font sizes manually, the point size determines the correct size to use.</strong> Apple Watchのシステムフォントには <strong>San Francisco</strong> というフォントが使われるようです。このフォントには<strong>Text</strong>と<strong>Display</strong>の2種類が存在し、フォントサイズが19ポイント以下ならTextが表示され、20ポイント以上ならDisplayが表示されるようです。</p>
<h2>Animations</h2>
<p>アニメーションを適切に用いることで、より魅力的なユーザエクスペリエンスをユーザに提供することができます。</p>
<p>
  <strong>Create prerendered animations using a sequence of static images.</strong> 複数の静止画を組み合わせてひとつのアニメーションを作れるらしいです。</p>
<p>
  <strong>Playback controls are available only for image and group objects.</strong> ほとんどのアニメーションは無限にループします。これを止めたり、特定のフレームをプレイバックしたい場合は画像またはグループオブジェクトを使う必要があります。（訳があやしい）</p>
<h2>Branding</h2>
<p>ユーザに強い印象をあたえるための心得についていろいろ書かれてました。</p>
<h1>UI Elements</h1>
<p>各部品を使う上での心得が書かれています。数が多いので、一部のみメモ。</p>
<h2>Labels</h2>
<p>ラベルは短いメッセージをユーザに伝えるものです。あまり長くならないように注意しましょう。</p>
<ul>
  <li>
    <strong>Make your labels legible</strong> - ハイコントラストな色を使う。また、Dynamic Typeも使うと良い。</li>
  <li>
    <strong>Use the built-in styles whenever possible</strong> - 可読性を上げるため、built-in styles（HeadlineとかBodyとか）を使う。<br/><img src="https://qiita-image-store.s3.amazonaws.com/0/8292/b42257fa-aa8c-527b-90a2-659438444984.png">
  </li>
</ul>
<h2>Images</h2>
<p>画像を表示したり、アニメーションを表示したり。</p>
<ul>
  <li>
    <strong>Size images appropriately for each Apple Watch display size</strong> - 画面サイズに合わせて画像を伸ばしたり縮めたりするのはやめよう。各画面サイズ毎（38mm/42mm）の画像をちゃんと用意しましょうってことらしい。</li>
  <li>
    <strong>Create all image assets as @2x resources</strong> - とりあえず @2x の画像を用意しておけばよい。非Retinaの画像は不要。</li>
</ul>
<h2>Buttons</h2>
<p>アクションを起こすためのもの。背景色を変えることもできますし、画像を使うこともできます。</p>
<p><img src="https://qiita-image-store.s3.amazonaws.com/0/8292/4985f679-c958-5011-8e98-9a9ec4331c1e.png"></p>
<ul>
  <li>
    <p>
      <strong>Create buttons that span the width of the screen -</strong> ボタンは幅いっぱいに設置するべき。もし横に1つ以上のボタンを並べたい場合は2つに収めるべき。</p>
  </li>
  <li>
    <p>
      <strong>Try to match button heights whenever possible -</strong> もしひとつの画面に複数のボタンを表示する場合は、高さをそろえるべき。</p>
  </li>
  <li>
    <span>
      <strong>Buttons have a rounded corner to distinguish them from other elements</strong> - 他の要素と区別するために、ボタンの角は丸くするべき。標準的なRadius値は <strong>6 ポイント</strong>。</span>
  </li>
</ul>
<h1 class="p1">
  <span class="s1">Icon and Image Sizes</span>
</h1>
<h3>
  <span class="s1">Icon Sized</span>
</h3>
<p>
  <span class="s1">ホームスクリーンアイコンは円形で表示されます。また他のアイコンについても、場面によって円形に切り取られます。次の表は各場面で使われる画像のサイズ（直径と考えて良い）をまとめたものです。画像は自動的に円形にマスクされて表示されます。</span>
</p>
<table>
  <tbody>
    <tr>
      <th>
        <p class="p1">
          <span class="s1">Asset</span>
        </p>
      </th>
      <th>
        <p class="p1">
          <span class="s1">Apple Watch (38mm)</span>
        </p>
      </th>
      <th>
        <p class="p1">
          <span class="s1">Apple Watch (42mm)</span>
        </p>
      </th>
    </tr>
    <tr>
      <td>
        <p class="p1">
          <span class="s1">Notification center icon</span>
        </p>
      </td>
      <td>
        <p class="p1">
          <span class="s1">29 pixels</span>
        </p>
      </td>
      <td>
        <p class="p1">
          <span class="s1">36 pixels</span>
        </p>
      </td>
    </tr>
    <tr>
      <td>
        <p class="p1">
          <span class="s1">Long look notification icon</span>
        </p>
      </td>
      <td>
        <p class="p1">
          <span class="s1">80 pixels</span>
        </p>
      </td>
      <td>
        <p class="p1">
          <span class="s1">88 pixels</span>
        </p>
      </td>
    </tr>
    <tr>
      <td>
        <p class="p1">
          <span class="s1">Home screen icon</span>
        </p>
        <p class="p1">
          <span class="s1">Short Look icon</span>
        </p>
      </td>
      <td>
        <p class="p1">
          <span class="s1">172 pixels</span>
        </p>
      </td>
      <td>
        <p class="p1">
          <span class="s1">196 pixels</span>
        </p>
      </td>
    </tr>
  </tbody>
</table>
<p>画像はすべて@2xサイズを用意してください。非Retina用の画像を用意する必要はありません。</p>
<p>画像フォーマットは PNG が推奨されます。インターレスPNGを使うのは避けてください。</p>
<h3>Home Screen Icon</h3>
<p>Apple Watchのホームスクリーンはとてもユニークで、それでいて親しみやすいものとなっています。ホームスクリーンに並ぶアイコンはiOSのそれらと似ていますが、アプリ名を表す文字列がありません。</p>
<p>
  <strong>Use universal imagery that people will easily recognize.</strong> 誰もが理解しやすいデザインにしましょう。例えばメールアプリなら封筒や、郵便箱のデザインを用いるなど。</p>
<p>
  <strong>Make your icon similar to the icon for your iOS app.</strong> WatchアプリのアイコンはiOSアプリと関連付けやすいように、同じようなデザインにするべきです。</p>
<p>
  <strong>Create different sizes of the home screen icon for both Apple Watch display sizes.</strong> アイコンを綺麗に見せるために、デバイスごとに別々のサイズのアイコンを作りましょう。</p>
<h2>Menu Images</h2>
<p>Force Touch menu（強めに画面をタップすることで表示されるコンテキストメニュー）に使われる画像の仕様について書かれています。iOSアプリのBarButtonItemにカスタム画像を使う場合と同じで、アルファチャンネルが使われるようです。もちろん色情報も無視されます。</p>