SlideShare a Scribd company logo
1 of 54
Download to read offline
HIG (iOS)
まとめ
2021年10月
HIG(Human Interface Guidelines)とは
- Appleが定めたUI設計における原則
- 以下の4つの環境別にまとめられている
- macOS
- iOS
- watchOS
- tvOS
- 今回はiOSについてまとめる
1. iOSは他のプラットフォームとここが違う
- 明快さ(Clarity)
- 的確で分かりやすいこと
- 尊重(Diference)
- コンテンツを尊重すること
- 奥行き(Depth)
- 奥深さがあること、見た目にも体験的にも階層があり重層的であること
1. iOSは他のプラットフォームとここが違う
- 明快さ(Clarity)
- どんなサイズでも読みやすいテキスト
- 的確で分かりやすいアイコン
- 微細・控えめかつ適切な装飾
- 機能性に重点を置くこと
- 色、フォント、スペース、グラフィックのような
I/F要素を控えめにさせることでコンテンツを強
調させ、対話的(interactive)であることをユーザに伝える
(I/F=インターフェース。次ページ以降も同様に略す)
1. iOSは他のプラットフォームとここが違う
- 尊重(Diference)
- 滑らかな動きと分かりやすく美しい
I/Fがコンテンツの理解と対話に役立つ
- コンテンツは通常画面全体に表示されるが、半透明やぼかしをうまく使うことで多くの場合コ
ンテンツの理解・操作のヒントとなる
- コンテンツがメインとなるように、分かりやすくも邪魔にならない
I/Fとするためにはベゼル、グ
ラデーション、ドロップシャドウの使用を最小限に抑える必要がある
(ベゼル:枠。ボタンの枠線やカードの枠線など)
1. iOSは他のプラットフォームとここが違う
- 奥行き(Depth)
- 表示上の明快な階層構造とユーザの意図した通りの動き・反応が奥深さとなり、ユーザの
アプリを触りたいという動機・気力となり、理解の手助けとなる
- 触れて発見することで喜び(delight)が高まり、(今アプリがどういう状態なのかという)コン
テキストを見失うことなく機能や追加コンテンツにアクセスできるようになる
- 画面遷移の挙動はコンテンツの移動を通して奥行きを感じさせる
1. iOSは他のプラットフォームとここが違う
- 明快さ(Clarity)
- 的確で分かりやすいこと
- 尊重(Diference)
- コンテンツを尊重すること
- 奥行き(Depth)
- 奥深さがあること、見た目にも体験的にも階層があり重層的であること
- appleさんがここで言いたかったこと(超意訳)
- appleといえば
- 分かりやすく無駄がない! 美しい! 奥深い! 大事な所に拘ってる! 高級! etc
- とこんなブランドイメージがある
- こういうブランドイメージを壊すようなアプリデザインにすんなよってこと
- やっぱiOSは違うね、ってそういうイメージを持って欲しい。そのためには
appleの持つブラ
ンドイメージをそのまま表現するようなデザインにしてくれってこと
- どういうデザインなのかはさっき伝えた通り
- じゃあどういう風にすればそれが実現できるか?
- それは次に紹介する原則を守ってくれればいい
1. iOSは他のプラットフォームとここが違う
2. デザイン原則
- 美的完成度(Aesthetic Integrity)
- 一貫性(Consistency)
- 直接的な操作(Direct Manipulation)
- フィードバック(Feedback)
- メタファー、暗喩、比喩(Metaphors)
- ユーザによる制御(User Control)
2. デザイン原則
- 美的完成度(Aesthetic Integrity)
- アプリの果たすべき役割・目的・機能に合った、美しい見た目・挙動であること
- 例えば、大事な作業の支援を行うアプリであれば、集中力を維持できるようにグラフィック
は繊細かつ控えめにし、予測しやすい挙動で標準で用意された制御部品(ボタンや入力
ボックスなどのcontrolと呼ばれる要素)を使うことが望ましい
- また一方で、ゲームのように没入するようなアプリでは、操作を促し、どんどん新しい発見
をさせるような、楽しそうで魅力的な見た目にする必要がある
2. デザイン原則
- 一貫性(Consistency)
- よく知られている標準的・模範的なものを使っていること
- システムの提供するI/F要素やよく使われているアイコン、標準のテキストスタイル、一般
的な用語や表現を使用すること
- そうして一般的な表現で実装されたものが、ユーザの期待通りの挙動を示すこと
2. デザイン原則
- 直接的な操作(Direct Manipulation)
- 画面上のコンテンツ自体が直接触れるような
UI、挙動になっていること
- そうなっていればユーザはコンテンツを理解しやすく、興味関心を抱きやすい
- Direct Manipulationとは、端末の回転でコンテンツを回転させたり、スワイプのようなジェ
スチャー操作によってコンテンツを移動させたりするような直感的・直接的な操作のことを
いう
- このようにユーザの操作を即座に反映させ、操作と反応をほぼ同時に発生させることで、
直接的に操作している感覚をユーザは得ることができる
2. デザイン原則
- フィードバック(Feedback)
- 適切なフィードバックがあること
- フィードバックとはアクションを受け取り、反応を返すことによってユーザに情報を与えるも
のである
- iOSに最初から入っている標準のアプリでは、どんなユーザアクションでも必ずフィード
バックを返すようになっている
- 例:interactiveな要素をタップしたときに強調(highlight)表示になる
- 例:時間のかかるような操作のステータス表示にはインジケータが使用される
- 例:アクションの結果を示すためにはアニメーションとサウンドが使われる
2. デザイン原則
- メタファー、暗喩、比喩(Metaphors)
- ユーザは良く知っている挙動と類似したような挙動であれば、その挙動を学習しやすい
- そのような慣れ親しんだ体験そのものやそれに類似した挙動のことをメタファーと呼ぶ
- ユーザは画面のタップを通して慣れ親しんだ表現や挙動を期待するため、メタファーはと
ても有効であり、それを活用すること
- 例えば、本や雑誌をめくるかのように、コンテンツをスワイプジェスチャーで切り替えられる
ようにすることがメタファーの活用である
- ユーザによる制御(User Control)
- アプリではなくユーザが制御を行うこと
- アプリが一連のアクションを提案したり、警告を表示したりすることはできる
- しかし、アプリが勝手に意思決定してしまうのは誤りである
- ユーザの操作を受け付けるのか、それとも望ましくない結果を回避するのかについてうま
くバランスを取るように設計されたアプリが、最高のアプリである
- アプリがinteractiveな要素を一般的で挙動の予測しやすい状態に保ち、破壊的なアクショ
ンは確認を取り、処理中であっても簡単にキャンセルできるようにしておくことで、ユーザ
は自分がコントロールしていると感じられるようになる
2. デザイン原則
2. デザイン原則
- 美的完成度(Aesthetic Integrity)
- 一貫性(Consistency)
- 直接的な操作(Direct Manipulation)
- フィードバック(Feedback)
- メタファー、暗喩、比喩(Metaphors)
- ユーザによる制御(User Control)
- appleさんがここで言いたかったこと(超意訳)
- 要はiOSの自然な挙動をイメージして欲しい
- 見た目はもちろんシンプルでとても美しい
- そしてそれは非常に直感的で、説明書なんてなくてもなんとなく操作できちゃう
- やりたいことがあったときにそれを邪魔したりしない、目的達成までは一直線だ
- 見ればどうなるかがすぐ分かるし、
やった結果がどうだったかもスムーズに理解できる
- 操作してないのに何かが起こることはなくて、全ては自分の思いのまま
- それがiOSってものだろ?
- そういうアプリを作ろう
2. デザイン原則
- 前節までのようなiOSアプリを作るために
Appleが提供してるUIKitは大別すると
以下の3つの要素から構成される
3. インターフェースの3つの要素
Bars Views Controls
- Bars
- ユーザがアプリの現在の位置を把握し、画面を遷移するための機能を提供する
ナビゲーションバー、タブバーなど。
Views/Controlsを中に置くこともできる
- Views
- text/graphics/animations/interactive elementsなどの主要なコンテンツを含む目に見え
る要素。スクロール、挿入、削除、配置などの動作も可能
- Controls
- アクションを開始し、情報を伝える要素
- 例:ボタン、スイッチ、テキストフィールド、進行状況インジケータなど
3. インターフェースの3つの要素
- Launching(起動)
- Onboarding(研修、アプリ初回起動から慣れるまでの過程)
- Loading(読み込み)
- Modality
- Navigation
- Accessing User Data and Resources
- Settings(設定)
4. アプリのアーキテクチャ(App Architecture)
- Launching(起動)
- 起動画面とは
- アプリ起動からアプリの最初の画面が表示されるまでの一時的な画面のこと
- 起動画面の役割
- 最初に表示するコンテンツの読み込みをしながらも、アプリ自体は高速ですぐ反応するという
印象を与える役割を持つ
- 起動画面の要件
- 起動後の最初の画面に似た控えめでテキストを含まないデザインにすること
4. アプリのアーキテクチャ(App Architecture)
- Launching(起動)
- 起動画面の例
4. アプリのアーキテクチャ(App Architecture)
- Launching(起動)
- 起動時の注意事項
- 端末の回転方向に応じた画面表示にすること
- すぐにアプリが使えること
- 使う為にセットアップ情報を必要としないこと
- アプリを使う多数派に向けて自動で設定をし、必要に応じて設定で調整できるようにすること
- セットアップ情報がどうしても必要な場合でも、あとで設定から変更できるようにすること
- アプリ内でライセンス規約や免責事項を表示しないこと
- App Store内で表示し、ダウンロードの前に確認できるようにすること
4. アプリのアーキテクチャ(App Architecture)
4. アプリのアーキテクチャ(App Architecture)
- Launching(起動)
- 再起動について
- 再起動の時には、前の状態を復元して中断したところから続行できるようにしよう
- 再起動を勧めないこと。時間もかかるし、信頼性が低くて使いにくいアプリに見える
- ストア評価を頻繁に求めないこと
- ユーザには時間を与え、いつでもストア評価ダイアログの表示を offできるようにし、決してアプリ
の評価を強制しないこと
- Onboarding(研修、アプリ初回起動から慣れるまでの過程)
- Onboardingの前提
- アプリを楽しむ手助けとなるように導入の過程を作ること
- セットアップやライセンス詳細を含めないこと(起動の記載と同じ)
- すぐにアプリが使えること(起動の記載と同じ)
- チュートリアルが必要でも、スキップできるようにすること
4. アプリのアーキテクチャ(App Architecture)
- Onboarding(研修、アプリ初回起動から慣れるまでの過程)
- ヘルプ・案内について
- 必要な時に適切にヘルプを表示すること
- どんな時に必要か? → 人が行き詰まっている時に必要
- たとえばゲームでは、一時停止中やキャラクターが移動していないときなど
- 初回の案内を見逃した場合に備えて、チュートリアルを再生できるようにすること
4. アプリのアーキテクチャ(App Architecture)
- Onboarding(研修、アプリ初回起動から慣れるまでの過程)
- チュートリアルについて
- 初心者向けに案内をすること自体に問題はない
- しかし、チュートリアルは優れたアプリ設計の代わりにならない
- 何よりもまず、アプリを直感的にすること
- あまりにも多くの案内・情報提供が必要な場合は、アプリの設計を再確認すること
4. アプリのアーキテクチャ(App Architecture)
- Onboarding(研修、アプリ初回起動から慣れるまでの過程)
- ユーザがアプリに慣れる為に必要なこと
- 操作を通して楽しく新たな発見・学びができるようにすること
- 少しずつ状況に応じて学べるようにすること
- その為に、アニメーションとユーザの操作に応じた反応を利用すること
- 操作可能に見える静的なスクリーンショットを表示しないこと
4. アプリのアーキテクチャ(App Architecture)
- Loading(読み込み)
- 読み込み状態の表示
- 読み込み中は、読み込み中であるということがユーザに伝わるように明確にすること
- 少なくとも、アクティビティスピナー(クルクル回るやつ)を表示すること
- さらに良いのは、明示的に進行状況を表示し、待機時間が分かるようにすること
- できるだけ早くコンテンツを表示すること
- スケルトンローディングのように、画面自体はすぐに表示し、プレースホルダーやアニメーショ
ンなどを使用して、まだ利用できない場所がどこか分かるようにすること
- アニメーションの再生中やメニューなどで何か操作している時など、できる限りバックグラウン
ドで次のコンテンツを事前読み込みしておくこと
4. アプリのアーキテクチャ(App Architecture)
- Loading(読み込み)
- ユーザへの案内や楽しめる画面にすること
- 読み込み中、ただ待機させるのはもったいない
- 面白い動画や簡単なミニゲーム、 tipsなどを表示しよう
- アプリのスタイルに合わせて、読み込み画面をカスタマイズすること
4. アプリのアーキテクチャ(App Architecture)
- Modality
- 一時的に表示し、戻るのにアクションが必要な性質のこと
- 具体的には、今表示中のコンテキストから離れて一時的に別のコンテンツを表示し、前のコンテキストに戻る為
には何かしら明示的なアクションが必要になるような、そうした性質のこと
- これにより、以下のようなことが実現できる
- まとまったタスクの完了の為に集中させたり、情報を集約して見せたりするような、関連性の
ある塊でのタスク提案や表示ができる
- 情報をユーザに提示し、それによってアクションを促せる
4. アプリのアーキテクチャ(App Architecture)
- Modality
- システムが提供するモーダル
- アラート
- アクティビティビュー(共有シート)
- アクションシート
4. アプリのアーキテクチャ(App Architecture)
- Modality
- iOS13以降で以下のモーダルがサポートされている
- シート(Sheet、別名セミモーダル)
- 複雑なタスクを有効にしない非没入型のコンテンツに使用する
- 全画面(Fullscreen)
- ビデオや写真などの没入型コンテンツや、写真の編集などの複雑で全画面表示の利
点が活かせるタスクで使用する
4. アプリのアーキテクチャ(App Architecture)
- Modality
- シート(Sheet、別名セミモーダル)
4. アプリのアーキテクチャ(App Architecture)
- Modality
- 全画面(Fullscreen)
4. アプリのアーキテクチャ(App Architecture)
- Modality
- モーダル表示における注意点Part 1
- 明確な利点があるときのみ利用すること
- 現在のタスクとは異なるタスクを選択または実行することに注意を集中させることが重要な場合にの
み、モーダルを作成すること
- アラートは重要な情報の提供で利用すること(できれば対応が可能な情報であること)
- アラートは体験を中断する。中断されて当然だとユーザが思えるアラートであることが重要
- 表示するのはシンプルなコンテンツ・タスクにすること
- モーダルが複雑だと、モーダルに入ったときに中断したタスクを見失う可能性がある
- ユーザが迷子にならないように、モーダルの先でさらに階層がある場合には特に注意が必要。階層は
一直線に辿れて、しかも完了の為には何をすればいいかが明確になるようにしましょう
4. アプリのアーキテクチャ(App Architecture)
- Modality
- モーダル表示における注意点Part 2
- 閉じるためのボタンを常に表示しておくこと
- ボタンはタップだけではなく、アクセシビリティ技術(音声操作など)でも使う
- 閉じると入力情報などが失われる場合、閉じる前に確認を取ること
- tips表示のようなpopoverの更に上にモーダルを出したりしないこと
- モーダルを出す場合、popoverを閉じてから出そう
4. アプリのアーキテクチャ(App Architecture)
- Modality
- モーダル表示における注意点Part 3
- コンテキストが変わるので、タイトルをつけておくこと
- モーダル表示でガラッとイメージが変わるような表示にしないこと
- 例えば、モーダルで出る画面のナビゲーションバーの色は元のアプリの色に合わせること
- モーダル表示の際の遷移アニメーションを統一すること
- デフォルトの遷移は下から上に出るアニメーション
- 一時的に表示しているということが伝わるようにアプリ全体で一貫した遷移にしよう
4. アプリのアーキテクチャ(App Architecture)
- Navigation
- 主要なナビゲーションの形式
- 階層的ナビゲーション
- 例:設定アプリ
- フラットナビゲーション
- 例:App Storeアプリ
- コンテンツ主導や体験主導型ナビゲーション
- 例:ゲームアプリ、書籍アプリ
4. アプリのアーキテクチャ(App Architecture)
- Navigation
- 階層的ナビゲーション
- 例:設定アプリ
4. アプリのアーキテクチャ(App Architecture)
- Navigation
- フラットナビゲーション
- 例:App Storeアプリ
4. アプリのアーキテクチャ(App Architecture)
4. アプリのアーキテクチャ(App Architecture)
- Navigation
- コンテンツ主導や体験主導型ナビゲーション
- 例:ゲームアプリ、書籍アプリ
- Navigation
- ナビゲーションにおける注意事項Part 1
- 今どこにいるのか、行きたい場所に辿り着くにはどうすべきかを明確にすること
- コンテンツのパスが論理的で予測可能で、簡単にたどることが不可欠
- 基本的には各画面に辿り着く経路は1つすること。どうしても複数の場所から表示する必要がある場
合、アラートなどのモーダルの使用を検討すること
- 最短で簡単にコンテンツにアクセスできる構造にすること
- ジェスチャー操作により簡単に画面移動できること
- 例:画面を左端から右にスワイプしたときに戻れる
4. アプリのアーキテクチャ(App Architecture)
- Navigation
- ナビゲーションにおける注意事項Part 2
- 標準のナビゲーションコンポーネントを使用すること
- ナビゲーションバーやタブバーをうまく活用すること
- ナビゲーションバーは現在の位置のタイトル表示や前に戻るボタンを設置ができる
- タブバーは現在の場所に関係なく、カテゴリをすばやく簡単に切り替えることができる
- 同じ種類の複数コンテンツを表示する場合は、ページコントロールを使用すること
4. アプリのアーキテクチャ(App Architecture)
- Accessing User Data and Resources
- ユーザーのプライバシーは最も重要である
- ユーザデータやリソースの使用法について透明性を確保する必要がある
- 例えば以下のようなデータにアクセスする場合は許可を求める必要がある
- 位置情報、健康情報、財務情報、連絡先情報、その他の個人識別情報を含む個人データ
- 電子メール、メッセージ、カレンダーデータ、連絡先、ゲームプレイ情報、 Apple Musicアクティ
ビティ、HomeKitデータ、およびオーディオ、ビデオ、写真コンテンツなどのユーザが作成した
コンテンツ
- Bluetooth周辺機器、ホームオートメーション機能、 Wi-Fi接続、ローカルネットワークなどの保
護されたリソース
- カメラやマイクなどのデバイス機能
4. アプリのアーキテクチャ(App Architecture)
- Accessing User Data and Resources
- アプリで明らかに必要な場合にのみ、権限を要求すること
- できれば、アクセスを必要とする機能を使うときに初めて許可を求めること
- アプリを使うために必要な場合にのみ、起動時に権限を要求すること
- 権限要求アラートに表示するテキストで権限が必要な理由を明確に記載すること
- テキストは端的で具体的、かつ理解しやすい、簡潔で完全な文章を目指すこと
4. アプリのアーキテクチャ(App Architecture)
- Accessing User Data and Resources
- iOS 15以降では位置情報取得用のボタンが用意されている
- アプリの機能のために一時的に位置情報が必要な場合は
そのボタンの利用を検討すること
- ボタンUIはカスタマイズ可能なので、
アプリのデザインに合わせて調整すること
- 注意:カスタマイズした位置情報ボタンに一貫した問題が
   あることがシステムによって確認された場合、
   ユーザーがボタンをタップしても、アプリにデバイス
   の位置情報へのアクセスが与えられません
4. アプリのアーキテクチャ(App Architecture)
- Accessing User Data and Resources
- iOS 15以降ではShazamKitという音声認識が利用可能
- 音声認識のためにデバイスのマイクが必要な場合は、各種データ
/リソースへのアクセス
と同様に、マイクへのアクセスを要求する必要がある
- 録音は可能な限り早く停止すること
- 認識した音声をiCloudライブラリに保存できる場合、保存するかどうかはユーザに選択さ
せること
4. アプリのアーキテクチャ(App Architecture)
- Accessing User Data and Resources
- アラートの前にカスタムメッセージを表示する場合、システムのアラートを出すアクション
のみが可能な状態にすること
- 理想的には、カスタムメッセージなしで文脈で許可を要求する理由が理解できること
- ユーザに遅延戦術と解釈させないように、カスタムメッセージを閉じたら必ずシステムアラート
が表示されること
- アクションのタイトルは「続行」のような言葉を使い、「許可」のようなカスタム画面内で許可を
与えたり他のアクションが実行できるような言葉を使わないこと
4. アプリのアーキテクチャ(App Architecture)
- Accessing User Data and Resources
- アプリのトラッキングについて
- システムが提供するアラートの前に、人々を混乱させたり誤解させたりするようなカスタム
メッセージを表示しないこと
- アプリのトラッキングはデリケートな問題であり、適切な表示でない場合などは
App Store
Reviewでリジェクトされる可能性があるため、ガイドラインを良く確認しておくこと
4. アプリのアーキテクチャ(App Architecture)
- Settings(設定)
- 必要なデータはなるべくシステムから取得すること
- 例:郵便番号の入力を求めるのではなく、現在地の使用許可を求める
- 設定には優先順位をつけること
- 最初に見える画面には重要な設定や頻繁に変える設定を配置する
- 深い階層の方に変える頻度が低い設定を配置する
- 滅多に変更されない設定は設定アプリに置くことも検討する
- 必要に応じて、設定アプリへのショートカットを提供すること
- 例:Push通知や位置情報サービスなど
4. アプリのアーキテクチャ(App Architecture)
- HIGではこの他以下の項目について定められている
- User Interaction:3D Touch, App pencil, Audio, Authentication, Data Entry, ...
- System Capabilities:Augmented Reality, Multitasking, Multiple Windows, ...
- Visual Design:Adaptivity and Layout, Animation, Branding, Color, ...
- Icons and Images:Image Size and Resolution, App Icon, Custom Icons, ...
- Bars:Navigation Bars, Search Bars, Status Bars, Tab Bars, Toolbars
- Views:Action Sheets, Activity Views, Alerts, Collections, Image Views, ...
- Controls:Buttons, Context Menus, Edit Menus, Labels, Page Controls
- Extensions:Custom Keyboards, File Providers, Home Screen Actions, ...
5. その他
- HIGでは構成として、前提になる理念・方向性を提示したあと、個別
の要素がどうあるべきかをグループごとにまとめて提示してある
- 前提を理解した上で、都度個別の要素について調べにいくリファレ
ンス的な使い方がしやすいようになっている
- なので、その他の細かい要素の「どうあるべきか」は個々に参照して
いくことが望ましい
5. その他
https://developer.apple.com/design/human-interface-guidelines/

More Related Content

What's hot

マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャota42y
 
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法モノビット エンジン
 
個人で作るRTK農業用ガイダンスシステム
個人で作るRTK農業用ガイダンスシステム個人で作るRTK農業用ガイダンスシステム
個人で作るRTK農業用ガイダンスシステムOSgeo Japan
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveTokoroten Nakayama
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたKohei Nakamura
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方Shohei Koyama
 
Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編NAKAOKU Takahiro
 
WebRTC Build MCU on browser
WebRTC Build MCU on browserWebRTC Build MCU on browser
WebRTC Build MCU on browsermganeko
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]DeNA
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうRyuji Tsutsui
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかAtsushi Nakada
 
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)Photon運営事務局
 
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜SSII
 
Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~Yuta Matsumura
 
データサイエンティスト養成読本の解説+書き忘れたこと
データサイエンティスト養成読本の解説+書き忘れたことデータサイエンティスト養成読本の解説+書き忘れたこと
データサイエンティスト養成読本の解説+書き忘れたことTokoroten Nakayama
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理Norishige Fukushima
 

What's hot (20)

マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャ
 
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
 
個人で作るRTK農業用ガイダンスシステム
個人で作るRTK農業用ガイダンスシステム個人で作るRTK農業用ガイダンスシステム
個人で作るRTK農業用ガイダンスシステム
 
UnityとROSの連携について
UnityとROSの連携についてUnityとROSの連携について
UnityとROSの連携について
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編
 
WebRTC Build MCU on browser
WebRTC Build MCU on browserWebRTC Build MCU on browser
WebRTC Build MCU on browser
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
 
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
 
Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~
 
データサイエンティスト養成読本の解説+書き忘れたこと
データサイエンティスト養成読本の解説+書き忘れたことデータサイエンティスト養成読本の解説+書き忘れたこと
データサイエンティスト養成読本の解説+書き忘れたこと
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 

Similar to Human Interface Guidelines(iOS版) まとめ資料

Intro - iOS 7 でアプリ開発はどう変わる? | iOS 7エンジニア勉強会
Intro - iOS 7 でアプリ開発はどう変わる? | iOS 7エンジニア勉強会Intro - iOS 7 でアプリ開発はどう変わる? | iOS 7エンジニア勉強会
Intro - iOS 7 でアプリ開発はどう変わる? | iOS 7エンジニア勉強会Yahoo!デベロッパーネットワーク
 
第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考える第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考えるHideto Ishibashi
 
The Mobile Frontier at HTML5 Conference 2013/11/30
The Mobile Frontier at HTML5 Conference 2013/11/30The Mobile Frontier at HTML5 Conference 2013/11/30
The Mobile Frontier at HTML5 Conference 2013/11/30Yukio Andoh
 
変化の時代における開発者のスキル資産形成について
変化の時代における開発者のスキル資産形成について変化の時代における開発者のスキル資産形成について
変化の時代における開発者のスキル資産形成についてKen Azuma
 
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方Roy Kim
 
UI&UX / 重要なのは、毎日さわって嬉しい UI UX!
UI&UX / 重要なのは、毎日さわって嬉しい UI UX! UI&UX / 重要なのは、毎日さわって嬉しい UI UX!
UI&UX / 重要なのは、毎日さわって嬉しい UI UX! Akiko Ohtsuka
 
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...さくらインターネット株式会社
 
React Nativeで開発するマルチプラットフォームアプリ
React Nativeで開発するマルチプラットフォームアプリReact Nativeで開発するマルチプラットフォームアプリ
React Nativeで開発するマルチプラットフォームアプリMasayuki Iwai
 
Potatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwayaPotatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwayaAkira Iwaya
 
Spath for enterprise
Spath for enterpriseSpath for enterprise
Spath for enterpriseKoichiro Sumi
 
プログラミング未経験者を対象としたインタラクティブシステムの演習授業の開発
プログラミング未経験者を対象としたインタラクティブシステムの演習授業の開発プログラミング未経験者を対象としたインタラクティブシステムの演習授業の開発
プログラミング未経験者を対象としたインタラクティブシステムの演習授業の開発Masanobu Takagi
 
iOSアプリケーションの継続的デリバリー 〜エンタープライズ品質のiOSアプリケーションを目指して〜
iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜
iOSアプリケーションの継続的デリバリー 〜エンタープライズ品質のiOSアプリケーションを目指して〜Naoki Umehara
 
インターフェイスの世界の言語
インターフェイスの世界の言語インターフェイスの世界の言語
インターフェイスの世界の言語Tomohiro Suzuki
 
Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】
Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】
Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】schoowebcampus
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向Tsutomu Ogasawara
 

Similar to Human Interface Guidelines(iOS版) まとめ資料 (20)

Intro - iOS 7 でアプリ開発はどう変わる? | iOS 7エンジニア勉強会
Intro - iOS 7 でアプリ開発はどう変わる? | iOS 7エンジニア勉強会Intro - iOS 7 でアプリ開発はどう変わる? | iOS 7エンジニア勉強会
Intro - iOS 7 でアプリ開発はどう変わる? | iOS 7エンジニア勉強会
 
第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考える第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考える
 
Indigo Studio で作るプロトタイプ
Indigo Studio で作るプロトタイプIndigo Studio で作るプロトタイプ
Indigo Studio で作るプロトタイプ
 
The Mobile Frontier at HTML5 Conference 2013/11/30
The Mobile Frontier at HTML5 Conference 2013/11/30The Mobile Frontier at HTML5 Conference 2013/11/30
The Mobile Frontier at HTML5 Conference 2013/11/30
 
20130528 pasonatech
20130528 pasonatech20130528 pasonatech
20130528 pasonatech
 
変化の時代における開発者のスキル資産形成について
変化の時代における開発者のスキル資産形成について変化の時代における開発者のスキル資産形成について
変化の時代における開発者のスキル資産形成について
 
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
 
UI&UX / 重要なのは、毎日さわって嬉しい UI UX!
UI&UX / 重要なのは、毎日さわって嬉しい UI UX! UI&UX / 重要なのは、毎日さわって嬉しい UI UX!
UI&UX / 重要なのは、毎日さわって嬉しい UI UX!
 
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
 
React Nativeで開発するマルチプラットフォームアプリ
React Nativeで開発するマルチプラットフォームアプリReact Nativeで開発するマルチプラットフォームアプリ
React Nativeで開発するマルチプラットフォームアプリ
 
iOS 7 UI 勉強会
iOS 7 UI 勉強会iOS 7 UI 勉強会
iOS 7 UI 勉強会
 
Potatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwayaPotatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwaya
 
Spath for enterprise
Spath for enterpriseSpath for enterprise
Spath for enterprise
 
プログラミング未経験者を対象としたインタラクティブシステムの演習授業の開発
プログラミング未経験者を対象としたインタラクティブシステムの演習授業の開発プログラミング未経験者を対象としたインタラクティブシステムの演習授業の開発
プログラミング未経験者を対象としたインタラクティブシステムの演習授業の開発
 
iOS開発豆知識_エスキュービズム勉強会20141006
iOS開発豆知識_エスキュービズム勉強会20141006iOS開発豆知識_エスキュービズム勉強会20141006
iOS開発豆知識_エスキュービズム勉強会20141006
 
iOSアプリケーションの継続的デリバリー 〜エンタープライズ品質のiOSアプリケーションを目指して〜
iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜
iOSアプリケーションの継続的デリバリー 〜エンタープライズ品質のiOSアプリケーションを目指して〜
 
インターフェイスの世界の言語
インターフェイスの世界の言語インターフェイスの世界の言語
インターフェイスの世界の言語
 
Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】
Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】
Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
 
Nyle流 Scalaとの付き合い方
Nyle流 Scalaとの付き合い方Nyle流 Scalaとの付き合い方
Nyle流 Scalaとの付き合い方
 

Human Interface Guidelines(iOS版) まとめ資料

  • 2. HIG(Human Interface Guidelines)とは - Appleが定めたUI設計における原則 - 以下の4つの環境別にまとめられている - macOS - iOS - watchOS - tvOS - 今回はiOSについてまとめる
  • 3. 1. iOSは他のプラットフォームとここが違う - 明快さ(Clarity) - 的確で分かりやすいこと - 尊重(Diference) - コンテンツを尊重すること - 奥行き(Depth) - 奥深さがあること、見た目にも体験的にも階層があり重層的であること
  • 4. 1. iOSは他のプラットフォームとここが違う - 明快さ(Clarity) - どんなサイズでも読みやすいテキスト - 的確で分かりやすいアイコン - 微細・控えめかつ適切な装飾 - 機能性に重点を置くこと - 色、フォント、スペース、グラフィックのような I/F要素を控えめにさせることでコンテンツを強 調させ、対話的(interactive)であることをユーザに伝える (I/F=インターフェース。次ページ以降も同様に略す)
  • 5. 1. iOSは他のプラットフォームとここが違う - 尊重(Diference) - 滑らかな動きと分かりやすく美しい I/Fがコンテンツの理解と対話に役立つ - コンテンツは通常画面全体に表示されるが、半透明やぼかしをうまく使うことで多くの場合コ ンテンツの理解・操作のヒントとなる - コンテンツがメインとなるように、分かりやすくも邪魔にならない I/Fとするためにはベゼル、グ ラデーション、ドロップシャドウの使用を最小限に抑える必要がある (ベゼル:枠。ボタンの枠線やカードの枠線など)
  • 6. 1. iOSは他のプラットフォームとここが違う - 奥行き(Depth) - 表示上の明快な階層構造とユーザの意図した通りの動き・反応が奥深さとなり、ユーザの アプリを触りたいという動機・気力となり、理解の手助けとなる - 触れて発見することで喜び(delight)が高まり、(今アプリがどういう状態なのかという)コン テキストを見失うことなく機能や追加コンテンツにアクセスできるようになる - 画面遷移の挙動はコンテンツの移動を通して奥行きを感じさせる
  • 7. 1. iOSは他のプラットフォームとここが違う - 明快さ(Clarity) - 的確で分かりやすいこと - 尊重(Diference) - コンテンツを尊重すること - 奥行き(Depth) - 奥深さがあること、見た目にも体験的にも階層があり重層的であること
  • 8. - appleさんがここで言いたかったこと(超意訳) - appleといえば - 分かりやすく無駄がない! 美しい! 奥深い! 大事な所に拘ってる! 高級! etc - とこんなブランドイメージがある - こういうブランドイメージを壊すようなアプリデザインにすんなよってこと - やっぱiOSは違うね、ってそういうイメージを持って欲しい。そのためには appleの持つブラ ンドイメージをそのまま表現するようなデザインにしてくれってこと - どういうデザインなのかはさっき伝えた通り - じゃあどういう風にすればそれが実現できるか? - それは次に紹介する原則を守ってくれればいい 1. iOSは他のプラットフォームとここが違う
  • 9. 2. デザイン原則 - 美的完成度(Aesthetic Integrity) - 一貫性(Consistency) - 直接的な操作(Direct Manipulation) - フィードバック(Feedback) - メタファー、暗喩、比喩(Metaphors) - ユーザによる制御(User Control)
  • 10. 2. デザイン原則 - 美的完成度(Aesthetic Integrity) - アプリの果たすべき役割・目的・機能に合った、美しい見た目・挙動であること - 例えば、大事な作業の支援を行うアプリであれば、集中力を維持できるようにグラフィック は繊細かつ控えめにし、予測しやすい挙動で標準で用意された制御部品(ボタンや入力 ボックスなどのcontrolと呼ばれる要素)を使うことが望ましい - また一方で、ゲームのように没入するようなアプリでは、操作を促し、どんどん新しい発見 をさせるような、楽しそうで魅力的な見た目にする必要がある
  • 11. 2. デザイン原則 - 一貫性(Consistency) - よく知られている標準的・模範的なものを使っていること - システムの提供するI/F要素やよく使われているアイコン、標準のテキストスタイル、一般 的な用語や表現を使用すること - そうして一般的な表現で実装されたものが、ユーザの期待通りの挙動を示すこと
  • 12. 2. デザイン原則 - 直接的な操作(Direct Manipulation) - 画面上のコンテンツ自体が直接触れるような UI、挙動になっていること - そうなっていればユーザはコンテンツを理解しやすく、興味関心を抱きやすい - Direct Manipulationとは、端末の回転でコンテンツを回転させたり、スワイプのようなジェ スチャー操作によってコンテンツを移動させたりするような直感的・直接的な操作のことを いう - このようにユーザの操作を即座に反映させ、操作と反応をほぼ同時に発生させることで、 直接的に操作している感覚をユーザは得ることができる
  • 13. 2. デザイン原則 - フィードバック(Feedback) - 適切なフィードバックがあること - フィードバックとはアクションを受け取り、反応を返すことによってユーザに情報を与えるも のである - iOSに最初から入っている標準のアプリでは、どんなユーザアクションでも必ずフィード バックを返すようになっている - 例:interactiveな要素をタップしたときに強調(highlight)表示になる - 例:時間のかかるような操作のステータス表示にはインジケータが使用される - 例:アクションの結果を示すためにはアニメーションとサウンドが使われる
  • 14. 2. デザイン原則 - メタファー、暗喩、比喩(Metaphors) - ユーザは良く知っている挙動と類似したような挙動であれば、その挙動を学習しやすい - そのような慣れ親しんだ体験そのものやそれに類似した挙動のことをメタファーと呼ぶ - ユーザは画面のタップを通して慣れ親しんだ表現や挙動を期待するため、メタファーはと ても有効であり、それを活用すること - 例えば、本や雑誌をめくるかのように、コンテンツをスワイプジェスチャーで切り替えられる ようにすることがメタファーの活用である
  • 15. - ユーザによる制御(User Control) - アプリではなくユーザが制御を行うこと - アプリが一連のアクションを提案したり、警告を表示したりすることはできる - しかし、アプリが勝手に意思決定してしまうのは誤りである - ユーザの操作を受け付けるのか、それとも望ましくない結果を回避するのかについてうま くバランスを取るように設計されたアプリが、最高のアプリである - アプリがinteractiveな要素を一般的で挙動の予測しやすい状態に保ち、破壊的なアクショ ンは確認を取り、処理中であっても簡単にキャンセルできるようにしておくことで、ユーザ は自分がコントロールしていると感じられるようになる 2. デザイン原則
  • 16. 2. デザイン原則 - 美的完成度(Aesthetic Integrity) - 一貫性(Consistency) - 直接的な操作(Direct Manipulation) - フィードバック(Feedback) - メタファー、暗喩、比喩(Metaphors) - ユーザによる制御(User Control)
  • 17. - appleさんがここで言いたかったこと(超意訳) - 要はiOSの自然な挙動をイメージして欲しい - 見た目はもちろんシンプルでとても美しい - そしてそれは非常に直感的で、説明書なんてなくてもなんとなく操作できちゃう - やりたいことがあったときにそれを邪魔したりしない、目的達成までは一直線だ - 見ればどうなるかがすぐ分かるし、 やった結果がどうだったかもスムーズに理解できる - 操作してないのに何かが起こることはなくて、全ては自分の思いのまま - それがiOSってものだろ? - そういうアプリを作ろう 2. デザイン原則
  • 19. - Bars - ユーザがアプリの現在の位置を把握し、画面を遷移するための機能を提供する ナビゲーションバー、タブバーなど。 Views/Controlsを中に置くこともできる - Views - text/graphics/animations/interactive elementsなどの主要なコンテンツを含む目に見え る要素。スクロール、挿入、削除、配置などの動作も可能 - Controls - アクションを開始し、情報を伝える要素 - 例:ボタン、スイッチ、テキストフィールド、進行状況インジケータなど 3. インターフェースの3つの要素
  • 20. - Launching(起動) - Onboarding(研修、アプリ初回起動から慣れるまでの過程) - Loading(読み込み) - Modality - Navigation - Accessing User Data and Resources - Settings(設定) 4. アプリのアーキテクチャ(App Architecture)
  • 21. - Launching(起動) - 起動画面とは - アプリ起動からアプリの最初の画面が表示されるまでの一時的な画面のこと - 起動画面の役割 - 最初に表示するコンテンツの読み込みをしながらも、アプリ自体は高速ですぐ反応するという 印象を与える役割を持つ - 起動画面の要件 - 起動後の最初の画面に似た控えめでテキストを含まないデザインにすること 4. アプリのアーキテクチャ(App Architecture)
  • 22. - Launching(起動) - 起動画面の例 4. アプリのアーキテクチャ(App Architecture)
  • 23. - Launching(起動) - 起動時の注意事項 - 端末の回転方向に応じた画面表示にすること - すぐにアプリが使えること - 使う為にセットアップ情報を必要としないこと - アプリを使う多数派に向けて自動で設定をし、必要に応じて設定で調整できるようにすること - セットアップ情報がどうしても必要な場合でも、あとで設定から変更できるようにすること - アプリ内でライセンス規約や免責事項を表示しないこと - App Store内で表示し、ダウンロードの前に確認できるようにすること 4. アプリのアーキテクチャ(App Architecture)
  • 24. 4. アプリのアーキテクチャ(App Architecture) - Launching(起動) - 再起動について - 再起動の時には、前の状態を復元して中断したところから続行できるようにしよう - 再起動を勧めないこと。時間もかかるし、信頼性が低くて使いにくいアプリに見える - ストア評価を頻繁に求めないこと - ユーザには時間を与え、いつでもストア評価ダイアログの表示を offできるようにし、決してアプリ の評価を強制しないこと
  • 25. - Onboarding(研修、アプリ初回起動から慣れるまでの過程) - Onboardingの前提 - アプリを楽しむ手助けとなるように導入の過程を作ること - セットアップやライセンス詳細を含めないこと(起動の記載と同じ) - すぐにアプリが使えること(起動の記載と同じ) - チュートリアルが必要でも、スキップできるようにすること 4. アプリのアーキテクチャ(App Architecture)
  • 26. - Onboarding(研修、アプリ初回起動から慣れるまでの過程) - ヘルプ・案内について - 必要な時に適切にヘルプを表示すること - どんな時に必要か? → 人が行き詰まっている時に必要 - たとえばゲームでは、一時停止中やキャラクターが移動していないときなど - 初回の案内を見逃した場合に備えて、チュートリアルを再生できるようにすること 4. アプリのアーキテクチャ(App Architecture)
  • 27. - Onboarding(研修、アプリ初回起動から慣れるまでの過程) - チュートリアルについて - 初心者向けに案内をすること自体に問題はない - しかし、チュートリアルは優れたアプリ設計の代わりにならない - 何よりもまず、アプリを直感的にすること - あまりにも多くの案内・情報提供が必要な場合は、アプリの設計を再確認すること 4. アプリのアーキテクチャ(App Architecture)
  • 28. - Onboarding(研修、アプリ初回起動から慣れるまでの過程) - ユーザがアプリに慣れる為に必要なこと - 操作を通して楽しく新たな発見・学びができるようにすること - 少しずつ状況に応じて学べるようにすること - その為に、アニメーションとユーザの操作に応じた反応を利用すること - 操作可能に見える静的なスクリーンショットを表示しないこと 4. アプリのアーキテクチャ(App Architecture)
  • 29. - Loading(読み込み) - 読み込み状態の表示 - 読み込み中は、読み込み中であるということがユーザに伝わるように明確にすること - 少なくとも、アクティビティスピナー(クルクル回るやつ)を表示すること - さらに良いのは、明示的に進行状況を表示し、待機時間が分かるようにすること - できるだけ早くコンテンツを表示すること - スケルトンローディングのように、画面自体はすぐに表示し、プレースホルダーやアニメーショ ンなどを使用して、まだ利用できない場所がどこか分かるようにすること - アニメーションの再生中やメニューなどで何か操作している時など、できる限りバックグラウン ドで次のコンテンツを事前読み込みしておくこと 4. アプリのアーキテクチャ(App Architecture)
  • 30. - Loading(読み込み) - ユーザへの案内や楽しめる画面にすること - 読み込み中、ただ待機させるのはもったいない - 面白い動画や簡単なミニゲーム、 tipsなどを表示しよう - アプリのスタイルに合わせて、読み込み画面をカスタマイズすること 4. アプリのアーキテクチャ(App Architecture)
  • 31. - Modality - 一時的に表示し、戻るのにアクションが必要な性質のこと - 具体的には、今表示中のコンテキストから離れて一時的に別のコンテンツを表示し、前のコンテキストに戻る為 には何かしら明示的なアクションが必要になるような、そうした性質のこと - これにより、以下のようなことが実現できる - まとまったタスクの完了の為に集中させたり、情報を集約して見せたりするような、関連性の ある塊でのタスク提案や表示ができる - 情報をユーザに提示し、それによってアクションを促せる 4. アプリのアーキテクチャ(App Architecture)
  • 32. - Modality - システムが提供するモーダル - アラート - アクティビティビュー(共有シート) - アクションシート 4. アプリのアーキテクチャ(App Architecture)
  • 33. - Modality - iOS13以降で以下のモーダルがサポートされている - シート(Sheet、別名セミモーダル) - 複雑なタスクを有効にしない非没入型のコンテンツに使用する - 全画面(Fullscreen) - ビデオや写真などの没入型コンテンツや、写真の編集などの複雑で全画面表示の利 点が活かせるタスクで使用する 4. アプリのアーキテクチャ(App Architecture)
  • 34. - Modality - シート(Sheet、別名セミモーダル) 4. アプリのアーキテクチャ(App Architecture)
  • 35. - Modality - 全画面(Fullscreen) 4. アプリのアーキテクチャ(App Architecture)
  • 36. - Modality - モーダル表示における注意点Part 1 - 明確な利点があるときのみ利用すること - 現在のタスクとは異なるタスクを選択または実行することに注意を集中させることが重要な場合にの み、モーダルを作成すること - アラートは重要な情報の提供で利用すること(できれば対応が可能な情報であること) - アラートは体験を中断する。中断されて当然だとユーザが思えるアラートであることが重要 - 表示するのはシンプルなコンテンツ・タスクにすること - モーダルが複雑だと、モーダルに入ったときに中断したタスクを見失う可能性がある - ユーザが迷子にならないように、モーダルの先でさらに階層がある場合には特に注意が必要。階層は 一直線に辿れて、しかも完了の為には何をすればいいかが明確になるようにしましょう 4. アプリのアーキテクチャ(App Architecture)
  • 37. - Modality - モーダル表示における注意点Part 2 - 閉じるためのボタンを常に表示しておくこと - ボタンはタップだけではなく、アクセシビリティ技術(音声操作など)でも使う - 閉じると入力情報などが失われる場合、閉じる前に確認を取ること - tips表示のようなpopoverの更に上にモーダルを出したりしないこと - モーダルを出す場合、popoverを閉じてから出そう 4. アプリのアーキテクチャ(App Architecture)
  • 38. - Modality - モーダル表示における注意点Part 3 - コンテキストが変わるので、タイトルをつけておくこと - モーダル表示でガラッとイメージが変わるような表示にしないこと - 例えば、モーダルで出る画面のナビゲーションバーの色は元のアプリの色に合わせること - モーダル表示の際の遷移アニメーションを統一すること - デフォルトの遷移は下から上に出るアニメーション - 一時的に表示しているということが伝わるようにアプリ全体で一貫した遷移にしよう 4. アプリのアーキテクチャ(App Architecture)
  • 39. - Navigation - 主要なナビゲーションの形式 - 階層的ナビゲーション - 例:設定アプリ - フラットナビゲーション - 例:App Storeアプリ - コンテンツ主導や体験主導型ナビゲーション - 例:ゲームアプリ、書籍アプリ 4. アプリのアーキテクチャ(App Architecture)
  • 40. - Navigation - 階層的ナビゲーション - 例:設定アプリ 4. アプリのアーキテクチャ(App Architecture)
  • 41. - Navigation - フラットナビゲーション - 例:App Storeアプリ 4. アプリのアーキテクチャ(App Architecture)
  • 42. 4. アプリのアーキテクチャ(App Architecture) - Navigation - コンテンツ主導や体験主導型ナビゲーション - 例:ゲームアプリ、書籍アプリ
  • 43. - Navigation - ナビゲーションにおける注意事項Part 1 - 今どこにいるのか、行きたい場所に辿り着くにはどうすべきかを明確にすること - コンテンツのパスが論理的で予測可能で、簡単にたどることが不可欠 - 基本的には各画面に辿り着く経路は1つすること。どうしても複数の場所から表示する必要がある場 合、アラートなどのモーダルの使用を検討すること - 最短で簡単にコンテンツにアクセスできる構造にすること - ジェスチャー操作により簡単に画面移動できること - 例:画面を左端から右にスワイプしたときに戻れる 4. アプリのアーキテクチャ(App Architecture)
  • 44. - Navigation - ナビゲーションにおける注意事項Part 2 - 標準のナビゲーションコンポーネントを使用すること - ナビゲーションバーやタブバーをうまく活用すること - ナビゲーションバーは現在の位置のタイトル表示や前に戻るボタンを設置ができる - タブバーは現在の場所に関係なく、カテゴリをすばやく簡単に切り替えることができる - 同じ種類の複数コンテンツを表示する場合は、ページコントロールを使用すること 4. アプリのアーキテクチャ(App Architecture)
  • 45. - Accessing User Data and Resources - ユーザーのプライバシーは最も重要である - ユーザデータやリソースの使用法について透明性を確保する必要がある - 例えば以下のようなデータにアクセスする場合は許可を求める必要がある - 位置情報、健康情報、財務情報、連絡先情報、その他の個人識別情報を含む個人データ - 電子メール、メッセージ、カレンダーデータ、連絡先、ゲームプレイ情報、 Apple Musicアクティ ビティ、HomeKitデータ、およびオーディオ、ビデオ、写真コンテンツなどのユーザが作成した コンテンツ - Bluetooth周辺機器、ホームオートメーション機能、 Wi-Fi接続、ローカルネットワークなどの保 護されたリソース - カメラやマイクなどのデバイス機能 4. アプリのアーキテクチャ(App Architecture)
  • 46. - Accessing User Data and Resources - アプリで明らかに必要な場合にのみ、権限を要求すること - できれば、アクセスを必要とする機能を使うときに初めて許可を求めること - アプリを使うために必要な場合にのみ、起動時に権限を要求すること - 権限要求アラートに表示するテキストで権限が必要な理由を明確に記載すること - テキストは端的で具体的、かつ理解しやすい、簡潔で完全な文章を目指すこと 4. アプリのアーキテクチャ(App Architecture)
  • 47. - Accessing User Data and Resources - iOS 15以降では位置情報取得用のボタンが用意されている - アプリの機能のために一時的に位置情報が必要な場合は そのボタンの利用を検討すること - ボタンUIはカスタマイズ可能なので、 アプリのデザインに合わせて調整すること - 注意:カスタマイズした位置情報ボタンに一貫した問題が    あることがシステムによって確認された場合、    ユーザーがボタンをタップしても、アプリにデバイス    の位置情報へのアクセスが与えられません 4. アプリのアーキテクチャ(App Architecture)
  • 48. - Accessing User Data and Resources - iOS 15以降ではShazamKitという音声認識が利用可能 - 音声認識のためにデバイスのマイクが必要な場合は、各種データ /リソースへのアクセス と同様に、マイクへのアクセスを要求する必要がある - 録音は可能な限り早く停止すること - 認識した音声をiCloudライブラリに保存できる場合、保存するかどうかはユーザに選択さ せること 4. アプリのアーキテクチャ(App Architecture)
  • 49. - Accessing User Data and Resources - アラートの前にカスタムメッセージを表示する場合、システムのアラートを出すアクション のみが可能な状態にすること - 理想的には、カスタムメッセージなしで文脈で許可を要求する理由が理解できること - ユーザに遅延戦術と解釈させないように、カスタムメッセージを閉じたら必ずシステムアラート が表示されること - アクションのタイトルは「続行」のような言葉を使い、「許可」のようなカスタム画面内で許可を 与えたり他のアクションが実行できるような言葉を使わないこと 4. アプリのアーキテクチャ(App Architecture)
  • 50. - Accessing User Data and Resources - アプリのトラッキングについて - システムが提供するアラートの前に、人々を混乱させたり誤解させたりするようなカスタム メッセージを表示しないこと - アプリのトラッキングはデリケートな問題であり、適切な表示でない場合などは App Store Reviewでリジェクトされる可能性があるため、ガイドラインを良く確認しておくこと 4. アプリのアーキテクチャ(App Architecture)
  • 51. - Settings(設定) - 必要なデータはなるべくシステムから取得すること - 例:郵便番号の入力を求めるのではなく、現在地の使用許可を求める - 設定には優先順位をつけること - 最初に見える画面には重要な設定や頻繁に変える設定を配置する - 深い階層の方に変える頻度が低い設定を配置する - 滅多に変更されない設定は設定アプリに置くことも検討する - 必要に応じて、設定アプリへのショートカットを提供すること - 例:Push通知や位置情報サービスなど 4. アプリのアーキテクチャ(App Architecture)
  • 52. - HIGではこの他以下の項目について定められている - User Interaction:3D Touch, App pencil, Audio, Authentication, Data Entry, ... - System Capabilities:Augmented Reality, Multitasking, Multiple Windows, ... - Visual Design:Adaptivity and Layout, Animation, Branding, Color, ... - Icons and Images:Image Size and Resolution, App Icon, Custom Icons, ... - Bars:Navigation Bars, Search Bars, Status Bars, Tab Bars, Toolbars - Views:Action Sheets, Activity Views, Alerts, Collections, Image Views, ... - Controls:Buttons, Context Menus, Edit Menus, Labels, Page Controls - Extensions:Custom Keyboards, File Providers, Home Screen Actions, ... 5. その他