(57)【要約】  第三者スクリプト開発者がソフトウェアアプリケーションに安全に組入れることができる安全なスクリプトを作成できるようにするためのシステムおよび方法が開示される。システムは、アプリケーション開発者が悪意のあるスクリプトからの自身のアプリケーションの保護について心配する必要なく第三者スクリプトをソフトウェアアプリケーションに追加できるように、クライアント／サーバセキュアスクリプト記述環境をホストされるソフトウェアアプリケーション開発環境に追加できるようにするための流れおよびメカニズムを提供し得る。このスクリプト記述環境により、アプリケーションが、信頼できない第三者スクリプト開発者によって安全にスクリプト化可能になり得る。
2016505994.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアアプリケーション開発者が第三者スクリプトを自身のソフトウェアアプリケーションに組入れられるようにするためのシステムであって、
サーバに対する認証、アクセス制御、クライアント側スクリプト記述に対する制限、およびスクリプトの管理のうち少なくとも１つを提供するスクリプト記述環境と、
１つ以上の処理デバイスと、
前記１つ以上の処理デバイスによって実行されると、前記１つ以上の処理デバイスに、ソフトウェアアプリケーション開発者が
第三者スクリプトクライアントとアプリケーションサーバとの間の通信を可能にするサーバ側ウェブサービスを作成し（３０１）、
アプリケーションの機能およびリソースのサブセットを公表するクライアント側アプリケーションプログラミングインターフェイスを作成し（３０３）、
ウェブサービスを介した前記アプリケーションのサーバへの第三者スクリプトアクセスを許容し（３０７）、
前記クライアント側アプリケーションプログラミングインターフェイスを用いて、前記第三者スクリプトが前記アプリケーションの機能およびリソースにアクセスできるようにし（３０５）、かつ
エンドユーザに前記第三者スクリプトへのアクセスを提供する（３０９）、ことができるようにさせる命令を格納する１つ以上の記憶デバイスとを備える、システム。
【請求項２】
前記アプリケーション中でイベントが発生すると、第三者スクリプトが、前記第三者スクリプト中でアクションを開始させるトリガを規定しかつ登録できるようにすることをさらに備える、請求項１に記載のシステム。
【請求項３】
ソフトウェアアプリケーション開発者に、第三者スクリプト中に含むことができるスクリプト記述ライブラリに前記ウェブサービスをまとめる能力を許容することをさらに備える、請求項１に記載のシステム。
【請求項４】
統合開発環境を通じて第三者スクリプトを前記アプリケーションにロードする能力をソフトウェアアプリケーション開発者に許容することをさらに備える、請求項１に記載のシステム。
【請求項５】
前記統合開発環境はソフトウェアアプリケーションに関連付けられるブランディングを作成する、請求項４に記載のシステム。
【請求項６】
インストールのために利用可能な特定用途向けスクリプトのギャラリーをエンドユーザに提供することをさらに備える、請求項１に記載のシステム。
【請求項７】
前記ユーザがインストール済スクリプトを管理することができる、現在インストール済のスクリプトのダッシュボードをエンドユーザに提供することをさらに備える、請求項１に記載のシステム。
【請求項８】
ソフトウェアアプリケーション開発者が第三者スクリプトを自身のソフトウェアアプリケーションに組入れられるようにするためのコンピュータで実現される方法であって、
第三者スクリプトクライアントとアプリケーションサーバとの間の通信を可能にするサーバ側ウェブサービスを作成すること（３０１）と、
前記アプリケーションの機能およびリソースのサブセットを公表するクライアント側アプリケーションプログラミングインターフェイスを作成すること（３０３）と、
ウェブサービスを介した前記アプリケーションのサーバへの第三者スクリプトアクセスを可能にすること（３０７）と、
前記クライアント側アプリケーションプログラミングインターフェイスを用いて、前記第三者スクリプトが前記アプリケーションの機能およびリソースにアクセスできるようにすること（３０５）と、
エンドユーザに前記第三者スクリプトへのアクセスを提供すること（３０９）と、を備える、コンピュータで実現される方法。
【請求項９】
イベントが前記アプリケーション中で発生すると、第三者スクリプトが、前記第三者スクリプト中でアクションを開始させるトリガを規定しかつ登録できるようにすることをさらに備える、請求項８に記載のコンピュータで実現される方法。
【請求項１０】
ソフトウェアアプリケーション開発者に、第三者スクリプト中に含むことができるスクリプト記述ライブラリに前記ウェブサービスをまとめる能力を許容することをさらに備える、請求項８に記載のコンピュータで実現される方法。
【請求項１１】
統合開発環境を通じて第三者スクリプトを前記アプリケーションにロードする能力をソフトウェアアプリケーション開発者に許容することをさらに備える、請求項８に記載のコンピュータで実現される方法。
【請求項１２】
前記統合開発環境はソフトウェアアプリケーションに関連付けられるブランディングを作成する、請求項１１に記載のコンピュータで実現される方法。
【請求項１３】
インストールのために利用可能な特定用途向けスクリプトのギャラリーをエンドユーザに提供することをさらに備える、請求項８に記載のコンピュータで実現される方法。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
ソフトウェアアプリケーションはしばしば、ある能力を与えるという特定的な要件に従って開発される。ソフトウェアアプリケーション開発者はエンドユーザに貴重な機能を提供することがあるが、第三者スクリプト開発者は、ソフトウェアアプリケーション機能を変更または拡張してアプリケーションをよりユーザフレンドリにする拡張、自動化、プラグイン、または同様のコードを提供することによってこの基本的機能を向上させることがある。たとえば、ウェブアプリケーション開発者は電子メールを送受信するためのソフトウェアアプリケーションを作成することがある。ウェブアプリケーションは、電子メールを見つけ出しかつ標識付けするための機能を含むことがある。アプリケーションは任意の１つのエンドユーザの電子メールアカウントのサイズ容量に対して制限を有することもある。しかしながら、ウェブアプリケーションは、あるサイズを超える電子メールメッセージを見つけ出す能力をエンドユーザに提供しないことがあるので、それらはユーザの電子メールアカウント中のスペースを空けるために大きな電子メールメッセージを削除することができる。第三者スクリプト開発者は、電子メールアプリケーションに追加されるとあるサイズを超えるすべての電子メールメッセージを見つけ出して標識付けすることができるプラグインを書くことがある。エンドユーザは、自身のブラウザに第三者開発者のプラグインを追加してプラグインを実行して、大きな電子メールメッセージを容易に見つけ出すことができるので、エンドユーザの電子メールアカウントがサイズ容量に達するとこれらのメッセージを削除することができる。
【０００２】
第三者スクリプトがエンドユーザの経験を向上させることができても、信頼できない第三者スクリプトを自身のウェブアプリケーションに追加するのを許容するソフトウェアアプリケーション開発者はほとんどいない。なぜなら、第三者機能を追加すると、ウェブアプリケーション開発者がウェブアプリケーションのセキュリティを維持するのが難しくなり、かつウェブアプリケーションに対するエンドユーザの経験が一貫性のないものになってしまうからである。
【０００３】
図１に示されるように、従来の第三者スクリプト（１０５）は、殆どの場合、ウェブブラウザレベル（１０１ａ，１０１ｂ）で作業し、ソフトウェアアプリケーションの統合部分ではない。ブラウザレベルの第三者スクリプトの著名な例がプラグインであり、これは、ウェブアプリケーションの機能をカスタマイズすることができるソフトウェアコンポーネントである。ブラウザレベルのスクリプトはブラウザに依存するので、これには問題がある。エンドユーザは、１つのブラウザ（１０１ａ）中のアプリケーション（１０３ａ）向けに図１に示されるものなどのスクリプト（１０５）をインストールするが、次に、用いているブラウザ（１０１ｂ）を変更して同じアプリケーション（１０３ｂ）の異なるインスタンスにアクセスすれば、エンドユーザは、アプリケーション向けのスクリプトの機能を得るには、新しいブラウザにスクリプトをインストールしなければならない。図１に示されるように、スクリプトはブラウザ２（１０１ｂ）にはインストールされていないので、アプリケーションのスクリプト１０５の機能の拡張はブラウザ１（１０１ａ）において利用可能であるが、ブラウザ２（１０１ｂ）においては利用できない。
【０００４】
第三者スクリプトが依然として安全でありつつホストアプリケーションと緊密に対話できるようにするシステムが存在すべきである。システムは、エンドユーザがアプリケーションにどのようにアクセスしているかに拘らず第三者スクリプトをエンドユーザに関連付けることができるように、ソフトウェアアプリケーション開発者が自身のホストされるアプリケーションに第三者スクリプト記述機能を安全に追加できるようにすべきである。
【発明の概要】
【課題を解決するための手段】
【０００５】
要約
この明細書は、概して第三者アプリケーションスクリプト化可能性（scriptability）に関し、かつ具体的には第三者スクリプト開発者がソフトウェアアプリケーションに安全に機能を追加できるようにするための方法およびシステムに関する技術を記載する。
【０００６】
概して、この明細書に記載される主題の１つの局面は、ソフトウェアアプリケーション開発者が第三者スクリプトを自身のソフトウェアアプリケーションに組入れられるようにするためのシステムおよび方法に具現化することができる。例示的なシステムは、サーバに対する認証、アクセス制御、クライアント側スクリプト記述に対する制限、およびスクリプトの管理のうち少なくとも１つを提供するスクリプト記述環境を含む。システムは加えて、１つ以上の処理デバイスと、第三者スクリプトクライアントとアプリケーションサーバとの間の通信を可能にするサーバ側ウェブサービスを作成し、アプリケーションの機能およびリソースのサブセットを公表するクライアント側アプリケーションプログラミングインターフェイスを作成し、ウェブサービスを介したアプリケーションのサーバへの第三者スクリプトアクセスを許容し、第三者スクリプトがクライアント側アプリケーションプログラミングインターフェイスを用いてアプリケーションの機能およびリソースにアクセスできるようにし、かつエンドユーザに第三者スクリプトへのアクセスを与える命令を格納する１つ以上の記憶デバイスとを含んでもよい。第２の例示的なシステムは、上述のようなスクリプト記述環境と、１つ以上の処理デバイスと、第三者スクリプト開発者がソフトウェアアプリケーションからアプリケーションプログラミングインターフェイスを受信し、ソフトウェアアプリケーションからウェブサービスを受信し、アプリケーションプログラミングインターフェイスおよびウェブサービスを用いてソフトウェアアプリケーションの機能を変更するスクリプトを作成し、かつエンドユーザがスクリプトにアクセスできるようにする、ことができるようにする命令を格納する１つ以上の記憶デバイスとを含んでもよい。
【０００７】
これらおよび他の実施形態はオプションで：イベントがアプリケーション中で発生すると第三者スクリプトが第三者スクリプト中でアクションを開始させるトリガを規定しかつ登録してもよい；ソフトウェアアプリケーション開発者が、第三者スクリプト中に含むことができるスクリプト記述ライブラリにウェブサービスをまとめる能力を有してもよい；ソフトウェアアプリケーション開発者が統合開発環境を通して第三者スクリプトをアプリケーションにロードすることができてもよい；統合開発環境がソフトウェアアプリケーションに関連付けられるブランディングを作成してもよい；インストールのために利用可能な特定用途向けスクリプトのギャラリーがエンドユーザに与えられてもよい；およびユーザがインストール済スクリプトを管理することができる、現在インストール済のスクリプトのダッシュボードがエンドユーザに与えられてもよい、という特徴のうち１つ以上を含むことができる。
【０００８】
例示のみのために与えられる添付の図面および以下の説明で発明の１つ以上の実施形態の詳細を述べる。発明の他の特徴、局面、および利点は、記載、図面、および請求項から明らかになるであろう。さまざまな図面中の同様の参照番号および表示は同じ要素を示す。
【図面の簡単な説明】
【０００９】
【図１】第三者スクリプトをウェブアプリケーションに追加するための従来の実施形態を示すブロック図である。
【図２】第三者スクリプトをウェブアプリケーションに追加するための例示的な実施形態を示すブロック図である。
【図３】第三者スクリプトをウェブアプリケーションに追加するための例示的な方法のフロー図である。
【図４】例示的なコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【００１０】
詳細な説明
例示的な実施形態に従うと、図２に示されるようにソフトウェアアプリケーション開発者が第三者スクリプトを自身のアプリケーションに組入れられるようにする包括的なプラグイン状のシステムが存在することができる。システムは、アプリケーション開発者が悪意のあるスクリプトからの自身のアプリケーションの保護について心配する必要なく第三者スクリプトをソフトウェアアプリケーションに組入れられるように、安全なスクリプト記述環境をホストされるソフトウェアアプリケーション開発環境に追加できるようにするための流れおよびメカニズムを提供し得る。このスクリプト記述環境により、信頼できない第三者スクリプト開発者によってアプリケーションが安全にスクリプト化可能になり得る。例示的なスクリプト記述環境は、安全なスクリプト記述のためにＣａｊａを用いてもよい。この技術は、ユーザスクリプトを変更して危険なメソッド呼出を除去することによってそれらをサニタイズすることができるＪａｖａＳｃｒｉｐｔ（登録商標）サンドボックスを提供する。図２に示されるように、アプリケーションサーバ（１０９）はアプリケーションレベルで第三者スクリプト（１０５）を組入れるので、スクリプトプラグインは、アプリケーション（１０３ａ，１０３ｂ）のインスタンスにアクセスするのに用いられるブラウザ（１０１ａ，１０１ｂ）とは独立している。したがって、アプリケーションにログインしたユーザは、ユーザがアプリケーションにアクセスするのに用いているブラウザに拘らず、アプリケーションについて同じユーザ経験を有することになる。
【００１１】
例示的なシステムは、クライアントとサーバとの両方のスクリプト記述コンポーネントと、スクリプトホスティングと、ウェブ統合開発環境（ＩＤＥ）と、所与のアプリケーション向けのすべてのスクリプトを閲覧するやり方とを含んでもよい。
【００１２】
いくつかの実施形態では、例示的なシステムはクライアント／サーバセキュアスクリプト記述環境を含む。このスクリプト記述環境は、（１）クラウド統合開発環境、（２）サーバ側スクリプト記述ランタイム、（３）スクリプトホスティングおよびライブラリ、（３）イベントトリガ、（４）アカウント管理、（５）内蔵アプリケーションプログラミングインターフェイス（ＡＰＩ）、（６）ｏＡｕｔｈ統合、（７）セキュラブルクライアント、（８）ソフトウェアアプリケーションのエンドユーザに対して悪意のある攻撃を発生させることができない制限されたブラウザ内権限を付与され得るスクリプト、ならびに（９）特定用途向けに開発されたすべてのスクリプトを閲覧するアプリケーション毎のギャラリーという特徴のうちいくつかまたはすべてを提供してもよい。スクリプト記述環境は、サーバに対する認証、アクセス制御、およびクライアント側拡張に対する制限も提供してもよい。加えて、スクリプト記述環境は、ホスティング、サーバＡＰＩ、およびアカウント管理を含む他の詳細を管理してもよい。一般的に、例示的なシステムは、ウェブアプリケーションの必要性を理解し、かつスクリプト記述環境とウェブアプリケーションとが対話するように、ウェブアプリケーションがスクリプト記述環境と対話する方法を規定すべきである。
【００１３】
例示的な実施形態は、異なる群の意図されるユーザのために異なるビューおよび機能を提供してもよい。ソフトウェアアプリケーション開発者のために、１つは第三者スクリプト開発者のため、１つはエンドユーザのためのビューが存在してもよい。
【００１４】
ソフトウェアアプリケーション開発者
例示的なシステムを用いて、ソフトウェアアプリケーション開発者はエンドユーザのインストール済スクリプトについてスクリプト記述環境に問合せし、サンドボックス化技術を介してアプリケーションのクライアントにインストール済スクリプトをロードし、ロードされたスクリプトをサンドボックス化し、かつロードされたスクリプトが、第三者スクリプトと対話するように作成されたウェブサービスを用いてアプリケーションのサーバと対話できるようにしてもよい。
【００１５】
例示的な実施形態は、ソフトウェアアプリケーション開発者に、統合開発環境（ＩＤＥ）を通じてスクリプトをロードするやり方を提供してもよい。この開発環境には、ソフトウェアアプリケーション向けのウェブサービスが予めロードされていてもよい。ＩＤＥはどのアプリケーションがＩＤＥを開いたかを理解することができてもよい。アプリケーションは、ＩＤＥを開くときにアプリケーションが必要とするかもしれない特別な特徴に関する情報を手渡すことができる。たとえば、アプリケーションは、ＩＤＥのコードエディタをオートコンプリートすべき特定用途向けＡＰＩの一覧を送ってもよい。ＩＤＥは一般的であることができ、必要に応じて任意のアプリケーションがＩＤＥを依然としてカスタマイズできるようにしつつも任意の特定のアプリケーションについては知ることができない。ＩＤＥはソフトウェアアプリケーションに関連付けられるブランディングを作成するやり方も有してもよい。たとえば、アプリケーションのロゴおよび色の方式がＩＤＥに引き継がれてもよい。
【００１６】
いくつかの実施形態では、例示的なシステムは、ソフトウェアアプリケーション開発者に、自身のアプリケーション向けのクライアント側ＡＰＩを書く能力を与えてもよい。クライアント側ＡＰＩは、第三者スクリプト開発者にアクセス可能な特定のソフトウェアアプリケーションのクライアント側コードおよびＤＯＭを含んでもよい。標準的な方法と他の方法を追加するためのテンプレート／スタイルガイドとの両方が存在してもよい。アプリケーション機能およびリソースには、アプリケーションのクライアント側ＡＰＩを通してアクセスしてもよい。ＡＰＩは、第三者開発者がどのアプリケーション機能およびリソースを利用可能であるかを規定する。たとえば、表計算アプリケーションでは、スクリプトは、ユーザが式を含有するセルを選択する度にサイドバーを示すように書かれてもよい。スクリプトが書かれるためには、表計算アプリケーションは、現在選択されているセルを返すための方法を含有するＡＰＩを与えてもよい。返されたセルは、セルが式であるか否かを判断してセルの値を与えるプロパティを有してもよい。表計算ＡＰＩは、サイドバーを示すための方法も含有してもよい。アプリケーションが第三者スクリプトに公表したい方法およびプロパティは、アプリケーションのＡＰＩ内に規定されるべきである。
【００１７】
例示的なシステムは、ソフトウェアアプリケーション開発者に、アプリケーションのサーバと通信するために第三者スクリプトによってアクセスされ得るサーバ側ウェブサービスを書くためのツールも提供してもよい。これらのウェブサービスは、スクリプト記述環境を通してソフトウェアアプリケーション開発者に提供される既存のＡＰＩを用いて書かれてもよい。これらのＡＰＩは、ＲＥＳＴおよびＳＯＡＰ  ＡＰＩを含んでもよい。これに代えて、ソフトウェアアプリケーション開発者は、第三者スクリプト開発者によって開発されるスクリプトに含むことができるライブラリを構築してもよい。ソフトウェアアプリケーション開発者は、ｏＡｕｔｈ認証をサポートしかつスクリプト記述ライブラリにまとめることができるＲＥＳＴｆｕｌサービスを作成してもよい。
【００１８】
例示的な実施形態は、加えて、ソフトウェアアプリケーション開発者に、自身のアプリケーション向けのトリガを規定しかつ登録するやり方を提供してもよい。トリガは、イベントが発生した際にアクションを開始させるメカニズムである。トリガは、特定用途向けであり、アプリケーション開発者によって選ばれてもよい。トリガの例は、ｏｎＥｄｉｔ、ｏｎＯｐｅｎ、およびｏｎＳａｖｅを含む。「ｏｎＥｄｉｔ」トリガは、アプリケーションで編集が発生すると始動する（fire）。「ｏｎＯｐｅｎ」トリガは、アプリケーションで何かが開かれるとアクションを開始する。「ｏｎＳａｖｅ」トリガは、アプリケーション内で何かが保存されると始動する。アプリケーション開発者は、そのためにスクリプトを書くことができるイベントをトリガするものとして用いられてもよいイベント名の一覧を明記してもよい。次に、スクリプトは、ブローカサービスとともに具体的なイベントのためのトリガを登録することができるので、特定のイベントが発生するとスクリプトが通知される。イベントを記録してもよく、イベントおよびイベントに関連付けられ得るオプションのペイロードをブローカサービスに与えてもよい。ブローカサービスは、特定のイベントトリガが始動するのをリッスン（listen）しているスクリプトにトリガイベントについてのニュースを中継してもよい。ブローカサービスはＲＥＳＴサービスであってもよく、ペイロードがＪＳＯＮに書込まれてもよい。
【００１９】
いくつかの実施形態では、フロントエンドスクリプト言語コードを与えて、インストール済スクリプトをエンドユーザ毎にアプリケーションにロードしてもよい。フロントエンドスクリプト言語は、たとえばＪａｖａＳｃｒｉｐｔ（登録商標）であってもよい。各々のエンドユーザは特定用途向けに書かれるスクリプトの異なるサブセットを含みたいかもしれない。与えられるコードは、アプリケーションに関連付けられるすべてのスクリプトを見出して、アプリケーションに現在アクセスしているエンドユーザがインストールしたスクリプトをロードしてもよい。
【００２０】
ソフトウェアアプリケーションと第三者スクリプトとの間でのクライアント／サーバ通信を容易にすることに加えて、例示的なシステムは、ソフトウェア開発者が、自身のアプリケーションがウェブ店舗に現れるとこれを閲覧することができるように、ソフトウェアアプリケーション開発者にフレーム化が可能な（frameable）ウェブ店舗ビューにリンクするＵＲＬを与えてもよい。アプリケーションは、エンドユーザがアプリケーションをダウンロードして用いることができるように、ウェブ店舗においてアクセス可能であってもよい。ソフトウェアアプリケーション開発者のウェブ店舗ビューは、特定のユーザ向けの現在インストール済のスクリプトを表示し、かつインストール可能なスクリプトを示すためのタブを含んでもよい。
【００２１】
第三者スクリプト開発者
例示的なシステムは、アプリケーションの文脈を認識しているアプリケーション当りのサーバ側ウェブサービスを第三者スクリプト開発者に提供してもよい。以上で論じたように、スクリプトが例示的なサーバ上で実行すると、スクリプトはサーバ側スクリプト記述環境が提供するＡＰＩへのアクセスを有する。アプリケーションの文脈はアプリケーションのインスタンス内で共有されるデータを含む。異なるユーザからのすべての要求に亘ってこのデータを利用可能である。以上説明したように、アプリケーションのウェブサービスは、アプリケーション開発者によって書かれ、スクリプト記述環境を用いて第三者スクリプト開発者に提供される。いくつかの実施形態では、第三者スクリプト開発者は、アプリケーション向けのスクリプトを書くためにスクリプト開発者がアプリケーションから機能およびリソースにアクセスするのに用いることができるアプリケーション向けクライアント側ＡＰＩへのアクセスを有してもよい。以上論じたように、クライアント側ＡＰＩは、第三者スクリプト開発者に、アプリケーション開発者が付与することを選ぶのと同程度のソフトウェアアプリケーションへのアクセスを与える。第三者スクリプト開発者は、あるイベントがアプリケーション中で発生すると始動するアプリケーションイベントトリガへのアクセスも有してもよい。例示的な実施形態は、同期クライアントＡＰＩ、スクリプトがアプリケーションのユーザインターフェイスの不連続領域を操作するまたは制御する能力、およびブラウザがユーザイベントをユーザアクションに対する直接の応答として認識し得るやり方におけるボタンクリックなどのユーザイベントに応答するスクリプト記述能力を提供してもよい。
【００２２】
例示的なシステムは、スクリプト開発者に、特定されるアプリケーションウェブサービスが予めロードされているかもしれない統合開発環境も提供してもよい。このスクリプト記述開発環境は、スクリプト開発者がそのためにスクリプトを書いているアプリケーションを介してアクセス可能であってもよい。加えて、例示的なシステムは、スクリプト開発者が、スクリプト開発者のスクリプトがそのために書かれたアプリケーションを特定できるようにするウェブ店舗統合を提供してもよい。
【００２３】
エンドユーザ
第三者スクリプト記述を可能化したソフトウェアアプリケーションのエンドユーザは、インストールに利用可能な特定用途向けスクリプトのギャラリーを見てもよい。エンドユーザは、ユーザがアプリケーション毎に自身のインストール済スクリプトを管理できる、現在インストール済のスクリプトのダッシュボードも有してもよい。
【００２４】
例示的な実施形態に従うと、例示的な方法は、第三者スクリプトがそのために開発されたソフトウェアアプリケーションを実行することで開始する。ソフトウェアアプリケーションはエンドユーザの認証信用証明書を用いて実行されてもよく、また、認証されたエンドユーザがインストールしたアプリケーション向けの第三者スクリプトを入手するコードを実行してもよい。スクリプト毎にＵＲＬが返されてもよい。次にスクリプトがロードされて、関連付けられたウェブアプリケーションとともに実行されてもよい。いくつかのスクリプトは、実行するのにトリガに依拠してもよいが、ウェブアプリケーションに関連付けられるトリガをリッスンする。
【００２５】
以上で論じたようにかつ図３に示されるように、別の実施形態に従うと、例示的なシステムは、ウェブアプリケーション開発者が、ホストされるウェブアプリケーションの機能およびリソースを公表するサーバ側ウェブサービスを作成できるようにしてもよい（３０１）。システムは、ウェブアプリケーション開発者が、ウェブアプリケーションの機能およびリソースのうちいくつかを公表するクライアント側アプリケーションプログラミングインターフェイス（ＡＰＩ）を作成できるようにもしてもよい（３０３）。ウェブアプリケーション開発者は次に、スクリプトがウェブアプリケーションと対話し得るようにアプリケーションプログラミングインターフェイスを介した第三者スクリプトへの設定可能なアクセスを付与してもよい（３０５）。次に第三者スクリプトは、ウェブアプリケーション開発者によって提供されるウェブサービスを介してウェブアプリケーションのサーバにアクセスできるようにされてもよい（３０７）。第三者スクリプト開発者は、クライアント側ＡＰＩおよびウェブサービスを用いてウェブアプリケーションと対話するスクリプトを開発してもよい。エンドユーザは次に、第三者スクリプトへのアクセスを与えられてもよく、自身のウェブアプリケーションプロファイルにこのスクリプトを組入れることを選んでもよい（３０９）。
【００２６】
図４は、第三者スクリプト開発者がホストされるウェブアプリケーション実行環境でブラウザベースのスクリプトエディタを用いて機能をソフトウェアアプリケーションに安全に追加できるようにするために配置され、かつこの文書内に記載されるシステム、装置、および方法を実現するのに用いられてもよい例示的なコンピュータ（４００）の高レベルブロック図である。非常に基本的な構成（４０１）では、コンピューティングデバイス（４００）は典型的に、１つ以上のプロセッサ（４１０）とシステムメモリ（４２０）とを含む。プロセッサ（４１０）とシステムメモリ（４２０）との間での通信のためにメモリバス（４３０）を用いることができる。
【００２７】
所望の構成に依存して、プロセッサ（４１０）は、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタル信号プロセッサ（ＤＳＰ）、またはその任意の組合せを含むがそれらに限定されない任意の種類のものであることができる。プロセッサ（４１０）は、レベル１キャッシュ（４１１）およびレベル２キャッシュ（４１２）、プロセッサコア（４１３）、ならびにレジスタ（４１４）などの１つ以上のキャッシングのレベルを含むことができる。プロセッサコア（４１３）は演算論理ユニット（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）、デジタル信号処理コア（ＤＳＰコア）、またはその任意の組合せを含むことができる。プロセッサ（４１０）とともにメモリコントローラ（４１６）も用いることができ、またはいくつかの実現例では、メモリコントローラ（４１５）はプロセッサ（４１０）の内部部分であることができる。
【００２８】
所望の構成に依存して、システムメモリ（４２０）は、（ＲＡＭなどの）揮発性メモリ、（ＲＯＭ、フラッシュメモリなどの）不揮発性メモリ、またはその任意の組合せを含むがそれらに限定されない任意の種類のものであることができる。システムメモリ（４２０）は典型的に、オペレーティングシステム（４２１）、１つ以上のアプリケーション（４２２）、およびプログラムデータ（４２４）を含む。アプリケーション（４２２）は、ホストされたウェブアプリケーション実行環境中でのウェブアプリケーションと第三者スクリプトとの間での安全な対話のための方法を含んでもよい。プログラムデータ（４２４）は、１つ以上の処理デバイスによって実行されると、第三者スクリプト開発者が機能をソフトウェアアプリケーションに安全に追加できるようにするためのシステムおよび方法を実現する命令を格納することを含む（４２３）。いくつかの実施形態では、オペレーティングシステム（４２１）上でプログラムデータ（４２４）を用いて動作するのにアプリケーション（４２２）を配置することができる。
【００２９】
コンピューティングデバイス（４００）は、付加的な特徴または機能、ならびに基本構成（４０１）と任意の必要なデバイスおよびインターフェイスとの間の通信を容易にする付加的なインターフェイスを有することができる。
【００３０】
システムメモリ（４２０）はコンピュータ記憶媒体の一例である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または所望の情報を格納するのに用いることができかつコンピューティングデバイス４００によってアクセス可能な任意の他の媒体を含むが、これらに限定されない。任意のそのようなコンピュータ記憶媒体はデバイス（４００）の一部であることができる。
【００３１】
コンピューティングデバイス（４００）は、携帯電話、パーソナルデータアシスタント（ＰＤＡ）、パーソナルメディアプレーヤデバイス、無線ウェブ腕時計デバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、または以上の機能のうち任意のものを含むハイブリッドデバイスなどのフォームファクタが小さい携帯型（または移動式）電子デバイスの一部として実現されることができる。コンピューティングデバイス（４００）は、ラップトップコンピュータおよび非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとしても実現されることができる。
【００３２】
以上の詳細な説明は、ブロック図、フロー図、および／または例の使用を介してデバイスおよび／またはプロセスのさまざまな実施形態を述べた。そのようなブロック図、フロー図、および／または例が１つ以上の機能および／または動作を含有する限り、当業者は、そのようなブロック図、フロー図、または例内の各々の機能および／または動作が、広範なハードウェア、ソフトウェア、ファームウェア、または事実上任意のその組合せによって個別におよび／またはまとめて実現され得ることを理解するであろう。１つの実施形態では、本明細書中に記載の主題のいくつかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、または他の集積された形式を介して実現されてもよい。しかしながら、当業者は、本明細書中に開示される実施形態のいくつかの局面のその全体またはその一部が、１つ以上のコンピュータ上で実行する１つ以上のコンピュータプログラムとして、１つ以上のプロセッサ上でファームウェアとして実行する１つ以上のプログラムとして、または事実上任意のその組合せとして集積回路中で均等に実現され得ることと、回路構成を設計することならびに／またはソフトウェアおよび／もしくはファームウェアのためのコードを書くことがこの開示に照らして当業者の技能の範囲内に十分に入るであろうこととを認識するであろう。さらに、当業者は、本明細書中に記載の主題のメカニズムをさまざまな形態でプログラム製品として配布することができ、かつ配布を実際に実行するのに用いられる特定の種類の非一時的信号担持媒体に拘らず本明細書中に記載の主題の例示的な実施形態が当てはまることを認めるであろう。非一時的信号担持媒体の例は、フロッピー（登録商標）ディスク、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、デジタルテープ、コンピュータメモリなどの記録可能型媒体、ならびにデジタルおよび／またはアナログ通信媒体（たとえば光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）などの伝送型媒体を含むが、これらに限定されない。
【００３３】
本明細書中の実質的に任意の複数形および／または単数形の用語の使用に関して、当業者は、文脈および／または適用例に応じて、複数形から単数形におよび／または単数形から複数形に翻訳することができる。明瞭性のために、さまざまな単数形／複数形の入替えを本明細書中に明示的に述べることがある。
【００３４】
このように、主題の特定の実施形態を記載した。他の実施形態が以下の請求項の範囲内に入る。場合によっては、請求項に記載される行為を異なる順序で行なって、依然として所望の結果を達成することができる。さらに、添付の図に描かれるプロセスは、所望の結果を達成するために特定の示される順序または一連の順序を必ずしも要件とするわけではない。ある実現例では、マルチタスクおよび並列処理が有利なことがある。
【図１】
2016505994.tif 000003
【図２】
2016505994.tif 000004
【図３】
2016505994.tif 000005
【図４】
2016505994.tif 000006
【国際調査報告】
2016505994.tif 000007