(57)【要約】  本発明の少なくともある実施形態は、サーチ能力を、装置にインストールされた第三者アプリケーションへと拡張する方法を含む。一実施形態において、第三者アプリケーションに関連したレコードが、その第三者アプリケーションに特有のサーチプラグインを使用して、装置にインストールされた他の第三者アプリケーションから分離されたプロセスにおいてインデックスされる。更に、そのインデックスされたレコードは、第三者アプリケーションを呼び出すことなく、ユーザサーチ問合せに応答してサーチすることができる。【選択図】      図３
2013527521.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサにより実行された場合に、プロセッサがアプリケーションプログラミングインターフェイス（ＡＰＩ）を発生するようにさせるインストラクションを与えるマシン読み取り可能な記憶媒体において、前記ＡＰＩは、ＡＰＩ実施コンポーネントが、
前記プロセッサで実行可能な第三者アプリケーションの特権と同等の特権を有するプロセスにおいて実行するようにアプリケーションインデクサを起動し、前記プロセスは、前記プロセッサで実行可能な他の第三者アプリケーションを伴う他のプロセスとは個別のものであり、
前記第三者アプリケーションに特有のアプリケーションサーチバンドルのインスタンスを前記アプリケーションインデクサによりインスタンス生成し、
前記アプリケーションインデクサは、前記アプリケーションサーチバンドルのインスタンスからレコードをインデックスして、そのインデックスされたレコードをサーチデータベースに記憶する、
ことを含むオペレーションを遂行するのを許す、マシン読み取り可能な記憶媒体。
【請求項２】
前記アプリケーションサーチバンドルは、レコードをインデックスするのに使用されるべきレコードの属性のセットを指定し、前記他のプロセスは、前記他の第三者アプリケーションのサーチ及びインデックスプロセスを含み、そして前記第三者アプリケーションに特有のアプリケーションサーチバンドルのインスタンスは、前記第三者アプリケーションと同じメモリ特権に制限される、請求項１に記載のマシン読み取り可能な記憶媒体。
【請求項３】
前記オペレーションは、更に、
前記アプリケーションインデクサが、更新リストにおけるレコードに関連した識別を前記アプリケーションサーチバンドルへ通してレコードを要求し、前記識別は、前記第三者アプリケーションがレコードを変更するときに前記更新リストへ追加される、請求項１に記載のマシン読み取り可能な記憶媒体。
【請求項４】
装置にインストールされた第三者アプリケーションに関連したレコードを、その第三者アプリケーションに特有のサーチプラグインを使用してインデックスし、このレコードをインデックスするプロセスは、装置にインストールされた他の第三者アプリケーションから分離され、
前記インデックスされたレコードを使用してユーザサーチ問合せに応答してコンテンツをサーチする、
ことを含むコンピュータ実施方法。
【請求項５】
前記ユーザサーチ問合せに一致するレコードを、グラフィックユーザインターフェイスを経て提示し、
ユーザが前記グラフィックユーザインターフェイスを経て前記ユーザサーチ問合せに一致するレコードからレコードを選択するのを許し、前記サーチプラグは、前記第三者アプリケーションと同じメモリ特権に制限される、請求項４に記載の方法。
【請求項６】
ユーザがレコードを選択するのに応答して、レコードを提示するために第三者アプリケーションを起動する、請求項５に記載の方法。
【請求項７】
前記ユーザサーチ問合せに一致するレコードを提示することは、レコードの属性のセットを前記グラフィックユーザインターフェイスに表示することを含み、前記属性のセットは、前記第三者アプリケーションに特有のサーチプラグインにより指定される、請求項５に記載の方法。
【請求項８】
コンピューティング装置に第三者アプリケーションをインストールし、
前記第三者アプリケーションのメタデータをチェックして、前記第三者アプリケーションがその第三者アプリケーションに関連したコンテンツをインデックスしたいかどうか決定し、
前記第三者アプリケーションがその第三者アプリケーションに関連したコンテンツをインデックスしたい場合には、その第三者アプリケーションを登録する、
ことを含むコンピュータ実施方法。
【請求項９】
ユーザ要求に応答して前記第三者アプリケーションを起動することを更に含み、前記第三者アプリケーションは、レコードを変更し、そしてその変更されたレコードの識別を、更新リストに記憶するべくコンピューティング装置で実行されるサーチデーモンへ送信し、その更新リストは、その変更されたレコードをインデックスするためにサーチデーモンにより使用可能なものである、請求項８に記載の方法。
【請求項１０】
前記変更されたレコードの属性のセットを、インデックスされるべきサーチデーモンへ通すために個別のプロセスにおいて前記第三者アプリケーションに特有のサーチプラグインを呼び出すことを更に含む、請求項９に記載の方法。
【請求項１１】
前記サーチプラグインは、前記第三者アプリケーションが終了した後に呼び出される、請求項１０に記載の方法。
【請求項１２】
前記第三者アプリケーションにより与えられる特権と同等の個別のプロセス特権を与えることを更に含む、請求項１０に記載の方法。
【請求項１３】
データ処理装置で実行可能な第三者アプリケーションは、提示されるべきレコードの属性のセットを、そのレコードが、ユーザサーチ問合せに応答してサーチデーモンにより遂行されるサーチのサーチ結果の一部分になったときに指定し、
前記第三者アプリケーションは、その第三者アプリケーションを起動せずにインデックスされるべきサーチデーモンによりインスタンス生成されるサーチインデクサにレコードを通すためにその第三者アプリケーションに特有のアプリケーションサーチバンドルを与える、
ことを含むコンピュータ実施方法。
【請求項１４】
前記第三者アプリケーションは、その第三者アプリケーションに関連したコンテンツのレコードを変更し、
前記変更されたレコードの識別子を、前記サーチインデクサによりアクセスできるリストに記憶する、
ことを更に含む請求項１３に記載の方法。
【請求項１５】
前記サーチインデクサは、前記第三者アプリケーションが終了した後に前記リストから識別子を検索し、そしてその識別子を使用して、前記変更されたレコードを前記アプリケーションサーチバンドルから得る、請求項１４に記載の方法。
【請求項１６】
データ処理装置で実行することができ、そのデータ処理装置で実行可能な第三者アプリケーションの特権と同等の特権を有するプロセスにおいて実行するためのアプリケーションインデクサであって、前記プロセスは、前記データ処理装置で実行可能な他の第三者アプリケーションを伴う他のプロセスとは個別のものであるようなアプリケーションインデクサと、
前記データ処理装置に結合されたデータ記憶装置に記憶されるサーチデータベースと、
を備え、前記アプリケーションインデクサは、前記第三者アプリケーションに特有のアプリケーションサーチバンドルのインスタンスをインスタンス生成し、そしてそのアプリケーションサーチバンドルのインスタンスからレコードをインデックスして、そのインデックスされたレコードをサーチデータベースに記憶するように動作できる、装置。
【請求項１７】
前記アプリケーションサーチバンドルは、レコードをインデックスするのに使用されるべきレコードの属性のセットを指定し、そしてデータ処理システムで実行可能な別の第三者アプリケーションの特権と同等の特権を有する別のプロセスにおいて別のアプリケーションインデクサをデータ処理システムで実行することができる、請求項１２に記載の装置。
【請求項１８】
前記アプリケーションインデクサは、レコードを要求するために更新リスト内のレコードに関連した識別を前記アプリケーションサーチバンドルへ通すように動作し、その識別は、前記第三者アプリケーションがレコードを変更するときに更新リストに追加される、請求項１３に記載の装置。
【請求項１９】
ユーザからサーチ問合せを受け取るためにグラフィックユーザインターフェイスを表示するディスプレイ装置と、
データ処理装置で実行することができ、第三者アプリケーションを呼び出すことなく、サーチ問合せに一致するレコードについてサーチデータベースにおいてインデックスされたレコードをサーチするサーチデーモンと、
を更に備えた請求項１２に記載の装置。
【請求項２０】
前記グラフィックユーザインターフェイスは、サーチ問合せに一致するレコードを提示し、そしてユーザがそのサーチ問合せに一致するレコードからレコードを選択できるようにし、更に、ユーザがレコードを選択するのに応答して、前記データ処理装置は、ユーザにより選択されたレコードを提示するために前記第三者アプリケーションを起動するように動作する、請求項１５に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティング装置の第三者アプリケーションへサーチ能力を拡張することに関する。
【０００２】
関連出願：本願は、２０１０年４月７日に出願された米国仮特許出願第６１／３２１，７６４号の利益を主張するもので、この出願は、参考としてここにそのまま援用される。
【０００３】
本願に開示され主張される発明は、アップルのｉＰｈｏｎｅ４の原型が２０１０年３月２５日にアップルのエンジニアから盗まれたとされるときに、アップル社の許可なく早期に公衆に開示された。本願の基礎となる米国優先権出願は、その聞くところの盗難の前には出願されていない。
【背景技術】
【０００４】
今日、メディアプレーヤ、パーソナルデジタルアシスタント（ＰＤＡ）、等を含むセルラー電話のようなマルチファンクション装置で実行するための多数のアプリケーションが開発されている。これらのアプリケーションの多くは、マルチファンクション装置の売主以外の供給元によって提供され、従って、それらは、一般的に、第三者アプリケーションと称されている。これらのアプリケーションは、娯楽、ソーシャルネットワーキング、等を提供するような広範囲の様々なファンクションを遂行することができる。これらのファンクションを遂行する際に、マルチファンクション装置は、マルチファンクション装置に記憶されたコンテンツにネットワーク（例えば、インターネット）を経てアクセスすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
マルチファンクション装置のユーザがマルチファンクション装置においてコンテンツを編成し及び管理するのを容易に且つ便利にするために、マルチファンクション装置にインストールされるオペレーティングシステムは、典型的に、サーチ能力を与える。マルチファンクション装置にインストールされたアプリケーションの多くは、第三者アプリケーションであるから、マルチファンクション装置にインストールされた従来のオペレーティングシステムは、それらのサーチ能力をそれらの第三者アプリケーションへ拡張することができない。
【課題を解決するための手段】
【０００６】
ある実施形態は、発呼プログラムコードが１つ以上のインターフェイスを通してコールされる他のプログラムコードと対話する環境において１つ以上のアプリケーションプログラムングインターフェイス（ＡＰＩ）を含む。種々のファンクションコール、メッセージ又は他の形式の呼び出しであって、種々の種類のパラメータを更に含むものは、発呼プログラムと、被呼コードとの間でＡＰＩを経て転送される。更に、ＡＰＩは、発呼プログラムコードに、ＡＰＩで定義され且つ被呼プログラムコードで具現化されるデータ形式又はクラスを使用する能力を与えることができる。
【０００７】
少なくともある実施形態は、発呼ソフトウェアコンポーネントがＡＰＩを通して被呼ソフトウェアコンポーネントと対話する環境を含む。この環境においてＡＰＩを通して動作する方法は、ＡＰＩを経て１つ以上のファンクションコール、メッセージ、他の形式の呼び出し又はパラメータを転送することを含む。
【０００８】
本開示の少なくともある実施形態は、マルチファンクション装置における１つ以上の第三者アプリケーションへと拡張されたサーチ能力を伴う環境において１つ以上のＡＰＩを含む。マルチファンクション装置のオペレーティングシステムと第三者アプリケーションとの間でＡＰＩを経て種々のファンクションコール又はメッセージが転送される。規範的なＡＰＩは、第三者アプリケーションに関連したコンテンツのインデックス及びサーチを具現化するためのファンクションコールを転送する。
【０００９】
本開示のある実施形態は、マルチファンクション装置にインストールされた第三者アプリケーションへサーチ能力を拡張する方法を含む。一実施形態において、第三者アプリケーションに関連したレコードは、マルチファンクション装置にインストールされた他の第三者アプリケーション、システムアプリケーション及びサーチバンドルから分離されたプロセスにおいて、その第三者アプリケーションに特有のサーチプラグインを使用してインデックスされる。インデックス動作は、第三者アプリケーションを呼び出すことなく遂行される。更に、インデックスされたレコードは、第三者アプリケーションを呼び出す（例えば、起動又は実行）することなくユーザサーチ問合せに応答してサーチすることができる。
【００１０】
本開示のある実施形態によれば、マルチファンクション装置にインストールされた第三者アプリケーションは、その第三者アプリケーションに特有のサーチプラグインを与えることができる。サーチプラグインは、第三者アプリケーションに関連したレコードを、マルチファンクション装置の個別プロセスで実行されるサーチデーモンへ送るために起動される。レコードの識別子（ＩＤ）は、ユーザサーチ問合せに応答して発生されたサーチ結果にレコードが表示されたときにレコードがどのように見えるか指定する。各ＩＤは、更に、ローカルＩＤを含み、これは、各レコードに関連したドキュメント内の異なる形式のコンテンツに対応するサブＩＤを有する。
【００１１】
前記方法の１つ以上を遂行する種々の装置、並びに処理システムにより実行されたときに処理システムがこれらの方法を遂行するようにさせるマシン読み取り可能な媒体についても説明する。
【００１２】
他の方法、装置及びマシン読み取り可能な媒体についても説明する。
【００１３】
本発明は、添付図面を参照して一例として説明する。
【図面の簡単な説明】
【００１４】
【図１】本発明のある実施形態に使用できる規範的なＡＰＩアーキテクチャーのブロック図である。
【図２】本発明のある実施形態に使用できるソフトウェアスタックの規範的実施形態を示す。
【図３】本発明の一実施形態により、サーチデーモンと、マルチファンクション装置で実行される第三者アプリケーションとの間の対話を示す図である。
【図４】マルチファンクション装置の第三者アプリケーションに対してサーチ及びインデックス能力を設定するための方法の一実施形態のフローチャートである。
【図５】マルチファンクション装置の第三者アプリケーションがアプリケーションデータの変更を処理するための方法の一実施形態を示すフローチャートである。
【図６】マルチファンクション装置のサーチデーモンが第三者アプリケーションに関連したアプリケーションデータの変更を処理するための方法の一実施形態を示すフローチャートである。
【図７】マルチファンクション装置のサーチデーモンがアプリケーションデータをインデックスするための方法の一実施形態を示すフローチャートである。
【図８】マルチファンクション装置のアプリケーションインデクサがアプリケーションデータをインデックスするための方法の一実施形態を示すフローチャートである。
【図９】サーチデーモンが第三者アプリケーションに関連したインデックスされたアプリケーションデータをサーチするための方法の一実施形態を示すフローチャートである。
【図１０】マルチファンクション装置のサーチデータベースの一実施形態を示す。
【図１１】規範的ドキュメントのローカル識別子の一実施形態を示す。
【図１２】本開示の一実施形態による装置の斜視図である。
【図１３】ワイヤレス通信能力を含むワイヤレス装置の一実施形態を示す。
【図１４】本発明の一実施形態による装置の別の例を示す。
【発明を実施するための形態】
【００１５】
本発明の種々の実施形態及び態様は、種々の実施形態を例示する添付図面を参照して以下に詳細に述べる。以下の説明及び添付図面は、本発明を例示するもので、限定するためのものではない。本発明の種々の実施形態を完全に理解するために多数の特定の細部について述べる。しかしながら、ある場合には、本発明の実施形態を簡略に説明するために、良く知られた又は従来の細部は説明しない。
【００１６】
以下の詳細な説明のある部分は、コンピュータメモリ内に記憶されたデータに対するオペレーションを含むアルゴリズムに関して表現される。アルゴリズムとは、一般的に、望ましい結果を導く自己矛盾のないオペレーションシーケンスである。オペレーションは、典型的に、物理量の物理的操作を要求し又は含むものである。通常、必ずしもそうでないが、これらの量は、記憶、転送、合成、比較、その他、操作することのできる電気的又は磁気的信号の形態をとる。主として、共通使用の理由で、これらの信号は、ビット、値、エレメント、記号、キャラクタ、期間、数、等として参照するのが時々は便利であると分かっている。
【００１７】
しかしながら、これら及び同様の用語は、全て、適当な物理量に関連付けられ、そしてそれらの量に適用される便宜的表示に過ぎないことを銘記されたい。特に指示のない限り、以上の説明から明らかなように、この説明全体を通して、「処理」又は「コンピューティング」又は「計算」又は「決定」又は「表示」、等の用語を使用する説明は、システムのレジスタ及びメモリ内で物理的（電子的）量として表されたデータを操作し、そしてシステムのメモリ又はレジスタ或いは他のそのような情報記憶、伝達又は表示装置内で物理的量として同様に表される他のデータへと変換するデータ処理システム又は同様の電子装置のアクション及び処理を参照するものである。
【００１８】
本開示は、ここに示すオペレーションの１つ以上を遂行するための装置にも係る。この装置は、要求される目的のために特に構成されてもよいし、又は記憶されたコンピュータプログラムにより選択的にアクチベートされ又は再構成される汎用コンピュータを備えてもよい。そのようなコンピュータプログラムは、これに限定されないが、フロッピー（登録商標）ディスク、光学的ディスク、ＣＤ−ＲＯＭ及び磁気−光学ディスクを含む任意の形式のディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能なプログラマブルＲＯＭ（ＥＰＲＯＭ）、電子的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、磁気又は光学カード、或いは電子的インストラクションを記憶するのに適したもので各々バスに結合された任意の形式の媒体のようなマシン（例えば、コンピュータ）読み取り可能な記憶媒体に記憶される。
【００１９】
マシン読み取り可能な媒体は、マシン（例えば、コンピュータ）により読み取りできる形態で情報を記憶又は送信するためのメカニズムを備えている。例えば、マシンは、マシン読み取り可能な媒体、例えば、マシン読み取り可能な記憶媒体（例えば、磁気ディスク、光学ディスク、ランダムアクセスメモリ、リードオンリメモリ、フラッシュメモリ装置、相変化メモリ）、及びマシン読み取り可能な通信媒体（例えば、電気的、光学的、音響的又は他の形態の伝播信号、例えば、搬送波、赤外線信号、デジタル信号、等）を使用して、コード及びデータを記憶しそして通信する（内部で及びネットワークを経て他の装置と）。
【００２０】
本発明の少なくともある実施形態は、ソフトウェアアプリケーションと対話するサーチソフトウェアを伴う環境において１つ以上のアプリケーションプログラミングインターフェイスを含む。種々のファンクションコール又はメッセージは、サーチソフトウェアとソフトウェアアプリケーションとの間でアプリケーションプログラミングインターフェイスを経て転送される。ファンクションコール又はメッセージを転送することは、ファンクションコール又はメッセージを発行し、開始し、呼び出し又は受け取ることを含む。規範的なアプリケーションプログラミングインターフェイスは、ディスプレイ領域を有する装置に対する種々のオペレーション（例えば、サーチ、ネットワーキング、サービス発見、等）を具現化するためにファンクションコールを転送する。ＡＰＩは、パラメータ、変数又はポインタを有するファンクションも具現化する。ＡＰＩは、ここに開示するパラメータ又はパラメータの他の組み合わせを受け取る。ここに開示するＡＰＩに加えて、他のＡＰＩは、ここに開示するＡＰＩと同様の機能を個々に又は組み合わせて遂行することができる。
【００２１】
ディスプレイ領域は、ウインドウの形態である。ウインドウは、境界があったりなかったりするディスプレイ領域で、ディスプレイの全表示領域又はエリアである。ある実施形態では、ディスプレイ領域は、少なくとも１つのウインドウ及び／又は少なくとも１つのビュー（例えば、ウェブ、テキスト又は画像コンテンツ）を有する。ここに開示する方法、システム及び装置は、ディスプレイ領域、ウインドウ及び／又はビューと共に具現化することができる。
【００２２】
本発明の少なくともある実施形態は、メディアを提出するためのメディア処理システム、メディアを記憶するための記憶装置を備え、そして更に、アンテナシステム及びメディア処理システムに結合された高周波（ＲＦ）トランシーバ（例えば、セルラー電話のためのＲＦトランシーバ）も備えたデジタルメディアプレーヤ（例えば、ポータブル音楽及び／又はビデオメディアプレーヤ）のようなポータブル電子装置の一部分である。ある実施形態では、リモート記憶装置に記憶されたデータは、ＲＥトランシーバを通してポータブル電子装置へ送信される。データは、例えば、音楽又は他のオーディオ、静止画又は動画、等の１つ以上である。
【００２３】
ポータブルメディアプレーヤは、カリフォルニア州クパチーノのアップルコンピュータ社から入手できるｉＰｏｄTM又はｉＰｏｄ  ＮａｎｏTMメディアプレーヤのクリックホイール入力装置、タッチスクリーン入力装置、プッシュボタン装置、可動ポインティング入力装置又は他の入力装置のようなメディア選択装置を含む。このメディア選択装置は、記憶装置及び／又はリモート記憶装置に記憶されたメディアを選択するのに使用される。ポータブルメディアプレーヤは、少なくともある実施形態では、入力装置を通して選択されそして提示されるメディアのタイトル又は他の指示子を、スピーカ又はイヤホンを通して、又はディスプレイ装置に、或いはディスプレイ装置及びスピーカ又はイヤホンの両方に表示するためにメディア処理装置に結合されたディスプレイ装置を含む。ある実施形態では、ディスプレイ装置及び入力装置が一体化されるが、他の実施形態では、ディスプレイ装置及び入力装置が個別の装置である。
【００２４】
ここに述べる本発明の実施形態は、例えば、娯楽システム又はパーソナルデジタルアシスタント（ＰＤＡ）、或いは汎用コンピュータシステム又は特殊目的コンピュータシステム、或いは別の装置内に埋め込まれた装置、或いはメディアプレーヤを含まないセルラー電話、或いはマルチファンクションタッチタブレット装置、或いは他のマルチファンクションタッチ装置、或いはそれら装置の態様又はファンクションを結合する装置（例えば、１つの装置、ｉＰｈｏｎｅTMにおいてＰＤＡ、娯楽システム及びセルラー電話と結合されたｉＰｏｄTMポータブルメディアプレーヤ、等のメディアプレーヤ）のような他の形式のデータ処理システムの一部分である。これらの装置は、一般的に、複数のファンクションを有するので、以下「マルチファンクション装置」とも称される。本開示において、電子装置及び消費者向け装置は、それら装置の形式である。
【００２５】
ある実施形態では、プラットホームは、種々のサーチ、サービス発見、及びネットワーキングオペレーションを与える。プラットホームは、ハードウェアコンポーネント及びオペレーティングシステムを含む。ハードウェアコンポーネントは、入力パネルに結合された処理ユニット、及びプロセッサに結合されたメモリを含む。オペレーティングシステムは、メモリに記憶されて処理ユニットにより実行されるように構成された１つ以上のプログラムを含む。１つ以上のプログラムは、種々のサーチ、サービス発見、及びネットワーキングオペレーションを遂行するためにアプリケーションプログラミングインターフェイス（ＡＰＩ）を通してファンクションコール又はメッセージを転送するための種々のインストラクションを含む。
【００２６】
ある実施形態では、１つ以上のＡＰＩが使用される。ＡＰＩは、プログラムコードコンポーネント又はハードウェアコンポーネント（以下、「ＡＰＩ実施コンポーネント」）により実施されるインターフェイスであり、これは、異なるプログラムコードコンポーネント又はハードウェアコンポーネント（以下、「ＡＰＩ発呼コンポーネント」）が、ＡＰＩ実施コンポーネントにより与えられる１つ以上のファンクション、方法、手順、データ構造、クラス、及び／又は他のサービスにアクセスしてそれを使用できるようにする。ＡＰＩは、ＡＰＩ発呼コンポーネントとＡＰＩ実施コンポーネントとの間に通される１つ以上のパラメータを定義することができる。
【００２７】
ＡＰＩは、ＡＰＩ発呼コンポーネントのデベロッパー（第三者デベロッパーである）がＡＰＩ実施コンポーネントにより与えられる指定の特徴をレバレッジすることができるようにする。１つのＡＰＩ発呼コンポーネントがあってもよいし、或いはそのようなコンポーネントが２つ以上あってもよい。ＡＰＩは、アプリケーションからのサービス要求をサポートするためにコンピュータシステム又はプログラムライブラリが与えるソースコードインターフェイスである。オペレーティングシステム（ＯＳ）は、複数のＡＰＩを有し、ＯＳで実行されるアプリケーションがそれらＡＰＩの１つ以上にコールできるようにし、そしてサービス（プログラムライブラリのような）は、複数のＡＰＩを有し、サービスを利用するアプリケーションがそれらＡＰＩの１つ以上にコールできるようにする。ＡＰＩは、アプリケーションが構築されるときに解釈又はコンパイルされるプログラミング言語に関して指定される。
【００２８】
ある実施形態において、ＡＰＩ実施コンポーネントは、２つ以上のＡＰＩを与え、その各々は、ＡＰＩ実施コンポーネントにより実施されるファンクションの異なる態様にアクセスする異なる態様の、又はそれを伴う、異なるビューを与える。例えば、ＡＰＩ実施コンポーネントの１つのＡＰＩは、第１セットのファンクションを与え、且つ第三者デベロッパーに露出され、そしてＡＰＩ実施コンポーネントの別のＡＰＩは、隠され（露出されず）、且つ第１セットのファンクションのサブセットを与えると共に、別のセットのファンクション、例えば、第１セットのファンクションにはないテスト又はデバッグファンクションも与える。他の実施形態では、ＡＰＩ実施コンポーネントは、基礎となるＡＰＩを経て１つ以上の他のコンポーネントにそれ自身コールし、従って、ＡＰＩ発呼コンポーネント及びＡＰＩ実施コンポーネントの両方である。
【００２９】
ＡＰＩは、ＡＰＩ実施コンポーネントの指定の特徴にアクセスしてそれを使用するときにＡＰＩ発呼コンポーネントが使用する言語及びパラメータを定義する。例えば、ＡＰＩ発呼コンポーネントは、ＡＰＩにより露出された１つ以上のＡＰＩコール又は呼び出し（例えば、ファンクション又は方法コールにより実施される）を経てＡＰＩ実施コンポーネントの指定の特徴にアクセスし、そしてＡＰＩコール又は呼び出しを経てパラメータを使用してデータ及びコントロール情報を通す。ＡＰＩ実施コンポーネントは、ＡＰＩ発呼コンポーネントからのＡＰＩコールに応答してＡＰＩを通して値を返送する。ＡＰＩは、シンタックス及びＡＰＩコールの結果（例えば、ＡＰＩコールをどのように呼び出すか及びＡＰＩコールが何を行うか）を定義するが、ＡＰＩは、ＡＰＩコールがＡＰＩコールにより指定されたファンクションをどのように遂行するか明らかにしない。種々のＡＰＩコールは、発呼（ＡＰＩ発呼コンポーネント）とＡＰＩ実施コンポーネントとの間の１つ以上のアプリケーションプログラミングインターフェイスを経て転送される。ＡＰＩコールを転送することは、ファンクションコール又はメッセージを発行し、開始し、呼び出し、コールし、受け取り、返送し、又はそれに応答することを含み、換言すれば、転送は、ＡＰＩ発呼コンポーネント又はＡＰＩ実施コンポーネントのいずれかによるアクションを記述することができる。ＡＰＩのファンクションコール又は他の呼び出しは、パラメータリスト又は他の構造を経て１つ以上のパラメータを送信又は受信することができる。パラメータは、定数、キー、データ構造、オブジェクト、オブジェクトクラス、変数、データ形式、ポインタ、アレイ、リスト、或いはＡＰＩを経て通されるデータ又は他のアイテムを参照するファンクション又は方法又は別の仕方を指すポインタである。
【００３０】
更に、データ形式又はクラスは、ＡＰＩによって与えられ、そしてＡＰＩ実施コンポーネントによって実施される。従って、ＡＰＩ発呼コンポーネントは、ＡＰＩで行われた定義を使用することにより、変数を宣言し、ポインタを使用し、そのような形式又はクラスの定数値を使用し又はインスタンス生成する。
【００３１】
一般的に、ＡＰＩは、ＡＰＩ実施コンポーネントにより与えられるサービス又はデータにアクセスするか、又はＡＰＩ実施コンポーネントにより与えられるオペレーション又は計算の遂行を開始するのに使用される。例えば、ＡＰＩ実施コンポーネント及びＡＰＩ発呼コンポーネントは、各々、オペレーティングシステム、ライブラリ、装置ドライバ、ＡＰＩ、アプリケーションプログラム、又は他のモジュールのいずれかである（ＡＰＩ実施コンポーネント及びＡＰＩ発呼コンポーネントは、互いに同じ形式のモジュールでも異なる形式のモジュールでもよいことを理解されたい）。ＡＰＩ実施コンポーネントは、あるケースでは、少なくとも一部分は、ファームウェア、マイクロコード又は他のハードウェアロジックで実施される。ある実施形態では、ＡＰＩは、クライアントプログラムが、ソフトウェアデベロープメントキット（ＳＤＫ）ライブラリによって提供されるサービスを利用できるようにする。他の実施形態では、アプリケーション又は他のクライアントプログラムは、アプリケーションフレームワークにより与えられるＡＰＩを使用する。これらの実施形態では、アプリケーション又はクライアントプログラムは、ＳＤＫにより与えられ且つＡＰＩにより与えられるファンクション又は方法にコールを合併するか、又はＳＤＫで定義され且つＡＰＩにより与えられるデータ形式又はオブジェクトを使用することができる。アプリケーションフレームワークは、これらの実施形態では、フレームワークにより定義される種々のイベントに応答するプログラムのメインイベントループを与える。ＡＰＩは、アプリケーションが、アプリケーションフレームワークを使用して、イベント及びイベントに対する応答を指定できるようにする。ある具現化では、ＡＰＩコールは、態様に関連したもの、例えば、入力能力及び状態、出力能力及び状態、処理能力、電力状態、記憶能力及び状態、通信能力、等を含めて、ハードウェア装置の能力又は状態をアプリケーションにレポートし、そしてＡＰＩは、ファームウェア、マイクロコード、或いはハードウェアコンポーネントで一部分実行される他の低レベルロジックにより一部分具現化される。
【００３２】
ＡＰＩ発呼コンポーネントは、ローカルコンポーネント（即ち、ＡＰＩ実施コンポーネントと同じデータ処理システム上にある）であるか、又はネットワークを経てＡＰＩを通してＡＰＩ実施コンポーネントと通信するリモートコンポーネント（即ち、ＡＰＩ実施コンポーネントとは異なるデータ処理システム上にある）である。ＡＰＩ実施コンポーネントは、ＡＰＩ発呼コンポーネント（即ち、異なるＡＰＩ実施コンポーネントにより露出されたＡＰＩへＡＰＩコールを発する）として動作してもよく、そしてＡＰＩ発呼コンポーネントは、異なるＡＰＩ発呼コンポーネントに露出されたＡＰＩを実施することでＡＰＩ実施コンポーネントとして動作してもよい。
【００３３】
ＡＰＩは、異なるプログラミング言語で書かれた複数のＡＰＩ発呼コンポーネントがＡＰＩ実施コンポーネントと通信を行えるようにする（従って、ＡＰＩは、ＡＰＩ実施コンポーネントとＡＰＩ発呼コンポーネントとの間でコールを転送しそして返送する特徴を含む）が、ＡＰＩは、特定のプログラムング言語に関して実施されてもよい。ＡＰＩ発呼コンポーネントは、一実施形態では、ＯＳプロバイダーからのＡＰＩのセット、及びプラグインプロバイダーからのＡＰＩの別のセット、並びに別のプロバイダー（例えば、ソフトウェアライブラリのプロバイダー）又はＡＰＩの別のセットのクリエータからのＡＰＩの別のセットのように、異なるプロバイダーからＡＰＩをコールすることができる。
【００３４】
図１は、本発明のある実施形態に使用できる規範的なＡＰＩアーキテクチャーを例示するブロック図である。図１に示すように、ＡＰＩアーキテクチャー１００は、ＡＰＩ１２０を実施するＡＰＩ実施コンポーネント１１０（例えば、オペレーティングシステム、ライブラリ、装置ドライバ、ＡＰＩ、アプリケーションプログラム、ソフトウェア、又は他のモジュール）を備えている。ＡＰＩ１２０は、ＡＰＩ発呼コンポーネント１３０により使用されるＡＰＩ実施コンポーネントの１つ以上のファンクション、方法、クラス、オブジェクト、プロトコル、データ構造、フォーマット及び／又は他の特徴を指定する。ＡＰＩ１２０は、ＡＰＩ実施コンポーネントのファンクションがＡＰＩ発呼コンポーネントからどのようにしてパラメータを受け取るか、及びそのファンクションがＡＰＩ発呼コンポーネントへどのようにして結果を返送するか指定する少なくとも１つの発呼規定を指定することができる。ＡＰＩ発呼コンポーネント１３０（例えば、オペレーティングシステム、ライブラリ、装置ドライバ、ＡＰＩ、アプリケーションプログラム、ソフトウェア、又は他のモジュール）は、ＡＰＩ１２０により指定されたＡＰＩ実施コンポーネント１１０の特徴にアクセスして使用するためにＡＰＩ１２０を通してＡＰＩコールを実行する。ＡＰＩ実施コンポーネント１１０は、ＡＰＩコールに応答してＡＰＩ１２０を通してＡＰＩ発呼コンポーネント１３０へ値を返送する。
【００３５】
ＡＰＩ実施コンポーネント１１０は、ＡＰＩ１２０を通して指定されず且つＡＰＩ発呼コンポーネント１３０に利用できない付加的なファンクション、方法、クラス、データ構造、及び／又は他の特徴を含むことが明らかである。又、ＡＰＩ発呼コンポーネント１３０は、ＡＰＩ実施コンポーネント１１０と同じシステム上にあってもよいし、又はリモート配置されてネットワークを経てＡＰＩ１２０を使用してＡＰＩ実施コンポーネント１１０にアクセスしてもよいことを理解されたい。図１は、単一のＡＰＩ発呼コンポーネント１３０がＡＰＩ１２０と対話するところを示しているが、ＡＰＩ発呼コンポーネント１３０とは異なる言語（又は同じ言語）で書かれた他のＡＰＩ発呼コンポーネントがＡＰＩ１２０を使用してもよいことを理解されたい。
【００３６】
ＡＰＩ実施コンポーネント１１０、ＡＰＩ１２０及びＡＰＩ発呼コンポーネント１３０は、マシン（例えば、コンピュータ又は他のデータ処理システム）で読み取りできる形態で情報を記憶するためのメカニズムを含むマシン読み取り可能な媒体に記憶される。例えば、マシン読み取り可能な媒体は、磁気ディスク、光学ディスク、ランダムアクセスメモリ、リードオンリメモリ、フラッシュメモリ装置、等を含む。
【００３７】
図２（ソフトウェアスタック）の規範的実施形態において、アプリケーションは、多数のサービスＡＰＩを使用してサービス１又は２へ、そして多数のＯＳ  ＡＰＩを使用してオペレーティングシステム（ＯＳ）へコールを発することができる。サービスＡ及びＢは、多数のＯＳ  ＡＰＩを使用してＯＳへコールを発することができる。
【００３８】
サービス２は、２つのＡＰＩを有し、その一方（サービス２  ＡＰＩ１）は、アプリケーション１からコールを受け取りそしてそこへ値を返送し、又、その他方（サービス２  ＡＰＩ２）は、アプリケーション２からコールを受け取りそしてそこへ値を返送することに注意されたい。サービス１（例えば、ソフトウェアライブラリ）は、ＯＳ  ＡＰＩ１へコールを発しそしてそこから返送値を受け取り、又、サービス２（例えば、ソフトウェアライブラリ）は、ＯＳ  ＡＰＩ１及びＯＳ  ＡＰＩ２の両方へコールを発しそしてそこから返送値を受け取る。アプリケーション２は、ＯＳ  ＡＰＩ２へコールを発しそしてそこから返送値を受け取る。
【００３９】
図３は、本発明の一実施形態により、サーチデーモン３２０と、マルチファンクション装置で実行される第三者アプリケーション３１０との間の対話を示す図である。ここで使用する第三者アプリケーションは、マルチファンクション装置の製造者以外のエンティティにより提供されるソフトウェアアプリケーションを広く指すものである。典型的に、マルチファンクション装置のユーザは、タスク又はファンクションの特定セットを遂行するためにマルチファンクション装置で実行可能な１つ以上の第三者アプリケーションをインストールする。第三者アプリケーションの幾つかの例として、電子ブックビューア、ソーシャルネットワークマネージャー、等が含まれる。
【００４０】
一般的に、マルチファンクション装置は、マルチファンクション装置のサーチデータベース３８０においてサーチデーモン３２０によりインデックスされる第三者アプリケーション３１０に関連したアプリケーションデータを記憶する。一実施形態において、この装置は、ここに述べるように各々機能するアプリケーション３１０のような複数の第三者アプリケーション、サーチデーモン３２０、又はインスタンスを使用する対応第三者アプリケーションに対して生成されたサーチデーモン３２０のインスタンスを有する。ある実施形態において、サーチデーモン３２０は、アプリケーションデータをインデックスするためにアプリケーションインデクサ３３０を起動する。より詳細には、アプリケーションインデクサ３３０は、アプリケーションデータのレコードをインデックス動作のために検索するように第三者アプリケーション３１０により与えられるアプリケーションサーチバンドル３４０のインスタンスを起動する。アプリケーションサーチバンドル３４０は、セキュリティの理由で他の第三者アプリケーション、システムアプリケーション及びサーチバンドルから分離された個別のプロセスにおいて起動されることに注意されたい。更に、アプリケーションサーチバンドル３４０が起動される個別のプロセスは、アプリケーションサーチバンドル３４０に関連した第三者アプリケーション３１０と同じ特権（例えば、メモリスペースの選択された部分を読み取り及びそこに書き込むことに関する特権であるが、メモリの他の部分への書き込み又は読み取りは制限される）を有してもよい。従って、アプリケーションサーチバンドル３４０は、第三者アプリケーション３１０がアクセスすることが許されるコンテンツへのアクセスは許可され、第三者アプリケーション３１０がアクセスすることが許されないコンテンツへのアクセスは禁止される。ある実施形態では、アプリケーションインデクサ３３０のようなサーチデーモン３２０の部分にも、第三者アプリケーション３１０と同じ特権（例えば、メモリスペース制限）が与えられる。ある実施形態において、サーチデーモン３２０は、第三者アプリケーション３１０を起動せずにユーザ問合せに応答してサーチデータベース３８０においてインデックスされたアプリケーションデータをサーチする。以上のコンセプトを更に例示するため、アプリケーションデータをインデックスしそしてサーチするためのサーチデーモン３２０と第三者アプリケーション３１０との間の対話のある実施形態を以下に詳細に説明する。
【００４１】
一実施形態において、第三者アプリケーション３１０は、マルチファンクション装置において実行されるべく起動される。実行中に、第三者アプリケーション３１０は、アプリケーションデータ３１５への変更を行う。例えば、第三者アプリケーション３１０は、マルチファンクション装置に記憶された既存のレコードを変更し、新たなレコードをマルチファンクション装置へダウンロードし、及び／又はマルチファンクション装置に記憶された既存のレコードを除去（又は削除）する。第三者アプリケーション３１０がアプリケーションデータ３１５を変更するとき、第三者アプリケーション３１０は、更に、アプリケーションデータ３１５において変更されたレコードの識別子（ＩＤ）をサーチデーモン３２０へ送信する。サーチデーモン３２０は、変更されたレコードのＩＤを更新リスト３２５に一時的に記憶する。
【００４２】
その後、サーチデーモン３２０は、インデックスされたデータを構成する必要があるときに、アプリケーションインデクサ３３０を実行するための個別のプロセスを起動する。サーチデーモン３２０は、インデックスされたデータを、周期的に、又はサーチが要求されたときに、又は他の時間又は時間インターバルで、構成する。或いは又、サーチデーモン３２０は、それが更新リスト３２５における新たな情報を発見したときに、インデックスされたデータを構成する。これは、第三者アプリケーション３１０がサーチデーモン３２０に更新識別子を通知するときに行うことができる。又、例えば、アプリケーション更新、システム回復、システム更新、等のインデックス動作をスタートさせるトリガーがアプリケーション３１０の外部にある。ある実施形態では、アプリケーションサーチバンドル３４０は、第三者アプリケーション３１０に特有のサーチ関連プラグインである。第三者アプリケーション３１０は、第三者アプリケーション３１０をマルチファンクション装置にインストールするときにアプリケーションサーチバンドル３４０を与える。アプリケーションインデクサ３３０は、変更されたレコードのＩＤを更新リスト３２５からアプリケーションサーチバンドル３４０に与える。それに応答して、アプリケーションサーチバンドル３４０は、変更されたレコードを、インデックスされるべきアプリケーションインデクサ３３０に与える。或いは又、アプリケーションインデクサ３３０は、アプリケーションサーチバンドル３４０から第三者アプリケーション３１０に関連した全てのレコードを要求する。一実施形態において、第三者アプリケーション３１０に対するアプリケーションインデクサ３３０のインスタンスは、それ自身のプロセスにおいて第三者アプリケーション３１０として特権（メモリコントロール、メモリスペース、メモリ割り当て、ファイルシステムコントロール、及びネットワークコントロールに関して）を伴って実行される。
【００４３】
ある実施形態では、各レコードは、ユーザサーチ問合せと一致がとられるイベントにおいてサーチ結果に各レコードをどのように表示すべきか指令する属性のセットを含む。例えば、規範的なレコードは、ＩＤ、コンテンツのタイトル、コンテンツのサブタイトル、及びアプリケーション特有のＩＤ（ローカルＩＤとも称される）を含む。レコードがユーザサーチ問合せに一致するときは、レコードのタイトル及びサブタイトルがユーザサーチ問合せのサーチ結果に提示される。
【００４４】
アプリケーションサーチバンドル３４０からのレコードを使用して、アプリケーションインデクサ３３０は、サーチデータベース３８０にレコードを構築又は追加し、これは、レコードに関連したコンテンツのメタデータを含む。ある実施形態では、サーチデータベース３８０は、互いに同期された複数のデータベースを含む。例えば、サーチデータベース３８０は、インデックスされたコンテンツを記憶するための第１のデータベースと、インデックスされたコンテンツのレコードを記憶するための第２のデータベースとを含む。サーチデータベースの一実施形態を以下に詳細に述べる。
【００４５】
ユーザがユーザサーチ問合せを提出すると、サーチデーモン３２０は、サーチデータベース３８０にアクセスして、そのユーザサーチ問合せに一致するレコードを見出す。サーチデーモン３２０は、第三者アプリケーション３１０を起動せずに、第三者アプリケーション３１０のアプリケーションデータに関連したレコードをサーチする。サーチデーモン３２０は、ユーザサーチ問合せに一致するレコードの部分を、例えば、ウインドウ内のサーチ結果領域に、その一致するレコードのタイトル及びサブタイトルを表示することにより、提示する。ある実施形態では、ユーザは、その一致するレコードからレコードを選択する。ユーザの選択に応答して、サーチデーモン３２０は、マルチファンクション装置の第三者アプリケーション３１０を起動して、その選択されたレコードに関連したコンテンツを提示する。例えば、コンテンツがビデオデータを含み、そして第三者アプリケーション３１０がビデオを再生するように起動されるか、又はコンテンツが電子ブックを含み、そして第三者アプリケーション３１０が電子ブックを表示するように起動される。
【００４６】
図４は、マルチファンクション装置の第三者アプリケーションに対してサーチ及びインデックス能力を設定するための方法の一実施形態のフローチャートである。この方法は、ハードウェア、ソフトウェア、ファームウェア、又はそのいずれかの組み合わせによって遂行される。
【００４７】
ある実施形態では、ブロック４１０において、マルチファンクション装置上で第三者アプリケーションのインストールを開始する。ブロック４２０において、マルチファンクション装置の所定の位置に第三者アプリケーションと共に第三者アプリケーション特有のアプリケーションサーチバンドルを記憶する。広く述べると、アプリケーションサーチバンドルは、第三者アプリケーションにより与えられるプラグインである。アプリケーションサーチバンドルは、第三者アプリケーションに関連したコンテンツのレコードを転送するためにロードされる。ブロック４３０において、第三者アプリケーションのメタデータをチェックして、第三者アプリケーションが、第三者アプリケーションに関連したコンテンツをインデックスしたいかどうか決定する。第三者アプリケーションがコンテンツをインデックスしたい場合には、ブロック４４５において第三者アプリケーションを登録する。例えば、マルチファンクション装置で実行されるサーチデーモンは、中央位置において登録されたアプリケーションのリストを追跡し、そしてサーチデーモンは、以下に述べるように、第三者アプリケーションに関連したコンテンツをインデックスする。
【００４８】
図５は、マルチファンクション装置の第三者アプリケーションがアプリケーションデータの変更を処理するための方法の一実施形態を示すフローチャートである。この方法は、ハードウェア、ソフトウェア、ファームウェア、又はそのいずれかの組み合わせによって遂行される。
【００４９】
ある実施形態では、ブロック５１０において、マルチファンクション装置で第三者アプリケーションを実行する。ブロック５２０において、第三者アプリケーションは、第三者アプリケーションに関連したアプリケーションデータのレコードを変更する。ブロック５３０において、第三者アプリケーションは、変更されたレコードの識別子（ＩＤ）を、マルチファンクション装置で実行されるサーチデーモンへ送信する。
【００５０】
図６は、マルチファンクション装置のサーチデーモンが第三者アプリケーションに関連したアプリケーションデータの変更を処理するための方法の一実施形態を示すフローチャートである。この方法は、ハードウェア、ソフトウェア、ファームウェア、又はそのいずれかの組み合わせによって遂行される。
【００５１】
ブロック６１０において、マルチファンクション装置で実行されるサーチデーモンは、第三者アプリケーションに関連したアプリケーションデータの変更されたレコードのＩＤを受け取る。ブロック６２０において、サーチデーモンは、受け取ったＩＤを更新リストに入れる。サーチデーモンは、以下に述べるように、更新リストをその後に使用して、レコードをインデックスすべきかどうか決定する。
【００５２】
図７は、マルチファンクション装置のサーチデーモンがアプリケーションデータをインデックスするための方法の一実施形態を示すフローチャートである。この方法は、ハードウェア、ソフトウェア、ファームウェア、又はそのいずれかの組み合わせによって遂行される。
【００５３】
ブロック７１０において、サーチデーモンは、更新リストをチェックして、変更されたレコードがあるかどうか決定する。ある実施形態では、サーチデーモンは、更新リストを周期的にチェックする。変更されたレコードがある場合には、サーチデーモンは、変更されたレコードをインデックスしなければならない。サーチデーモンは、ブロック７２０において、変更されたレコードをインデックスするために個別のプロセスにおいてアプリケーションインデクサを起動する。
【００５４】
図８は、マルチファンクション装置のアプリケーションインデクサがアプリケーションデータをインデックスするための方法の一実施形態を示すフローチャートである。この方法は、ハードウェア、ソフトウェア、ファームウェア、又はそのいずれかの組み合わせによって遂行される。
【００５５】
ブロック８１０において、マルチファンクション装置で実行されるアプリケーションインデクサは、他の第三者アプリケーション、システムアプリケーション及びサーチバンドルから分離された個別のプロセスにおいてアプリケーションサーチバンドルのインスタンスをインスタンス生成する。アプリケーションサーチバンドルは、マルチファンクション装置にインストールされた第三者アプリケーションに特有のプラグインである。ブロック８２０において、アプリケーションインデクサは、アプリケーションサーチバンドルから変更されたレコードを要求するために変更されたレコードのＩＤをアプリケーションサーチバンドルへ通す。或いは又、アプリケーションインデクサは、第三者アプリケーションに関連した全てのレコードをインデックスするように決定し、従って、アプリケーションサーチバンドルから、第三者アプリケーションに関連した全てのレコードを要求してもよい。
【００５６】
ブロック８３０において、アプリケーションインデクサは、アプリケーションサーチバンドルから要求されたレコードを受け取る。各レコードは、コンテンツのタイトル、コンテンツのサブタイトル、及び第三者アプリケーションにより使用されるコンテンツのローカル識別子のような、レコードに関連したコンテンツの属性のセットを含む。ブロック８４０において、アプリケーションインデクサは、受け取ったレコードをインデックスし、そしてそのインデックスされたレコードをマルチファンクション装置内のサーチデータベースに記憶する。
【００５７】
図９は、サーチデーモンが第三者アプリケーションに関連したインデックスされたアプリケーションデータをサーチするための方法の一実施形態を示すフローチャートである。この方法は、ハードウェア、ソフトウェア、ファームウェア、又はそのいずれかの組み合わせによって遂行される。
【００５８】
ブロック９１０において、サーチデーモンは、ユーザサーチ問合せを受け取る。例えば、ユーザは、特定のテキストストリングを有するタイトル（例えば、“spring”）でレコードを探すためにユーザサーチ問合せを提出する。ブロック９２０において、サーチデーモンは、ユーザサーチ問合せに一致するレコードに対して、インデックスされたレコードを含むサーチデータベースをサーチする。
【００５９】
ブロック９３０において、サーチデーモンは、ユーザに提示されるべきサーチ結果においてユーザサーチ問合せに一致する各レコードの識別子を返送する。ある実施形態において、識別子は、タイトル、サブタイトル、関連第三者アプリケーションへの参照、ローカル識別子（第三者アプリケーションに特有な）、及びカテゴリを含む。
【００６０】
ある実施形態では、ユーザサーチ問合せが入力されるサーチボックスの所有者は、問合せ時間にサーチデーモンからサーチ結果を受け取る。ユーザは、サーチ結果からレコードを選択する。所有者は、サーチアプリケーション又は第三者アプリケーションである。所有者が、グローバルサーチを遂行するサーチアプリケーションである場合には、サーチアプリケーションは、第三者アプリケーションを起動し、そしてサーチデーモンからローカル識別子及びカテゴリを通す。所有者が第三者アプリケーションである場合には、選択されたレコードに関連したコンテンツを単に提示できるだけである。所有者が第三者アプリケーションであるときには、第三者アプリケーションに関連したサーチ結果の記録しか示されないことに注意されたい。
【００６１】
図１０は、マルチファンクション装置のサーチデータベース１０００の一実施形態を示す。サーチデータベース１０００は、第１のデータベース１０１０及び第２のデータベース１０２０を含む。他の実施形態では、サーチデータベース１０００は、３つ以上のデータベースを含んでもよい。
【００６２】
ある実施形態では、第１のデータベース１０１０は、ある第三者アプリケーション及びそれらの各ＩＤに関連したコンテンツ（例えば、ドキュメント、ウェブページ、電子ブック、ビデオ、等）を記憶する。第２のデータベース１０２０は、コンテンツのレコードを記憶する。ここに取り上げる例では、各レコードは、コンテンツのＩＤ、コンテンツのタイトル、コンテンツのサブタイトル、及びコンテンツのローカルＩＤを含む。ローカルＩＤは、コンテンツにアクセスして処理する際に第三者アプリケーションによって使用される。従って、ローカルＩＤは、アプリケーションＩＤとも称される。ローカルＩＤの一実施形態が図１１に詳細に示されている。サーチデータベース１０００のコンテンツは、レコードをインデックスすることにより編成される。マルチファンクション装置で実行されるサーチデーモンは、上述したように、ユーザサーチ問合せに応答してレコードをインデックスしそしてサーチデータベース１０００をサーチする。
【００６３】
ある実施形態では、サーチデータベース１０００は、全てのカテゴリのコンテンツ（例えば、音楽、ビデオ、電子ブック、ポッドキャスト、等）をマルチファンクション装置に記憶する。サーチデータベース１０００で遂行されるサーチは高速であるが、サーチデータベース１０００は、バックアップするには大き過ぎるものである。従って、サーチデータベース１０００は、必要に応じて、スクラッチから再構築しなければならない。
【００６４】
或いは又、マルチファンクション装置においてコンテンツのカテゴリごとに１つのサーチデータベースがある。例えば、第１のサーチデータベースは、音楽のために確立され、第２のサーチデータベースは、ポッドキャストのために確立され、第３のサーチデータベースは、電子ブックのために確立され、第４のサーチデータベースは、第１の第三者アプリケーションのためであり、第４のサーチデータベースは、第２の第三者アプリケーションのためであり、等々となる。異なるカテゴリのコンテンツを異なるサーチデータベースへ分離することにより、サーチデータベースは、各サーチデータベースのコンテンツがどれほど安定であるかに基づいて異なる頻度でバックアップされる。コンテンツが安定であるほど、それに対応するサーチデータベースをバックアップしなければならない頻度が少なくなる。しかしながら、サーチデータベースにおけるコンテンツのサーチは、サーチデータベースが複数あるために、低速化される。性能への影響を軽減するために、頻繁にアクセスされるコンテンツのレコードを記憶するようにマルチファンクション装置にキャッシュが具現化される。従って、サーチが高速となる。
【００６５】
図１１は、規範的なドキュメントのＩＤの一実施形態を示す。ＩＤ１１００は、規範的なドキュメントのタイトル１１１０、規範的なドキュメントのサブタイトル１１２０、規範的なドキュメントに関連した第三者アプリケーション１１３０、規範的なドキュメントのカテゴリ識別子１１４０、及び規範的なドキュメントのアプリケーション特有のＩＤ１１５０を含む。
【００６６】
ある実施形態では、ＩＤ１１００は、第三者アプリケーション内の特定のカテゴリに対してのみ独特である。カテゴリは、コンテンツの形式、例えば、スライド、ビデオ、ドキュメント、ポッドキャスト、等である。従って、アプリケーション特有のＩＤ１１５０は、カテゴリごとに独特で、各カテゴリは、第三者アプリケーション内で独特である。
【００６７】
ある実施形態では、第三者アプリケーションは、ビデオ及びポッドキャストが埋め込まれたドキュメントに関連付けされる。第三者アプリケーションは、サーチデーモンに関する限り、そのようなドキュメントを単一のカテゴリ（例えば、「ドキュメント」）の下に入れる。第三者アプリケーションが、より微細粒度の結果、例えば、ドキュメントのポッドキャスト部分のみを返送できることを望む場合には、直接的にポッドキャストを指し、そしてそれを「ポッドキャスト」カテゴリにおいてインデックスするＩＤを与えることができる。第三者アプリケーションは、それらのいずれか又は両方をインデックスのために提出するよう選択することができる。サーチデーモンは、サブピースでの結果と、単一のアトミック結果との間を区別しない。
【００６８】
ある実施形態では、本発明の方法、システム及び装置は、電子装置、消費者向け装置、データ処理装置、デスクトップコンピュータ、ポータブルコンピュータ、ワイヤレス装置、セルラー装置、タブレット装置、ハンドヘルド装置、マルチタッチ装置、マルチタッチデータ処理装置、それら装置の組み合わせ、或いは他の同様の装置を含む種々の装置において具現化することができる。図１２−１４は、幾つかのこれら装置の例を示す。
【００６９】
図１２は、本発明の一実施形態による装置２９５０を示す。この装置２９５０は、ハウジング２９５２、ディスプレイ／入力装置２９５４、スピーカ２９５６、マイクロホン２９５８、及び任意のアンテナ２９６０（ハウジングの外部から見えてもよいし又はハウジング内に隠れてもよい）を備えている。又、装置２９５０は、接近センサ２９６２及び加速度計２９６４も備えている。装置２９５０は、一体型ＰＤＡであるセルラー電話又は装置、一体型メディアプレーヤであるセルラー電話又は装置、娯楽システム（例えば、ゲームをプレイする）及びセルラー電話の両方であるセルラー電話又は装置でもよいし、或いは装置２９５０は、ここに述べる他の形式の装置でもよい。１つの特定の実施形態において、装置２９５０は、セルラー電話、メディアプレーヤ、及びＰＤＡを含み、それらは全てハウジング２９５２内に収容される。装置２９５０は、普通の大人の手の中に入るに充分なほど小さく、且つ大人が片手で持ち歩くに充分なほど軽量であるというフォームファクタを有する。「ポータブル」という語は、大人のユーザの手（片方又は両方）で装置を容易に保持できることを意味し、例えば、ラップトップコンピュータ、ｉＰｈｏｎｅ（登録商標）及びｉＰｏｄ（登録商標）は、ポータブル装置であることが明らかである。
【００７０】
本発明のある実施形態では、装置２９５０は、ここに開示する方法の少なくとも幾つかを具現化するのに使用できる。
【００７１】
図１３は、ワイヤレス通信能力を含むワイヤレス装置の一実施形態を示す。ワイヤレス装置３１００は、アンテナシステム３１０１を備えている。又、ワイヤレス装置３１００は、アンテナシステム３１０１を通して音声、デジタルデータ及び／又はメディア信号を送信及び／又は受信するために、アンテナシステム３１０１に結合されたデジタル及び／又はアナログ高周波（ＲＦ）トランシーバ３１０２も備えている。
【００７２】
又、ワイヤレス装置３１００は、デジタルＲＦトランシーバをコントロールすると共に、音声、デジタルデータ及び／又はメディアデータを管理するためのデジタル処理システム３１０３も備えている。このデジタル処理システム３１０３は、例えば、マイクロプロセッサやコントローラのような汎用処理装置である。デジタル処理システム３１０３は、ＡＳＩＣ（特定用途向け集積回路）、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）又はＤＳＰ（デジタル信号プロセッサ）のような特殊目的の処理装置でもよい。又、デジタル処理システム３１０３は、ワイヤレス装置３１００の他のコンポーネントとインターフェイスするための、この分野で知られた他の装置を含んでもよい。例えば、デジタル処理システム３１０３は、ワイヤレス装置３１００の他のコンポーネントとインターフェイスするためのアナログ／デジタル及びデジタル／アナログコンバータを含んでもよい。デジタル処理システム３１０３は、オーディオデータのファイルのようなメディアを管理するための汎用又は特殊目的処理装置も含むメディア処理システム３１０９を含んでもよい。
【００７３】
又、ワイヤレス装置３１００は、ワイヤレス装置３１００のデータ及び／又はオペレーティングプログラムを記憶するためにデジタル処理システムに結合された記憶装置３１０４も含む。この記憶装置３１０４は、例えば、任意の形式のソリッドステート又は磁気メモリ装置でもよい。又、記憶装置３１０４は、マシン読み取り可能な媒体でもよいし又はそれを含んでもよい。
【００７４】
又、ワイヤレス装置３１００は、ユーザ入力（例えば、電話番号、名前、アドレス、メディア選択、等）を受け容れるためデジタル処理システム３１０３に結合された１つ以上の入力装置３１０５も含む。入力装置３１０５は、例えば、キーパッド、タッチパッド、タッチスクリーン、ディスプレイ装置と組み合わせされるポインティング装置、又は同様の入力装置の１つ以上である。
【００７５】
又、ワイヤレス装置３１００は、メッセージ、電話コール情報、連絡先情報、ピクチャー、映画及び／又はタイトル、或いは入力装置３１０５を経て選択されるメディアの他の指示子のような情報を表示するためにデジタル処理システム３１０３に結合された少なくとも１つのディスプレイ装置３１０６も含む。ディスプレイ装置３１０６は、例えば、ＬＣＤディスプレイ装置である。一実施形態において、ディスプレイ装置３１０６及び入力装置３１０５は、同じ装置に一緒に一体化されてもよい（例えば、ＬＣＤディスプレイ装置のようなディスプレイ装置に一体化されるマルチタッチ入力パネルのようなタッチスクリーンＬＣＤ）。ディスプレイ装置３１０６は、ある環境の下でディスプレイ装置３１０６を照明するためのバックライト３１０６Ａを含む。ワイヤレス装置３１００は、複数のディスプレイを含んでもよいことが明らかであろう。
【００７６】
又、ワイヤレス装置３１００は、デジタルＲＦトランシーバ３１０２、デジタル処理システム３１０３、記憶装置３１０４、入力装置３１０５、マイクロホン３１０５Ａ、オーディオトランスジューサ３１０８、メディア処理システム３１０９、センサ３１１０及びディスプレイ装置３１０６を含むシステムのコンポーネントに動作電力を供給ためのバッテリ３１０７も含む。バッテリ３１０７は、例えば、充電式又は非充電式のリチウム又はニッケル金属水素化物バッテリである。又、ワイヤレス装置３１００は、１つ以上のスピーカを含むオーディオトランスジューサ３１０８、及び少なくとも１つのマイクロホン３１０５Ａも含む。本発明のある実施形態において、ワイヤレス装置３１００は、本開示に述べる方法の少なくとも幾つかを具現化するのに使用できる。
【００７７】
図１４は、本発明の実施形態による装置の別の例を示す。この装置３２００は、マイクロプロセッサ３２０２のようなプロセッサ、及びメモリ３２０４を備え、これらは、バス３２０６を通して互いに結合される。装置３２００は、任意であるが、マイクロプロセッサ３２０２に結合されたキャッシュ３２０８を含んでもよい。又、装置は、任意であるが、例えば、任意の形式のソリッドステート又は磁気メモリ装置である記憶装置３２４０を含んでもよい。記憶装置３２４０は、マシン読み取り可能な媒体でもよいし、又はそれを含んでもよい。
【００７８】
又、この装置は、任意であるが、バス３２０６を通して他のコンポーネントに結合されるディスプレイコントローラ・ディスプレイ装置３２１０を含んでもよい。入力／出力装置３２１４のインターフェイスをなすと共に、ユーザアクティビティを感知する１つ以上のセンサ３２１６のインターフェイスもなすために、１つ以上の入力／出力コントローラ３２１２もバス３２０６に結合される。バス３２０６は、この分野で良く知られた種々のブリッジ、コントローラ、及び／又はアダプタを通して互いに接続された１つ以上のバスを含む。入力／出力装置３２１４は、キーパット又はキーボード、或いはカーソルコントロール装置、例えば、タッチ入力パネルを含む。更に、入力／出力装置３２１４は、ワイヤードネットワーク又はワイヤレスネットワーク（例えば、ＲＦトランシーバ）のためのネットワークインターフェイスを含む。センサ３２１６は、例えば、接近センサ又は周囲光センサを含む、ここに述べるセンサの１つである。装置３２００の少なくとも幾つかの具現化において、マイクロプロセッサ３２０２は、１つ以上のセンサ３２１６からデータを受け取り、そしてここに述べたようにそのデータの分析を行うことができる。
【００７９】
本発明のある実施形態において、装置３２００は、本開示で述べた方法の少なくとも幾つかを具現化するのに使用することができる。
【００８０】
以上、特定の規範的な実施形態を参照して本発明を説明した。特許請求の範囲に述べる本発明の広い精神及び範囲から逸脱せずに、種々の変更がなされ得ることが明らかであろう。従って、明細書及び図面は、本発明を例示するものに過ぎず、何ら限定するものではない。
【符号の説明】
【００８１】
１００：ＡＰＩアーキテクチャー
１１０：ＡＰＩ実施コンポーネント
１２０：ＡＰＩ
１３０：ＡＰＩ発呼コンポーネント
２９５０：装置
２９５２：ハウジング
２９５４：ディスプレイ／入力装置
２９５６：スピーカ
２９５８：マイクロホン
２９６０：アンテナ
２９６２：接近センサ
２９６４：加速度計
３１００：ワイヤレス装置
３１０１：アンテナシステム
３１０２：デジタル及び／又はアナログＲＦトランシーバ
３１０３：デジタル処理システム
３１０４：記憶装置
３１０５：入力装置
３１０５Ａ：マイクロホン
３１０６：ディスプレイ装置
３１０６Ａ：バックライト
３１０７：バッテリ
３１０８：オーディオトランスジューサ
３１０９：メディア処理システム
３１１０：センサ
３２００：装置
３２０２：マイクロプロセッサ
３２０４：メモリ
３２０６：バス
３２０８：キャッシュ
３２１０：ディスプレイコントローラ・ディスプレイ装置
３２１２：Ｉ／Ｏコントローラ
３２１４：Ｉ／Ｏ装置
３２１６：ユーザアクティビティのためのセンサ
３２４０：記憶装置
【図１】
2013527521.tif 000003
【図２】
2013527521.tif 000004
【図３】
2013527521.tif 000005
【図４】
2013527521.tif 000006
【図５】
2013527521.tif 000007
【図６】
2013527521.tif 000008
【図７】
2013527521.tif 000009
【図８】
2013527521.tif 000010
【図９】
2013527521.tif 000011
【図１０】
2013527521.tif 000012
【図１１】
2013527521.tif 000013
【図１２】
2013527521.tif 000014
【図１３】
2013527521.tif 000015
【図１４】
2013527521.tif 000016
【国際調査報告】
2013527521.tif 000017
2013527521.tif 000018
2013527521.tif 000019