web-dev-qa-db-ja.com

デスクトップアプリケーションのマルチウィンドウインターフェイスを処理していますか?

単一のデスクトップアプリケーションに多くの異なる画面があり、ユーザーが一度に複数の画面を表示する必要がある場合(またはタスクに依存しない場合)は、複数の画面を処理するのに最適な方法はどれですか。

たとえば、アイテムの一覧表示、アイテムの編集、顧客の表示、注文の入力、給与の入力、在庫の更新などの画面を備えたビジネス/ ERPタイプのアプリケーションについて考えてみます。一度に使用できるのは特定の画面の組み合わせだけですが、数千の利用可能な画面が簡単に存在する可能性があります。

この問題に対処する方法は2つ考えられます。

オプション1

オペレーティングシステムのウィンドウマネージャーを使用してウィンドウを管理します。ユーザーがメインアプリケーションウィンドウを起動し、メインアプリケーションウィンドウがデスクトップ環境の新しいウィンドウを起動します。新しいウィンドウがタスクバー/ドックに表示され、OSのAlt + tab/Exposeを使用してウィンドウを切り替えることができます。

利点:

  • アプリケーションは、ユーザーがすでに慣れているGUIを使用します。すなわち。 Exposeが好きなMacユーザーは、アプリケーション内でWindowsスタイルのGUIを使用する必要はありません。
  • 複数のモニターを持つユーザーは、さまざまなウィンドウを別の画面に移動できます。
  • 独自のウィンドウマネージャーを開発する必要はありません。 OSがこれを行います。

短所:

  • アプリケーションウィンドウの多くのウィンドウを一度に開くと、タスクバーの大きな混乱を招く可能性があります。必要な特定のウィンドウを見つけるのが難しい場合があります。

  • 次に、メインアプリケーションウィンドウのポイントは何ですか?これは、メニューバーのある単なるウィンドウです。新しいウィンドウを開くたびに、そのウィンドウに切り替えます。別のウィンドウを開く必要がある場合は、タスクバーでウィンドウを起動するウィンドウを見つけなければならず、UIエクスペリエンスが低下する可能性があります。

  • 一度にすべてのウィンドウを最小化/復元する方法はありません。

オプション2

OSレベルで表示されるメインアプリケーションウィンドウを1つだけ作成します。 insideメインアプリケーションウィンドウにある独自のウィンドウマネージャーを作成して、さまざまなサブウィンドウを管理します。ウィンドウは、メインアプリケーション内で開いたり、移動したり、最小化したりできますが、メインアプリケーションのタスクバーには表示されず、Altタブなどを使用できません。

利点:

  • 煩雑さを減らします。アプリケーションを最小化すると、全体がタスクバーの1つのスロットに最小化されます。もう一度クリックすると、アプリケーションが復元されます。

短所:

  • 独自のウィンドウマネージャーを作成することは、作成および維持する多くの作業です。

  • 実際のウィンドウと同じようにドラッグして閉じたり、最小化したりできるウィンドウは、親ウィンドウの外にウィンドウをドラッグできないと非常にイライラすることがあります。

  • マルチモニターでは動作しません。

  • これらの種類のインターフェイスは、ネイティブデスクトップと比較して、常に不格好に感じます。

  • ユーザーにウィンドウ管理に別のメタファーを使用するよう強制する可能性があります。すなわち。それらはExposeに使用されますが、アプリケーション内でタスクバーを使用することを強制されます。

オプション#1は悪の少ない方だと思いますが、それでも解決策としては満足できません。OSタスクバーに多数の開いているウィンドウがあり、メインウィンドウが開いているなど、多くの欠点があるためです。メニューバー/ランチャーにすぎず、元に戻す必要があります。

確かに誰かがマルチウィンドウアプリケーションでウィンドウを管理するより良い方法を考え出しましたか?

3
Nick

私はまだこれが未解決の問題であると思います。それでも、決断できる状況があることを理解しました。

[〜#〜] mdi [〜#〜] とOSウィンドウの比較は、誤った二分法です。特に、さらに多くの選択肢があります。

  • 取り外し可能およびドッキング可能パネル(Visual Studio)、
  • 1つの大きなワークスペース内のスプリッター(Windows 8)、
  • 同じウィンドウ内のワークフロー固有のサブビュー(他のすべてのアプリ)、
  • ワークフロー固有のセカンドモニタービュー(Photoshop)、
  • ミニチュア「ランチャー」ウィンドウと多数のデータウィンドウ(ブルームバーグターミナル)、
  • 確かにもっとたくさん。

アプリについていくつか質問してください。

  • ユーザーのワークフローについてどの程度知られていますか?ワークフロー固有のUI設計に役立つ一連のワークフローを抽出することは可能ですか?
  • 常に存在し、複製されることのない単一のメインUIはありますか?そうでない場合、それを紹介できますか?重複している場合、単一の分割ビューに縮小できますか?
  • ユーザーをトレーニングできますか?そうでない場合、対象読者は彼らが知っている可能性が高い他のアプリからどのような以前の経験を引き継いでいますか?

マルチウィンドウ機能がアプリの中心となる場合(一部のエキスパート機能ではなく)、特に注意が必要です。これは、ユーザーが機能を理解できないことを許すことができない種類の機能です。どのデザインを選択する場合でも、ユーザーがそれを誤解する可能性が極めて低いことを確認してください。不明な場合は、デザインを破棄してください。

いずれにしても、MDIはお勧めしません。それは古風で、混乱し、迷惑です。マルチウィンドウデザインを選択するときの優先リストは次のとおりです。

  1. ユーザーをトレーニングしたり、すでに知っているデザインを提供したりできる場合は、最も生産的なデザインを選択してください。
  2. アプリが特定のタスクを実行するか、特定のワークフローをサポートする場合は、ワークフローに一致するカスタムナビゲーションを作成します。
  3. メインウィンドウが1つしかない場合は、これをデフォルトにして、ユーザーがヘルパーウィンドウを開くことができるようにします。ユーザーがデスクトップの周りに自由に配置できるようにします。ドッキングはオプションです。メインウィンドウを閉じると、他のすべてが自動的に閉じます。デスクトップのレイアウトを保存できます。
  4. すべてのウィンドウに他のすべてのウィンドウから独立したコンテンツが含まれている場合は、アプリを複数のアプリに分割することを検討してください。その後、ユーザーは必要に応じてウィンドウを開閉できます。
  5. ウィンドウは独立しているが、それらをグループとして管理したい場合は、セッション管理を提供します。これは、ミニチュアのメインウィンドウからアクセスすることも、アプリを構成するすべてのウィンドウに提供することもできます。

個人的には、ほとんどのアプリはシンプルであるべきだと思います。すべての高度なテクニックは、プロのアプリ向けです。

2
Robert Važan

どちらのオプションもユーザーに自由を与えすぎていると思います。ユーザーが明確でシンプルなワークフローを把握できないと、迷ってしまうと思います。アプリで同じことをさまざまな方法で実行できる場合、私はそのように感じます。アプリでコントロールをさまざまな方法で配置できる場合、私は同じように感じます。

私がやろうとしていることは、特定のケースバイケースでこの問題に取り組むことです。一般的な解決策は、どのような種類のプログラムでもうまく機能しません。内容は指針となるべきです。作成する必要があるアプリの種類がわかったら、ユーザーに適切な情報フローを決定します。できるからといって、すべてのマスター/ディテール/サブディテールの組み合わせを許可しないでください。サブビューを意味のある場所に再編成します。

アプリの最も重要なビューを決定します。ユーザーが操作する最も重要なコンテンツは何ですか?これをメインウィンドウにしました。アプリ内でウィンドウマネージャーを開発することを忘れます。

サブビューには他のオプションがあります。

私が弱いモーダルポップアップと呼んでいるものを使うことができます(Appleはそれらを popovers と呼んでいます)。これは、フィールドを変更するとすぐにデータモデルを更新するモーダルポップアップです(実際には、適用/閉じる/承諾ボタンは必要ありません)。それらの外側をクリックするだけで簡単に閉じることができます。従来のモーダルポップアップよりも煩わしくなく、邪魔にならないため、残りのビューが不明瞭にならず、クリックして閉じるときに追加のアクションを実行できます(たとえば、弱いモーダルポップアップをいくつかのコントロールをクリックして閉じると、同時に新しいウィークモーダルポップアップが開きます)。

あなたの目標に役立つと私が思う別の種類のコントロールは、メインアプリウィンドウ内の固定された場所にある最新のアプリ内ドロワーです。ユーザーは自由にそれらを非表示にしたり表示したりでき、それに応じてメインビューの縮尺で、コンテンツの表示を増減できます。 Xcode 4は、debugnavigationおよびutilitiesエリア。この種類の引き出しの利点は、ユーザーの空間メモリを最大限に活用できることです。適切な引き出しは、常にウィンドウ全体に対して同じ位置に表示されます。もう1つ覚えておかなければならないことがあります。今必要なこの小さなウィンドウをどこに配置しましたか?

探しているのはドッキングウィンドウフレームワークのようです。ドッキングウィンドウフレームワークを使用すると、ユーザーはウィンドウをドッキング、デタッチ、および組み合わせることができます。ウィンドウは他のモニターに移動でき、アプリケーション全体がタスクバーに1つのエンティティとして表示されます。 Visual Studio 2012は、このモデルを使用するアプリケーションの一例です。

いつでも利用できる同じように重要なビューがたくさんある場合、これはエレガントなソリューションになります。

あなたは必ずしもあなた自身を転がす必要はないでしょう。これは、市販のパッケージで解決された問題です。私が取り組んでいる製品には、 SandDock というサードパーティのライブラリを使用しています。

2
17 of 26

オプション1は魅力的かもしれませんが、すべてのウィンドウとツールバーを持つGIMPを思い出させます。多くの批判の後に(あなたが言及した欠点にさらに似ています)、GIMP開発者は、基本的にドッキングされたツールバーを備えた単一のメインウィンドウであるシングルドキュメントインターフェースのオプションも実装しました。

0
76house