(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムサーチのシステムにおいて、
一つ或いは複数のアプリケーションプログラムと、
これらアプリケーションプログラムを実行するための一つ或いは複数のサーバーと、
スケジュール策略に基づいてこれらのサーバーをスケジュールしてこれらアプリケーションプログラムを実行するための一つ或いは複数のスケジューラーと、
これらアプリケーションプログラムのアプリケーションプログラムデータを収集し、並びに収集した該アプリケーションプログラムデータを一つ或いは複数のデータベースに保存するための一つ或いは複数のコンピュータプログラムと、
収集され且つこれらデータベースに保存された該アプリケーションプログラムデータを使用してこれらアプリケーションプログラムをサーチするサーチサービスを提供する一つ或いは複数のサーチエンジンと、
を包含し、
該スケジューラーはさらに、これらアプリケーションプログラムの少なくとも一つの実行頻度、実行順序、実行長さ及び実行優先権のいずれかを分析して該スケジュール策略を発生することを特徴とする、アプリケーションプログラムサーチのシステム。
【請求項２】
請求項１記載のアプリケーションプログラムサーチのシステムにおいて、これらコンピュータプログラムはさらに、ロボットモジュールを包含し、該ロボットモジュールは、ユーザーがこれらアプリケーションプログラムを実行する行為をシミュレートすることで、少なくとも該アプリケーションプログラムデータの発生と該アプリケーションプログラムデータの受け取りの少なくともいずれかを実行することを特徴とする、アプリケーションプログラムサーチのシステム。
【請求項３】
請求項２記載のアプリケーションプログラムサーチのシステムにおいて、該ロボットモジュールは、真実のユーザーがこれらアプリケーションプログラムを操作する行為を記録することで該ユーザーの行為をシミュレートすることを特徴とする、アプリケーションプログラムサーチのシステム。
【請求項４】
請求項１記載のアプリケーションプログラムサーチのシステムにおいて、これらコンピュータプログラムはさらに、データ収集代理プログラムを包含し、該データ収集代理プログラムは、これらアプリケーションプログラムの該アプリケーションプログラムデータをフェッチ（ｆｅｔｃｈ）或いはキャッシュ（ｃａｃｈｅ）するのに用いられることを特徴とする、アプリケーションプログラムサーチのシステム。
【請求項５】
請求項１記載のアプリケーションプログラムサーチのシステムにおいて、さらに、ラッパー（ｗｒａｐｐｅｒ）を包含し、該ラッパーは、入力イベント或いは命令の少なくとも一方を提供して、これらアプリケーションプログラムを実行するのに用いられることを特徴とする、アプリケーションプログラムサーチのシステム。
【請求項６】
請求項５記載のアプリケーションプログラムサーチのシステムにおいて、該ラッパーはさらに、これらアプリケーションプログラムをアプリケーションプログラムインターフェースとパッケージするのに用いられ、それにより、これらサーバーがこれらアプリケーションプログラムを実行するのを補助することを特徴とする、アプリケーションプログラムサーチのシステム。
【請求項７】
請求項１記載のアプリケーションプログラムサーチのシステムにおいて、さらに、
アプリケーションプログラム作動インタフェースを包含し、それはこれらサーバーの仮想マシンがこれらアプリケーションプログラムを実行するのを補助することを特徴とする、アプリケーションプログラムサーチのシステム。
【請求項８】
請求項１記載のアプリケーションプログラムサーチのシステムにおいて、さらに、
ハイパーバイザーモジュールを包含し、それは仮想マシンがこれらアプリケーションプログラムを実行するのをコントロールすることを特徴とする、アプリケーションプログラムサーチのシステム。
【請求項９】
請求項１記載のアプリケーションプログラムサーチのシステムにおいて、これらアプリケーションプログラムは、モバイルアプリケーションプログラム、ネットワークアプリケーションプログラム、拡張プログラム或いはパーソナルコンピュータで実行可能なプラグインを包含することを特徴とする、アプリケーションプログラムサーチのシステム。
【請求項１０】
請求項１記載のアプリケーションプログラムサーチのシステムにおいて、これらコンピュータプログラムはさらに、ロボットモジュールを包含し、且つこれらスケジューラーはさらに、該スケジュール策略に基づいてこれらロボットモジュールをスケジュールすることを特徴とする、アプリケーションプログラムサーチのシステム。
【請求項１１】
請求項１記載のアプリケーションプログラムサーチのシステムにおいて、該スケジュール策略はこれらアプリケーションプログラムの少なくとも一つの実行頻度、実行順序、実行長さ及び実行優先権のいずれかを分析することにより発生することを特徴とする、アプリケーションプログラムサーチのシステム。
【請求項１２】
アプリケーションプログラムサーチの方法において、それは、
一つ或いは複数のアプリケーションプログラムをスケジュールし、スケジュール策略に基づき実行し、
該スケジュール策略に基づきこれらアプリケーションプログラムを実行し、
これらアプリケーションプログラムよりアプリケーションプログラムデータを収集し、 収集した該アプリケーションプログラムデータを保存し、
サーチ命令を受け取り、
保存された該アプリケーションプログラムデータをサーチし、
これらアプリケーションプログラムが保存した該アプリケーションプログラムデータ中の、該サーチ命令に関係する情報を発送し、
以上のステップを包含し、
その分析のステップ中に、さらに、これらアプリケーションプログラムのインタフェースをランダムに検出することを包含することを特徴とする、アプリケーションプログラムサーチの方法。
【請求項１３】
請求項１２記載のアプリケーションプログラムサーチの方法において、さらに、
ユーザーがこれらアプリケーションプログラムを実行してアプリケーションプログラムデータを発生する行為をシミュレートするステップを包含することを特徴とする、アプリケーションプログラムサーチの方法。
【請求項１４】
請求項１３記載のアプリケーションプログラムサーチの方法において、そのシミュレートするステップ中には、これらアプリケーションプログラムのインタフェースの分析を包含することを特徴とする、アプリケーションプログラムサーチの方法。
【請求項１５】
請求項１３記載のアプリケーションプログラムサーチの方法において、そのシミュレートするステップ中には、真実のユーザーがこれらアプリケーションプログラムを操作する行為を記録することを通し、該ユーザーの行為をシミュレートするステップを包含することを特徴とする、アプリケーションプログラムサーチの方法。
【請求項１６】
請求項１２記載のアプリケーションプログラムサーチの方法において、さらに、
これらアプリケーションプログラムの該アプリケーションプログラムデータをフェッチ或いはキャッシュし、及び、
フェッチ或いはキャッシュした該アプリケーションプログラムデータを保存するステップを包含することを特徴とする、アプリケーションプログラムサーチの方法。
【請求項１７】
請求項１２記載のアプリケーションプログラムサーチの方法において、さらに、
これらアプリケーションプログラムをアプリケーションプログラム運行インタフェースとパッケージし、これらアプリケーションプログラムの実行を補助するステップを包含することを特徴とする、アプリケーションプログラムサーチの方法。
【請求項１８】
請求項１２記載のアプリケーションプログラムサーチの方法において、これらアプリケーションプログラムは、モバイルアプリケーションプログラム、ネットワークアプリケーションプログラム、拡張プログラム或いはパーソナルコンピュータで実行可能なプラグインを包含することを特徴とする、アプリケーションプログラムサーチの方法。
【請求項１９】
請求項１２記載のアプリケーションプログラムサーチの方法において、スケジュールのステップ中に、さらに、一つ或いは複数のロボットモジュールを、該スケジュール策略に基づいてスケジュールし、これらアプリケーションプログラムを実行するステップを包含することを特徴とする、アプリケーションプログラムサーチの方法。
【請求項２０】
アプリケーションプログラムサーチの方法において、
一つ或いは複数のアプリケーションプログラム或いは一つ或いは複数のアプリケーションプログラムサーバーのアプリケーションプログラムデータを収集し、
収集した該アプリケーションプログラムデータを保存し、
サーチ命令を受け取り、
保存された該アプリケーションプログラムデータをサーチし、及び、
該アプリケーションプログラムが保存した該アプリケーションプログラムデータ中の、該サーチ命令と関係する情報を発送し、
以上のステップを包含し、
これらアプリケーションプログラムを分析することで、これらアプリケーションプログラムサーバーのＵＲＬ／ＵＲＩを探し出して、直接これらＵＲＬ／ＵＲＩより該アプリケーションプログラムデータを収集するステップを包含することを特徴とする、アプリケーションプログラムサーチの方法。
【請求項２１】
請求項２０記載のアプリケーションプログラムサーチの方法において、そのうち、収集のステップ中に、さらに、
これらアプリケーションプログラム或いはこれらアプリケーションプログラムサーバーに、該アプリケーションプログラムデータの転移を指示するステップを包含することを特徴とする、アプリケーションプログラムサーチの方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一種のアプリケーションプログラムに係り、特に一種の、サーチエンジンサービスを提供し、必要とするアプリケーションプログラムをサーチする方法及びそのシステムに関する。
【背景技術】
【０００２】
サーチエンジンは人々がオンラインで情報をサーチするときに重要なツールであり、モバイルアプリケーション（以下、Ａｐｐと称する）も、スマートフォンの使用の広がりにより普及してきた。今日、Ａｐｐは予めモバイルデバイスに搭載されるか、インターネットを通してダウンロードされる。たとえば、アップル社の「Ａｐｐ  Ｓｔｏｒｅ」、グーグル社の「Ｇｏｏｇｌｅ  Ｐｌａｙ」或いは騰訊社の「ｂａｏ．ｍｙａｐｐ．ｃｏｍ」等のアプリケーションプログラム公布プラットフォーム（以下、Ａｐｐ商店と称する）は、いずれもユーザーがその興味のあるＡｐｐをブラウズしダウンロードするのに供され得る。Ａｐｐ商店は通常、Ａｐｐ部門を分類しており、並びに伝統的なサーチツールを提供してユーザーがキーワードでその興味のあるＡｐｐをサーチできるようにしている。Ａｐｐのタイトル及びコンテンツの記述は通常開発者により提供され、Ａｐｐ商店の伝統的なサーチツールは、これらＡｐｐのタイトル及びコンテンツ記述をチェックし、ユーザーが入力したキーワードに合致するかを対比する。一般に、Ａｐｐ商店によっては、ウェブページインタフェースを提供し、開発者がそのＡｐｐのタイトル及びコンテンツの記述をアップロード及び編集できるようにしており、たとえば、Ｇｏｏｇｌｅ  Ｐｌａｙの「Ｅｄｉｔ  Ａｐｐｌｉｃａｔｉｏｎ」とＡｐｐ  Ｓｔｏｒｅの「Ｍａｎａｇｅ  Ｙｏｕｒ  Ａｐｐｓ」がある。
【０００３】
Ａｐｐと関係のある静態データ（たとえばＡｐｐのタイトル或いはコンテンツの記述）以外にも、あるＡｐｐがインストールされ並びに実行されるとき、それが生成するデータ（以下、アプリケーションプログラムデータと称する）は動態の性質を有し得る。具体的に言うと、一つのＡｐｐがあるモバイル装置において実行されるとき、それは各種のトリガメカニズムによりアプリケーションプログラムデータを発生し得て、たとえば、ユーザーの行為はそのうちの一例である。たとえば、もし気象Ａｐｐを利用して天気予報をサーチしようとし、ユーザーがＡｐｐインタフェースを介してその選択した地点を入力すると、気象Ａｐｐは関係するデータ、たとえば、この例中の該地点の天気予報のデータを送出する。言い換えると、アプリケーションプログラムデータはユーザーの操作により動態の性質とされ、且つこれらのアプリケーションプログラムデータはＡｐｐと関連する一つ或いは複数のアプリケーションプログラムサーバーより来るか、或いはＡｐｐ自身より発生する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述したように、Ａｐｐ商店中の伝統的なサーチツールは、キーワードを使用して静態データに対してサーチを行なうことしかできず、そのサーチ範囲はアプリケーションプログラムデータにまで延伸されることはない。言い換えると、伝統的なサーチツールは、並びに、Ａｐｐと関係するアプリケーションパッケージファイル（ａｐｐｌｉｃａｔｉｏｎ  ｐａｃｋａｇｅ  ｆｉｌｅ）に対してサーチを行なうことはできず（たとえば、ａｐｋファイル或いはｉｐａファイル）、またユーザーが電子装置上で実行するか実行完了したＡｐｐが発生するアプリケーションプログラムデータに対してサーチを行なうことはできない。これが意味することは、その他のユーザーはＡｐｐが発生するアプリケーションプログラムデータを見つけるか或いはサーチすることができないが、これらのアプリケーションプログラムデータはその他のユーザーにとっては価値のある情報である可能性がある、ということである。
【課題を解決するための手段】
【０００５】
本発明は一種のサーチアプリケーションプログラム或いはＡｐｐのシステムを提示する。このシステムは、一つ或いは複数のアプリケーションプログラム、一つ或いは複数のサーバー、一つ或いは複数のスケジューラー、一つ或いは複数のデータベース、一つ或いは複数のコンピュータプログラム及び一つ或いは複数のサーチエンジンを包含する。これらのサーバーは、これらアプリケーションプログラムを実行するのに用いられる。これらスケジューラーはスケジュール策略に基づきこれらサーバーをスケジュールしてこれらアプリケーションプログラムを実行する。これらコンピュータプログラムはこれらアプリケーションプログラムのアプリケーションプログラムデータを収集するのに用いられ、並びにアプリケーションプログラムデータをこれらデータベース中に保存する。これらサーチエンジンはサーチサービスを提供して、コンピュータプログラムにより収集されるか、或いはデータベース中に保存されたアプリケーションプログラムデータを具えたアプリケーションプログラムを探し出すのに用いられる。
【０００６】
本発明は一種のアプリケーションプログラムサーチの方法を提供する。この方法中、一つ或いは複数のアプリケーションプログラムはスケジュール策略に基づきスケジューリングが実行され、続いて、該スケジュール策略に基づきこれらアプリケーションプログラムが実行され、これらアプリケーションプログラムのアプリケーションプログラムデータが収集され、並びに収集されたアプリケーションプログラムデータは保存され、その後、一つのサーチ命令を受け取ると、その保存したアプリケーションプログラムデータがサーチされ、さらに、このたびサーチにより探し出されたアプリケーションプログラムデータに対応するアプリケーションプログラムの情報が発送される。
【０００７】
本発明は一種のアプリケーションプログラムサーチの方法を提供する。この方法中、少なくとも一つのアプリケーションプログラムがスケジュール策略に基づきスケジューリング実行され、続いて、これらアプリケーションプログラムが実行されて、これらアプリケーションプログラムからのアプリケーションプログラムデータか、該アプリケーションプログラムに結合されたデータ収集モジュール及び又はこれらアプリケーションプログラムに結合されたアプリケーションサーバーからのアプリケーションプログラムデータが収集される。収集されたアプリケーションプログラムデータは保存され、その後、サーチ指令が受け取られることで、その保存するアプリケーションプログラムデータがサーチされ、さらにこの度サーチにより探し出されたアプリケーションプログラムデータに対応するアプリケーションプログラムの情報が送出される。
【発明の効果】
【０００８】
本発明は一種のアプリケーションプログラムサーチの方法を提供する。この方法中、一つ或いは複数のアプリケーションプログラムサーバーのアプリケーションプログラムからのアプリケーションプログラムデータは収集され、収集されたデータは保存され、その後、サーチ指令を受け取ることで、保存されたデータはサーチされ、さらにこの度サーチにより見つけ出されたデータに対応するアプリケーションプログラムの情報が発送される。
【図面の簡単な説明】
【０００９】
【図１】本発明のある実施例において、アプリケーションプログラムデータを通してＡｐｐをサーチするネットワークシステムの概念図である。
【図２】本発明のある実施例において、アプリケーションプログラムデータを通してＡｐｐをサーチするネットワークシステムの構造表示図である。
【図３Ａ】本発明のある実施例による、データ構造表示図である。
【図３Ｂ】本発明のある実施例による、データ構造表示図である。
【図３Ｃ】本発明のある実施例による、データ構造のロジック表である。
【図３Ｄ】本発明のある実施例による、データ構造のロジック表の一列の表示図である。
【図４Ａ】本発明のある実施例において、アプリケーションプログラムデータを通してＡｐｐをサーチするネットワークシステムの構造表示図である。
【図４Ｂ】本発明のある実施例において、アプリケーションプログラムデータを通してＡｐｐをサーチするネットワークシステムの構造表示図である。
【図４Ｃ】本発明のある実施例において、アプリケーションプログラムデータを通してＡｐｐをサーチするネットワークシステムの構造表示図である。
【図４Ｄ】本発明のある実施例において、アプリケーションプログラムデータを通してＡｐｐをサーチするネットワークシステムの構造表示図である。
【図４Ｅ】本発明のある実施例において、データ収集構造を具えたシステム構造表示図である。
【図４Ｆ】本発明のある実施例において、データ収集代理プログラムがサーバーに設定されネットワークとの間でアプリケーションプログラムデータがフェッチ（ｆｅｔｃｈ）或いはキャッシュされるシステム構造表示図である。
【図４Ｇ】本発明のある実施例において、サーバー中で使用されて各一つのＡｐｐをランナー  ＡＰＩ（ｒｕｎｎｅｒ  ＡＰＩ）とパッケージするためのラッパー（Ｗｒａｐｐｅｒ）を具えたシステムの構造表示図である。
【図４Ｈ】本発明のある実施例において、スーパーマネージャーモジュールを具えてサーバーを助けるシミュレート機器を具えてＡｐｐを実行するシステム構造表示図である。
【図４Ｉ】本発明のある実施例において、ロボットモジュールが図４Ａ中の一つの脚本、第３モジュール、第２モジュール、及び第１モジュールに整合されたシステム構造表示図である。
【図４Ｊ】本発明のある実施例において、スケジューラーがＡｐｐ実行を補助するシステムの構造表示図である。
【図４Ｋ】本発明のある実施例において、Ａｐｐ安全検査モジュールを具えてアプリケーションプログラム或いはＡｐｐの安全性を検査するシステムの構造表示図である。
【図５Ａ】本発明のある実施例において、ユーザーインターフェースの例の表示図である。
【図５Ｂ】本発明のある実施例において、ユーザーインターフェースの例の表示図である。
【図５Ｃ】本発明のある実施例において、ユーザーインターフェースの例の表示図である。
【図５Ｄ】本発明のある実施例において、ユーザーインターフェースの例の表示図である。
【図５Ｅ】本発明のある実施例において、ユーザーインターフェースの例の表示図である。
【図６Ａ】本発明のある実施例において、アプリケーションプログラムサーチエンジンが提供するサービスのユーザーインターフェースの例の表示図である。
【図６Ｂ】本発明のある実施例において、アプリケーションプログラムサーチエンジンが提供するサービスのユーザーインターフェースの例の表示図である。
【図６Ｃ】本発明のある実施例において、アプリケーションプログラムサーチエンジンが提供するサービスのユーザーインターフェースの例の表示図である。
【図７Ａ】本発明のある実施例において、単一の仮想マシン或いは複数の仮想マシンを使用して一つ或いは複数のＡｐｐを実行する表示図である。
【図７Ｂ】本発明のある実施例において、単一の仮想マシン或いは複数の仮想マシンを使用して一つ或いは複数のＡｐｐを実行する表示図である。
【図７Ｃ】本発明のある実施例において、単一の仮想マシン或いは複数の仮想マシンを使用して一つ或いは複数のＡｐｐを実行する表示図である。
【図７Ｄ】本発明のある実施例において、単一の仮想マシン或いは複数の仮想マシンを使用して一つ或いは複数のＡｐｐを実行する表示図である。
【図７Ｅ】本発明のある実施例において、単一の仮想マシン或いは複数の仮想マシンを使用して一つ或いは複数のＡｐｐを実行する表示図である。
【図７Ｆ】本発明のある実施例において、単一の仮想マシン或いは複数の仮想マシンを使用して一つ或いは複数のＡｐｐを実行する表示図である。
【図７Ｇ】本発明のある実施例において、単一の仮想マシン或いは複数の仮想マシンを使用して一つ或いは複数のＡｐｐを実行する表示図である。
【図７Ｈ】本発明のある実施例において、単一の仮想マシン或いは複数の仮想マシンを使用して一つ或いは複数のＡｐｐを実行する表示図である。
【図８Ａ】一つのデータ収集モジュールを使用してユーザーレベルでアプリケーションプログラムデータをフェッチ（ｆｅｔｃｈ）或いは切り取るオペレーティングシステムの概念図である。
【図８Ｂ】一つのデータ収集モジュールを使用してコアレベルでアプリケーションプログラムデータをフェッチ（ｆｅｔｃｈ）或いは切り取るオペレーティングシステムの概念図である。
【図９Ａ】図７Ａ〜図７Ｈ中の代理プログラムを使用してデータ収集モジュールのタスクを実行する例の表示図である。
【図９Ｂ】図７Ａ〜図７Ｈ中の代理プログラムを使用してデータ収集モジュールのタスクを実行する例の表示図である。
【図９Ｃ】図７Ａ〜図７Ｈ中の代理プログラムを使用してＡｐｐ関係のデータ／コンテンツをフェッチ（ｆｅｔｃｈ）或いは切り取るフローチャートである。
【図９Ｄ】スケジューラー動作のフローチャートである。
【図９Ｅ】仮想マシン管理者動作のフローチャートである。
【発明を実施するための形態】
【００１０】
以下に本発明の詳細な実施例を図を参照して説明する。各図中の同じ符号は同じ或いは類似の物品を代表する。
【００１１】
図１は本発明の実施例のシステムの概念図である。このシステムは、一つのサーバー集団１００（或いはクラウド）、アプリケーションプログラムサーバー２００、第１ユーザー１０及び第２ユーザー２０を包含し得る。そのうち、任意の二つがネットワーク３０を通して連結されて通信でき、このネットワーク３０は、インターネット或いはハニカム式ネットワークとされ得るが、これに限定されるわけではない。この実施例中、サーバー集団は複数のサーバーを包含し得て（たとえば、図１中のサーバー１００ａ〜１００ｄ）、各サーバーは本発明の少なくとも一部分のタスク、プロセス或いはステップを実行するのに用いられ、並びに単独、順番、並行或いは組み合わせ式動作によりシステムの効率を高める。サーバー集団１００中の任意のサーバーは、これに限定されるわけではないが、プロセッサ、メモリモジュール、通信ポート、及びデータベースの保存装置を包含する。図２はサーバー集団の一つの例である。
【００１２】
図１、図４Ａ及び図４Ｂを参照されたい。サーバー１００ａはネットワークアプリケーションプログラムサーバーとして配置され得て（以下にネットワークアプリケーションプログラムサーバー１００ａと称する）、並びにサーバー１００ｂ（以下にアプリケーションプログラムサーチエンジンサーバー１００ｂと称する）に接続され、第１ユーザー１０及び第２ユーザー２０にサービスする。ネットワークアプリケーションプログラムサーバー１００ａの主要な機能は、ユーザーに向けてネットワーク関連ツールを提供することにあり、たとえば、ユーザーにウェブページインタフェースでサーチ要求を入力することを許可する。アプリケーションプログラムサーチエンジンサーバー１００ｂの主要な機能は、サーチエンジンサービスを提供して、アプリケーションプログラムデータをサーチすることにある。そのうち、アプリケーションプログラムデータは、以下に限定されるわけではないが、ワード、属性、記述、シリアルナンバー、マーカー、統計値、履歴、ハイパーリンク、ファイルパス、音声、映像、及びその他の任意のサーチ形式とされ得る情報及びその組み合わせとされ得る。
【００１３】
ネットワークアプリケーションプログラムサーバー１００ａは、第１ユーザー１０のスクリーン１３１或いは第２ユーザー２０のスクリーン２３１上で、サーチフィールド或いはサーチボタン５０２を提供でき（或いはネットワークブラウザを通して表示される）、第１ユーザー１０或いは第２ユーザー２０がアプリケーションプログラムサーチエンジンサーバー１００ｂの提供するサーチツールにアクセスできるようにする。ユーザーはサーチフィールドでサーチ内容を入力してサーチを起動できる。この技術領域における通常の知識を有する者であれば、この実施例中で指すサーチ内容が、一つ或いは複数のキーワード、図面、映像ストリーム、音声、或いはその組み合わせとされ得ることは理解できる。たとえば、ユーザーはタイピングするか或いは発音することで一つ或いは複数の文字をサーチフィールド５０２中に入力できる。或いは、サーチボタン５０２を押して、図面、画像或いは音声形式のファイルをサーチすることができる。
【００１４】
図４Ａを参照されたい。Ａｐｐはアプリケーションプログラムサーチエンジンサーバー１００ｂ或いは第１ユーザー１０にインストールされる。該Ａｐｐがインストールされ、実行され並びに動作するとき、該Ａｐｐはそれ自身がどのように操作されるかにより対応するアプリケーションプログラムデータを発生（或いは獲得）する。アプリケーションプログラムデータはアプリケーションプログラムサーバー２００より提供され得るほか、Ａｐｐ自身により発生してもよい。アプリケーションプログラムデータが該Ａｐｐより発生するかアプリケーションプログラムサーバー２００より提供された後、アプリケーションプログラムサーチエンジンサーバー１００ｂはこれらアプリケーションプログラムデータを収集できる。
【００１５】
図４Ｆを参照されたい。データ収集代理サーバー６１０は、サーバー（たとえばアプリケーションプログラムサーチエンジンサーバー１００ｂ）とネットワーク３０の間で使用されて、本発明のある実施例中のアプリケーションプログラムデータをフェッチ（ｆｅｔｃｈ）及び又はキャッシュする。もしデータ収集代理サーバー６１０が第２ユーザー２０よりサーチリクエストを受け取ったなら、それが前もって保存した現地キャッシュが互いに一致するアプリケーションプログラムデータを有しているか否かを検査する。もし互いに一致するアプリケーションプログラムデータを探し出せたら、データ収集代理サーバー６１０はデータを第２ユーザー２０に送り、別にサーチリクエストをアプリケーションプログラムサーチエンジンサーバー１００ｂに発送する必要はない。
【００１６】
図１及び図４Ａを参照されたい。アプリケーションプログラムデータはネットワークアプリケーションプログラムサーバー１００ａ或いはアプリケーションプログラムサーチエンジンサーバー１００ｂのデータベース中に保存され、図２及び図４Ａも併せて参照されたいが、並びに文字列或いはバイナリコードの形式で保存される。これらの収集されたアプリケーションプログラムデータは、ネットワークアプリケーションプログラムサーバー１００ａ或いはアプリケーションプログラムサーチエンジンサーバー１００ｂにＳＱＬ、Ｃ、Ｃ＋＋等のプログラミング言語を組み合わせて管理、アクセス或いはサーチされ、さらにその他のデータ管理ツールを使用して上述の操作を行なうことができる。ある例においては、データベース中の文字列或いはバイナリコードは一つのサーチリクエストに基づきサーチされる。また別の例においては、データベース中のデータフラグメントが一つ或いは複数の唯一キー（たとえば、一つのマスターキー）と関連づけられ、且つ特定のデータフラグメントが、これらのキー（Ｋｅｙ）がサーチされるときに探し出される。アプリケーションプログラムデータがデータベースに保存される前に、アプリケーションプログラムデータは先に複数個に分類されて整理され、且つ各分類類別と複数のキーワードと関連づけられる（たとえば、「ホテル」及び「コテージ」等のキーワードは「旅行」の分類と関連づけられる）。同一の類別に属するデータは、保存時に一組のキー、たとえば、順序性或いは関連性を有するコードに連結され、それはたとえば、単数列、偶数列、同じ数字の開始／末尾、特定桁数が同じ数字を有する、等の特殊コードでもよい。アプリケーションプログラムサーチエンジンサーバー１００ｂが一つのサーチリクエストに基づき関係するアプリケーションプログラムデータをサーチする時、該サーチに一致するキーワードに関連づけられたキーが最も先に選択され、続いて、データベース中の選択されたキーと対応するアプリケーションプログラムデータがサーチされ、今回のサーチに関係する内容がサーチされる。注意すべきことは、アプリケーションプログラムデータはまたその他のサーチエンジン技術を使用して収集及び保存され得て、上述のモデルに限定されるわけではない、ということである。ある例においては、アプリケーションプログラムデータは一つの編集テーブル（たとえばＢｉｇ  Ｔａｂｌｅ）或いはＨａｄｏｏｐ構造下の一つのＨａｄｏｏｐファイルシステムに保存され得る。図３Ｃは一つの編集テーブル３０００であり、図３Ｄは編集テーブル３０００中の一列３２０を表示する。ここにおいて、アプリケーションプログラムデータは、各種のタブレットサーバー（たとえば、ＢｉｇＴａｂｌｅ  タブレットサーバー、図示せず）によりアクセスされ得る複製ファイルシステム中のタブレット（Ｔａｂｌｅｔ）３２０−３２４に保存される。タブレットに対する更新は、いずれも共有ファイルシステム中のトランザクションログに記録され、前述のこの例では、タブレット３２０−３２４中に保存されたデータは変更不可であり（すなわち、データは編集テーブル３０００に書き込まれた後、永遠に不変である）。別の例においては、更新を許可するた��、比較的新しいデータはＲＡＭに保存され、古いデータは編集テーブル３０００中の一系列のファイル内に保存される。
【００１７】
図１及び図４Ｂを参照されたい。別の例において、アプリケーションプログラムデータは一つの独立して運行されるデータベース８８８’に保存され得る。このデータベース８８８’はネットワークアプリケーションプログラムサーバー１００ａ或いはアプリケーションプログラムサーチエンジンサーバー１００ｂにＳＱＬ、Ｃ、Ｃ＋＋等のプログラミング言語或いはその他のデータ管理ツールを組み合わせて管理され得る。データベース８８８’に保存されたアプリケーションプログラムデータはアプリケーションプログラムサーチエンジンサーバー１００ｂによりサーチされ得る。
【００１８】
本技術領域の通常の知識を有する者であれば、前述のサーチ機能がいずれもネットワークアプリケーションプログラムサーバー１００ａ或いはアプリケーションプログラムサーチエンジンサーバー１００ｂにより単独で提供され得ることは理解できることである。これにより、ネットワークアプリケーションプロセス及びサーチ機能は必ずしも二つの異なるサーバー上に分けて置かれて実施されなければならないわけではない。さらに述べると、このような機能はＰａａＳ、ＩａａＳ、ＳａａＳ等のクラウド演算技術により実現され得る。
【００１９】
図１を参照されたい。別の例において、サーバー集団１００はさらにサーバー１００ｃ（以下にデータベース管理サーバー１００ｃ）を包含し、それは、第１データベースとされるか、或いはそれと接続された第２データベース（図示せず）に対してデータベース管理のサービスを提供し、該第２データベースはアプリケーションプログラムデータを保存するのに用いられる。たとえば、第２データベースはストレージエリアネットワーク（ＳＡＮ）中に存在し得て、データベース管理サーバー１００ｃはこのストレージエリアネットワーク中に位置する第２データベースをコントロールできる。第１或いは第２データベースに保存されたアプリケーションプログラムデータはＳＱＬ、Ｃ、Ｃ＋＋等のプログラミング言語或いはその他のデータ管理ツールにより管理され得て、言い換えると、データベース管理サーバー１００ｃが本発明が提示する方法を実行する時、データベース管理サーバー１００ｃは、第１或いは第２データベースをコントロールできる）。
【００２０】
別の実施例において、もしアプリケーションプログラムデータがイメージ、映像、オーディオビデオファイル或いはテキストファイルであれば、それはネットワークアプリケーションプログラムサーバー１００ａの保存装置（図示されず）、アプリケーションプログラムサーチエンジンサーバー１００ｂの保存装置１９（図２を参照されたい）、データベース管理サーバー１００ｃの保存装置（図示されず）、或いはこれらのサーバー１００ａ、１００ｂ、１００ｃと接続された保存装置１９（図４Ｂを参照されたい）の中に保存され得る。これらのデータに対応するファイル名称、タイトル、記述或いはマーカー（図３Ａ或いは図３Ｂを参照されたい）は、すなわち、文字列でネットワークアプリケーションプログラムサーバー１００ａ或いはアプリケーションプログラムサーチエンジンサーバー１００ｂのデータベース中に保存されるか、或いは前に言及された第１データベース或いは第２データベース中に保存され、サーチに供される。
【００２１】
ある例において、これらのイメージ、映像、オーディオビデオファイル或いはテキストファイルに対応する文字列はまた、ファイルパスを有し、並びに同時にデータベースに保存され、このファイルパスはデータの所在位置を表示できる。たとえば、サーバー集団１００はさらに、サーバー１００ｄ（以下にファイル管理サーバー１００ｄと称する。図１を参照されたい）を包含し、それはサーバー１００ａ、１００ｂ、或いは１００ｄと接続され、ファイル管理のサービスを行なう。サーチのキーワードが文字列と一致すれば、すなわち、該文字列に対応するファイルがサーチ結果とされ得る。このとき、データベース中で探し出された文字列とキーワードは互いに一致し、対応するファイルは、そのパスにより探し出される。
【００２２】
この技術領域の通常の知識を有する者であれば、前述のサーバー１００ａ、１００ｂ及び又は１００ｃもファイル管理のサービスを有し得て、それにより保存装置或いはＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）設備を管理できることは、理解できることである。
【００２３】
別の例において、複数のサーバーは並行作業できるように配置され、それによりサーバー集団１００が拡大され、ネットワーク上の大量のクライアントに対してサービスを提供できる。ここで、前述のサーバーに接続された保存装置及びデータベースも併せて拡大され得る。
【００２４】
さらに述べると、サーバー１００ａ、１００ｂ、１００ｃ及び１００ｄのデータ流量或いはこれらサーバーが提供するサービスは、一つのロードバランシングモジュール或いはロードバランシングサーバー（図示されず）によりコントロールされ得る。本技術領域の通常の知識を有する者であれば、本発明の方法がサーバー集団１００中のサーバー数量を制限しないことを理解できる。
【００２５】
別の例において、一つの単一のサーバーがネットワークのサーバー側に配置されて、前述の全てのタスクとプロセスを実行し、このような単一サーバーは、アプリケーションプログラムデータの数量が比較的小さく、サーバー動作を必要とするタスクが比較的簡単な状況では、図１に示されるようなサーバー集団１００の代わりに使用される。
【００２６】
別の実行可能な方式によると、サーバー１００ａ〜１００ｄに動態でその役割を交換させる。サーバー集団１００中の各サーバーはそのタスク、プロセス或いはステップを交換でき、並びにシステムの完全性を維持できる。
【００２７】
第１ユーザー１０はコンピュータ装置上で動作するＡｐｐを実行でき、これにより関係するアプリケーションプログラムサーバー或いはクラウドよりアプリケーションプログラムデータを取得する。このコンピュータ装置は、これに限定されるわけではないが、スマートフォン１０ａ、タブレット或いはタブレットＰＣ  １０ｂ（まとめてモバイル装置と称する）、ノートブック型コンピュータ１０ｃ、パーソナルコンピュータ１０ｄ、スマートテレビジョン、テレビゲーム機、車用コンピュータ或いはドライブレコーダーとされ得る。同様に、第２ユーザー２０も、上述の装置を使用して同じＡｐｐを操作できる。本技術領域における通常の知識を有する者であれば、Ａｐｐは並びに必ずしもマニュアル操作されてアプリケーションプログラムデータを取得しなければならないわけではなく、自動実行の機器、コンピュータプログラム或いはロボットとされてＡｐｐを実行又は操作する方式に設定できる。
【００２８】
図２はアプリケーションプログラムサーチエンジンサーバー１００ｂ、アプリケーションプログラムサーバー２００、第１ユーザー１０及び第２ユーザー２０を包含するシステムを提示する。そのうちのアプリケーションプログラムサーチエンジンサーバー１００ｂは、以下に限定されるわけではないが、メモリ１２、データパス１４、メモリコントローラー１６、通信ポート１７、プロセッサ１８及び保存装置１９を包含し得る。ある例において、保存装置１９はデータベース８８８を包含するか、或いは保存装置１９はサーバーシステムの外部に設置されるが、アプリケーションプログラムサーチエンジンサーバー１００ｂと接続されている。
【００２９】
第１ユーザー１０或いは第２ユーザー２０はそれぞれメモリ１３９或いは２３９、データパス１６０或いは２６０、メモリコントローラー１３７或いは２３７、プロセッサ１３５或いは２３５、保存装置１１８或いは２１８、周辺装置１３４或いは２３４、アシステッドグローバルポジショニンスシステム（Ａｓｓｉｓｔｅｄ  Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ，ＡＧＰＳ）モジュール１３２或いは２３２、ＲＦ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ）モジュール１４０或いは２４０、入出力システム１３３或いは２３３、スクリーン１３１或いは２３１、及び入力モジュール或いは入力装置１３８或いは２３８を包含し得る。そのうち、該入出力システム１３３或いは２３３はディスプレイコントローラー１３３ａ或いは２３３ａ、及び入力コントローラー１３３ｂ或いは２３３ｂを包含する。該スクリーン１３１或いは２３１はユーザーインターフェース１３１ａ或いは２３１ａを表示できる。ある例においては、保存装置１１８或いは２１８は、それぞれコンピュータリーダブル媒体（ｃｏｍｐｕｔｅｒ−ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）１１８ａ或いは２１８ａを包含する。別の例においては、保存装置１１８或いは２１８はコンピュータリーダブル媒体と見なされ得る。
【００３０】
仮想マシンは、オペレーションシステムを演算環境においてインストール並びに実行する一種のソフトウエア実現（ｓｏｆｔｗａｒｅ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ）であり、それは通常、実体シミュレートの演算環境に用いられるが、中央処理装置、メモリ、ハードディスク、ネットワーク及びその他のハードウエアリソースに対するリクエストは仮想化レイヤー（Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｌａｙｅｒ）により管理され、この仮想化レイヤーは、前述のリクエストを実体ターゲット物品へと翻訳する。仮想マシンは仮想化レイヤー（たとえばクライアント側或いはサーバーのオペレーションシステムにおいて運行される一つのハイパーバイザー（ｈｙｐｅｒｖｉｓｏｒ）或いはバーチャライズプラットフォーム）中において創造され得て、またすなわち、仮想マシンはホストオペレーションシステム（Ｈｏｓｔ  ＯＳ）の上の仮想化レイヤーの中で運行する。仮想化レイヤーは多種類の、それぞれ別の、孤立した仮想マシン環境において用いられ得る。オペレーションシステムとソフトウエアが直接実体ハードウエアにインストールされるのに較べると、仮想マシンは多種類の優れた点を有しており、たとえば、その孤立性は仮想マシン上で実行されるアプリケーションプログラムとサービスがホストオペレーションシステム或いはその他の仮想マシンの干渉を確実に受けないようにする。また、仮想マシンは、削除、複製、及び各ホストサーバーの間での新たな分配が容易で、ハードウエアリソースを有効利用できるようにする。
【００３１】
Ａｐｐは第１ユーザー１０により実行されてアプリケーションプログラムデータを発生するのみならず、それは、本発明のシステム中のサーバー或いは仮想マシン上で実行されてアプリケーションプログラムデータを発生できる。Ａｐｐはシステム限定の特徴を有し、すなわち、特定のＡｐｐは僅かに特定形式のオペレーションシステム上で実行可能であり、このＡｐｐの実行を成功させるためには、オペレーションシステムを限定する情報の存在について知る必要がある。ある例においては、サーバー（たとえばアプリケーションプログラムサーチエンジンサーバー１００ｂ）がＡｐｐのオペレーションシステムを限定する情報を取得でき、これにより本発明のシステムはどのような環境がこのＡｐｐを実行できるかを了解できる。
【００３２】
別の例において、たとえば図４Ｇに示される例のように、サーバー（たとえばアプリケーションプログラムサーチエンジンサーバー１００ｂ）はラッパー（Ｗｒａｐｐｅｒ）６３０を使用して各Ａｐｐ（或いはＡｐｐのパッケージ）を、ランナーＡＰＩ（ｒｕｎｎｅｒ  ＡＰＩ）とパッケージする。ランナーＡＰＩの補助の下で、サーバーはＡｐｐのオペレーションシステム限定の情報を取得し、本発明のシステムにどのような環境でこのＡｐｐを実行できるかを了解させることができる。
【００３３】
別の例において、ランナーＡＰＩは直接使用されてサーバー或いは複数の仮想マシンがＡｐｐのオペレーションシステム限定の情報を取得するのを補助し、本発明のシステムにどのような環境がこのＡｐｐを実行できるかを了解させることができる。
【００３４】
図４Ｈに示されるように、別の例において、ハイパーバイザーモジュール６４０がサーバー（たとえばアプリケーションプログラムサーチエンジンサーバー１００ｂ）により、Ａｐｐを実行する仮想マシンの数量をコントロールするのに利用される。たとえば、ハイパーバイザーモジュール６４０は、仮想マシンの生成、削除、起動或いは起動解除が行なえる。このハイパーバイザーモジュール６４０は、仮想マシンリソースを管理する一つの管理ツールとされて、Ａｐｐの実行をより効率的となすことができる。
【００３５】
別の例において、ハイパーバイザーモジュール６４０は、一種のカーネルベース仮想マシン（ｋｅｒｎｅｌ−ｂａｓｅｄ  ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ，ＫＶＭ）とされ、それは異なるオペレーションシステムの複数の仮想マシンを、そのイメージファイルを変更しない状況下で同期して作動させるのに用いられる。カーネルベース仮想マシン（ＫＶＭ）の補助により、異なる仮想マシン上で、異なるオペレーションシステムを有するカスタマイズ作動環境が同期して提供される。
【００３６】
アプリケーションプログラムデータはアプリケーションプログラムサーバー２００或いはＡｐｐ自身により提供され、並びにデータベース８８８に保存され、第２ユーザー２０はユーザーインターフェース２３１ａを通してアプリケーションプログラムデータに対してサーチする。こうして、アプリケーションプログラムサーチエンジンサーバー１００ｂはサーチを実行し並びにサーチ結果を第２ユーザー２０に伝送する。
【００３７】
本技術領域における通常の知識を有する者であれば、前述のシステム中の部品、モジュール或いは装置は、一つのモジュール或いはシングルチップ中に整合され得ることが分かる。このほか、アプリケーションプログラムサーチエンジンサーバー１００ｂ中のサーバーシステム中、第１ユーザー１０及び第２ユーザー２０は、ネットワーク３０を介して相互に交流できる。さらに述べると、サーバー１００ａ、１００ｃ或いは１００ｄ中のサーバーシステムは、図２に示されるものと同じ構成要素、モジュール或いは装置を包含し得る。
【００３８】
［データベース］
図３Ａ及び図３Ｂには、本発明のある例中のデータベース８８８或いは８８８’のデータ構造の例が提示されている。この例中において、データベース８８８或いは８８８’は一つの関連データベースである。図３Ａを参照されたい。データ構造は、以下に限定されるわけではないが、Ａｐｐ  １の名称を保存する第１フィールド３００−１、Ａｐｐ  １のＩＤを保存するための第２フィールド３００−２、Ａｐｐ  １のファイル名称或いはパッケージ名称を保存する第３フィールド３００−３、Ａｐｐ  １の位置を保存する第４フィールド３００−４、コンテンツテーブルＩＤを保存する第５フィールド３００−５、Ａｐｐ  １のダウンロード回数を保存する第６フィールド３００−６、或いはＡｐｐ  １の推薦回数を保存する第７フィールド３００−７を包含する。このほか、図３Ｂには第３Ａ中の、第５フィールド３００−５に保存されるコンテンツテーブルＩＤの一例が提示されている。本技術領域における通常の知識を有する者であれば、図３Ａ及び図３Ｂ中の一部フィールドは選択的であることが分かる。
【００３９】
別の例において、データベース８８８或いは８８８'のデータ構造は、図３Ｃ及び又は図３Ｄに示される編集テーブル３０００及び又はＨａｄｏｏｐファイルシステムとして構築され得る。そのうち、Ｈａｄｏｏｐファイルシステム或いは編集テーブル３０００中の各データはそれぞれキーバリューペア（Ｋｅｙ−Ｖａｌｕｅ  Ｐａｉｒ）或いはキーデータペア（Ｋｅｙ−Ｄａｔａ  Ｐａｉｒ）とされ、図３Ｄ中において、Ａｐｐの名称”Ｊｏｓｅｐｈ’ｓ  Ａｐｐ”がデータに対応するキーとされているようである。
【００４０】
［アプリケーションプログラムサーチエンジン］
図４Ａには、本発明のある例中において、アプリケーションプログラムデータサーチに用いられるシステムを提示している。図４Ａに示されるように、このシステムは、アプリケーションプログラムサーチエンジンサーバー１００ｂ、第１ユーザー１０及びアプリケーションプログラムサーバー２００を包含する。アプリケーションプログラムサーバー２００は、Ａｐｐ  １とコミュニケートして、静態データのみならず動態及び又はリアルタイムデータを提供できる。この例において、アプリケーションプログラムサーチエンジンサーバー１００ｂは、仮想マシン４００、ネットワークアプリケーションプログラム５００、アプリケーションプログラムサーチエンジン６００及び保存装置１９を包含する。仮想マシン４００はＡｐｐのホスティング（ｈｏｓｔｉｎｇ）可能なオペレーションシステムシミュレート環境とされ、言い換えると、Ａｐｐは仮想マシン４００上で、モバイル装置上と同様に実行され得る。
【００４１】
別の例において、ベアコンピュータ方法がサーバー１００ｂ或いは１００ｃ中でホスティングＡｐｐに応用される。ベアコンピュータ方法を応用するとき、プログラム（図示せず）がサーバー１００ｂ或いは１００ｃとホスティングＡｐｐの間のインタフェースとされ、それはホスティングＡｐｐからのシステムコール（ｓｙｓｔｅｍ  ｃａｌｌ）をマシンコードに翻訳し、並びにマシンコードを直接サーバー１００ｂ或いは１００ｃに送り、こうしてサーバー１００ｂ或いは１００ｃ（或いはアプリケーションプログラムサーバー２００）とホスティングＡｐｐの間の全ての通信（たとえば発送リクエスト、アプリケーションプログラムデータの受信等）を処理する。
【００４２】
ある例において、Ａｐｐ１のアプリケーションプログラムパッケージはアプリケーションプログラムサーバー２００或いはその他のデータ位置（図示せず、一例としては、たとえばＡｐｐ  Ｓｔｏｒｅ  或いはＧｏｏｇｌｅ  Ｐｌａｙ等アプリケーションプログラム商店）よりダウンロード可能で、アプリケーションプログラムサーバー２００或いはこれらのその他のデータ位置はアプリケーションプログラムパッケージを保存可能であるか、このアプリケーションプログラムパッケージのダウンロードリンクを提供する。
【００４３】
ある例において、仮想マシン４００は、アプリケーションプログラムパッケージを仮想マシン４００にインストールするために用いられる第１モジュール（或いはプログラム）４０２を包含する。ここにおいて、仮想マシン４００はさらに、Ａｐｐ１を実行するための第２モジュール（或いはプログラム）４０４を具えている。第２モジュール４０４は連続して或いは周期的にＡｐｐ１を実行できる。ある例において、もし一つより多くのＡｐｐ１が仮想マシン４００で作動するなら、第２モジュール（或いはプログラム）４０４はそれ自身が設定する策略或いは規則により、順に、ランダムに、或いは並行して全てのＡｐｐを実行する。
【００４４】
ある例において、仮想マシン４００は、さらに、Ａｐｐ１を分析或いは実行するための第３モジュール（或いはプログラム）４０６を包含する。このモジュールはＡｐｐ１がどのようにアプリケーションプログラムサーバー２００と通信するかを決定する。たとえば、第３モジュール４０６はＡｐｐ１が提供する異なる機能、及び、これらの機能がどのように実行され対応するアプリケーションプログラムサーバー２００よりアプリケーションプログラムデータを取得するかを検査できる。この分析により、スクリプト（ｓｃｒｉｐｔ）４０５を編集し、自動的に、システムがＡｐｐ１を実行し、アプリケーションプログラムデータを発生する。
【００４５】
図５Ａ〜図５ＥはＡｐｐ１のユーザーインターフェースの例である。この例において、図５Ｂ中に示される物品（たとえば、９０−１）が接触されるかクリックされるとき、Ａｐｐ１は関係するアプリケーションプログラムサーバー２００に向けてデータリクエストの機能を提供できる。ここにおいて、第３モジュール４０６は該ユーザーインターフェースを分析し、物品９０−１〜９０−５の位置及び機能を武運席し、スクリプト４０５は実行されてＡｐｐ  １のユーザーの行為、たとえば、物品９０−１に対する接触或いはクリックをシミュレートし、アプリケーションプログラムサーバー２００に向けてデータをリクエストする。もう一つの例では、第３モジュール４０６がＡｐｐ１を分析するとき、スクリプト４０５をアプリケーションプログラムサーチエンジンサーバー１００ｂ（或いは第３モジュール）に書き込む。さらにまた別の例では、スクリプト４０５はアプリケーションプログラムサーチエンジンサーバー１００ｂの保存装置１９に保存可能であり、並びにＡｐｐ１が分析されるとき、スクリプト４０５は第３モジュール４０６に伝送される。
【００４６】
別の実施例において、図４Ｉに示されるように、スクリプト４０５、第３モジュール４０６、第２モジュール４０４及び第１モジュール４０２はロボットモジュール６５０に整合される。ロボットモジュール６５０は人類行為をシミュレートするのに用いられ、真実の人類と同様にＡｐｐを実行できる。また別の実施例では、ロボットモジュール６５０は人類ユーザーの命令を監視及び記録して、どのようにＡｐｐを操作するかを学習又は記録する。たとえば、ロボットモジュール６５０はユーザーの入力記録を監視してそのこのＡｐｐを操作する行為の特徴を学習又は記録する。また別の実施例では、ロボットモジュール６５０は画像認識演算法を利用してＡｐｐのグラフィックユーザーインターフェース（ＧＵＩ）を分析できる。
【００４７】
別の例において、画像認識演算法は、光学文字認識（ｏｐｔｉｃａｌ  ｃｈａｒａｃｔｅｒ  ｒｅｃｏｇｎｉｔｉｏｎ，ＯＣＲ）演算法を包含し、ＯＣＲ演算法を使用するとき、ＡｐｐのＧＵＩ及びその中のキー、ワード、ラインセグメント、ページ及びウインドウ等の物品は分析され認識され、並びにこれにより、ロボットモジュールにより特定の操作動作が実行される。
【００４８】
別の例では、ロボットモジュールはランダムサーチ演算法を利用してＧＵＩを分析し、ランダムサーチ演算法はロボットモジュールが随時サーチする（たとえば、ユーザーインターフェース上の任意の位置の任意の入力イベントたとえば、タッチ、クリック、スライド、ドラッグ等）か、Ａｐｐを起動するＧＵＩを随時サーチし、たとえば、ランダムの方式でスクリーン上の画素においてＧＵＩをサーチ或いは起動する。もしＧＵＩの特定の画素或いは画素位置が、このランダムサーチ演算法に基づきアプリケーションプログラムデータを発生するなら、すなわち、ロボットモジュールはマシン学習方法（ｍａｃｈｉｎｅ  ｌｅａｒｎｉｎｇ  ｍａｎｎｅｒ）等の方式を利用してこの分析を学習し並びに記録する。
【００４９】
仮想マシン４００はさらに第４モジュール（或いはプログラム）４０８を包含し、それはアプリケーションプログラムデータをデータベース８８８或いは保存装置１９（或いはアプリケーションプログラムサーチエンジンサーバー１００ｂに接続されたその他の任意の保存装置）に保存するのに用いられる。
【００５０】
本発明の別の実施例は以下のとおりである。Ａｐｐ１は第２モジュール４０４により仮想マシン４００において実行され、仮想マシン４００中の第３モジュール４０６はＡｐｐ１を分析するのに用いられる。続いて、スクリプト４０５が実行されてＡｐｐ１が活動を発生し、この活動は、アプリケーションプログラムサーバー２００よりアプリケーションプログラムデータをリクエストすることを包含し、これにより、発送されたアプリケーションプログラムデータはデータベース８８８に収集並びに保存される。このほか、Ａｐｐ  １自身もアプリケーションプログラムデータを発生可能で、Ａｐｐ自身より発生したアプリケーションプログラムデータはデータベース８８８に収集並びに保存される。これから分かるように、アプリケーションプログラムサーチエンジンに収集され保存されたアプリケーションプログラムデータは、アプリケーションプログラムサーバー２００が伝送したデータとされ得るほか、Ａｐｐ１自身が発生したデータとされ得る。本発明のこの実施例においては、遠方ユーザー２０が、ユーザーインターフェース１３１ａのフィールド５０２を介してサーチ命令を入力し、並びにサーチボタン（或いはサブミッションキー）５２２を押すと、該サーチ命令に関係するデータに対するサーチリクエストが発生する。アプリケーションプログラムサーチエンジン６００が該サーチリクエストを受け取ると、データベース８８８中で、サーチリクエストに関係するアプリケーションプログラムデータに対してサーチが実行される。もし関係するデータが見つけ出されれば、アプリケーションプログラムサーチエンジン６００は該データ、関係Ａｐｐのリスト、一つ或いは複数の、これら関係Ａｐｐと関連を有するデータリンク、或いは一つ或いは複数の、これら関係Ａｐｐと関連を有するアプリケーションプログラムパッケージのダウンロードリンクのサーチ結果を発生する。続いて、ネットワークアプリケーションプログラム５００がサーチ結果を遠方ユーザー２０に伝送する。
【００５１】
図６Ａ〜図６Ｃには一部サーチ結果の例が提示されている。アプリケーションプログラムサーチエンジン６００が一つより多くの関係アプリケーションプログラムデータを探し出す。これらアプリケーションプログラムデータのリンクは、これらアプリケーションプログラムデータのＡｐｐのダウンロードパス、或いはアプリケーションプログラムデータ自身を包含し、すなわち、それがダウンロードされるか、推薦されるか或いは評価の数字により（或いはこれら数字により演算された順序値の大小）により表示され並びに順に配列される。ある例において、図３Ａ或いは図３Ｂを参照されたいが、これらのダウンロード、推薦或いは評価された数字もデータベース８８８に保存され、アプリケーションプログラムサーバーからのアプリケーションプログラムデータもまた保存装置１９中に保存されてアプリケーションプログラムサーチエンジン６００によるサーチに供される。
【００５２】
図４Ｂは本発明の別の実施例を提示する。図４Ｂ中のネットワークは図４Ａ中のネットワークと類似しているが、その違いは仮想マシン４００がモバイルオペレーションシステム中においてサーバー１００ｅをシミュレートすることだけである。このサーバー１００ｅはアプリケーションプログラムサーチエンジンサーバー１００ｂ内に配置されたアプリケーションプログラムサーチエンジン６００の外に分離されている。別の例においては、複数のサーバーが単一モバイルオペレーションシステムシミュレートサーバー１００ｅとして使用され（以下に、複数のモバイルオペレーションシステムシミュレートサーバーと称する）、複数のＡｐｐを実行するか或いは複数のアプリケーションプログラムサーバーからの大量のアプリケーションプログラムデータを処理するとき、それはより良好な表現を発生することができる。
【００５３】
ある例においては、ネットワークアプリケーションプログラム５００は、ネットワークアプリケーションプログラムサーバー１００ａ中に配置され、このネットワークアプリケーションプログラム５００は、アプリケーションプログラムサーチエンジンサーバー１００ｂ内に配置されたアプリケーションプログラムサーチエンジン６００の外に配置されている。より効率的に大量のユーザーにサービスできるように、複数のサーバーが一つの単一のネットワークアプリケーションプログラムサーバー１００ａ（以下、複数のネットワークアプリケーションプログラムサーバーと称する）或いは単一のアプリケーションプログラムサーチエンジンサーバー１００ｂ（以下、複数のアプリケーションプログラムサーチエンジンサーバーと称する）に整合される。上述の複数のネットワークアプリケーションプログラムサーバー或いは複数のアプリケーションプログラムサーチエンジンサーバーは、一つ或いは複数のロードバランスサーバーが前端に組み合わされることで、ユーザーのサーチリクエストをより良好に処理できる。より効率的に保存容量を利用し、及び保存装置或いはデータベースにアクセス或いはサーチするときにより速い反応時間を達成できるように、図４Ａ中に示されるアプリケーションプログラムサーチエンジンサーバー１００ｂ中の保存装置１９は、アプリケーションプログラムサーチエンジンサーバー１００ｂの外に設置された保存装置１９ｘに置換され得て、この保存装置１９ｘはすなわち、アプリケーションプログラムサーチエンジンサーバー１００ｂに接続される。ある例において、保存装置１９ｘは図４Ａ中に示されるアプリケーションプログラムサーチエンジンサーバー１００ｂが有する保存装置１９よりも、大きな容量を有する。別の例において、複数の保存装置１９ｘはアレイ形式を以て配置され、これによりより大きな容量を、モバイルオペレーションシステムシミュレートサーバー１００ｅ或いはアプリケーションプログラムサーチエンジンサーバー１００ｂの使用に供する。別の例において、保存装置１９ｘはファイル管理サーバー１００ｄ中に配置され得る。
【００５４】
同様に、図４Ａ中のデータベース８８８は図４Ｂ中のデータベース８８８’に置換され得る。データベース８８８’はデータベース管理サーバー或いは保存装置１９ｘに接続される。ある実施例において、データベース８８８’は複数のデータベースが整合されてなる単一データベースであり、より速い反応時間を有し得る。
【００５５】
図４Ｃは本発明のある例中の別の種類のネットワーク実施例を示す。アプリケーションプログラムパッケージはモバイルオペレーションシステムを搭載した演算装置５０００において実行され得る。このほか、演算装置５０００はコンピュータオペレーションシステムを搭載して、たとえば、ネットワークＡｐｐ、拡張プログラムとプラグインなどのアプリケーションプログラムをホスティングできる。ある例において、第１ユーザー１０がＡｐｐ１を操作するとき、Ａｐｐ  １はアプリケーションプログラムサーバー２００に向けてアプリケーションプログラムデータをリクエストするか或いはそれ自身よりデータを発生することができる。アプリケーションプログラムサーチエンジンサーバー１００ｂは前述のアプリケーションプログラムデータを収集し、並びにアプリケーションプログラムサーチエンジンサーバー１００ｂに接続された保存装置中に保存する。ある例においては、演算装置５０００はスマートフォン１０ａ、タブレットＰＣ１０ｂ、ノートブック型コンピュータ１０ｃ或いはパーソナルコンピュータ１０ｄとされ得る。
【００５６】
別の例において、アプリケーションプログラムサーチエンジンサーバー１００ｂは、さらに仮想マシン４００を包含し得て、この仮想マシン４００は、モジュール／プログラム４０４を包含して演算装置５０００上でＡｐｐ  １を実行する。別の実施例において、仮想マシン４００は一つのモジュール４０６を包含し、スクリプト４０５を作動し演算装置５０００上でＡｐｐ  １を実行する。スクリプト４０５は保存装置内に保存されるか、モジュール４０６内に嵌め込まれる。モジュール４０６はまたアプリケーションプログラムデータを保存装置１９に保存するか、或いはその他のアプリケーションプログラムサーチエンジンサーバー１００ｂに接続された保存装置中に保存するのに用いられ得る。
【００５７】
図４Ｄは本発明の一つの例中のもう一種のネットワーク実施例を提示する。アプリケーションプログラムデータはアプリケーションプログラムサーバー２００或いは第１ユーザー１０より直接アプリケーションプログラムサーチエンジンサーバー１００ｂに伝送され、アプリケーションプログラムサーチエンジンサーバー１００ｂはデータを保存装置１９或いはその他の保存装置に保存する。別の例においては、アプリケーションプログラムサーバー２００は、直接アプリケーションプログラムデータを保存装置に伝送し、並びにアプリケーションプログラムデータが該保存装置中に保存されるようにする。アプリケーションプログラムサーチエンジンサーバー１００ｂはこの保存装置をサーチして、サーチ命令に関係するデータを探し出す。
【００５８】
図４Ｄに示される実施例は、Ａｐｐを実行する必要なく、アプリケーションプログラムサーバーよりアプリケーションプログラムデータを取得でき。たとえば、プログラムを使用してアプリケーションプログラムサーバー２００にビルトイン或いは接続し、本発明中のアプリケーションプログラムサーバー２００に、それが保存しているアプリケーションプログラムデータを移転或いは提出させる。このプログラムはアプリケーションプログラムサーバー２００と通信できるスクリプト或いは任意のソフトウエアコードとされる。アプリケーションプログラムサーバー２００中のアプリケーションプログラムデータは移転され得る。アプリケーションプログラムサーチエンジンサーバー１００ｂはユーザーサーチ命令を受け取ると、保存装置中のサーチ命令と関係のあるデータをサーチする。本技術領域の通常の知識を有する者であれば、本発明はここに提示されている例に限定されず、その他の方法で、Ａｐｐを実行しない条件下で、アプリケーションプログラムサーバー２００よりデータを収集することができ、これらの方法も本発明の及ぶ範囲の内にある。たとえば、アプリケーションプログラムサーチエンジンサーバー１００ｂにプログラムをビルトインして、アプリケーションプログラムサーバー２００よりアプリケーションプログラムデータにアクセス及び又は取得することができる。ここにおいて、該プログラムは、ただアプリケーションプログラムサーバーのＵＲＬ／ＵＲＩを知るだけで、アプリケーションプログラムサーバー２００よりアプリケーションプログラムデータを受け取ることができる。別の例においては、アプリケーションプログラムサーチエンジンサーバー１００ｂのようなサーバーが、スクリプトを実行してＡｐｐ１を分析し、関係するアプリケーションプログラムサーバー２００がどれか或いはどこにあるかを判断し、これによりアプリケーションプログラムデータにアクセスするかそれを取得する。
【００５９】
上述の実施例中、図４Ｅに示されるように、データ収集モジュール或いは構造３０００が、アプリケーションプログラムサーチエンジンサーバー１００ｂに配置されて、アプリケーションプログラムサーバー２００より直接伝送されたアプリケーションプログラムデータを分析並びに処理する。該データ収集構造３０００はＡｐｐの機能をシミュレートでき、これにより、アプリケーションプログラムサーバー２００が提供するアプリケーションプログラムデータを処理並びに理解できる。たとえば、もしアプリケーションプログラムサーバー２００が伝送するアプリケーションプログラムデータが分離したパッケージであれば、該データ収集構造は、データパッケージを収集し並びにそれを処理して意義を有するアプリケーションプログラムデータとなしてサーチされ得るようにする。さらに述べると、データ収集構造もアプリケーションプログラムデータを分析して、必要なアプリケーションプログラムデータを認識し並びに不必要な部分を排除することができ、また、これらのアプリケーションプログラムデータを分類或いは組み合わせることもできる。
【００６０】
ここで述べるプログラム或いはモジュールは、前述のサーバー中のプロセッサ（たとえばアプリケーションプログラムサーチエンジンサーバー１００ｂ中のプロセッサ１８）により実行される。プログラム或いはモジュールのレジスタファイルは、プロセッサのキャッシュ又はサーバーのメモリ（たとえば、アプリケーションプログラムサーチエンジンサーバー１００ｂ中のメモリ１２）中に保存され得る。しかし、本技術領域の通常の知識を有する者であれば、本発明中のプログラム或いはモジュールはまた実体物品、たとえば、一つのチップ或いは一つの回路とされ得ることを理解できる。
【００６１】
［Ｗｅｂクローラ／スパイダー］
ある例において、Ｗｅｂクローラ（スパイダー）がアプリケーションプログラムパッケージ、アプリケーションプログラムデータ、Ａｐｐと関係する情報（たとえば記述）或いはアプリケーションプログラムリンクを収集するのに用いられる。アプリケーションプログラムサーチエンジンサーバー１００ｂ或いはオペレーションシステムシミュレートサーバー１００ｅはＷｅｂクローラが収集したＡｐｐをダウンロードでき、並びにサーバー集団１００がこれらのＡｐｐを実行する。
【００６２】
［情報サーチ］
情報サーチシステムがアプリケーションプログラムサーバー或いはＡｐｐ自身が提供するアプリケーションプログラムデータ上において応用され得て、サーチリクエストに応答する。その目的は、データをオーガナイズ並びに編成して意義のある分類となしてサーチ効率をアップすることにある。
【００６３】
［Ａｐｐブラウザ］
Ａｐｐは遠方サーバー或いはクラウドにおいて実行可能で、且つアプリケーションプログラムサーバーからのアプリケーションプログラムデータはクライアント側に伝送されてＡｐｐブラウザ上に表示され得る。ユーザーはＡｐｐブラウザを通してＡｐｐを操作でき、現地でＡｐｐをインストールする必要がない。
【００６４】
［アプリケーション例］
図５Ａから図５Ｅは、本発明の一例中のＡｐｐのユーザーインターフェースの例が示される。図５Ａ中、Ａｐｐは一つの、通常イメージを包含するウェルカム画面（或いは起動ページ）９８８を具え、このウェルカム画面９８８はＡｐｐが起動或いはオンされた後に表示される。
【００６５】
図５Ｂから図５Ｅを参照されたい。このユーザーインターフェースはコンテナー（ｃｏｎｔａｉｎｅｒ）９００を有し、コンテナー９００中に表示される内容は変化可能で、且つその選択したタブ（Ｔａｂ）（たとえば、コンテナー９００底部のタブ９１８、９２０、９２２及び９２４）に基づき定められる。たとえば、図５Ｂに示されるのは、コンテナー９００の、タブ９１８が選択されたときのページレイアウトである。レイアウトは、動作バー或いは横幅９２６（さらにユーザーにログインさせるＡｐｐのリンクを包含し得る）、背景或いは広告９１０（たとえば、ビデオ、アニメーション、フラッシュのスライド背景等）を包含する。物品９０−１から９０−５は選択性を有するイメージ９０−１ｐから９０ー５ｐを包含し得る。ある例においては、物品９０−１から９０−５はネットワークアプリケーションプログラムサーバーに接続され、ＨＴＴＰ方法を利用してアプリケーションプログラムサーバーより動態、即時性のアプリケーションプログラムデータ（たとえば、「ＰＯＳＴ  http://example.com/apiPurpose.php」或いは「ＧＥＴ  http://example.com/apiPurpose.php?mode=GetData&ID=C00001」等「ＰＯＳＴ」、「ＧＥＴ」方法」をフェッチ（ｆｅｔｃｈ）する。ここで、Ａｐｐがアプリケーションプログラムサーバーに向けてアプリケーションプログラムデータをリクエストするとき、アプリケーションプログラムサーバーはＪＳＯＮ形式或いはＸＭＬ形式で応答し、たとえば、{"status"OK,"result":{"name":"Happy Cafe","display":"1","addr":"3F.,No.18-6,Jinhua St.,Taipei,Taiwan,R.O.C","desc":"This is the Introduction of Happy Cafe","shophours":"0800-2200","openweek":"0111110","shoptel";"886-33433997","shopurl": "http://anotherexample.com","shopimage":[{"http://example.com/images/90-1p.jpg"}]}})。本発明のある例において、アプリケーションプログラムサーバーがフェッチ（ｆｅｔｃｈ）するアプリケーションプログラムデータは、ワンビュー（ｏｎｅ  ｖｉｅｗ）アプリケーションプログラムのリンク、アプリケーションプログラムデータのリンク、アプリケーションプログラムパッケージのダウンロード可能なリンク、及びＡｐｐ或いはアプリケーションプログラムデータと関係のある文字、イメージ、ビデオ及び音声を包含し得る。
【００６６】
［アプリケーションサーチエンジンが提供するユーザーインターフェースの例］
図６Ａから図６Ｃは本発明の別の例において、ネットワークアプリケーションプログラムサーバー１００ａ或いはアプリケーションプログラムサーチエンジンサーバー１００ｂがユーザー（たとえば第２ユーザー）に提供するユーザーインターフェースの例を示す。図６Ａから図６Ｃのユーザーインターフェースは、コンピュータ、ノートブック型コンーピュータ、タブレットコンピュータ、スマートフォン或いはその他のモバイル装置のスクリーンに表示され得る。図６Ａを参照されたい。キーワードと関係のあるＡｐｐはサーチ結果として、そのアプリケーションプログラムアイコン２１０４、２１０８或いは２１１２、及びアプリケーションプログラム名称或いは記述２１０６、２１１０或いは２１１４を表示可能である。図６Ｂを参照されたい。サーチ結果はリスト形式でＡｐｐ内容２１１８、２１２０或いは２１１２をリストアップするか、或いはこれらの内容のリンクを表示する。図６Ｃを参照されたい。サーチ結果は、マップ２１２４上に表示可能で、たとえば、サーチ結果のアプリケーションプログラムアイコン２１０４、２１０８及び２１１２が、このマップ２１２４に表示される。
【００６７】
［ネットワークＡｐｐ、拡張プログラムとプラグイン］
ネットワークＡｐｐ、拡張プログラムとプラグインに基づく動作方法は、Ａｐｐに類似し、本発明はまた、これにより一種のアプリケーションプログラムサーチの方法を提示する。既知のネットワークＡｐｐ、拡張プログラムとプラグインは、スマートデバイス或いは演算装置（たとえばパーソナルコンピュータ）上で実行され、パーソナルコンピュータ上でアプリケーションプログラムを作動させるとき、これらのアプリケーションプログラムのユーザーは、指定されたアプリケーションプログラムサーバーを通し、これらアプリケーションプログラムサーバーにてタスクを実行すると同時に通信する。たとえば、Ｃｈｒｏｍｅブラウザの拡張プログラム「Ｔｈｅ  Ｗｅａｔｈｅｒ  Ｃｈａｎｎｅｌ」を使用するとき、この拡張プログラムはユーザーの所在位置（或いはユーザーにより入力されるその所在位置）を獲得し、続いて、この拡張プログラムに接続されたアプリケーションプログラムサーバーが、前述の所在位置の天気予報をユーザーのコンピュータ上のブラウザに伝送する。この部分のメカニズムはＡｐｐユーザーがアプリケーションプログラムサーバーに向けてデータをリクエストするのに類似する。
【００６８】
［スケジュール］
スケジューラーはさらに本発明のシステムを応用し、スケジューラーの主要な機能は、Ａｐｐの実行方式を按配し決定することにある。スケジューラーは本発明中で実施される任意のサーバー或いはデータベースのスクリプト、コード或いはプログラムとされ得る。スケジューラーはスケジュールサーバー、仮想マシン或いはロボットモジュールとされ得て、それはスケジュール策略に基づきＡｐｐを実行する。
【００６９】
ある実施例において、一つ或いは複数のスケジューラーが仮想マシン或いはサーバーが実行するＡｐｐを調整するのに用いられる。別の実施例において、スケジューラーはロボットモジュールがＡｐｐを実行するのに用いられる。スケジューラーの本発明中の用途は、効率的にシステムリソースを分配及び利用し、それにより全体のシステム性能を高める目標を達成することにある。たとえば、図４Ｊ中、スケジューラー６６０はＡｐｐを実行できるように、それは協調サーバー（たとえば、アプリケーションプログラムサーチエンジンサーバー１００ｂ）、第１ユーザー１０の電子装置、ネットワーク３０、アプリケーションプログラムサーバー２００及び第２ユーザー２０の電子装置に用いられ得る。またたとえば、スケジューラー６６０はシステム部品の要求に基づき、たとえば、必要なリソース量、作動中のタスク数、待機時間、優先順序、データ相互依存性等により、協調する。スケジューラー６６０はまた、本発明において提示されている例中のサーバー（たとえば、アプリケーションプログラムサーチエンジンサーバー１００ｂ）中に設置可能である。
【００７０】
スケジューラーはスケジュール策略に基づいて、システム中の複数の構成要素に対してスケジュールを実行する。スケジュール策略は、Ａｐｐの実行方式を定義し、たとえば、該策略は、規則を構築してＡｐｐが、ロボットモジュール、仮想マシン或いはサーバーに実行される順序を規定する。スケジュール策略はまた、Ａｐｐの実行頻度を定義し、システムにＡｐｐが実行される回数及び毎回の間隔時間を知らせ、それはさらに、Ａｐｐの実行時刻、頻度、優先順序及び実行時間長さを管理する。スケジュール策略は、データベース中に保存され得る（たとえば、データベース８８８或いは８８８’）。
【００７１】
ある例において、スケジューラーは、ロボットモジュール、仮想マシン或いはサーバーの負荷が比較的低いときに、Ａｐｐの実行頻度を増加する。反対に、スケジュール策略はまた、スケジューラーが負荷が比較的高いときに実行頻度を減らすものとされ得る。
【００７２】
Ａｐｐの実行上の順序と優先権も、スケジュール策略により定義され、たとえば、スケジュール策略は、ＦＩＦＯスケジュール演算法、最短作業優先スケジュール演算法、優先権スケジュール演算法、循環スケジュール演算法、マルチレイヤーキュースケジュール演算法、マルチレイヤーフィードバックキュースケジュール演算法及び又はリアルタイムスケジュール演算法を包含し得る。システムの条件及びリソースを了解し、並びにＡｐｐのタイプ及び特性を確認することは、どのようなスケジュール演算法がより適合するかを判断する助けとなる。たとえば、スケジュール策略は動態で、ステータス（ｓｔａｔｕｓ）を各Ａｐｐに分派し、Ａｐｐの実行上の優先順序を決定する。特に、最初にＡｐｐを実行した後、各Ａｐｐのアイドル時間或いは消耗時間は記録され、それによりスケジューラーが該ステータスに基づき、動態でＡｐｐの実行順序を切り換える。
【００７３】
スケジュール策略は、人工知能或いは手動の方式で発生する。人工知能の方式において、スケジューラーはハイレベル知能を有してＡｐｐの特性を学習し、Ａｐｐの特性は、Ａｐｐの実行頻度或いはタイプ等（たとえば、分類）を包含し得る。Ａｐｐのタイプ或いは分類を学習することは、スケジューラーが該Ａｐｐの実行頻度を決定するのを助ける。たとえば、ニュース類のＡｐｐは、ゲーム類のＡｐｐよりも、より高い実行頻度が必要とされ、なぜなら、ニュース類のＡｐｐは、通常、頻繁に内容が更新されるためである。これにより、もしニュース類Ａｐｐが実行されるなら、ロボットモジュール、仮想マシン或いはサーバーのいずれに実行されようと、スケジューラーはいずれも動態でその実行上の頻度或いは優先順序をアップする。反対に、スケジューラーは動態で明らかに更新の少ないＡｐｐの実行頻度或いは優先順序を下げてもよい。
【００７４】
手動の方式では、スケジュール策略は、手動の方式で入力される。たとえば、システムの管理者は、手動でＡｐｐの実行順序、優先権或いは頻度を命令することができる。
【００７５】
［Ａｐｐ安全検査モジュール］
開発者とユーザーにとって、モバイルソフトの安全は、すでに今日の重要な議題となっている。市場のＡｐｐの数量が拡大するにつれ、Ｗｅｂクローラが見つけ出すＡｐｐが安全でウイルスを有さないようにするため、信頼できる安全検査方法が必要である。
【００７６】
ある実施例において、たとえば、図４Ｋに示される例のように、Ａｐｐ安全検査モジュール６７０が配置され、それは、複数の安全レベルに基づき、ソフトウエアアプリケーションプログラム或いはＡｐｐの安全性を検査する。さらに正確に述べると、アプリケーションプログラムの処理要求により、異なる安全レベルを定義し、且つ特定安全レベルにマッチしないアプリケーションプログラムサーバー２００をブロックするのに用いることができる。本発明の例において、Ａｐｐ安全検査モジュール６７０は仮想マシン４００の外に設置されて、サーバー（アプリケーションプログラムサーチエンジンサーバー１００ｂ）の内に位置する。
【００７７】
別の実施例において、Ａｐｐ安全検査モジュール６７０は、Ａｐｐに対する安全認証を提供し、Ｗｅｂクローラを通して取得したＡｐｐは、Ａｐｐ安全検査モジュール６７０によりそれが各種の異なる安全レベル、たとえば、レベル１、レベル２、レベル３、レベル４及びレベル５の、これら５つの安全レベルの一つをパスできるかを検査する。
【００７８】
Ａｐｐ安全検査モジュール６７０は、各一つの安全レベル中において、一組の安全認証メカニズムを包含する。安全認証メカニズムは、通信認証、ＡＰＩコールのリストと追跡により、悪意のプログラムを検出し、及び悪意のシステム行為を検出する。
【００７９】
［単一／複数の仮想マシンのメカニズム］
前述の図面（たとえば、図４Ａ〜図４Ｋ）中、一つのスケジューラーを具えた単一の仮想マシンが、Ａｐｐを実行するのに用いられるが、その他の実施例中においては、複数の仮想マシンが同一のサーバー上で、複数のＡｐｐを同時に実行するのに用いられ得る。これにより、これらＡｐｐのアプリケーションプログラムデータは本発明に提示されるサーバー中において同時に発生し、処理され及び又は保存され得る。
【００８０】
図７Ａ〜図７Ｈは、本発明の実施例において、単一の仮想マシン或いは複数の仮想マシンを使用しＡｐｐを実行するのを示す。
【００８１】
図７Ａに示されるように、凡例システム７００中には、サーバー７０１及び一つ或いは複数のアプリケーションプログラムサーバー２０１、２０２を包含する。サーバー７０１及びアプリケーションプログラムサーバー２０１、２０２は、ネットワーク３０を介して、接続／通信できる。アプリケーションプログラムサーバー２０１、２０２は、アプリケーションプログラムサーバー２００と類似の機能を有する。アプリケーションプログラムサーバー２０１、２０２は、それぞれ異なるＡｐｐのアプリケーションプログラムデータを分配処理するか、同じＡｐｐの異なる実行役とされる。たとえば、アプリケーションプログラムサーバー２０１は、Ａｐｐ「Ａｐｐ ｋｋ」の開発者がＡｐｐ ｋｋと関係するアプリケーションプログラムデータを特定分配処理し、アプリケーションプログラムサーバー２０１は、Ａｐｐ「Ａｐｐ ｊｊ」の開発者がＡｐｐ ｊｊと関係するアプリケーションプログラムデータを特定分配処理する。ネットワーク３０はサーバー７０１ａとアプリケーションプログラムサーバー２０１、２０２の間のデータ伝送の媒介の役割を演じる。
【００８２】
サーバー７０１ａは、図４Ａ〜図４Ｋに示されるサーバー１００ｂに基づき設計され、余分の機能を有するものとされてもよい。サーバー７０１ａはスケジューラー７１０、仮想マシン管理者７２０、保存装置７４０、ラッパー７５０、アプリケーションプログラムパッケージ保存モジュール７６０及び一つ或いは複数の仮想マシン８８、８９を具え得る。サーバー７０１はまた、選択的に、配置可能なソフトウエアデファインドネットワーク（ＳＤＮ）７３０を包含し得る。
【００８３】
仮想マシン管理者７２０は、スケジューラー７１０の作用下で、仮想マシン８８、８９を管理するのに用いられる（たとえば、一つの「Ｃｔｒｌ ｓｍ５」の命令が仮想マシン８９をコントロールし、一つの「Ｃｔｒｌ ｓｍ４」の命令が仮想マシン８８をコントロールする。仮想マシン管理者７２０はサーバー７０１ａ中の仮想マシンの発生、削除、起動及び又は終了を管理できる。たとえば、Ａｐｐがサーバー７０１ａ上で起動するとき、スケジューラー７１０は仮想マシン管理者７２０に命令してサーバー７０１ａにあって一つの新たな仮想マシンを発生させてこのＡｐｐを処理させる。別の実施例において、Ａｐｐがサーバー７０１ａ上で終了するとき、スケジューラー７１０は仮想マシン管理者７２０に命令してサーバー７０１ａ中の、前述の終了したＡｐｐを処理するのに用いられる仮想マシンを削除或いはクローズさせることができる。仮想マシン管理者７２０はスケジューラー７１０のスケジュール策略に基づいて動作する。
【００８４】
一部の実施例において、仮想マシン管理者７２０は前述のロボットモジュールの一部分として実施され得る（たとえば、図４Ｉ中の、ロボットモジュール６５０の一部分）。
【００８５】
本発明の一部の実施例中、スケジューラー７１０はプログラムコード或いはスクリプトの形式でサーバー７０１ａ中に保存され得る。
【００８６】
ある例において、ラッパー７５０が複数の入力イベント（ｉｎｐｕｔ  ｅｖｅｎｔ）及び又はＡｐｐの作動指示に用いられ、該Ａｐｐを直接サーバー７０１ａにおいて実行できるようにする。入力イベントは、ハンドジェスチャーイベント、たとえば、Ａｐｐを作動させるための接触、移動或いは振動等の動作を包含し得る。
【００８７】
ある例において、ラッパー７５０がＡｐｐとランナーＡＰＩをパッケージするのに用いられ得て、Ａｐｐを該ランナーＡＰＩの補助の下で、サーバー７０１ａにおいて実行させる。この例中、該Ａｐｐは該ランナーＡＰＩとの結合の前には、実行不可とされ得て、これは、該Ａｐｐが、特定の形式／プログラム言語を使用するため、一つ或いは複数のサーバー７０１ａ上のオペレーションシステム中で実行できないためであり（たとえば、ｉＯＳ環境中で実行されるｉｐａファイルは、Ａｎｄｒｏｉｄ環境中では、インストール／実行できず、先に該ランナーＡＰＩとパッケージして、ｉＯＳと関係する内容を入出力時にＡｎｄｒｏｉｄが受け入れられる形式へと翻訳／変換されなければならない）。ランナーＡＰＩの補助により、Ａｐｐはサーバー７０１ａが使用するオペレーションシステム中で実行できるようになり。一部の例において、ラッパー７５０がパッケージするＡｐｐは、前述のＷｅｂクローラより来るものとされる。
【００８８】
アプリケーションプログラムパッケージ保存モジュール７６０は、サーバー７０１ａがＡｐｐを保存するために用いられる。たとえば、それは、ＡＰＰ １１、ＡＰＰ １１、ＡＰＰ １１、ＡＰＰ １２、ＡＰＰ １ｍ、ＡＰＰ ２１、．．．、ＡＰＰ ｊｊ、ＡＰＰ ｎ１、ＡＰＰ ｎ２、．．．、及びＡＰＰ ｎｍ等のＡｐｐを保存できる。
【００８９】
保存装置７４０はサーバー７０１ａ上で実行される一つ或いは複数のＡｐｐが発生するアプリケーションプログラムデータを保存するのに用いられ得る。
【００９０】
本発明のある例において、もし仮想マシン８８が仮想マシン管理者７２０により発生し、並びに特別にＡＰＰ ｋｋを実行するために用いられるなら、この仮想マシン８８はまた、ハイパーバイザー（ｈｙｐｅｒｖｉｓｏｒ）８８ａを包含し得て、それは動態で仮想マシン８８のリソースを管理するのに用いられ得る。たとえば、ハイパーバイザー８８ａはサーバー７０１ａに向けて仮想マシン８８のリソースの使用をリクエストするか、或いは仮想マシン８８が釈放するリソースを、サーバー７０１ａに帰還させる。ハイパーバイザー８８ａは、オペレーションシステムＯＳ ｋｋを包含し得て、このオペレーションシステムＯＳ ｋｋは、少なくとも一つのＡｐｐ管理者ＳＭ ｋｋ及び代理プログラムＰｒ ｋｋを包含し得る。Ａｐｐ管理者ＳＭ ｋｋはインストールコントローラＩＣ ｋｋを包含し得て、それはＡＰＰ ｋｋの身分Ａｐｋ ｉｄ ｋｋを使用して、ＡＰＰ ｋｋをアプリケーションプログラムパッケージ保存モジュール７６０よりインストールする。該代理プログラムＰｒ ｋｋはＡＰＰ ｋｋのアプリケーションプログラムデータを発送或いは受信するのに用いられ得る。このほか、サーバー７０１ａ中の代理プログラムは、前述のデータ収集代理サーバー６１０の役割を演じることができる。
【００９１】
同様に、仮想マシン８９は、仮想マシン管理者７２０より発生し、特にＡｐｐ、すなわちＡＰＰ ｊｊを実行するのに用いられる。仮想マシン８９はハイパーバイザー８９ａを包含し得て、それは動態で仮想マシン８９のリソースを管理するのに用いられ得る。たとえば、ハイパーバイザー８９ａはサーバー７０１ａに向けて仮想マシン８９のリソースの使用をリクエストするか、或いは仮想マシン８９が釈放するリソースを、サーバー７０１ａに帰還させる。ハイパーバイザー８９ａは、オペレーションシステムＯＳ ｊｊを包含し得て、このオペレーションシステムＯＳ ｊｊは、少なくとも一つのＡｐｐ管理者ＳＭ ｊｊ及び代理プログラムＰｒ ｊｊを包含し得る。Ａｐｐ管理者ＳＭ ｊｊはインストールコントローラＩＣ ｊｊを包含し得て、該インストールコントローラＩＣ ｊｊは、Ａｐｐ  ＡＰＰ ｊｊをアプリケーションプログラムパッケージ保存モジュール７６０よりインストールする。
【００９２】
代理プログラムＰｒ ｊｊはＡｐｐ  ＡＰＰ ｊｊのアプリケーションプログラムデータを発送或いは受信するのに用いられ得る。
【００９３】
一部の例において、サーバー７０１ａが搭載するオペレーションシステムは、モバイル電子装置に用いられ得て、たとえば、ｉＯＳ、Ａｎｄｒｏｉｄ等とされる。
【００９４】
一部の例において、ハイパーバイザー８８ａと８９ａは、Ｌｉｎｕｘ（登録商標）オペレーションシステムのカーネルベースのバーチャライズ基礎施設とされ、たとえば、カーネルベースバーチャルマシン（ｋｅｒｎｅｌ−ｂａｓｅｄ  ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ，略称ＫＶＭ）とされ得る。
【００９５】
一部の例において、仮想マシン８８と８９は、Ｌｉｎｕｘ（登録商標）オペレーションシステム、たとえば、ＣｅｎｔＯＳ（たとえばＣｅｎｔＯＳ  ６．４）或いはＵｂｕｎｔｏを実行し得る。
【００９６】
本発明の一部の実施例中、ＳＤＮ  ７３０が仮想マシン（たとえば仮想マシン８８と８９）とこれら仮想マシンと関係するアプリケーションプログラムサーバー（たとえばアプリケーションプログラムサーバー２０１と２０２）の間のデータ伝送及び又は受信を管理するために配置され得る。コンフィギュラブル（ｃｏｎｆｉｇｕｒａｂｌｅ）ＳＤＮ  ７３０はサーバー７０１ａが提供する仮想マシンアドレス（たとえば、ＩＰアドレス）を保存し得る。アプリケーションプログラムサーバー（たとえば、アプリケーションプログラムサーバー２０１）は一つのＡｐｐ（たとえば、ＡＰＰ ｋｋ）に対して、アプリケーションプログラムデータをリクエストし、コンフィギュラブルＳＤＮ  ７３０は、前述の保存されたアドレスに基づき、該Ａｐｐを実行する仮想マシン（たとえば、仮想マシン８８）が発生するアプリケーションプログラムデータを、関係するサーバーに発送する。サーバー７０１ａが大量の仮想マシンを同時にホスティングするのに用いられるとき、コンフィギュラブルＳＤＮ  ７３０はサーバー７０１ａが効率的に仮想マシンとそれに関係するサーバーの間のアプリケーションプログラムデータの情報通信量を効率的に管理するのを助けることができる。
【００９７】
一部の例において、コンフィギュラブルＳＤＮ  ７３０は、Ｏｐｅｎ  ｖＳｗｉｔｃｈ技術により実現され得る。
【００９８】
サーバー７０１ａの動作のフローの例は以下に示されるとおりである。サーバー７０１ａがＡＰＰ ｋｋの実行準備する時、スケジューラー７１０は仮想マシン管理者７２０に仮想マシン８８を発生するよう指示する。続いて、Ａｐｐ管理者ＳＭ ｋｋはＡＰＰ ｋｋを実行してアプリケーションプログラムデータを発生する。代理プログラムＰｒ ｋｋはすなわち、アプリケーションプログラムデータを保存装置７４０に保存するか、或いはネットワーク３０を介して、アプリケーションプログラムデータをアプリケーションプログラムサーバー２０１に渡すか（また本発明の一部の実施例ではコンフィギュラブルＳＤＮ  ７３０の補助を介する）、或いは、サーバー２０１よりリクエストを受け取る。これにより、仮想マシン８８は、アプリケーションプログラムデータを発生する能力を有してアプリケーションプログラムサーバー２０１からのリクエストに応答し、並びに該アプリケーションプログラムデータをアプリケーションプログラムサーバー２０１に送る。このほか、一旦仮想マシン８８がＡＰＰ ｋｋを実行すると、ハイパーバイザー８８ａは動態で仮想マシン８８のリソースを管理し得る。
【００９９】
図７Ｂ中、サーバー７０２ａは、サーバー７０１ａに類似の方式で実現されるが、差異は僅かに、仮想マシンの代理プログラム（たとえば、Ｐｒ ｋｋとＰｒ ｊｊ）が除去され、並びに整合性代理プログラム７７０が仮想マシン中において応用されるよう改められたことにある。
【０１００】
図７Ｃにおいて、サーバー７０３ａは、サーバー７０１ａに類似の方式で実現されるが、違いは、仮想マシン（たとえば、仮想マシン８８、８９）が単一の仮想マシン７８０中に整合されたことにある。単一仮想マシン（たとえば仮想マシン７８０）は、サーバー７０３ａ中で複数のハイパーバイザー（たとえば、ハイパーバイザー８８ａと８９ａ）を管理するのにもちいらえて、仮想マシン７８０は一つ或いは複数のＡｐｐを同時に実行できる。
【０１０１】
図７Ｄにおいて、サーバー７０４ａはサーバー７０２ａと類似の方式で実現されるが、差異は、仮想マシン（たとえば、仮想マシン８８、８９）が単一仮想マシン７９０中に整合され、且つこれら仮想マシン中のハイパーバイザーも単一ハイパーバイザー８８ｃに整合されたことにある。このハイパーバイザー８８ｃはサーバー７０４ａ中の一つ或いは複数のオペレーションシステム（たとえば、オペレーションシステムＯＳ ｋｋとＯＳ ｊｊ）を同時に管理するのに用いられ得る。
【０１０２】
図７Ｅにおいて、サーバー７０１ｂは、サーバー７０１ａに類似の方式で実現されるが、差異は、ラッパー７５０がＡｐｐ管理者に移され、たとえば、ランナー（ｒｕｎｎｅｒ）７５ａと７５ｂとされることにある。ランナー７５ａは、ＡＰＰ ｋｋをランナーＡＰＩとパッケージし、ＡＰＰ ｋｋをオペレーションシステムＯＳ ｋｋにおいて実行できるようにする。ランナー７５ｂは、ＡＰＰ ｊｊをランナーＡＰＩとパッケージし、オペレーションシステムＯＳ ｊｊがＡＰＰ ｊｊを実行できるようにする。
【０１０３】
図７Ｆ中において、サーバー７０２ｂはサーバー７０２ａに類似の方式で実現されるが、差異は、ラッパー７５０がＡｐｐ管理者に移され、たとえば、ランナー７５ａと７５ｂとされることにある。
【０１０４】
図７Ｇ中において、サーバー７０３ｂはサーバー７０３ａに類似の方式で実現されるが、差異は、ラッパー７５０がＡｐｐ管理者に移され、たとえば、ランナー７５ａと７５ｂとされることにある。
【０１０５】
図７Ｈ中において、サーバー７０４ｂはサーバー７０４ａに類似の方式で実現されるが、差異は、ラッパー７５０がＡｐｐ管理者に移され、たとえば、ランナー７５ａと７５ｂとされることにある。
【０１０６】
図７Ａから図７Ｈの仮想マシンの数量に対する変更は、本発明の範囲内にある。
【０１０７】
図７Ａから図７Ｈのユニットに対する組み合わせ及び又は移動もまた本発明の範囲内にある。
【０１０８】
［データ収集モジュール］
一部の実施例において、図４Ｅに示されるデータ収集構造３０００はまた、図７Ａから図７Ｈ中に示される仮想マシン管理者（たとえば、仮想マシン管理者ＳＭ ｋｋとＳＭ ｊｊ）に配置されてもよく、アプリケーションプログラムデータを分析と処理するのに用いられる。仮想マシン管理者は前述のロボットモジュール（たとえば、図４Ｉに示されるロボットモジュール６５０の一部分）とされ得る。データ収集モジュール３０００はフック（ｈｏｏｋ）の役割を果たしてランナーＡＰＩとパッケージされたＡＰＩコール（たとえばシステムコール）を切り取り、及びＡｐｐのマシン学習方法中の行為(或いはシステムコール中より切り取ったアプリケーションプログラムデータ／内容）を記録及び分析できる。
【０１０９】
図８Ａは本発明のある実施例中において、データ収集モジュール３０００を使用して、ユーザーレベル（ｕｓｅｒ−ｌｅｖｅｌ）においてアプリケーションプログラムデータをフックするオペレーションシステムの概念図である。図８Ａに示されるように、フックサーバー８１０はサーバー１００ｂ或いは１００ｃに接続されるか設置され、並びに、フックしたアプリケーションプログラムデータを受け取りデータベース、保存装置或いはその他の前処理ツールに転送する。システム／カーネルコール８５０を介して関数ベース８４０に対してコールし、該関数ベース８４０がアプリケーションプログラムデータを受け取るときか或いはその後に、フックプログラム８２０がこのアプリケーションプログラムデータのフェッチ（ｆｅｔｃｈ）／切り取り、記録或いは分析に用いられる。
【０１１０】
図８ＡはＡｐｐ８３０の実行の過程中に、発生する相互動作の例のフローチャートである。
【０１１１】
そのうち、ステップ８０Ａでは、フックサーバー８１０がフックプログラム８２０よりそれがフェッチ（ｆｅｔｃｈ）／切り取ったアプリケーションプログラムデータを受け取る。
【０１１２】
ステップ８０１では、Ａｐｐ  ８３０が関数ベース８４０をコールし、遠方アプリケーションプログラムサーバー２００に向けてアプリケーションプログラムデータの請求を行なう。
【０１１３】
ステップ８０２では、フックプログラム８２０が関数ベース８４０をコールし（たとえば、一つのフックＡＰＩをコールして、関数ベース８４０が受け取ったアプリケーションプログラムデータをフックする）、システムコール８５０が関数ベース８４０をコールした後に発生するアプリケーションプログラムデータを受け取る。
【０１１４】
ステップ８０３では、関数ベース８４０がＡｐｐ  ８３０にコールされた後、システムコール８５０に与えられるリクエストを発生する（たとえば一つのＨＴＴＰ  ＰＯＳＴ或いはＧＥＴ方法）。システムコール８５０は、ＨＴＴＰ  ＰＯＳＴ或いはＧＥＴリクエストを関係する駆動プログラム、たとえばネットワークインターフェースカード（ＮＩＣ）駆動プログラムに伝送する。ネットワークインターフェースカード駆動プログラムは、ＨＴＴＰ  ＰＯＳＴ或いはＧＥＴリクエストを、転換／変換／エンコード／嵌め込みし、一つのパッケージを形成し、並びにそれをＭＡＣサブレイヤー（すなわちＯＳＩモデル中のデータリンク層のメディアアクセスコントロールサブレイヤー）及び又はＰＨＹレイヤー（すなわち、ＯＳＩモデル中の実体レイヤー）を通し、インターネットを介して遠方のＡｐｐ８３０と関係するアプリケーションプログラムサーバー（たとえば、アプリケーションプログラムサーバー２００）に伝送する。
【０１１５】
ステップ８０４では、システムコール８５０がその受信したアプリケーションプログラムデータを駆動プログラムより関数ベース８４０に移転する。
【０１１６】
ステップ８０５では、関数ベース８４０がシステムコール８５０より受け取ったアプリケーションプログラムデータを、この段階にあってフックプログラム８２０にフェッチ（ｆｅｔｃｈ）／切り取らせる。
【０１１７】
ステップ８０６では、システムコール８５０よりアプリケーションプログラムデータを受け取り及び関数ベース８４０をコールした後に、応答ステップ８０３中のリクエストの結果を発生する。たとえば、もともとのリクエストが内容に対するリクエスト実行であれば、システムコール８５０は内容（たとえば複数の文字を含む文章）を受信した後、このステップは関数ベース８４０をコールし、ユーザーインターフェース上に該内容を表示する（たとえば、内容をＡｐｐ８３０のユーザーインターフェース中のウインドウに表がする）。
【０１１８】
ある例において、付帯可能キーワードをリクエストし、アプリケーションプログラムデータはこれらキーワードの関係サーチ結果を付帯可能であり、フックプログラム８２０は、該サーチ結果を受け取るのに用いられ得る。フックサーバー８１０より一段の処理プロセスを開始した後、サーチ結果は最後に保存装置の中に保存され得る（たとえば、保存装置７４０或いはデータベース８８８８）。
【０１１９】
図８Ｂは本発明のある実施例において、データ収集モジュール３０００を使用してカーネルベースレベルにあってアプリケーションプログラムデータをフックするオペレーションシステムの概念図である。図８Ｂに示されるように、その図中に示されるユニットの機能は、図８Ａに示されるものと同じであるため、重複した説明は行なわない。
【０１２０】
図８ＢはＡｐｐ  ８３０実行の過程中に、発生する相互動作の例のフローチャートである。
【０１２１】
ステップ８０Ａでは、前述のステップ８０Ａと同じである。
【０１２２】
ステップ８０１では、前述のステップ８０１と同じである。
【０１２３】
ステップ８１２では、関数ベース８４０がＡｐｐ８３０にコールされた後、一つのリクエストを発生し、並びにフックプログラム８２０により切り取られる。
【０１２４】
ステップ８１３では、フックプログラム８２０が該リクエストをシステム／カーネルコール８５０に発送する。同様に、システム／カーネルコールは該リクエスト（たとえば一つのＨＴＴＰ  ＰＯＳＴ或いはＧＥＴ方法）を関係する駆動プログラムに伝送し、該駆動プログラムは該リクエストを、転換／変換／エンコード／嵌め込みして一つのパッケージを形成し、並びにそれをＭＡＣサブレイヤー或いはＰＨＹレイヤーを通して、インターネットを介して遠方のＡｐｐ８３０と関係するアプリケーションプログラムサーバー（たとえば、アプリケーションプログラムサーバー２００）に伝送する。
【０１２５】
ステップ８１４では、システム／カーネルコール８５０が、その受け取ったアプリケーションプログラムデータを、駆動プログラムよりフックプログラム８２０に移転する。
【０１２６】
ステップ８１５では、フックプログラム８２０がアプリケーションプログラムデータを関数ベース８４０に移転する。
【０１２７】
ステップ８０６は、前述のステップ８０６と同じである。
【０１２８】
一部の実施例において、データ収集モジュール３０００の一部のタスクは、図７Ａから図７Ｈに示される代理プログラムに移転され、図７Ａ〜図７Ｈ中の仮想マシン管理者の負担を減らす。
【０１２９】
図９Ａと図９Ｂは、図７Ａ〜図７Ｈ中の代理プログラムを使用してデータ収集モジュール３０００のタスクを実行し、これによりアプリケーションプログラムデータを収集する例を示している。
【０１３０】
図９Ａと図９Ｂ中、「策略と編集」は、スケジューラー（たとえばスケジューラー７１０）のスケジュール策略を指す。
【０１３１】
図９Ａの各ステップは以下に示すとおりである。
【０１３２】
ステップ９０１では、スケジューラーが一つのＡｐｐに関するスケジュール策略をリクエストする。
【０１３３】
ステップ９０２では、該リクエストは応答され並びに確認通知を付帯する。
【０１３４】
ステップ９０３では、スケジューラーが該Ａｐｐに対応する仮想マシン管理者を起動する。
【０１３５】
ステップ９０４では、スケジューラーのコントロールの下で、仮想マシン管理者はＡｐｐを起動或いは終了するか、或いはＡｐｐを操作する。
【０１３６】
ステップ９０５では、Ａｐｐがリクエストを、それに対応するアプリケーションプログラムサーバーに発送する。
【０１３７】
ステップ９０６では、アプリケーションプログラムサーバーが応答を返し、該応答は該リクエストに関係するデータ或いは内容を付帯している。
【０１３８】
ステップ９０７では、Ａｐｐに対応する代理プログラムが該応答中のデータ或いは内容をフェッチ（ｆｅｔｃｈ）又は切り取り、保存装置或いはデータベースに保存する。
【０１３９】
図９Ｂの各ステップは以下に示されるとおりであり、それはＡｐｐ安全検査メカニズムを包含する。
【０１４０】
ステップ９１１では、スケジューラーがＡｐｐに関係するスケジュール策略をリクエストする。
【０１４１】
ステップ９１２では、このリクエストは応答され並びに確認通知を付帯する。
【０１４２】
ステップ９１３では、スケジューラーが該Ａｐｐに対応する仮想マシン管理者を起動する。
【０１４３】
ステップ９１４ａでは、仮想マシン管理者がＡｐｐ安全検査モジュールをコールして該Ａｐｐレイヤーレベルを検査する。
【０１４４】
ステップ９１４ｂでは、該仮想マシン管理者が代理プログラムをコールして該Ａｐｐと関係する伝送データをフェッチ（ｆｅｔｃｈ）或いは切り取り将来分析を行なうのに供する。
【０１４５】
ステップ９１５では、スケジューラーのコントロールの下で、仮想マシン管理者がＡｐｐを起動或いは終了するか、或いはＡｐｐを操作する。
【０１４６】
ステップ９１６では、Ａｐｐ安全検査モジュールの監視及び代理プログラムの切り取りの下で、Ａｐｐがリクエストをそれに対応するアプリケーションプログラムサーバーに発送する。
【０１４７】
ステップ９１７では、Ａｐｐ安全検査モジュールの監視及び代理プログラムの切り取りの下で、アプリケーションプログラムサーバーが応答を返し、該応答は該リクエストに関係するデータ或いは内容を付帯する。
【０１４８】
ステップ９１８ａでは、ＡｐｐがＡｐｐ安全検査モジュールにその監視を終了するようリクエストする。
【０１４９】
ステップ９１８ｂでは、Ａｐｐが代理プログラムに該Ａｐｐと関係するデータのフェッチ（ｆｅｔｃｈ）又は切り取りを終了するよう請求する。
【０１５０】
ステップ９１９では、代理プログラムがそれがフェッチ（ｆｅｔｃｈ）又は切り取ったデータ或いは内容を保存装置或いはデータベースに保存する。
【０１５１】
ステップ９２０では、Ａｐｐがこの終了リクエストに応答する。
【０１５２】
ステップ９２１では、代理プログラムがこの終了リクエストに応答する。
【０１５３】
ステップ９２２では、仮想マシン管理者がこの終了リクエストに応答する。
【０１５４】
ステップ９２３では、スケジューラーがアプリケーションプログラムデータ収集の過程の結果を保存装置或いはデータベース中に保存する。
【０１５５】
図９Ｃはデータ収集モジュール３０００或いは図７Ａ〜図７Ｈ中の代理プログラムがＡｐｐと関係するデータ又は内容をフェッチ（ｆｅｔｃｈ）或いは切り取るフローチャートである。
【０１５６】
ステップ９３１では、Ａｐｐ起動時に、仮想マシン管理者から切り取りリクエストを受け取り、該切り取りリクエストは該Ａｐｐの身分を包含し得る。
【０１５７】
ステップ９３２では、入力されたデータ又は内容を収集する時、切り取りリクエスト及び該Ａｐｐと関係する入力されたデータ及び内容を整合する。
【０１５８】
ステップ９３３では、収集したデータ又は内容を切り取り及び又は分析し、該データ又は内容は、該Ａｐｐと関係する。
【０１５９】
ステップ９３４では、終了リクエストに応答し、並びに収集したデータ又は内容を保存装置或いはデータベースに保存する。
【０１６０】
図７Ｄは、ある実施例のスケジューラーの動作のフローチャートである。
【０１６１】
そのうち、ステップ９４１では、保存装置或いはデータベース中において、スケジュール策略をサーチする。ある例において、時間イベント（たとえば時間スタンプ（ｔｉｍｅｓｔａｍｐ）を構築する）は、スケジュール策略をサーチする時のサーチ範囲の内に包含され得る。
【０１６２】
ステップ９４２では、切り取りリクエストを仮想マシン管理者に発送する。
【０１６３】
ステップ９４３では、終了通知を待って、並びに該終了通知を受け取った時、該Ａｐｐに関係する切り取りデータ又は内容を保存する。
【０１６４】
図９Ｅは仮想マシン管理者（或いはロボットモジュール）のある実施例における動作のフローチャートである。
【０１６５】
そのうち、ステップ９５１では、Ａｐｐが起動するとき、スケジューラーより切り取りリクエストを受け取り、該切り取りリクエストは、該Ａｐｐと関係するデータ又は内容の切り取りに関する。
【０１６６】
ステップ９５２では、仮想マシン管理者がスケジューラーにより起動されて該Ａｐｐと関係するデータ又は内容を切り取る。
【０１６７】
ステップ９５３では、該スケジューラーに基づいて該Ａｐｐの機能を実行する。
【０１６８】
ステップ９５４では、切り取りリクエストをＡｐｐ安全検査モジュールに発送する。
【０１６９】
ステップ９５５では、切り取りリクエストをデータ収集モジュール或いは代理モジュールに発送する。
【０１７０】
ステップ９５６では、該スケジューラーにその活動の終了を通知し、並びに該Ａｐｐと関係するデータ又は内容を保存装置或いはデータベースに保存する。
【０１７１】
本発明はもう一つのアプリケーションプログラムサーチの方法を提供し、この方法は、少なくとも一つのアプリケーションプログラムを実行するステップを包含する。該アプリケーションプログラムは一つの、それが適合するハードウエア或いは仮想マシン上で作動可能である。アプリケーションプログラムが実行されるとき、それと対応するアプリケーションプログラムデータが生成される。これらアプリケーションプログラムデータは対応するアプリケーションプログラムサーバーより受け取られ、及び又はこのアプリケーションプログラム自身が発生する。該アプリケーションプログラムデータは、アプリケーションプログラムがどのように動作するかにより、静態或いは動態の形式とされ得る。該アプリケーションプログラムデータは保存装置中に保存され得て、たとえば、本発明のシステム中のデータベース或いはメモリ中に保存され得る。ネットワークサーチフィールド等のインタフェースにより、ユーザーがそのサーチ内容を入力でき、ユーザーからのサーチ命令を受け取るとき、サーチを行なってサーチ命令と関係する特定アプリケーションプログラムデータを探し出すことができる。もし関係するアプリケーションプログラムデータが認識されれば、これらの関係するアプリケーションプログラムデータの情報は、サーチ命令を発送したユーザーに伝送され得る。
【０１７２】
本技術領域の通常の知識を有する者であれば理解されるべきことであるが、アプリケーションプログラム、ネットワークＡｐｐ、拡張プログラム或いはプラグインのサーチ方法と前述のＡｐｐに対するサーチ方法は類似し、本発明はこれに対してすでに詳細に説明している。これにより、本発明の前述の全てのＡｐｐに関する実施例、方法、システム及び構成素子はいずれもアプリケーションプログラムサーチ、ネットワークＡｐｐ、拡張プログラム或いはプラグインに適用可能である。
【符号の説明】
【０１７３】
１  Ａｐｐ
１００  サーバー集団
１００ａ  ネットワークアプリケーションプログラムサーバー
１００ｂ  アプリケーションプログラムサーチエンジンサーバー
１００ｃ  データベース管理サーバー
１００ｄ  ファイル管理サーバー
１００ｅ  モバイルオペレーションシステムシミュレートサーバー
１０  第１ユーザー
１０ａ  スマートフォン
１０ｂ  タブレットＰＣ
１０ｃ  ノートブック型コンピュータ
１０ｄ  パーソナルコンピュータ
１１８  保存装置
１１８ａ  コンピュータリーダブルメディア
１２  メモリ
１３１  スクリーン
１３１ａ  ユーザーインターフェース
１３２  アシステッドグローバルポジショニンスシステムモジュール
１３３  入出力システム
１３３ａ  ディスプレイコントローラー
１３３ｂ  入力コントローラー
１３４  周辺装置
１３５  プロセッサ
１３７  メモリコントローラー
１３８  入力モジュール或いは入力装置
１３９  メモリ
１４  データパス
１４０  ＲＦモジュール
１６  メモリコントローラー
１６０  データパス
１７  通信ポート
１８  プロセッサ
１９  保存装置
１９ｘ  保存装置
２００  アプリケーションプログラムサーバー
２０  第２ユーザー
２０１  アプリケーションプログラムサーバー
２０２  アプリケーションプログラムサーバー
２１０８  アプリケーションプログラムアイコン
２１１０  アプリケーションプログラム名称或いは記述
２１１２  アプリケーションプログラムアイコン
２１１４  アプリケーションプログラム名称或いは記述
２１１８  内容
２１２０  内容
２１１２  内容
２１２４  マップ
２１８  保存装置
２１８ａ  コンピュータリーダブルメディア
２３１  スクリーン
２３１ａ  ユーザーインターフェース
２３２  アシステッドグローバルポジショニンスシステムモジュール
２３３  入出力システム
２３３ａ  ディスプレイコントローラー
２３３ｂ  入力コントローラー
２３４  周辺装置
２３５  プロセッサ
２３７  メモリコントローラー
２３８  入力モジュール或いは入力装置
２３９  メモリ
２４０  ＲＦモジュール
２６０  データパス
３０  ネットワーク
３００−１〜７  第１〜７フィールド
３０００  編集テーブル／データ収集モジュール或いは構造
３２０  列／小テーブル
３２１〜３２４  小テーブル
４００  仮想マシン
４０２  第１モジュール
４０４  第２モジュール
４０５  スクリプト
４０６  第３モジュール
４０８  第４モジュール
５００  ネットワークアプリケーションプログラム
５０００  演算装置
５０２  サーチボタン／サーチフィールド
６００  アプリケーションプログラムサーチエンジン
６１０  データ収集代理サーバー
６３０  ラッパー
６４０  ハイパーバイザーモジュール
６５０  ロボットモジュール
６６０  スケジューラー
６７０  Ａｐｐ安全検査モジュール
７００  凡例システム
７０１  サーバー
７０１ａ  サーバー
７０１ｂ  サーバー
７０２ａ  サーバー
７０２ｂ  サーバー
７０３ａ  サーバー
７０３ｂ  サーバー
７０４ａ  サーバー
７０４ｂ  サーバー
７１０  スケジューラー
７２０  仮想マシン管理者
７３０  配置可能なソフトウエア定義ネットワーク
７４０  保存装置
７５ａ  動作ユニット
７５ｂ  動作ユニット
７５０  ラッパー
７６０  アプリケーションプログラムパッケージ保存モジュール
７７０  整合性代理プログラム
７８０  仮想マシン
８０Ａ、８０１〜８０６  ステップ
８１２〜８１５  ステップ
８１０  フックサーバー
８２０  フックプログラム
８３０  Ａｐｐ
８４０  関数ベース
８５０  システム／カーネルコール
８８  仮想マシン
８８ａ  ハイパーバイザー
８８ｃ  ハイパーバイザー
８８８  データベース
８８８’  データベース
８８８８  データベース
８９  仮想マシン
８９ａ  ハイパーバイザー
９０−１〜５  物品
９０−１ｐ〜５ｐ  イメージ
９０１〜９０７  ステップ
９１１〜９２３  ステップ
９３１〜９３４  ステップ
９４１〜９４３  ステップ
９５１〜９５６  ステップ
９００  コンテナー
９１０  背景或いは広告
９１８  タブ
９２０  タブ
９２２  タブ
９２４  タブ
９２６  動作バー或いは横幅
９８８  ウェルカム画面
【図１】
0005859074.tif 000002
【図２】
0005859074.tif 000003
【図３Ａ】
0005859074.tif 000004
【図３Ｂ】
0005859074.tif 000005
【図３Ｃ】
0005859074.tif 000006
【図３Ｄ】
0005859074.tif 000007
【図４Ａ】
0005859074.tif 000008
【図４Ｂ】
0005859074.tif 000009
【図４Ｃ】
0005859074.tif 000010
【図４Ｄ】
0005859074.tif 000011
【図４Ｅ】
0005859074.tif 000012
【図４Ｆ】
0005859074.tif 000013
【図４Ｇ】
0005859074.tif 000014
【図４Ｈ】
0005859074.tif 000015
【図４Ｉ】
0005859074.tif 000016
【図４Ｊ】
0005859074.tif 000017
【図４Ｋ】
0005859074.tif 000018
【図５Ａ】
0005859074.tif 000019
【図５Ｂ】
0005859074.tif 000020
【図５Ｃ】
0005859074.tif 000021
【図５Ｄ】
0005859074.tif 000022
【図５Ｅ】
0005859074.tif 000023
【図６Ａ】
0005859074.tif 000024
【図６Ｂ】
0005859074.tif 000025
【図６Ｃ】
0005859074.tif 000026
【図７Ａ】
0005859074.tif 000027
【図７Ｂ】
0005859074.tif 000028
【図７Ｃ】
0005859074.tif 000029
【図７Ｄ】
0005859074.tif 000030
【図７Ｅ】
0005859074.tif 000031
【図７Ｆ】
0005859074.tif 000032
【図７Ｇ】
0005859074.tif 000033
【図７Ｈ】
0005859074.tif 000034
【図８Ａ】
0005859074.tif 000035
【図８Ｂ】
0005859074.tif 000036
【図９Ａ】
0005859074.tif 000037
【図９Ｂ】
0005859074.tif 000038
【図９Ｃ】
0005859074.tif 000039
【図９Ｄ】
0005859074.tif 000040
【図９Ｅ】
0005859074.tif 000041