第2章


優れたソフトウェアの特徴


ユーザはMacintosh全体、そしてMac OS Xそのものに引きつけられます。この組み合わせが提供する、他のプラットフォームを超越した優れたユーザ体験を感じるからです。

Macintoshコンピュータは、洗練され、柔軟で、準備が簡単で、保守が簡単であり、そして強力です。

Mac OS Xは信頼できるコアと直感的なデザイン、卒倒するような画像、すばらしい安全性、そしてユーザの求める機能を結びつけます。

サードパーティ製アプリケーションは、洗練された機能と、アップルのガイドラインにより一貫したふるまいを持つ、個別の要求への垂直解決策をもたらすことで、このパッケージを拡張していきます。

以下のセクションは、あなたのソフトウェア製品に突出した解決策を与える、あなたの顧客への貢献の精神に、あなたのソフトウェアデザインのための奮闘に対する、高い水準のゴールを示します。

これらのデザイン属性を実現するために、あなたが利用できる技術についての詳細は、Mac OS X Technology Overviewを参照してください。

注:以下のセクションにある目標のすべてを成し遂げるのが理想的ではありますが、そうすることがどの場合においても現実的、もしくは必須というわけではありません。最終的にはあなたのユーザ視聴者の要求が、最も妥当な選択へとあなたを導くでしょう。どのようにあなたの視聴者を定義するかについての詳細は、「あなたの視聴者を熟知せよ」(25ページ)を参照してください。

高性能

性能は、あなたのソフトウェアがどれほど早いか、効率的かを知るための尺度であり、あらゆるソフトウェアの成功への評価でもあります。もしあなたのソフトウェアが遅く感じられたら、購入しようとするユーザは少なくなるでしょう。ソフトウェアがユーザへの応答よりもデータの処理に多くの時間を費やしていれば、たとえ最適化されたアルゴリズムを使用していても遅く感じられるでしょう。

(Mac OS 9を含む)他のプラットフォームにおいてプログラミングの経験のある開発者は、Mac OS Xにおいて性能に影響を与える要因について、学習のための時間を割くとよいでしょう。これらの要因を理解することは、あなたのデザインと実装においてより良い選択の助けとなります。性能に関する要因の概要と、問題を見分けるための情報へのリンクは、Performance Overview を参照してください。

心に留めておくべき性能関連のいくつかのガイドラインがあります…

  • 性能問題を見分けるための測定法を利用しましょう。あなたのソフトウェアの性能を、思い込みを元にして調整することは決してやってはいけません。あなたのソフトウェアのどこが性能的にまずいのかというデータを集めるために、Sharkのようなアップル提供のツールを用いてください。問題を切り分けて解決するためにそのデータを利用しましょう。あなたは、あなたのソフトウェア専用の測定値を集めるための、独自のツールを作成する必要性を感じるかもしれません。
  • 性能の調整を行うために、あなたの開発サイクルの終わりまで待つことは避けましょう。あなたの製品の要件における特定の目標【の完了まで待つこと】も含みます。基準となる測定値を早期に集め、これらの目標に向けての経過を計測するために、開発中は継続して測定値を集めましょう。もしも性能の悪化が見られたら、すぐに問題の修正に向けて、調整のための行動をとりましょう。
  • 旧来のAPIの代わりに最新のAPIを選択してください。最新のインタフェースはMac OS Xのためにつくられ、最大限の性能を引き出すために、最新の技術とデザイン情報の利点を得ることができます。
  • 作業に対して適切な技術を選択してください。たとえば、Cocoaの分散オブジェクトは簡単に利用できるでしょう。しかし、あなたのプログラムがネットワーク越しに最大限の性能を必要とするのであれば、CFNetworkやBSDソケットがより良い選択となるでしょう。詳細はCFNetwork Programming Guideを参照してください。
  • あなたのコードの応答性を改善するためにスレッドを使用しましょう。スレッドのもたらす並列処理の利点を得ることで、特に複数プロセッサのシステム上で大きな性能上の優位をもたらすことができます。テクニカルノートTN2028, “Threading Architectures”はすばらしいスレッド化構造の概要を含みます。詳細は「スレッド」(60ページ)を参照してください。
  • 情報を得るためにシステムをポーリングすることは避けてください。ポーリングはかなりの量のCPU時間を浪費し、最新のAPIでは不必要です。最新APIは状態が変化したり、要求されたデータを入手した時点で、あなたに通知するための非同期コールバック機構を提供します。代わりにこれらの機構を利用してください。
  • 不必要なI/O操作をすべてなくしてください。ハードドライブや光学ドライブへのアクセスは、あなたの行うことができる、コンピュータ上で最も遅い操作の一つです。これらの操作を最小限にすることで、大きく性能が向上できます。詳細はFile-System Performance Guidelinesを参照してください。
  • Mac OS Xの仮想メモリシステムの利点を得るために、あなたのメモリの使いかたを最適化してください。Mac OS Xにおいてどのように仮想メモリが動作するのかを理解することは、より効率良くメモリを使用するために役立ちます。Mac OS Xの仮想メモリシステムについての詳細は、Memory Usage Performance Guidelinesを参照してください。
  • あなたのソフトウェアが実際に必要とするまで、リソースの読み込みは避けてください。リソースの先読みはメモリを浪費し、リソースが実際に使用される前にページングを引き起こします。必要となるまで待てば、リソースは適切にキャッシュされます。
  • Mach-O実行形式を使用してください。Mach-OはMac OS Xの本来の実行形式であり、全てのシステムフレームワークで使用されています。旧式のCode Fragment Manager(CFM)実行形式を使用することは、あなたのコードとシステムライブラリの間に付加的なブリッジコードを必要とします。このブリッジは余計な時間のかかる、わずかな性能上の不利を招きます。

使いやすさ

使いやすいプログラムは、目を見張るような、直感的な体験をユーザに提供します。

こうしたプログラムは複雑な問題へのエレガントな解決策を提供し、慣れ親しんでいる例を用いた、よく考えられたインタフェースを持ちます。またユーザのために気の利いた選択を行うため、導入と設定が容易ですが、必要なときはこれらの選択を上書きするための選択肢をユーザに与えます。現在の文脈において妥当なツールをユーザに提示し、不適切なツールをなくしたり無効にします。また危険な動作の実行に備えてユーザに警告し、こうした動作がとられたら取り消す方法を提供します。

使いやすさのためにデザインするときに、心に留めておくべきいくつかのガイドラインがあります…

  • あなたのユーザインタフェースの中で、現実的で、なじみのある考えを表す、隠喩を使用してください。ユーザが想定する事柄の一通りを、コンピュータ環境により簡単に当てはめられるように、あなたの隠喩は明確にしましょう。たとえば、Mac OS Xは文書の記録のためにファイルフォルダ【書類ばさみ】のたとえを用いています。詳細は、「隠喩」(39ページ)を参照してください。
  • 機能ではなく、解決策に主眼を置いてください。単に競争力のために機能を加えることは避けましょう。どの機能も、あなたのユーザへの本当の利益を提供するようにしてください。補足情報は「デザインの決定を行う」(28ページ)を参照してください。
  • パッケージには明確に要求システムを示し、ユーザがすぐに始めるために、必要なものは全て含めましょう。詳細は「パッケージをつくる」(77ページ)を参照してください。
  • あなたのプログラムに賢いデフォルト設定を制定しましょう。長々と設定の手順を要求することは避けてください。ユーザからの情報が必要であれば、設定アシスタントを提供することを検討しましょう(詳細は「設定アシスタント」(80ページ)を参照)。あなたのユーザに適切な初期設定を提供し、環境設定またはオプションパレットを用いて、これらの設定を変更するための選択肢を与えてください。
  • 一度に膨大な情報を提示してユーザを圧倒しないように心がけましょう。「段階的な開示」を利用して、必要に応じて情報を公開し、ユーザが役に立つ情報かどうか考え込まないように、情報を非表示にする選択肢を与えましょう。
  • あなたのアプリケーションをバンドル形式にしましょう。アプリケーションバンドルはソフトウェアを配布するために好まれる機構です。これはインストール作業を単純化し、Finderで移動させることも簡単です。バンドルに対応するためのガイドラインはBundle Programming Guideを参照してください。
  • もしあなたがハードウェア開発者であれば、プラグアンドプレイ ハードウェア公開標準【published standards for plug-and-play hardware】に対応してください。Mac OS Xはマウスやキーボード、ハードドライブといった、多数のUSBとFireWire機器の公開ハードウェア標準に対応しています。あなたがこれらの標準に従えば、新しい機器は専用のデバイスドライバを必要とせずに、コンピュータに繋げば「とりあえず動く」でしょう。組み込みドライバの対応情報はI/O Kit Fundamentalsを参照してください。
  • 単独のユーザによるログイン、そして端末を利用しているのが現在のユーザであるという仮定を避けましょう。ファストユーザスイッチは、あなたのアプリケーションの複数のインスタンスが同時に実行されることを意味します。あなたのアプリケーションはこの状況を適切に処理できるようにしておきましょう。ファストユーザスイッチが有効のときに安全に操作を行う方法についての情報は、Multiple User Environmentsを参照してください。
  • 何か誤りがあったときは、ユーザの役に立つエラー表示を提供しましょう。エラー表示は何が起こったのか、なぜ起きたのかという点、そして続行のための選択肢を明確に伝えてください。ひとつでも利用できる次善策があればそれを提供し、ユーザがデータの消失を避けるためにあなたができることは何でもやりましょう。役に立つエラー表示を提供するための詳細は、「警告表示」(210ページ)を参照してください。
  • 生のパス名とファイル名の代わりに、あなたのユーザインタフェース内では表示名【display name】を使用してください。表示名はユーザが設定した、言語設定と拡張子の設定を考慮に加えます。表示名と、これを対応するためのガイドラインは、File System Overviewを参照してください。
  • ユーザのデータに取り返しのつかない損害を与えることなく、あなたのアプリケーションの機能をユーザに探索させましょう。「取り消し」と「やり直し」のような機能に対応してください。またファイルの復帰機能にも対応するとよいでしょう。
  • あなたのソフトウェアを国際化しましょう。できる限り常に各国語版を提供するようにしてください。ユーザは自国語のプログラムの方が使うことが快適に感じられます。補足情報は、「国際化」(58ページ)を参照してください。
  • あなたのアプリケーションを障害を持つ人々にも利用しやすくしましょう。補助アプリケーションは、あなたのアプリケーションと仲介して障害を持つ人々に使用することができるようにします。アクセス性へのたくさんの対応は、システムによって自動的に提供されますが、この対応を向上させるために、あなたにもできることがあります。利用できる情報の概要は、Getting Started With Accessibilityを参照してください。
  • あなたのソフトウェアのための適切な説明書を提供しましょう。アップルヘルプはあなたのアプリケーションに説明書を統合させる、HTMLを基にしたヘルプシステムです。アップルヘルプをあなたのアプリケーションに組み込むための情報は、User Experience Help Technologies Documentationを参照してください。

使いやすいインタフェースをデザインするための高レベルな情報は、「ヒューマンインタフェースデザイン原則」(39ページ)を参照してください。

魅力的な外見

ユーザをMacintoshプラットフォーム、特にMac OS Xに引き付ける特色の一つが、ハードウェアとソフトウェアの洗練されたデザインと、魅力的な外見です。魅力的なハードウェアとシステムソフトウェアの開発はアップルの仕事ですが、あなたは自分のソフトウェアに魅力的な外見を与えるためにMac OS Xの利点を活用する必要があります。

Mac OS XのFinderやその他のアプリケーションは、高解像度、高品質な画像、そして32bit色と透明度を含むアイコンを使用します。あなたのアプリケーションも外見、そして関連情報をユーザにより良く伝えるという両方の目的ために、高品質な画像を使用するようにしましょう。たとえば、システムは最も妥当な選択を区別するために、点滅するボタンを使用し、ウインドウには立体的な質感を与えるために、透明効果を使用します。

あなたのソフトウェアの外見をデザインする上で、心に留めておくべきいくつかのガイドラインがあります…

  • あなたのユーザインタフェースをデザインするときには、本書の第3部に示されるガイドラインに従いましょう。このガイドラインは構成物の配置の仕方や、あなたのソフトウェアの視覚的な外見をデザインする際のアドバイスを与えます。
  • パッケージからユーザインタフェースまでを磨き上げて、あなたのソフトウェアを本格的にデザインされたように見せましょう。
    • 高品質な画像とアイコンを使用しましょう。必要であれば、専門のグラフィックデザインの会社と契約して、これらを作成してください。
    • コントロール、メニュー、ダイアログのような標準的なMac OS Xユーザインタフェース要素を採り入れましょう。システムが提供するこれらを置き換えるために、独自のコントロールやダイアログを実装しないでください。
    • システムが提供しないコントロールをどうしても必要とするのであれば、本書のガイドラインを参照してください。そして、新規の要素を作成したり、既存の要素のふるまいを変更する決定を下す前に、「インタフェースを拡張する」(51ページ)を読んでください。
  • 32bit色を使用しましょう。Mac OS Xは32bit色向けに最大の性能を発揮するように最適化されています。あなたは視覚的な要素を自分で8bit色パレットに制限する必要はありません。8bit色への対応は最小限であり、ほとんど旧来のアプリケーションを対応するために利用できます。
  • Interface Builderを使用して、あなたのユーザインタフェースをデザインしましょう。あなたが最終的にnibファイルを使わないとしても、あなたのコードの中でビューやコントロールを正確に配置するために、Interface Builderの提供する寸法を利用することができます。このアプリケーションの機能への手引きは、Interface Builderを参照してください。
  • 文字と画像の描画はQuartz, Cocoa, ATSUI, OpenGLといった最新APIを用いて行いましょう。QuickDrawのような旧来の描画APIは使用を避けてください。

信頼性

信頼できるプログラムとは、ユーザの信用を得るものです。そのようなプログラムはユーザに対し予期した通りの、望み通りの方法で情報を提示します。

信頼できるプログラムはユーザのデータを完全なまま維持し、あらゆる手段でデータの消失や破損を避けます。また信頼できる実績を持ち、クラッシュすることなく複雑な状況に対処できます。

信頼性はソフトウェアデザインのあらゆる分野で重要ですが、長時間実行することになる分野では特に重要です。たとえば、科学技術に関するプログラムは、しばしば大きなデータの組み合わせについて計算を行い、完了までに長い時間がかかることがあります。もしそんなプログラムが、長い計算の間に壊れたら、科学者は数日から数週間分の作業を無駄にしてしまうでしょう。

あなたのソフトウェアをデザインする上で、信頼性のために心に留めておくべき、いくつかのガイドラインがあります…

  • あなたのユーザインタフェースのふるまいは、予測できるやりかたにしましょう。同じ動作の組み合わせは、毎回同じ結果を生じるべきです。補足情報は「一貫性」(44ページ)を参照してください。
  • あなたの文書から予測できる出力を提供しましょう。印刷においては、ユーザが画面上で見ている内容が、印刷して得られるものとなるようにしてください。(Mac OS X印刷ダイアログは、印刷プレビューの選択肢をあなたに与える点に注意してください)
  • 文書の読み込みや書き出しの際に失われるデータを、減らすか無くしてください。

    もしあなたのプログラムが、他のアプリケーションに関連付けられたファイルを読み込み、または書き出しするなら、そのファイル形式に完全に対応するようにしてください。

    もしあなたのアプリケーションが、与えられたファイル形式から全てのデータを読み込めないのであれば、データの消失が起きるかもしれないことをユーザに警告し、元のファイルのコピー上で作業する選択肢を提供しましょう。

  • 幅広いさまざまな状況下であなたのソフトウェアを試験して、応答の適切さを検証しましょう。ネットワークのダウンや、マウントされたボリュームが不可視となった状況を再現し、あなたのソフトウェアが適切に適合することを保障してください。
  • あなたのパッケージには明確にあなたのソフトウェアの要求システムを表記してください。当該ハードウェアで試験を行うまで、低スペックのハードウェアでもあなたのソフトウェアが動作すると決めつけてはいけません。同様に、あなたが対応するMac OS Xのバージョンも表記してください。
  • エラーを予測し、正しく対処しましょう。関数が結果コードを返すのであれば、それを調べて問題の有無を見極め、適切な応答を行ってください。また例外ハンドラを用いてエラーを捕えるのもよいでしょう。

    ですが、これらは控えめにしてください。例外ハンドラはあなたのアプリケーションのメモリの占有量を増加し、性能を低下させる可能性があります。

  • ユーザの入力を検証して、あなたの想定通りであることを保障しましょう。

    フォーマッタオブジェクトは、ユーザが数値や日付を正しく入力することを保障する役に立ちます(Carbonアプリケーションでのデータ書式化についての情報は、Data Formatting Guide for Core Foundationを参照。Cocoaアプリケーションでは、Data Formatting Programming Guide for Cocoaを参照)。あなたの独自のコードでユーザ入力データを検証して、後でそのデータが問題を引き起こすことを防止しましょう。

    ユーザがデータを入力するためにどのように特定キーを使用するかの情報は、「特定のキーの機能」(91ページ)を参照してください。

  • アップル提供の性能計測ツールとデバッグツールを使用して、メモリリークやあなたのコードにおけるその他の問題個所を発見しましょう。これらのツールはあなたの知らなかった隠れたバグを発見することが可能です。
  • 旧来のAPIより最新のAPIを選びましょう。最新APIはシステム設定の変更について旧来のAPIよりも優れた制御を提供します。
  • あなたの独自のAPIよりもシステムおよび標準のAPIを優先して使用しましょう。補足情報は「Mac OS Xの技術を使用する」(61ページ)を参照してください。

順応性

順応性のあるプログラムは、自分の置かれた環境に適切に順応します。つまり、現在の状態が変化したときも作業を中断しません。ネットワーク接続が切れても、順応性のあるプログラムはオフライン作業をユーザに続行させます。同様に、一定のリソースがロックされていたり使用できなければ、順応性のあるプログラムはユーザの要求に合う別の方法を見つけます。

Mac OS Xの強みのひとつは、設定変更への適応がすばやく簡単にできる能力を持つことです。たとえば、ユーザがシステム環境設定からコンピュータのネットワーク設定を変更したら、ネットワーク設定変更を自動的に処理するために、変更は自動的にSafariやMailといったCFNetworkを使用しているアプリケーションに検出されます。

順応性のあるソフトウェアをデザインする上で、心に留めておくべきいくつかのガイドラインがあります…

  • あなたのインタフェースに寛容性と賢さを与えましょう。あなたのソフトウェアがファイルシステムのボリュームや、ネットワークを検出できない状況に確実に対処できるようにしてください。ファイルを別ボリュームに保存したり、後でネットワークを再接続するといった選択肢をユーザに与えましょう。
  • 使用できるハードウェアと、そのハードウェアへのアクセスについての仮定を行うことは避けてください。ハードウェア設定はコンピュータ、国、ユーザに大きく依存します。たとえば、すべてのMacintoshがプロセッサにベロシティエンジンを搭載しているわけではありません。同様に、全てのキーボードが同じキーを揃えているわけでもありません。また、ハードウェアは動作中に追加や除去されることもあります。I/O Kit interfacesを使用して、使用できる機器の設定を検出してください。詳細はAccessing Hardware From Applicationsを参照してください。
  • 現在のユーザの地域設定を基にした仮定を避けましょう。異なる日付、時刻、数字の書式を扱えるようにしてください。同様に、現在のユーザのアドレス書式だけが実際に使用される書式だと仮定してはいけません。たとえば、ユーザはアドレスブックに外国の住所への連絡先を記録するかもしれません。
  • あなたの実行環境についての仮定を行うことを避けましょう。もしあなたのプログラムがNetBoot環境で動作しているのであれば、あなたのシステムリソースへのアクセスは制限されているか、読み取り専用となるでしょう。たとえば、一般的なNetBoot環境では、ユーザのホームディレクトリだけが書き込み可能です。
  • 利用できる描画領域と解像度の変更に配慮しましょう。Mac OS Xはモニタのホットプラグ【活線挿抜】に対応しており、変更をQuartzサービスを通してアプリケーションに通知します。あなたのソフトウェアは「ウインドウのふるまい」(190ページ)で記述される通りにウインドウ位置と面積を調節することで、適切に応答してください。
  • 最新APIを使用しましょう。アップルは最新システムAPIが、設定の変更を適切に処理することを保障するために作業しています。旧来のAPIの一部も設定の変更に対応していますが、この対応は将来のリリースでは変更されるかもしれません。
  • 独自のデバイスドライバを書くことは避けましょう。I/Oキットは多数の標準プロトコルと、機器の種別に対応した動作しているドライバを含んでいます。これらのドライバに依存することは、あなたのハードウェアが自動的にMac OS Xのどの新バージョンでも動作するということを意味します。

相互運用性

相互運用性とは、環境をまたいだプログラムの伝達能力ことを言います。この伝達はユーザもしくはプログラムのどちらの階層でも起こり、現在のコンピュータか遠隔コンピュータ上の処理を必要とすることがあります。

プログラムの階層においては、相互運用できるプログラムは、自分と他のプログラムの間でデータを行き来する手段に対応します。そのため、ペーストボードに対応したり、同一もしくは異なるプラットフォーム上のどちらでも、他のプログラムから読むことができるファイル形式だったりします。また作成したデータは、システム上の他のプログラムから読むことができる必要があります。

ペーストボード(ユーザインタフェースにおけるクリップボード)、ドラッグアンドドロップ、AppleScript、Bonjour、サービスメニューのような機能に、ユーザは相互運用性を見出します。これらの機能は、いずれもアプリケーションの内外へデータを得る手段をユーザに提供します。

相互運用性のためにソフトウェアをデザインする上で、心に留めておくべきいくつかのガイドラインがあります…

  • 常に、できるだけ独自のファイル形式を避けて、ユーザが簡単に文書を他のプログラムのユーザと交換できることを保証しましょう。もし独自のファイル形式を使用する必要があれば、読み込みと書き出しの機能を提供し、ユーザが他のアプリケーションとデータを交換できるようにしてください。
  • 対応するすべてのプラットフォーム上で同じファイル形式を使用しましょう。あなたのアプリケーションがあるプラットフォーム上で作成した文書は、他のプラットフォーム上のあなたのアプリケーションで読めるようにしてください。
  • 拡張子に対応して、他のプラットフォーム上のユーザがあなたのファイルを認識し開くことができることを保証しましょう。拡張子の重要性については、File System Overviewを参照してください。
  • できる限りデータ変換のために標準プロトコルを使用しましょう。XMLはプラットフォームを問わず幅広く対応されているため、アプリケーションおよびプラットフォーム間でデータを交換するために好まれる形式です。また、Mac OS XはMac OS X Technology Overviewで挙げられている多数のネットワークプロトコルに対応しています。
  • CocoaとCore Foundationが提供する、Mac OS X環境設定システムの実装を利用して、設定データを保存しましょう。これらの実装は設定データを平文のテキストファイルに記録し、直接、またはスクリプトを用いてデータを変更する機会をユーザに与えます。
  • AppleScriptオブジェクトモデルを注意深くデザインし、柔軟性と将来の拡張を可能にしましょう。優れたAppleScriptの統合のためには、ユーザや他のプログラムがあなたのデータとどのようにやりとりするか、という点についての考慮が必要です。また、あなたのプログラムのデータ構造を注意深く統合することを必要とします。詳細はテクニカルノートTN2106“Scripting Interface Guidelines” を参照してください。

あなたのアプリケーションにMac OS X機能と技術の影響を与える方法の詳細は、「Mac OS Xの技術を使用する」(61ページ)を参照してください。

機動性

機動性についてデザインすることは、ラップトップ用途においてますます重要さを高めています。機動性に対応したプログラムは、システムをポーリングしたり、むやみに周辺機器へアクセスしたりすることでバッテリの電力を無駄にはせず、ユーザが場所を移動して、モニタ設定を変更し、コンピュータをスリープさせたり、復帰させたりしても停止することはありません。

機動性に対応するためには、プログラムはネットワークの設定変更を含む、異なるシステム設定に適応できる必要があります。多くのハードウェア機器は、コンピュータが動作中にも関わらず挿抜されます。機動性を意識したプログラムは、これらの変更に正しく応答しなければいけません。

また、電力の使いかたといった問題点にも敏感であるべきです。絶えずハードドライブや光学ドライブにアクセスすることは、ラップトップのバッテリをすぐに空にしてしまいます。一度の充電でコンピュータを長く使う手助けをすることで、モバイルユーザに配慮しましょう。

機動性に対応したソフトウェアをデザインする上で、心に留めておくべきいくつかのガイドラインがあります…

  • イベントのポーリングを避けましょう。不要なシステムのポーリングはCPU時間を浪費し、同様にポータブルシステムでは電力を浪費します。最新APIの大半は、何かが起きたときにあなたのプログラムに通知する手段を持っています。これらの通知を受け取り、適切に応答するために登録してください。そうでなければ(あなたのプログラムが何もしないのであれば)、完全にアイドル状態にすべきです。
  • あなたのソフトウェアを使用する際に、プログラムCDの挿入をユーザに要求しないように努めてください。ローカルハードディスクに全てをインストールする選択肢をユーザに与えましょう。
  • ハードドライブや光学ドライブ上のファイルへのアクセスを最小限にしましょう。性能の向上に加え、より頻繁にドライブの回転を停止させることで、バッテリ消費を減らすことができます。
  • ネットワーク設定の変更へ適応するために、最新のインタフェースを使用しましょう。モバイルユーザは接続する場所や、無線アクセスポイントをいつでも変更します。CFNetworkとその他の最新インタフェースを使用して、これらの設定の変更をあなたのために処理しましょう。
  • ファイルシステムにアクセスする際は、ネットワークボリュームがオフラインとなる状況を許容しましょう。もしネットワークボリュームが見つからなければ、ユーザに通知し、他のボリュームへファイルを保存する選択肢を提供してください。
  • 画面解像度の変更とモニタの接続、非接続に敏感になりましょう。モバイルユーザはプロジェクタや、その他の異なる解像度を必要とする機器を接続する要求があるので、あなたのソフトウェアでは、固定された画面の大きさを仮定してはいけません。モニタが見つからなければ、そのモニタ上にあった全てのウインドウの位置を、見えるように調節しましょう。

←第1章:デザイン工程
→第2章:ヒューマンインタフェースデザイン