【手続補正書】
【提出日】平成29年4月21日(2017.4.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アプリケーション・プログラミング・インターフェース（ＡＰＩ）のランタイムの可視性を変更する方法であって、
アプリケーション・プログラミング・インターフェース（ＡＰＩ）を含む実行可能コードを開発するための開発環境を含むコンピュータ・システムにおいて、前記実行可能コードが、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）へのアクセスを動的に要求することができるランタイム環境において起動し、前記ランタイム環境が、アプリケーション・プログラミング・インターフェース（ＡＰＩ）タイプに基づいて、アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対するデフォルト可視性を動的アクセス要求に提供し、当該方法が、
ライブラリにおいて組み合わされた一組のアプリケーション・プログラミング・インターフェース（ＡＰＩ）にアクセスするステップであって、前記一組のアプリケーション・プログラミング・インターフェース（ＡＰＩ）が、１つ以上のパブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）、および１つ以上の非パブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）を含む、ステップと、
前記一組のアプリケーション・プログラミング・インターフェース（ＡＰＩ）の中から、動的アクセス要求に提供された前記デフォルト可視性が変更されることになるアプリケーション・プログラミング・インターフェース（ＡＰＩ）を識別するステップであって、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対するデフォルト可視性が、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）のアプリケーション・プログラミング・インターフェース（ＡＰＩ）タイプによって定義され、前記デフォルト可視性は、他のどのソフトウェア・コンポーネントがランタイム時に前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）にアクセスすることができるかを定義する、ステップと、
前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に追加の属性をアタッチすることによって、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する前記デフォルト可視性を無効にするステップであって、前記追加の属性は、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）にアクセスするランタイムの動的アクセス要求が前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）にアタッチされる前記追加の属性を用いて評価されることになることを、ランタイムの可視性計算モジュールに示す、ステップと、
を含む、方法。
【請求項２】
請求項１記載の方法において、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を識別するステップが、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）を該アプリケーション・プログラミング・インターフェース（ＡＰＩ）の作者に公開するステップを含む、方法。
【請求項３】
請求項２記載の方法において、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する前記デフォルト可視性を無効にするステップが、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）の作者が、前記アプリケーション・プログラミング・インターフェースの前記デフォルト可視性を変更するステップを含む、方法。
【請求項４】
請求項１記載の方法において、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を識別するステップが、非パブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）を識別するステップを含み、前記非パブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）についての前記デフォルト可視性が、前記非パブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）への動的アクセス要求を禁止する、方法。
【請求項５】
請求項４記載の方法において、前記アプリケーション・プログラミング・インターフェースの前記デフォルト可視性を無効にするステップが、前記非パブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）に属性をアタッチするステップを含み、前記属性が、前記非パブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）への動的アクセス要求を許可するように、前記非パブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する前記デフォルト可視性を無効にする、方法。
【請求項６】
請求項１記載の方法において、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を識別するステップが、パブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）を識別するステップを含み、前記パブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）についての前記デフォルト可視性が、前記パブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）への動的アクセス要求を許可する、方法。
【請求項７】
請求項６記載の方法において、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）の前記デフォルト可視性を無効にするステップが、前記パブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）に属性をアタッチするステップを含み、前記属性が、前記パブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）への動的アクセス要求を禁止するように、前記パブリック・アプリケーション・プログラミング・インターフェース（ＡＰＩ）についての前記デフォルト可視性を無効にする、方法。
【請求項８】
動的アクセス要求がリフレクションを使用する、請求項１記載の方法。
【請求項９】
アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対するデフォルト可視性を低減させる方法であって、
アプリケーション・プログラミング・インターフェース（ＡＰＩ）を含む実行可能コードを開発するための開発環境を含むコンピュータ・システムにおいて、前記実行可能コードが、アプリケーション・プログラミング・インターフェース（ＡＰＩ）へのアクセスを動的に要求することができるランタイム環境において起動し、前記ランタイム環境が、アクセス可能なアプリケーション・プログラミング・インターフェース（ＡＰＩ）に対するデフォルト可視性を有し、当該方法が、
アプリケーションのアプリケーション・コードにアクセスするステップであって、前記アプリケーション・コードが、ライブラリにおいて組み合わされた１つ以上のアクセス可能なアプリケーション・プログラミング・インターフェース（ＡＰＩ）を参照する、ステップと、
前記アプリケーション・コード内において参照されるアクセス可能なアプリケーション・プログラミング・インターフェース（ＡＰＩ）を識別するステップであって、前記アクセス可能なアプリケーション・プログラミング・インターフェース（ＡＰＩ）が、前記１つ以上のアクセス可能なアプリケーション・プログラミング・インターフェース（ＡＰＩ）の中から選択され、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対するデフォルト可視性が、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）のアプリケーション・プログラミング・インターフェース（ＡＰＩ）タイプによって定義され、前記デフォルト可視性は、他のどのソフトウェア・コンポーネントがランタイム時に前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）にアクセスすることができるかを定義する、ステップと、
前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）が、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）タイプに基づいてランタイム時に複数のソフトウェア・コンポーネントにアクセス可能であるかを判定するステップと、
前記アクセス可能なアプリケーション・プログラミング・インターフェース（ＡＰＩ）を参照する前記アプリケーション・コードの一部に追加の属性をアタッチすることによって、前記アクセス可能なアプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する前記デフォルト可視性を無効にするステップであって、前記追加の属性が、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対するランタイムの動的アクセス要求が前記複数のソフトウェア・コンポーネントの内の少なくとも１つについて禁止されることになることを、ランタイムの可視性計算モジュールに示す、ステップと、
を含む、方法。
【請求項１０】
請求項９記載の方法において、前記アプリケーション・コード内において参照されるアクセス可能なアプリケーション・プログラミング・インターフェース（ＡＰＩ）を識別するステップが、前記アプリケーション・コードの作者に参照される前記アクセス可能なアプリケーション・プログラミング・インターフェース（ＡＰＩ）を識別するステップを含む、方法。
【請求項１１】
請求項１０記載の方法において、前記アプリケーション・コードの一部に追加の属性をアタッチするステップは、前記アプリケーション・コードの作者が、前記アプリケーション・コードの一部に前記追加の属性をアタッチするステップを含む、方法。
【請求項１２】
請求項９記載の方法において、前記アプリケーション・コードの一部に追加の属性をアタッチするステップが、パブリックＡＰＩを参照する前記アプリケーション・コードの一部に追加の属性をアタッチするステップを含む、方法。
【請求項１３】
請求項９記載の方法において、前記アプリケーション・コードの一部に追加の属性をアタッチするステップが、非パブリックＡＰＩを参照する前記アプリケーション・コードの一部に追加の属性をアタッチするステップを含み、前記非パブリックＡＰＩは、該非パブリックＡＰＩへの動的アクセスが許可されることを示す別の属性を有する、方法。
【請求項１４】
請求項９記載の方法において、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する前記デフォルト可視性を無効にするステップが、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）を参照する前記アプリケーション・コードの一部に追加の属性をアタッチして、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）についてのメタデータがランタイム時に生成されないことを前記可視性計算モジュールに示すステップを含む、方法。
【請求項１５】
動的アクセス要求がリフレクションを使用する、請求項９記載の方法。
【請求項１６】
アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する指定可視性をコンシューマに提供する方法であって、
アプリケーション・プログラミング・インターフェース（ＡＰＩ）への動的アクセスを要求することができるランタイム環境を含むコンピュータ・システムにおいて、前記ランタイム環境が、アプリケーション・プログラミング・インターフェース（ＡＰＩ）タイプに基づいて、動的アクセス要求に、アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対するデフォルト可視性を提供し、当該方法が、
前記ランタイム環境において実行可能コードを実行するステップであって、前記実行可能コードがアプリケーション・コードから導出される、ステップと、
前記実行可能コードの実行中において、
コンシューマから、前記実行可能コードの一部を実行するための動的コールを受けるステップであって、前記実行可能コードの一部が、ライブラリ内のアプリケーション・プログラミング・インターフェース（ＡＰＩ）を参照する前記アプリケーション・コードの一部から導出される、ステップと、
前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）のタイプに基づいて、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対するランタイム・デフォルト可視性にアクセスするステップであって、前記デフォルト可視性は、他のどのソフトウェア・コンポーネントがランタイム時に前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）にアクセスすることができるかを定義する、ステップと、
前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）にアタッチされる任意の追加の属性にアクセスするステップであって、アタッチされる追加の属性が、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する前記ランタイム・デフォルト可視性を無効にするという、アプリケーション・プログラミング・インターフェース（ＡＰＩ）の作者による希望を示す、ステップと、
前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）を参照する前記アプリケーション・コードの前記一部にアタッチされる任意の別の属性にアクセスするステップであって、前記アプリケーション・コードの前記一部にアタッチされる別の属性が、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）へのランタイム・アクセスを、前記無効にされるデフォルト可視性がさもなければ許可することになるのよりも大きく制限される可視性にセットするという、前記アプリケーション・コードの作者による希望を示す、ステップと、
前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する前記ランタイム・デフォルト可視性、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）にアタッチされる任意の追加の属性、および前記アプリケーション・コードの前記一部にアタッチされる任意の他の属性の内の１つ以上に基づいて、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する算出可視性を決定するステップと、
前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する算出可視性を前記動的コールに提供するステップと、
を含む、方法。
【請求項１７】
請求項１６記載の方法において、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する算出可視性を決定するステップが、ＡＰＩタイプ、前記ＡＰＩにアタッチされる属性、および前記ＡＰＩを参照するコードにアタッチされる属性に基づいて、前記ＡＰＩについての算出可視性を決定するステップを含む、方法。
【請求項１８】
請求項１６記載の方法において、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する算出可視性を決定するステップが、ＡＰＩタイプおよび前記ＡＰＩにアタッチされる属性に基づいて、前記ＡＰＩについての算出可視性を決定するステップを含む、方法。
【請求項１９】
請求項１６記載の方法において、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する算出可視性を決定するステップが、ＡＰＩタイプおよびコードの部分にアタッチされる属性に基づいて、ＡＰＩについての算出可視性を決定するステップを含む、方法。
【請求項２０】
請求項１６記載の方法において、前記アプリケーション・プログラミング・インターフェース（ＡＰＩ）に対する算出可視性を決定するステップが、ＡＰＩタイプのみに基づいてＡＰＩについての算出可視性を決定するステップを含む、方法。