IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特開2024-70230コンピュータ実装方法、コンピュータシステム及びコンピュータプログラム(既存の表示されたコンポーネントを遮蔽することを回避するためのアプリケーションウィンドウの配置)
<>
  • 特開-コンピュータ実装方法、コンピュータシステム及びコンピュータプログラム(既存の表示されたコンポーネントを遮蔽することを回避するためのアプリケーションウィンドウの配置) 図1
  • 特開-コンピュータ実装方法、コンピュータシステム及びコンピュータプログラム(既存の表示されたコンポーネントを遮蔽することを回避するためのアプリケーションウィンドウの配置) 図2
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024070230
(43)【公開日】2024-05-22
(54)【発明の名称】コンピュータ実装方法、コンピュータシステム及びコンピュータプログラム(既存の表示されたコンポーネントを遮蔽することを回避するためのアプリケーションウィンドウの配置)
(51)【国際特許分類】
   G06F 3/0481 20220101AFI20240515BHJP
   G06F 3/14 20060101ALI20240515BHJP
【FI】
G06F3/0481
G06F3/14 350A
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023181183
(22)【出願日】2023-10-20
(31)【優先権主張番号】18/054,158
(32)【優先日】2022-11-10
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ベンジャミン デイヴィッド コックス
(72)【発明者】
【氏名】ジョセフ セイヤー
(72)【発明者】
【氏名】アンドリュー デイヴィッド ライエル
【テーマコード(参考)】
5B069
5E555
【Fターム(参考)】
5B069AA02
5B069BA03
5B069CA14
5B069CA16
5E555AA24
5E555BA01
5E555BA04
5E555BB01
5E555BB04
5E555BC08
5E555BD01
5E555CA02
5E555CA15
5E555CA17
5E555CA18
5E555CA47
5E555CB01
5E555CC01
5E555DA01
5E555DB03
5E555DC09
5E555DC11
5E555DC52
5E555DD07
5E555EA04
5E555EA07
5E555EA11
5E555EA14
5E555FA00
(57)【要約】      (修正有)
【課題】ユーザのコンピューティングデバイス画面のアクティブ領域(すなわち、1つ又は複数の既に表示されたウィンドウを有する画面の領域)の1つ又は複数の要素を覆うことのないよう、新たなアプリケーションウィンドウを動的に配置し、サイズを調整するためのシステムを構築する方法、コンピュータシステム及びプログラムを提供する。
【解決手段】方法は、アプリケーションウィンドウのウィンドウオープニングイベントを受信することと、アプリケーションウィンドウが再位置決め及びサイズ変更されると判定することに応答して、コンピューティングデバイス画面の1つ又は複数のアクティブ領域を識別することと、1つ又は複数の探索アルゴリズムを利用して、コンピューティングデバイス画面の1つ又は複数のアクティブ領域のうち最もアクティブでない領域を識別し、最もアクティブでない領域内にアプリケーションウィンドウを表示することと、を含む。
【選択図】図2
【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって:
アプリケーションウィンドウのウィンドウオープニングイベントを受信する段階;
前記アプリケーションウィンドウが再位置決め及びサイズ変更され得ると判定することに応答して、コンピューティングデバイス画面の1つ又は複数のアクティブ領域を識別する段階、ここでアクティブ領域は、1つ又は複数の他のウィンドウ及びそれらのそれぞれのインタラクティブ要素を現在表示している前記コンピューティングデバイス画面の領域である;
1つ又は複数の探索アルゴリズムを利用して、前記コンピューティングデバイス画面の前記1つ又は複数のアクティブ領域のうち最もアクティブでない領域を識別する段階;及び
前記最もアクティブでない領域内に前記アプリケーションウィンドウを表示する段階
を備える、方法。
【請求項2】
前記コンピューティングデバイス画面の前記1つ又は複数のアクティブ領域を識別する段階は:
前記コンピューティングデバイス画面上に現在表示されており可視である、ウィンドウ及びそれらのそれぞれのインタラクティブ要素のコンポーネント及びそれぞれのサブコンポーネント情報を取得する段階;
取得されたコンポーネント及びそれぞれのサブコンポーネント、ピクセル座標のリストをコンパイルする段階;及び
取得されたコンポーネント及びそれぞれのサブコンポーネント、ピクセル座標のコンパイルされた前記リストに基づきヒートマップを作成する段階、ここで前記ヒートマップは、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含み、前記コンピューティングデバイス画面の領域のヒート値は、前記領域に配置されたコンポーネント及びサブコンポーネントの数と相関する
を更に有する、請求項1に記載の方法。
【請求項3】
前記コンピューティングデバイス画面の前記1つ又は複数のアクティブ領域を識別する段階は:
前記コンピューティングデバイス画面の現在のレイアウトの画像を取得する段階;
前記画像に対してエッジ検出解析を実行し、前記コンピューティングデバイス画面内の可視ウィンドウの明確なエッジを識別する段階;及び
前記エッジ検出解析の出力に基づきヒートマップを作成する段階、ここで前記ヒートマップは、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含み、前記コンピューティングデバイス画面の領域のヒート値は、前記領域内で検出された明確なエッジの数と相関する
を更に有する、請求項1に記載の方法。
【請求項4】
1つ又は複数の探索アルゴリズムを利用して、前記コンピューティングデバイス画面の前記1つ又は複数のアクティブ領域のうち前記最もアクティブでない領域を識別する段階は、数値法を適用して、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含むヒートマップの最小値を求める段階を更に有する、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記コンピューティングデバイス画面上に現在表示されている、隠されたウィンドウ及びそれらのそれぞれのインタラクティブ要素のコンポーネント及びそれぞれのサブコンポーネント情報を取得する段階;
取得されたコンポーネント及びそれぞれのサブコンポーネント、ピクセル座標の第2のリストをコンパイルする段階;
取得されたコンポーネント及びそれぞれのサブコンポーネント、ピクセル座標のコンパイルされた前記第2のリストに基づき第2のヒートマップを作成する段階、ここで前記第2のヒートマップは、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含む;及び
前記ヒートマップ及び前記第2のヒートマップを結合する段階
を更に備える、請求項2に記載の方法。
【請求項6】
前記画像に対してエッジ検出解析を実行し、前記コンピューティングデバイス画面内の1つ又は複数の部分的又は完全に隠されたウィンドウの明確なエッジを識別する段階;
前記エッジ検出解析の出力に基づき第2のヒートマップを作成する段階、ここで前記第2のヒートマップは、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含む;及び
前記ヒートマップ及び前記第2のヒートマップを結合する段階
を更に備える、請求項3に記載の方法。
【請求項7】
前記アプリケーションウィンドウを前記最もアクティブでない領域内に表示することができないと判定することに応答して、前記アプリケーションウィンドウのピクセル領域により覆われる前記1つ又は複数のアクティブ領域のそれぞれのヒート値を最小化する方法で、前記アプリケーションウィンドウを表示するための前記コンピューティングデバイス画面の領域を選択する段階を更に備える、請求項1から3のいずれか一項に記載の方法。
【請求項8】
コンピュータシステムであって、
1つ又は複数のプロセッサ、1つ又は複数のコンピュータ可読メモリ、1つ又は複数のコンピュータ可読有形ストレージ媒体、及び、前記1つ又は複数のメモリのうち少なくとも1つを介する、前記1つ又は複数のプロセッサのうち少なくとも1つによる実行のために前記1つ又は複数の有形ストレージ媒体のうち少なくとも1つに記憶されたプログラム命令
を備え、前記コンピュータシステムは、
アプリケーションウィンドウのウィンドウオープニングイベントを受信する手順;
前記アプリケーションウィンドウが再位置決め及びサイズ変更され得ると判定することに応答して、コンピューティングデバイス画面の1つ又は複数のアクティブ領域を識別する手順、ここでアクティブ領域は、1つ又は複数の他のウィンドウ及びそれらのそれぞれのインタラクティブ要素を現在表示している前記コンピューティングデバイス画面の領域である;
1つ又は複数の探索アルゴリズムを利用して、前記コンピューティングデバイス画面の前記1つ又は複数のアクティブ領域のうち最もアクティブでない領域を識別する手順;及び
前記最もアクティブでない領域内に前記アプリケーションウィンドウを表示する手順
を有する方法を実行することができる、コンピュータシステム。
【請求項9】
前記コンピューティングデバイス画面の前記1つ又は複数のアクティブ領域を識別する手順は:
前記コンピューティングデバイス画面上に現在表示されており可視である、ウィンドウ及びそれらのそれぞれのインタラクティブ要素のコンポーネント及びそれぞれのサブコンポーネント情報を取得する手順;
取得されたコンポーネント及びそれぞれのサブコンポーネント、ピクセル座標のリストをコンパイルする手順;及び
取得されたコンポーネント及びそれぞれのサブコンポーネント、ピクセル座標のコンパイルされた前記リストに基づきヒートマップを作成する手順、ここで前記ヒートマップは、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含み、前記コンピューティングデバイス画面の領域のヒート値は、前記領域に配置されたコンポーネント及びサブコンポーネントの数と相関する
を更に有する、請求項8に記載のコンピュータシステム。
【請求項10】
前記コンピューティングデバイス画面の前記1つ又は複数のアクティブ領域を識別する手順は:
前記コンピューティングデバイス画面の現在のレイアウトの画像を取得する手順;
前記画像に対してエッジ検出解析を実行し、前記コンピューティングデバイス画面内の可視ウィンドウの明確なエッジを識別する手順;及び
前記エッジ検出解析の出力に基づきヒートマップを作成する手順、ここで前記ヒートマップは、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含み、前記コンピューティングデバイス画面の領域のヒート値は、前記領域内で検出された明確なエッジの数と相関する
を更に有する、請求項8に記載のコンピュータシステム。
【請求項11】
1つ又は複数の探索アルゴリズムを利用して、前記コンピューティングデバイス画面の前記1つ又は複数のアクティブ領域のうち前記最もアクティブでない領域を識別する手順は、数値法を適用して、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含むヒートマップの最小値を求める手順を更に有する、請求項8から10のいずれか一項に記載のコンピュータシステム。
【請求項12】
前記コンピューティングデバイス画面上に現在表示されている、隠されたウィンドウ及びそれらのそれぞれのインタラクティブ要素のコンポーネント及びそれぞれのサブコンポーネント情報を取得する手順;
取得されたコンポーネント及びそれぞれのサブコンポーネント、ピクセル座標の第2のリストをコンパイルする手順;
取得されたコンポーネント及びそれぞれのサブコンポーネント、ピクセル座標のコンパイルされた前記第2のリストに基づき第2のヒートマップを作成する手順、ここで前記第2のヒートマップは、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含む;及び
前記ヒートマップ及び前記第2のヒートマップを結合する手順
を更に備える、請求項9に記載のコンピュータシステム。
【請求項13】
前記画像に対してエッジ検出解析を実行し、前記コンピューティングデバイス画面内の1つ又は複数の部分的又は完全に隠されたウィンドウの明確なエッジを識別する手順;
前記エッジ検出解析の出力に基づき第2のヒートマップを作成する手順、ここで前記第2のヒートマップは、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含む;及び
前記ヒートマップ及び前記第2のヒートマップを結合する手順
を更に備える、請求項10に記載のコンピュータシステム。
【請求項14】
前記アプリケーションウィンドウを前記最もアクティブでない領域内に表示することができないと判定することに応答して、前記アプリケーションウィンドウのピクセル領域により覆われる前記1つ又は複数のアクティブ領域のそれぞれのヒート値を最小化する方法で、前記アプリケーションウィンドウを表示するための前記コンピューティングデバイス画面の領域を選択する手順を更に備える、請求項8から10のいずれか一項に記載のコンピュータシステム。
【請求項15】
プロセッサに:
アプリケーションウィンドウのウィンドウオープニングイベントを受信する手順;
前記アプリケーションウィンドウが再位置決め及びサイズ変更され得ると判定することに応答して、コンピューティングデバイス画面の1つ又は複数のアクティブ領域を識別する手順、ここでアクティブ領域は、1つ又は複数の他のウィンドウ及びそれらのそれぞれのインタラクティブ要素を現在表示している前記コンピューティングデバイス画面の領域である;
1つ又は複数の探索アルゴリズムを利用して、前記コンピューティングデバイス画面の前記1つ又は複数のアクティブ領域のうち最もアクティブでない領域を識別する手順;及び
前記最もアクティブでない領域内に前記アプリケーションウィンドウを表示する手順
を実行させるためのコンピュータプログラム。
【請求項16】
前記コンピューティングデバイス画面の前記1つ又は複数のアクティブ領域を識別する手順は:
前記コンピューティングデバイス画面上に現在表示されており可視である、ウィンドウ及びそれらのそれぞれのインタラクティブ要素のコンポーネント及びそれぞれのサブコンポーネント情報を取得する手順;
取得されたコンポーネント及びそれぞれのサブコンポーネント、ピクセル座標のリストをコンパイルする手順;及び
取得されたコンポーネント及びそれぞれのサブコンポーネント、ピクセル座標のコンパイルされた前記リストに基づきヒートマップを作成する手順、ここで前記ヒートマップは、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含み、前記コンピューティングデバイス画面の領域のヒート値は、前記領域に配置されたコンポーネント及びサブコンポーネントの数と相関する
を更に有する、請求項15に記載のコンピュータプログラム。
【請求項17】
前記コンピューティングデバイス画面の前記1つ又は複数のアクティブ領域を識別する手順は:
前記コンピューティングデバイス画面の現在のレイアウトの画像を取得する手順;
前記画像に対してエッジ検出解析を実行し、前記コンピューティングデバイス画面内の可視ウィンドウの明確なエッジを識別する手順;及び
前記エッジ検出解析の出力に基づきヒートマップを作成する手順、ここで前記ヒートマップは、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含み、前記コンピューティングデバイス画面の領域のヒート値は、前記領域内で検出された明確なエッジの数と相関する
を更に有する、請求項15に記載のコンピュータプログラム。
【請求項18】
1つ又は複数の探索アルゴリズムを利用して、前記コンピューティングデバイス画面の前記1つ又は複数のアクティブ領域のうち前記最もアクティブでない領域を識別する手順は、数値法を適用して、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含むヒートマップの最小値を求める手順を更に有する、請求項15から17のいずれか一項に記載のコンピュータプログラム。
【請求項19】
前記プロセッサに、
前記コンピューティングデバイス画面上に現在表示されている、隠されたウィンドウ及びそれらのそれぞれのインタラクティブ要素のコンポーネント及びそれぞれのサブコンポーネント情報を取得する手順;
取得されたコンポーネント及びそれぞれのサブコンポーネント、ピクセル座標の第2のリストをコンパイルする手順;
取得されたコンポーネント及びそれぞれのサブコンポーネント、ピクセル座標のコンパイルされた前記第2のリストに基づき第2のヒートマップを作成する手順、ここで前記第2のヒートマップは、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含む;及び
前記ヒートマップ及び前記第2のヒートマップを結合する手順
を更に実行させる、請求項16に記載のコンピュータプログラム。
【請求項20】
前記プロセッサに、
前記画像に対してエッジ検出解析を実行し、前記コンピューティングデバイス画面内の1つ又は複数の部分的又は完全に隠されたウィンドウの明確なエッジを識別する手順;
前記エッジ検出解析の出力に基づき第2のヒートマップを作成する手順、ここで前記第2のヒートマップは、前記コンピューティングデバイス画面の領域のアクティブ度レベルを表すヒート値を含む;及び
前記ヒートマップ及び前記第2のヒートマップを結合する手順
を更に実行させる、請求項17に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概してコンピューティングの分野に関し、より具体的には、アプリケーションウィンドウ管理に関する。
【背景技術】
【0002】
コンピューティングにおいて、ウィンドウは、グラフィカル制御要素である。それは、画面の一定の部分を占め、それが属するアプリケーションのグラフィカルユーザインタフェース(GUI)(例えば、ユーザが閲覧及び対話するためのアプリケーションのコンテンツ)の幾つかを表示する視覚領域から成り、通常、ウィンドウ装飾に囲まれている。ウィンドウは、通常、サイズ変更され得る矩形の領域であり、それを提供するアプリケーションによりそれに課される機能及び制限に沿って、概して編集可能である。更に、あるウィンドウの領域は、他のウィンドウの領域と重なり得る。ウィンドウは、ユーザが実行中のアプリケーションを視覚的に且つ手動で切り替え、オペレーティングシステムと一般的な対話を行うことを可能にするため、それは、最新のオペレーティングシステムにおけるマルチタスキングを促進するために必須である。アプリケーションウィンドウ管理ソフトウェアは、殆どのGUIベースのソフトウェア及びアプリケーションにおいて見られるユーティリティであり、グラフィカルウィンドウの全体的なアラインメント及びレイアウトを管理する。そのようなソフトウェアはまた、アプリケーションインタフェースウィンドウの配置及び体裁を制御し得る。
【発明の概要】
【発明が解決しようとする課題】
【0003】
ユーザのコンピューティングデバイス画面のアクティブ領域(すなわち、1つ又は複数の既に表示されたウィンドウを有する画面の領域)の1つ又は複数の要素を覆うことのないよう、新たなアプリケーションウィンドウを動的に配置し、サイズを調整するためのシステムを構築することが不可欠であり得る。
【課題を解決するための手段】
【0004】
一実施形態によれば、アプリケーションウィンドウを配置するための方法、コンピュータシステム、及びコンピュータプログラム製品が提供される。実施形態は、アプリケーションウィンドウのウィンドウオープニングイベントを受信することを含み得る。実施形態は、アプリケーションウィンドウが再位置決め及びサイズ変更され得ると判定することに応答して、コンピューティングデバイス画面の1つ又は複数のアクティブ領域を識別することを含み得る。アクティブ領域は、1つ又は複数の他のウィンドウ及びそれらのそれぞれのインタラクティブ要素を現在表示しているコンピューティングデバイス画面の領域である。実施形態は、1つ又は複数の探索アルゴリズムを利用して、コンピューティングデバイス画面の1つ又は複数のアクティブ領域のうち最もアクティブでない領域を識別することを含み得る。実施形態は、最もアクティブでない領域内にアプリケーションウィンドウを表示することを含み得る。
【図面の簡単な説明】
【0005】
本発明のこれらの目的、特徴及び利点、及び、他の目的、特徴及び利点は、添付図面と併せて読まれることになる本発明の例示的な実施形態の以下の詳細な説明から明らかとなる。例示は、当業者が詳細な説明と併せて本発明を理解することを促進する上での明確性のためのものであるので、図面の様々な特徴は縮尺通りではない。図面において:
【0006】
図1】少なくとも1つの実施形態に係る、例示的なコンピュータ環境を示す。
【0007】
図2】少なくとも1つの実施形態に係る、アプリケーションウィンドウ配置プロセスを介して、表示予定のアプリケーションウィンドウについて画面の表示位置を識別するための動作フローチャートを示す。
【発明を実施するための形態】
【0008】
特許請求の範囲における構造及び方法の詳細な実施形態が本明細書において開示される;しかしながら、開示された実施形態は、様々な形態で具現化され得る、特許請求の範囲における構造及び方法の単なる例示であると理解することができる。しかしながら、本発明は、多くの異なる形態において具現され得、本明細書に記載される例示的な実施形態に限定されると解釈されるべきではない。説明において、周知の特徴及び技法の詳細は、提示される実施形態を不必要に不明瞭にすることを回避するため、省略され得る。
【0009】
文脈により明確に別段の指示がなされない限り、単数形「a」、「an」、及び「the」は複数の指示対象を含むことを理解されたい。従って、例えば、「コンポーネント表面」への言及は、文脈により明確に別段の指示がなされない限り、そのような表面のうちの1つ又は複数への言及を含む。
【0010】
本発明は、概してコンピューティングの分野に関し、より具体的には、アプリケーションウィンドウ管理に関する。以下で説明される例示的な実施形態は、とりわけ、他の表示されたウィンドウの1つ又は複数の要素を遮蔽することを回避する方法でアプリケーションウィンドウを表示するためのシステム、方法、及びプログラム製品を提供する。従って、本実施形態は、コンピューティングデバイス画面の1つ又は複数のアクティブ領域を動的に識別すること、及び識別されたアクティブ領域の1つ又は複数の要素を遮蔽することのないよう、新たなアプリケーションウィンドウの配置及びサイズを構成することにより、アプリケーションウィンドウ管理の技術分野を改善する機能を有し、それによって、ユーザにとって不都合であり得る(例えば、他の表示されたウィンドウのビュー又はコントロールを遮蔽する)画面の領域に新たなアプリケーションウィンドウが表示されるリスクを最小限に留めることにより、コンピューティングデバイス上で作業する際のアプリケーションウィンドウの配置を改善する。
【0011】
前述の通り、アプリケーションウィンドウは、グラフィカル制御要素である。それは、画面の一定の部分を占め、それが属するアプリケーションのグラフィカルユーザインタフェース(GUI)コンポーネント(例えば、ユーザが閲覧及び対話するためのアプリケーションのコンテンツ)の幾つかを表示する視覚領域から成り、通常、ウィンドウ装飾に囲まれている。ウィンドウは、通常、サイズ変更され得る矩形の領域であり、それを提供するアプリケーションによってそれに課される機能及び制限に応じ、概して編集可能である。更に、あるウィンドウの領域は、他のウィンドウの領域と重なり得る。ウィンドウは、ユーザが実行中のアプリケーションを視覚的に且つ手動で切り替え、オペレーティングシステムと一般的な対話を行うことを可能にするため、それは最新のオペレーティングシステムにおけるマルチタスキングを促進するために必須である。アプリケーションウィンドウ管理ソフトウェアは、殆どのGUIベースのソフトウェア及びアプリケーションにおいて見られるユーティリティであり、グラフィカルウィンドウの全体的なアラインメント及びレイアウトを管理する。そのようなソフトウェアはまた、アプリケーションインタフェースウィンドウの配置及び体裁を制御し得る。
【0012】
更に、ソフトウェアアプリケーションを用いて作業する際、ユーザ又はアプリケーション自体が、新たなアプリケーション、ユーザインタフェース(UI)コントロール、モーダルウィンドウ、又は他のアプリケーション機能を提示する新たなウィンドウを開くことが通例である。この開示の目的において、「ウィンドウ」という用語は、画面上に表示され、場合によっては互いにオーバーレイする、アプリケーションウィンドウ、オーバーレイパネル、モーダル、コントロールパネル、及び他のUIコントロールを指す。既存の状態は、これらのウィンドウがコンピューティングデバイス画面のどこかに表示されることになるというものであり、通常、それらの配置及びサイズは、制御アプリケーションにより、又は、ウィンドウが開かれた以前の時間に基づき選択される。手元のタスクに応じ、これらのウィンドウの位置及びサイズは、ユーザの気を散らし、ユーザのワークフローにおいて不利になり得る。例えば、インターネットブラウザウィンドウのタブ又はUIコントロールの上など、1つ又は複数の既存の(すなわち、既に表示された)アプリケーションウィンドウを有する画面の領域に新たなウィンドウが表示された場合、ユーザは、自身のワークフローにより適するように、当該新たなウィンドウを移動させる、又はそれを拡大縮小することを余儀なくされる。従って、ユーザのコンピューティングデバイス画面のアクティブ領域(すなわち、1つ又は複数の既に表示されたウィンドウを有する画面の領域)の1つ又は複数の要素を覆うことのないよう、新たなアプリケーションウィンドウを動的に配置し、サイズを調整するためのシステムを構築することが不可欠であり得る。従って、本発明の実施形態は、とりわけ、コンピューティングデバイス画面のビジー(すなわち、アクティブ)領域をマッピング/識別し、表示されたウィンドウのインタラクティブ要素をマッピング/識別し、新たなウィンドウオープニングイベントを受信/傍受し、可能であれば新たなウィンドウのサイズを変更し、探索アルゴリズム(例えば、探索ベースの数値法又はブルートフォース探索などの離散数学)を利用してコンピューティングデバイス画面の最もビジーでない領域(例えば、他のウィンドウのUIコントロールがより少ない画面の領域、又はウィンドウを表示するために現在使用されていない画面の領域)に新たなウィンドウを位置決めして配置する、又は、既に存在するウィンドウのビュー又はインタラクティブ要素を隠すことを最小限に留めるべく、新たなウィンドウを位置決めして配置するにあたり有利であり得る。本発明は、全ての利点が本発明の全ての実施形態に組み込まれる必要があることを要求するものではない。
【0013】
少なくとも1つの実施形態によれば、画面上に表示される予定の新たなウィンドウのウィンドウオープニングイベントは、オペレーティングシステム又はアプリケーションから受信され得る。ウィンドウオープニングイベントに関連付けられた情報に基づき、新たなウィンドウの属性が変更され得るかどうかについての判定がなされ得る。ウィンドウの属性は、その位置決め及びサイズ調整を含み得る。新たなウィンドウの属性が変更され得るとの判定に応答して、画面上に表示された現在のウィンドウ及びそれらのそれぞれのインタラクション要素のヒートマップ又はビジー度/アクティブ度マップが作成され得る。ヒートマップは、画面のビジー又はアクティブ領域を示し得、「ホット」領域は、高いビジー度又はアクティブ度の値を有する。少なくとも1つの実施形態によれば、ヒートマップの作成は、画面上に表示された現在のウィンドウ及びそれらのそれぞれのインタラクション要素のコンポーネントツリー判定に基づき得る。少なくとも1つの他の実施形態によれば、ヒートマップの作成は、画面上に表示された現在のウィンドウ及びそれらのそれぞれのインタラクション要素のエッジ検出に基づき得る。探索アルゴリズムは、作成されたヒートマップを評価し、画面の最もビジーでない、又は最もアクティブでない領域を識別するために使用され得る。新たなウィンドウは、画面の識別された最もビジーでない、又は最もアクティブでない領域に配置され得る。
【0014】
少なくとも1つの他の実施形態によれば、ユーザは、自身のワークフローの一環として、ウィンドウを切り替え得るため、遮蔽されたウィンドウ(例えば、別のウィンドウの背後に部分的又は完全に隠されたウィンドウ)及び最小化されたウィンドウ、及びそれらのそれぞれのインタラクション要素もまた、ヒートマップを作成する際に考慮され得る。コンポーネントツリー法又はエッジ検出法は、遮蔽された、及び最小化されたウィンドウを含む全てのウィンドウについて画面領域のビジー度のヒートマップを生成するために使用され得る。ヒートマップは、単一のヒートマップに結合され得、最上部のウィンドウはユーザによりアクセスされる可能性がより高いことから、最上部のウィンドウのヒートマップは、最下部又は最小化されたウィンドウのヒートマップと比較して、潜在的により大きく重み付けされる。結合されたヒートマップデータを用い、新たなウィンドウの表示位置を、その位置に対する任意の他の制約に留意しつつ見つけるために、探索アルゴリズムが使用され得る。
【0015】
本開示の様々な態様は、説明文、フローチャート、コンピュータシステムのブロック図、及び/又はコンピュータプログラム製品(CPP)の実施形態に含まれるマシンロジックのブロック図により説明される。任意のフローチャートに関し、関与する技術に応じて、所与のフローチャートにおいて示されているものとは異なる順序で動作が実行され得る。例えば、ここでもまた関与する技術に応じて、連続するフローチャートのブロックに示される2つの動作は、逆の順序で、単一の統合された段階として、同時に、又は少なくとも部分的に時間が重複する方法で実行され得る。
【0016】
コンピュータプログラム製品の実施形態(「CPP実施形態」又は「CPP」)は、本開示において使用され、所与のCPP請求項において指定されたコンピュータ動作を実行するための命令及び/又はデータに対応するマシン可読コードを集合的に含む、1つ又は複数のストレージデバイスのセットに集合的に含まれる、1つ又は複数のストレージ媒体(「媒体」とも称される)の任意のセットについて説明する用語である。「ストレージデバイス」は、コンピュータプロセッサによる使用のために命令を保持及び記憶し得る任意の有形デバイスである。コンピュータ可読ストレージ媒体は、電子ストレージ媒体、磁気ストレージ媒体、光学ストレージ媒体、電磁ストレージ媒体、半導体ストレージ媒体、機械ストレージ媒体、又は上述したものの任意の好適な組み合わせであり得るが、これらに限定されない。これらの媒体を含む幾つかの既知のタイプのストレージデバイスは、ディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、コンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピディスク、(パンチカード又はディスクの主要面に形成されたピット/ランド等の)機械的に符号化されたデバイス、又は上述したものの任意の好適な組み合わせを含む。コンピュータ可読ストレージ媒体は、当該用語が本開示において使用される場合、電波又は他の自由に伝播する電磁波、導波路を通じて伝播する電磁波、光ファイバケーブルを通過する光パルス、ワイヤを通じて伝達される電気信号、及び/又は他の伝送媒体などの一時的な信号それ自体の形態におけるストレージとして解釈されないものとする。当業者により理解される通り、データは、アクセス中、デフラグメンテーション中、又はガベージコレクション中など、ストレージデバイスの通常の動作中の幾つかの不定期な時点において、通常移動されるが、データは、それが記憶されている間において一時的ではないため、上記をもって、ストレージデバイスが一時的なものとされることはない。
【0017】
以下で説明される例示的な実施形態は、コンピューティング画面の1つ又は複数のビジー領域を検出し、それに応じて、新たなウィンドウの配置が1つ又は複数のビジー領域を遮蔽することを最小限に留めるよう、当該新たなウィンドウについてコンピューティング画面の表示位置を識別する、システム、方法、及びプログラム製品を提供する。
【0018】
図1を参照すると、少なくとも1つの実施形態に係る、例示的なコンピューティング環境100が示されている。コンピューティング環境100は、アプリケーションウィンドウ配置(AWP)プログラム107など、本発明の方法を実行することに関与するコンピュータコードの少なくとも幾つかの実行のための環境の一例を含む。AWPプログラム107に加えて、コンピューティング環境100は、例えば、コンピュータ101、ワイドエリアネットワーク(WAN)102、エンドユーザデバイス(EUD)103、リモートサーバ104、パブリッククラウド105、及びプライベートクラウド106を含む。この実施形態において、コンピュータ101は、プロセッサセット110(処理回路120及びキャッシュ121を含む)、通信ファブリック111、揮発性メモリ112、永続的ストレージ113(オペレーティングシステム122及びAWPプログラム107を含む)、周辺デバイスセット114(ユーザインタフェース(UI)デバイスセット123、ストレージ124、及びモノのインターネット(IoT)センサセット125を含む)、及びネットワークモジュール115を含む。リモートサーバ104は、リモートデータベース130を含む。パブリッククラウド105は、ゲートウェイ140、クラウドオーケストレーションモジュール141、ホスト物理マシンセット142、仮想マシンセット143、及びコンテナセット144を含む。
【0019】
コンピュータ101は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、スマートウォッチ、又は他のウェアラブルコンピュータ、メインフレームコンピュータ、量子コンピュータ、又は、プログラムの実行及びネットワークへのアクセス、又はリモートデータベース130などのデータベースの照会が可能である、現在既知又は将来開発される任意の他の形態のコンピュータ又はモバイルデバイスの形態を取り得る。加えて、コンピュータ101は、AR/VR対応の、現在既知又は将来開発される任意の他の形態のコンピュータ又はモバイルデバイスであり得る。コンピュータ技術の分野においては良く理解されている通り、また技術に応じ、コンピュータ実装方法の実行は、複数のコンピュータ間及び/又は複数の位置間で分散され得る。他方、コンピューティング環境100に関するこの説明において、説明を可能な限り簡潔にするため、詳細な論述は、単一のコンピュータ、具体的にはコンピュータ101に焦点を置いている。コンピュータ101は、図1においてはクラウド内に示されていないが、それはクラウド内に位置し得る。他方、コンピュータ101は、断定的に示され得る任意の範囲を除き、クラウド内に存在することを要求されない。
【0020】
プロセッサセット110は、現在既知又は将来開発される任意のタイプの1つ又は複数のコンピュータプロセッサを含む。処理回路120は、複数のパッケージ、例えば、複数の調整された集積回路チップに分散され得る。処理回路120は、複数のプロセッサスレッド及び/又は複数のプロセッサコアを実装し得る。キャッシュ121は、プロセッサチップパッケージ内に位置するメモリであり、通常、プロセッサセット110上で実行されているスレッド又はコアによる高速アクセスのために利用可能であるべきデータ又はコードに対して使用される。キャッシュメモリは、通常、処理回路との相対的な近接性に応じて、複数のレベルに編成される。代替的に、プロセッサセット用の幾つか又は全てのキャッシュは、「オフチップ」に位置し得る。幾つかのコンピューティング環境において、プロセッサセット110は、キュビットを用いて動作し、量子コンピューティングを実行するように設計され得る。
【0021】
コンピュータ可読プログラム命令は、コンピュータ101のプロセッサセット110により一連の動作段階を実行させ、それによりコンピュータ実装方法を実現するためにコンピュータ101上に通常ロードされ、その結果、そのようにして実行された命令は、本書に含まれるコンピュータ実装方法(「本発明の方法」と総称される)のフローチャート及び/又は説明文において指定された方法をインスタンス化する。これらのコンピュータ可読プログラム命令は、キャッシュ121及び後述される他のストレージ媒体などの様々なタイプのコンピュータ可読ストレージ媒体に記憶される。プログラム命令及び関連するデータは、本発明の方法の実行を制御及び指示するために、プロセッサセット110によりアクセスされる。コンピューティング環境100において、本発明の方法を実行するための命令のうち少なくとも幾つかは、永続的ストレージ113内のAWPプログラム107に記憶され得る。
【0022】
通信ファブリック111は、コンピュータ101の様々なコンポーネントが互いに通信することを可能にする信号伝導経路である。通常、このファブリックは、バス、ブリッジ、及び物理入/出力ポートなどを構成するスイッチ及び導電性経路などのスイッチ及び導電性経路で作られている。光ファイバ通信経路及び/又は無線通信経路など、他のタイプの信号通信経路が使用され得る。
【0023】
揮発性メモリ112は、現在既知又は将来開発される任意のタイプの揮発性メモリである。例は、ダイナミック型ランダムアクセスメモリ(RAM)又はスタティック型RAMを含む。通常、揮発性メモリは、ランダムアクセスにより特徴付けられるが、断定的に示されない限り、これは必須ではない。コンピュータ101において、揮発性メモリ112は、単一のパッケージ内に位置し、コンピュータ101の内部に存在するが、代替的に又は追加的に、揮発性メモリは、複数のパッケージに分散され、及び/又はコンピュータ101に対して外部に位置し得る。
【0024】
永続的ストレージ113は、現在既知又は将来開発される、コンピュータ用の任意の形態の不揮発性ストレージである。このストレージの不揮発性は、コンピュータ101に対して、及び/又は永続的ストレージ113に対して直接的に、電力が供給されているかどうかにかかわらず、記憶されたデータが維持されることを意味する。永続的ストレージ113は、リードオンリメモリ(ROM)であり得るが、通常、永続的ストレージの少なくとも一部分は、データの書き込み、データの削除、及びデータの再書き込みを可能にする。永続的ストレージの幾つかのよく知られた形態は、磁気ディスク及びソリッドステートストレージデバイスを含む。オペレーティングシステム122は、様々な既知の専有オペレーティングシステム、又は、カーネルを採用するオープンソースのポータブルオペレーティングシステムインタフェース型オペレーティングシステムなどの幾つかの形態を取り得る。AWPプログラム107に含まれるコードは、通常、本発明の方法を実行することに関与するコンピュータコードの少なくとも幾つかを含む。
【0025】
周辺デバイスセット114は、コンピュータ101の周辺デバイスのセットを含む。コンピュータ101の周辺デバイス及び他のコンポーネントの間のデータ通信接続は、Bluetooth(登録商標)接続、近距離無線通信(Near-Field Communication:NFC)接続、(ユニバーサルシリアルバス(USB)型ケーブルなどの)ケーブルにより行われる接続、挿入型接続(例えば、セキュアデジタル(SD)カード)、ローカルエリア通信ネットワークを通じて行われる接続、及び更にはインターネットなどのワイドエリアネットワークを介して行われる接続など、様々な方法で実装され得る。様々な実施形態において、UIデバイスセット123は、表示画面、スピーカ、マイクロフォン、(スマートグラス、スマートウォッチ、AR/VR対応ヘッドセット、及びウェアラブルカメラなどの)ウェアラブルデバイス、キーボード、マウス、プリンタ、タッチパッド、ゲームコントローラ、及びハプティックデバイスなどのコンポーネントを含み得る。ストレージ124は、外付けハードドライブなどの外部ストレージ、又はSDカードなどの挿入可能なストレージである。ストレージ124は、永続的及び/又は揮発性であり得る。幾つかの実施形態において、ストレージ124は、キュビットの形態でデータを記憶するための量子コンピューティングストレージデバイスの形態を取り得る。コンピュータ101が大量のストレージを有することを要求される実施形態において(例えば、コンピュータ101が大規模なデータベースをローカルに記憶及び管理する場合)、このストレージは、複数の、地理的に分散されたコンピュータにより共有されるストレージエリアネットワーク(SAN)などの、非常に大量のデータを記憶するように設計された周辺ストレージデバイスにより提供され得る。IoTセンサセット125は、モノのインターネットのアプリケーションにおいて使用され得るセンサで構成されている。例えば、あるセンサは体温計であり得、別のセンサは動作検出器であり得、別のセンサは全地球測位システム(GPS)受信機であり得、更に別のセンサは、1つ又は複数の静止デジタル画像又はデジタル画像のストリーム(例えば、デジタルビデオ)をキャプチャ及び伝送することができるデジタル画像キャプチャデバイス(例えば、カメラ)であり得る。
【0026】
ネットワークモジュール115は、コンピュータ101がWAN102を介して他のコンピュータと通信することを可能にする、コンピュータソフトウェア、ハードウェア、及びファームウェアの集合体である。ネットワークモジュール115は、モデム又はWi-Fi(登録商標)信号送受信機などのハードウェア、通信ネットワーク伝送用にデータをパケット化及び/又はデパケット化するためのソフトウェア、及び/又はインターネットを介してデータを通信するためのウェブブラウザソフトウェアを含み得る。幾つかの実施形態において、ネットワークモジュール115のネットワーク制御機能及びネットワーク転送機能は、同じ物理ハードウェアデバイス上で実行される。他の実施形態(例えば、ソフトウェア定義ネットワーキング(Software-Defined Networking:SDN)を利用する実施形態)において、ネットワークモジュール115の制御機能及び転送機能は、制御機能が幾つかの異なるネットワークハードウェアデバイスを管理するように、物理的に別個のデバイス上で実行される。本発明の方法を実行するためのコンピュータ可読プログラム命令は、通常、ネットワークモジュール115に含まれるネットワークアダプタカード又はネットワークインタフェースを介して、外部コンピュータ又は外部ストレージデバイスからコンピュータ101にダウンロードされ得る。
【0027】
WAN102は、現在既知又は将来開発される、コンピュータデータを通信するための任意の技術により非ローカル距離を介してコンピュータデータを通信することができる、任意のワイドエリアネットワーク(例えば、インターネット)である。幾つかの実施形態において、WANは、Wi-Fiネットワークなど、ローカルエリアに位置するデバイス間でデータを通信するように設計されたローカルエリアネットワーク(LAN)により置換及び/又は補足され得る。WAN及び/又はLANは、通常、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、及びエッジサーバなどのコンピュータハードウェアを含む。
【0028】
エンドユーザデバイス(EUD)103は、エンドユーザ(例えば、コンピュータ101を運用する企業のクライアント)により使用及び制御される任意のコンピュータシステムであり、コンピュータ101に関連して上述した形態のいずれかを取り得る。EUD103は、通常、コンピュータ101の動作から、有益且つ有用なデータを受信する。例えば、コンピュータ101がエンドユーザに推奨を提供するように設計されている仮定上のケースにおいて、この推奨は、通常、コンピュータ101のネットワークモジュール115から、WAN102を介して、EUD103に通信されることになる。このようにして、EUD103は、エンドユーザに対して、推奨を表示、又は別の方法で提示することができる。幾つかの実施形態において、EUD103は、シンクライアント、ヘビークライアント、メインフレームコンピュータ、及びデスクトップコンピュータなどのようなクライアントデバイスであり得る。
【0029】
リモートサーバ104は、少なくとも幾つかのデータ及び/又は機能をコンピュータ101に供する任意のコンピュータシステムである。リモートサーバ104は、コンピュータ101を運用するのと同じエンティティにより制御及び使用され得る。リモートサーバ104は、コンピュータ101などの他のコンピュータによる使用のために有益且つ有用なデータを収集及び記憶するマシンを表す。例えば、コンピュータ101が過去のデータに基づき推奨を提供するように設計及びプログラミングされている仮定上のケースにおいて、この過去のデータは、リモートサーバ104のリモートデータベース130からコンピュータ101に提供され得る。
【0030】
パブリッククラウド105は、ユーザによる直接的なアクティブ管理を伴うことなく、コンピュータシステムリソース及び/又は他のコンピュータ機能、特に、データストレージ(クラウドストレージ)及びコンピューティング能力のオンデマンドの可用性を提供する、複数のエンティティによる使用のために利用可能な任意のコンピュータシステムである。クラウドコンピューティングは、通常、リソースの共有を活用し、コヒーレンス及び規模の経済を実現する。パブリッククラウド105のコンピューティングリソースの直接的なアクティブ管理は、クラウドオーケストレーションモジュール141のコンピュータハードウェア及び/又はソフトウェアにより実行される。パブリッククラウド105により提供されるコンピューティングリソースは、通常、パブリッククラウド105内の、及び/又はパブリッククラウド105にとって利用可能な物理コンピュータのユニバースである、ホスト物理マシンセット142のコンピュータを構成する様々なコンピュータ上で実行される仮想コンピューティング環境により実装される。仮想コンピューティング環境(VCE)は、通常、仮想マシンセット143からの仮想マシン及び/又はコンテナセット144からのコンテナの形態を取る。これらのVCEは、画像として記憶され得、様々な物理マシンのホストの中で、及びその間で、画像として、又はVCEのインスタンス化の後に、転送され得ることが理解される。クラウドオーケストレーションモジュール141は、画像の転送及び記憶を管理し、VCEの新たなインスタンス化を展開し、VCE展開のアクティブなインスタンス化を管理する。ゲートウェイ140は、パブリッククラウド105がWAN102を介して通信することを可能にする、コンピュータソフトウェア、ハードウェア、及びファームウェアの集合体である。
【0031】
ここで、仮想化コンピューティング環境(VCE)の幾つかの更なる説明が提供される。VCEは、「画像」として記憶され得る。VCEの新たなアクティブインスタンスは、画像からインスタンス化され得る。2つのよく知られたタイプのVCEは、仮想マシン及びコンテナである。コンテナは、オペレーティングシステムレベルの仮想化を用いるVCEである。これは、カーネルが、コンテナと称される複数の隔離されたユーザ空間のインスタンスの存在を可能にする、オペレーティングシステムの特徴を指す。これらの隔離されたユーザ空間のインスタンスは、通常、それらの中で実行されているプログラムの観点から、実際のコンピュータとして挙動する。通常のオペレーティングシステム上で実行されているコンピュータプログラムは、コネクテッドデバイス、ファイル及びフォルダ、ネットワーク共有、CPUパワー、及び定量化可能なハードウェア機能など、そのコンピュータの全てのリソースを利用し得る。しかしながら、コンテナ内部で実行されているプログラムは、コンテナのコンテンツ、及びコンテナに割り当てられたデバイスのみを使用することができ、この特徴はコンテナ化として知られている。
【0032】
プライベートクラウド106は、コンピューティングリソースが単一の企業による使用のためにのみ利用可能である点を除き、パブリッククラウド105に類似している。プライベートクラウド106は、WAN102と通信しているものとして示されているが、他の実施形態において、プライベートクラウドは、インターネットから完全に切り離され、ローカル/プライベートネットワークを介してのみアクセス可能であり得る。ハイブリッドクラウドは、多くの場合に異なるベンダによりそれぞれ実装される異なるタイプの複数のクラウド(例えば、プライベートクラウド、コミュニティクラウド又はパブリッククラウドのタイプ)の複合体である。複数のクラウドのそれぞれは、別個の分離したエンティティのままであるが、より大きなハイブリッドクラウドアーキテクチャは、複数の構成クラウドの間におけるオーケストレーション、管理、及び/又はデータ/アプリケーションのポータビリティを可能にする、標準化された、又は専有の技術により結合されている。この実施形態において、パブリッククラウド105及びプライベートクラウド106は両方とも、より大きなハイブリッドクラウドの一部である。
【0033】
少なくとも1つの実施形態によれば、EUD103は、更に、無線電力出力に関する任意の政府規制に従い、1つ又は複数の電力消費型電気デバイスに対して無線で電力を伝送することのできる、現在既知又は将来開発される無線充電器デバイスであり得る。例えば、EUD103は、電力ビーミング又はビーム形成信号を通じてコンピュータ101に無線で電力を伝送する任意の既知のIR無線充電器であり得る。別の例として、EUD103は、コンピュータ101に放射エネルギーを提供することのできる、任意の既知のRF無線充電器であり得る。単一のデバイスとして示されているものの、コンピューティング環境100は複数のEUD103を含み得る。
【0034】
AWPプログラム107は、ウィンドウオープニングイベント及び関連する情報(例えば、ウィンドウの属性)を受信すること、コンピューティングデバイス画面のプリントスクリーン画像(すなわち、スクリーンショット)をキャプチャ又は受信すること、コンピューティングデバイス画面の既存のウィンドウ及びそれらのそれぞれのインタラクティブ要素のコンポーネントツリー構造を識別すること、キャプチャされたプリントスクリーン画像又は識別されたコンポーネントツリー構造に基づきコンピューティングデバイス画面の1つ又は複数のアクティブ又はビジー領域を識別すること、識別されたアクティブ又はビジー領域に基づきコンピューティングデバイス画面の1つ又は複数のヒートマップを作成すること、配置予定のウィンドウがサイズ変更及び/又は再位置決めされ得るかどうかを判定すること、及び、配置予定のウィンドウの配置(すなわち、その表示)がコンピューティングデバイス画面の最もビジーでない、又は最もアクティブでない領域内であるように、それを再位置決め及び/又はサイズ変更することのできるプログラムであり得る。少なくとも1つの実施形態において、AWPプログラム107は、ユーザがAWPプログラム107を開く、又はインストールする際に、システム使用にオプトインすることを要求し得る。少なくとも1つの実施形態において、AWPプログラム107は、永続的ストレージ113内に記憶された特定のソフトウェアアプリケーションのロジック内に統合され得る。代替的に、AWPプログラム107は、オペレーティングシステム(例えば、オペレーティングシステム122)の一部であり得、特定のアプリケーションがデフォルトのウィンドウ配置を提供しない場合にそれを行う、又は、特定のアプリケーションの提案されたウィンドウ配置をオーバーライドする。コンピュータ101における描写にかかわらず、AWPプログラム107は、デバイス間で機能が分離され得るよう、エンドユーザデバイス103、リモートサーバ104、パブリッククラウド105、及びプライベートクラウド106に、個別に、又は任意の組み合わせにおいて記憶及び/又は実行され得る。アプリケーションウィンドウの配置方法は、図2に関して以下で更に詳細に説明される。
【0035】
ここで図2を参照すると、少なくとも1つの実施形態に係る、アプリケーションウィンドウ配置プロセス200を介して、表示予定のアプリケーションウィンドウについて画面の表示位置を識別するための動作フローチャートが示されている。202で、AWPプログラム107は、コンピューティングデバイス(例えば、コンピュータ101)の画面上に表示される予定のアプリケーションウィンドウのウィンドウオープニングイベントを受信又は傍受する。更に、AWPプログラム107はまた、アプリケーションウィンドウに関連付けられた属性情報を受信し得る。関連付けられた属性情報は、アプリケーションウィンドウに関する以下の情報、すなわち、識別情報(例えば、所有プログラム又はインスタンス化プログラム)、意図された画面配置(例えば、デフォルトの表示位置)、意図された寸法(例えば、ピクセル高さ及び幅)、位置及び寸法の編集可能性の表示(例えば、意図された画面配置及び/又は寸法が変更され得るか否か)、及びコンポーネント情報(例えば、コントロール又はインタラクティブ要素)を含み得る。アプリケーションウィンドウのウィンドウオープニングイベント及びその関連付けられた属性情報は、コンピューティングデバイスのオペレーティングシステム(例えば、オペレーティングシステム122)から受信され得る。例えば、ウィンドウィングシステム又はオペレーティングシステムのウィンドウマネジャは、アプリケーションウィンドウのウィンドウオープニングイベントの通知及びその関連付けられた属性情報を、AWPプログラム107に提供し得る。代替的に、AWPプログラム107は、アプリケーションウィンドウのウィンドウオープニングイベント及びその関連付けられた属性情報を、ウィンドウの所有プログラム(すなわち、ウィンドウをインスタンス化するプログラム)から受信し得る。
【0036】
次に、204で、AWPプログラム107は、ウィンドウが再位置決め及び/又はサイズ変更され得るかどうかを判定する。この判定を行うにあたり、AWPプログラム107は、受信されたウィンドウの属性情報を参照して、位置及び寸法の編集可能性の表示が存在するかを判定し得る。幾つかのアプリケーションウィンドウは、オペレーティングシステム又は所有アプリケーションのいずれかにより、再位置決め又はサイズ変更されるためのそれらの機能について制限され得る。ウィンドウが再位置決め及び/又はサイズ変更され得るとの判定(段階204、「Y」分岐)に応答して、アプリケーションウィンドウ配置プロセス200は、段階206に進み得る。ウィンドウが再位置決め及び/又はサイズ変更され得ないとの判定(段階204、「N」分岐)に応答して、アプリケーションウィンドウ配置プロセス200は、段階212に進み得る。少なくとも1つの実施形態によれば、ウィンドウが再位置決め及び/又はサイズ変更され得ないと判定された場合、AWPプログラム107は、ウィンドウの固定された位置及びサイズをオーバーライドしてよく、アプリケーションウィンドウ配置プロセス200は、段階206に進み得る。
【0037】
206で、AWPプログラム107は、コンピューティングデバイス画面の1つ又は複数のアクティブ領域(すなわち、ビジー領域)を識別する。アクティブ領域は、別のウィンドウ及びそのインタラクティブ要素(例えば、UIコントロール)を表示するために現在使用されている画面の領域であり得る。既存のウィンドウ及びそれらのそれぞれのインタラクティブ要素がより密集している画面の領域は、既存のウィンドウ及びそれらのそれぞれのインタラクティブ要素がより密集していない(すなわち、より使用されていない)画面の他の領域よりもアクティブであるとみなされ得る。少なくとも1つの実施形態によれば、AWPプログラム107は、既存の可視ウィンドウ及びそれらのそれぞれのインタラクティブ要素のコンポーネントツリー解析を介して、画面の1つ又は複数のアクティブ領域を識別し得る。そのような解析は、画面の既存のコンテンツ(例えば、ウィンドウ)が、それらのそれぞれの画面上の位置決めの認識を有するコンポーネント及びサブコンポーネントのツリー又は他のデータ構造としてAWPプログラム107により取得され得る場合に適切であり得る。画面の既存のインターネットブラウザベースのウィンドウの場合、AWPプログラム107は、そのようなウィンドウのページソース又は検証要素ビューを介して視覚化され得るドキュメントオブジェクトモデル(DOM)ツリーなどのバッキングデータ構造から、それぞれのコンポーネント及びサブコンポーネント情報を取得し得る。画面の既存の非インターネットブラウザベース又はコンピューティングデバイスネイティブのウィンドウ(例えば、ローカルアプリケーションのウィンドウ)の場合、AWPプログラム107は、ウィンドウィングシステム又はオペレーティングシステムのウィンドウマネジャから、それぞれのコンポーネント及びサブコンポーネント情報を取得し得る。全ての画面上のウィンドウ(すなわち、コンポーネント)及びそれらのそれぞれのインタラクティブ要素(すなわち、サブコンポーネント)の取得されたコンポーネント及びサブコンポーネント情報を用い、AWPプログラム107は、それらのそれぞれのバウンディングボックス(又は、バウンディングボックスが画面上で表示された内容を正確に表していない場合は、他のより関連性の高いコンポーネント及びサブコンポーネントのピクセル座標)のリストをコンパイルし得る。任意選択的に、AWPプログラム107は、ツリースタイルデータ構造における「リーフ」コンポーネントが、不可視のレイアウト及びグルーピングコンテナではなく可視のコンポーネントである可能性が最も高いことから、それらをカウントし得る。
【0038】
少なくとも1つの他の実施形態によれば、AWPプログラム107は、既存の可視ウィンドウ及びそれらのそれぞれのインタラクティブ要素のエッジ検出解析を介して、画面の1つ又は複数のアクティブ領域を識別し得る。画面の既存のコンテンツが、AWPプログラム107により、画像、例えばラスタ形式における画像(例えば、プリントスクリーン画像)、として取得され得る場合、そのような解析は適切であり得る。AWPプログラム107は、画面の現在のレイアウトを、ラスタ又は他の画像スタイル形式(例えば、JPG又はPNG)においてキャプチャ又は受信し、画面レイアウト画像に対する既知のエッジ検出の方法を利用して、画面内の可視ウィンドウの明確なエッジを識別し得る。
【0039】
また、206で、AWPプログラム107は、画面の識別されたアクティブ領域のヒートマップ表示を作成する。作成されたヒートマップは、識別されたアクティブ領域に関連付けられたヒート値(例えば、ゼロから1の尺度又は幾つかの他の値の尺度上で正規化された値)を含み得;領域のヒート値が高いほど、その領域におけるアクティブ度(すなわち、既存のウィンドウ及びそれらのそれぞれの要素)が高い。少なくとも1つの実施形態によれば、ヒートマップの作成は、コンポーネント座標のコンパイルされたリストに基づき得る。ホット領域(すなわち、高いヒート値を有する領域)は、既存のウィンドウ及びそれらのそれぞれのインタラクティブ要素がより密集した画面の領域(すなわち、より多くのコンポーネント及びサブコンポーネントが配置されている画面の領域)であり得る。例えば、特定のピクセル又はピクセルのセットの半径内のコンポーネント境界の数は、その半径内のヒート値と相関し得る。少なくとも1つの他の実施形態によれば、ヒートマップの作成は、利用されたエッジ検出法からの出力に基づき得る。例えば、特定のピクセル又はピクセルのセットの半径内における検出されたエッジの数は、その半径内のヒート値と相関し得る。ホット領域(すなわち、高いヒート値を有する領域)は、より明確なエッジが検出された画面の領域であり得る。
【0040】
少なくとも1つの更なる実施形態によれば、既存のウィンドウ及びそれらのそれぞれのインタラクティブ要素のコンポーネントツリー解析を介して画面の1つ又は複数のアクティブ領域を識別する際、AWPプログラム107は、1つ又は複数の部分的又は完全に隠されたウィンドウ及びそれらのそれぞれのインタラクティブ要素のコンポーネントツリー情報、並びに1つ又は複数の最小化されたウィンドウのコンポーネントツリー情報を追加的に評価し得る。AWPプログラム107は、全てのウィンドウに対するコンポーネント座標の複数のコンパイルされたリストに基づき複数のヒートマップを作成し得、これは画面の層を表し得る。例えば、第1のヒートマップは、最上部の(例えば、完全に可視の)ウィンドウ及びそれらのそれぞれのインタラクティブ要素について作成され得る。第2のヒートマップは、最下部のウィンドウ(すなわち、最上部のウィンドウにより部分的又は完全に隠されたウィンドウ)及びそれらのそれぞれのインタラクティブ要素について作成され得る。更に、第3のヒートマップは、画面の最小化されたウィンドウについて作成され得る。AWPプログラム107は、次に、作成されたヒートマップ及びそれらのそれぞれのヒート値をオーバーレイ(すなわち、結合)して、潜在的に重み付けされたヒート値を有する単一のヒートマップを作成し得る。例えば、最上部のウィンドウのヒート値は最下部のウィンドウのヒート値よりも大きく重み付けされ、最下部のウィンドウのヒート値は最小化されたウィンドウのヒート値よりも大きく重み付けされた単一のヒートマップである。
【0041】
少なくとも1つの他の実施形態によれば、既存のウィンドウ及びそれらのそれぞれのインタラクティブ要素のエッジ検出解析を介して画面の1つ又は複数のアクティブ領域を識別する際、AWPプログラム107は、1つ又は複数の部分的又は完全に隠されたウィンドウ及びそれらのそれぞれのインタラクティブ要素のエッジ検出解析、並びに1つ又は複数の最小化されたウィンドウのエッジ検出解析を追加的に実行し得る。AWPプログラム107は、全てのウィンドウからのエッジ検出出力に基づき複数のヒートマップを作成し得、これは画面の層を表し得る。例えば、第1のヒートマップは、最上部の(例えば、完全に可視の)ウィンドウ及びそれらのそれぞれのインタラクティブ要素について作成され得る。第2のヒートマップは、最下部のウィンドウ(すなわち、最上部のウィンドウにより部分的又は完全に隠されたウィンドウ)及びそれらのそれぞれのインタラクティブ要素について作成され得る。更に、第3のヒートマップは、画面の最小化されたウィンドウについて作成され得る。AWPプログラム107は、次に、作成されたヒートマップ及びそれらのそれぞれのヒート値をオーバーレイして、潜在的に重み付けされたヒート値を有する単一のヒートマップを作成し得る。例えば、最上部のウィンドウのヒート値は最下部のウィンドウのヒート値よりも大きく重み付けされ、最下部のウィンドウのヒート値は最小化されたウィンドウのヒート値よりも大きく重み付けされた単一のヒートマップである。
【0042】
次に、208で、AWPプログラム107は、コンピューティングデバイス画面の最もアクティブでない領域を識別するために、1つ又は複数の既知の探索アルゴリズムを利用して、206で作成されたヒートマップを評価する。少なくとも1つの実施形態によれば、AWPプログラム107により利用される探索アルゴリズムは、206で作成されたヒートマップの最小ヒート値を求めるための探索ベースの数値法を含み得る。数値法は、数値近似を用いて問題の解(又は十分に近似した解)を求め得る。上記の通り、高いヒート値は、高いアクティブ度を有する画面の領域を示し得、同様に、最小ヒート値は、最も低いアクティブ度を有する画面の領域を示し得る。複数のヒートマップが作成され、単一のヒートマップに結合された実施形態において、AWPプログラム107は、探索アルゴリズムを適用して最小ヒート値を求める際に、上述の通りヒート値を重み付けし、それに応じて、最も低いアクティブ度を有する画面の領域を識別し得る。少なくとも1つの他の実施形態によれば、AWPプログラム107は、数値法ではなく、離散数学を含む他の方法(例えば、ブルートフォース探索)を利用して正確な解を求め得る。
【0043】
210で、AWPプログラム107は、最も低いアクティブ度を有するコンピューティングデバイス画面の識別された領域内にウィンドウを配置(すなわち、表示)する。ウィンドウを配置するにあたり、AWPプログラム107は、ウィンドウの配置が画面のよりアクティブな領域を遮蔽することを最小限に留め、それにより、1つ又は複数の他のウィンドウ及びそれらのそれぞれのインタラクティブ要素を遮蔽することを最小限に留めるよう、ウィンドウを再位置決め又はサイズ変更し得る。代替的に、AWPプログラム107が、他の制約(例えば、あるウィンドウが画面の上部に「定着」する必要がある)に伴い、最も低いアクティブ度を有する画面の領域内にウィンドウを配置できない場合、AWPプログラム107は、ウィンドウの配置のためにコンピューティングデバイス画面の領域を選択し、ウィンドウのピクセル領域により覆われる他の画面領域のヒート値を最小化するような方法で、ウィンドウを表示し得る。
【0044】
212で、AWPプログラム107は、その意図された画面配置及び意図された寸法に沿って、コンピューティングデバイス画面上にウィンドウを配置(すなわち、表示)する。AWPプログラム107は、ウィンドウのデフォルトの表示位置及びピクセル寸法(例えば、高さ及び幅)などの情報に関し、アプリケーションウィンドウに関連付けられた受信された属性情報を参照し得る。
【0045】
図2は、一実装形態の例示のみを提供するものであり、異なる実施形態が実装され得る方法に関するいかなる限定をも示唆しないことが理解され得る。図示された環境に対する多くの修正が、設計要件及び実装要件に基づきなされ得る。
【0046】
本発明の様々な実施形態の説明は、例示の目的で提示されてきたが、網羅的であること、又は開示された実施形態に限定されることが意図されるものではない。説明される実施形態の範囲から逸脱することなく、多くの修正形態及び変形形態が、当業者には明らかになるであろう。本明細書で使用される専門用語は、実施形態の原理、実用的な適用、又は、市場で見られる技術に対する技術的改善を最適に説明するように、又は、本明細書で開示される実施形態を他の当業者が理解することを可能にするように選択されたものである。
図1
図2