(57)【要約】      （修正有）【課題】パッケージファイルに対する機能拡張方法およびシステムを提供する。【解決手段】コンピュータによって実行される機能追加方法は、アプリケーションのためのパッケージファイルを格納する段階４２０、前記パッケージファイルで前記アプリケーションの構成情報として前記アプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されるファイルを抽出する段階４３０、および前記抽出されたファイルで前記最初に呼び出されるクラスに関する情報が設定される項目に新規クラスのクラス名を設定する段階４４０を含む。【選択図】図４
2017146966.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって実行される機能追加方法であって、
アプリケーションのためのパッケージファイルを格納する段階、
前記パッケージファイルで前記アプリケーションの構成情報として前記アプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されるファイルを抽出する段階、および
前記抽出されたファイルで前記最初に呼び出されるクラスに関する情報が設定される項目に新規クラスのクラス名を設定する段階
を含むことを特徴とする、機能追加方法。
【請求項２】
前記抽出されたファイルは、拡張性マークアップ言語（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ：ＸＭＬ）ファイルであって、前記アプリケーションの構成情報および設定情報を含むことを特徴とする、請求項１に記載の機能追加方法。
【請求項３】
前記パッケージファイルは、アンドロイドオペレーティングシステムのためのアンドロイド応用プログラムパッケージ（Ａｎｄｒｏｉｄ  ａｐｐｌｉｃａｔｉｏｎ  ｐａｃｋａｇｅ：ＡＰＫ）ファイルを含み、
前記抽出されたファイルは、前記アンドロイド応用プログラムパッケージファイルが含むアンドロイドマニフェストファイル（Ａｎｄｒｏｉｄ  Ｍａｎｉｆｅｓｔ．ｘｍｌ）を含み、
前記項目は、前記アンドロイドマニフェストファイルが含むアプリケーション項目、アクティビティ項目、サービス項目、レシーバ項目、またはプロバイダ項目を含むことを特徴とする、請求項１に記載の機能追加方法。
【請求項４】
前記項目に新規クラスのクラス名を設定する段階は、
前記項目に前記最初に呼び出されるクラスに関する情報が設定される項目に既存のクラスが設定されている場合、前記既存のクラスのクラス名を前記新規クラスのクラス名に変更することを特徴とする、請求項１に記載の機能追加方法。
【請求項５】
前記アプリケーションの駆動時、前記項目に設定された新規クラスのクラス名を利用して前記新規クラスが含む新たなコードが前記パッケージファイルの本来のコードよりも先に実行されることを特徴とする、請求項１に記載の機能追加方法。
【請求項６】
コンピュータによって実行される機能追加方法であって、
アプリケーションのためのパッケージファイルを格納する段階、
前記パッケージファイルを逆アセンブル（ｄｉｓａｓｓｅｍｂｌｅ）して既存のクラスに関する情報を含むファイルを生成する段階、
前記生成されたファイル内部でスーパークラス（ｓｕｐｅｒ  ｃｌａｓｓ）を設定する項目を通じ、前記項目を実現したクラスと相続関係を有する既存のクラスを確認する段階、
前記確認された既存のクラスのバイトコードに新たなコードを追加する段階、および
前記新たなコードが追加されたバイトコードを利用して前記パッケージファイルを再生成する段階
を含むことを特徴とする、機能追加方法。
【請求項７】
前記確認された既存のクラスのバイトコードに新たなコードを追加する段階は、
前記バイトコードの静的スコープまたは生成者メソッドに前記新たなコードを追加することを特徴とする、請求項６に記載の機能追加方法。
【請求項８】
前記確認された既存のクラスのバイトコードに新たなコードを追加する段階は、
前記バイトコードに前記新たなコードが含まれたクラスをメンバーとして追加するか、前記バイトコードで最初に実行されるメソッドに前記新たなコードを追加するか、または前記アプリケーションに対するシステムライフサイクルによって最初に呼び出し可能となるように前記新たなコードが含まれたメソッドを前記バイトコードに追加することを特徴とする、請求項６に記載の機能追加方法。
【請求項９】
前記パッケージファイルは、アンドロイドオペレーティングシステムのためのアンドロイド応用プログラムパッケージ（Ａｎｄｒｏｉｄ  ａｐｐｌｉｃａｔｉｏｎ  ｐａｃｋａｇｅ：ＡＰＫ）ファイルを含み、
前記生成されたファイルは、前記アンドロイド応用プログラムパッケージファイルに対するダルビック（Ｄａｌｖｉｋ）バイトコードを逆アセンブルした簡易コード（ｓｍａｌｉ  ｃｏｄｅ）を含むことを特徴とする、請求項６に記載の機能追加方法。
【請求項１０】
前記アプリケーションの駆動時、前記既存のクラスが最初に実行されることにしたがい、前記バイトコードに含まれた前記新たなコードが前記パッケージファイルの本来のコードよりも先に実行されることを特徴とする、請求項６に記載の機能追加方法。
【請求項１１】
コンピュータによって実行される機能追加方法であって、
アプリケーションのためのパッケージファイルを格納する段階、
新規クラスが定義されたファイルを読み取る段階、
パスエレメントまたはデックス（ｄｅｘ）エレメントを生成するためのメソッドを呼び出し、前記呼び出されたメソッドに前記定義されたファイルを因子として代入して前記定義されたファイルに対するオブジェクトを生成する段階、および
前記生成されたオブジェクトを前記パッケージファイルのクラス経路（ｃｌａｓｓ  ｐａｓｓ）を参照するためのデックスエレメント配列に追加する段階
を含むことを特徴とする、機能追加方法。
【請求項１２】
前記パッケージファイルは、アンドロイドオペレーティングシステムのためのアンドロイド応用プログラムパッケージ（Ａｎｄｒｏｉｄ  ａｐｐｌｉｃａｔｉｏｎ  ｐａｃｋａｇｅ：ＡＰＫ）ファイルを含み、
前記定義されたファイルに対するオブジェクトを生成する段階は、
前記アンドロイドオペレーティングシステムのコンテキスト（Ｃｏｎｔｅｘｔ）から呼び出されるクラスローダ内部のパスリスト（ｐａｔｈＬｉｓｔ）メンバーオブジェクトに実現されたメイクデックスエレメント（ｍａｋｅＤｅｘＥｌｅｍｅｎｔｓ）メソッドまたはメイクパスエレメント（ｍａｋｅＰａｔｈＥｌｅｍｅｎｔｓ）メソッドに前記定義されたファイルを因子として代入して前記オブジェクトを生成することを特徴とする、請求項１１に記載の機能追加方法。
【請求項１３】
前記パッケージファイルは、アンドロイドオペレーティングシステムのためのアンドロイド応用プログラムパッケージ（Ａｎｄｒｏｉｄ  ａｐｐｌｉｃａｔｉｏｎ  ｐａｃｋａｇｅ：ＡＰＫ）ファイルを含み、
前記定義されたファイルに対するオブジェクトを生成する段階は、
前記アンドロイドオペレーティングシステムが提供するパスリストクラスに実現されたメイクデックスエレメント（ｍａｋｅＤｅｘＥｌｅｍｅｎｔｓ）メソッドまたはメイクパスエレメント（ｍａｋｅＰａｔｈＥｌｅｍｅｎｔｓ）メソッドに前記定義されたファイルを因子として代入して前記オブジェクトを生成することを特徴とする、請求項１１に記載の機能追加方法。
【請求項１４】
前記デックスエレメント配列に追加する段階は、
前記デックスエレメント配列に含まれた本来の値と前記メソッドの呼び出しに対する結果値を共に含む新規配列を生成し、前記デックスエレメント配列に代替することを特徴とする、請求項１１に記載の機能追加方法。
【請求項１５】
前記アプリケーションの駆動時、前記新規クラスのロードおよび呼び出しなく、前記デックスエレメント配列に含まれたオブジェクトを利用して前記新規クラスが実行されることを特徴とする、請求項１１に記載の機能追加方法。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の発明は、パッケージファイルに対する機能拡張方法およびシステムに関する。
【背景技術】
【０００２】
アンドロイド応用プログラムパッケージ（Ａｎｄｒｏｉｄ  ａｐｐｌｉｃａｔｉｏｎ  ｐａｃｋａｇｅ：ＡＰＫ）とは、アンドロイドオペレーティングシステムで活用されるソフトウェアとミドルウェアの配布に使用されるパッケージファイルであって、「．ａｐｋ」拡張子を有する。ＡＰＫファイルを生成するには、アンドロイド用プログラムをコンパイルした後、すべてのファイルを１つのパッケージファイルに集めなければならない。ＡＰＫファイルは、該当するプログラムのすべてのコードを含んでおり、ソース、情報、認証書、およびマニフェストファイル（Ｍａｎｉｆｅｓｔ  ｆｉｌｅ）などを含む。
【０００３】
このようなＡＰＫファイルのようなアプリケーションのパッケージファイルは、パッケージファイルが最終ビルドされた後にはコードを修正および／または追加することができないという問題がある。新たな機能のためのコードを追加しようとする場合には、本来のコードに新たな機能のためのコードを追加するか、新たな機能のためのコードが含まれたライブラリを追加した後、新たな機能のためのコードが追加されたプログラムに対して再びコンパイル過程を経てパッケージファイルを新たに生成しなければならない。
【０００４】
また、新たな機能のためのコードが別のライブラリとして追加される場合には、追加されたライブラリをロードおよび／または呼び出すためのコードが、本来のコードにさらに含まれなければならない。したがって、本来のコードが先に実行されてから新たな機能のためのライブラリをロードおよび／または呼び出さなければならないため、新たな機能が本来のコードよりも先行して実行されなくなるという問題がある。
【０００５】
これと同じように、別の追加クラスを使用するためには、追加クラスが含まれたファイルでクラスをロードし、読み取って使用するための形態の追加コードが本来のコードに追加されなければならないという問題がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
既に完成されていてコードを修正することができないパッケージファイルに、本来のコードよりも先行して実行されることができる追加コードを挿入して機能を確張することができる、機能拡張方法およびシステムを提供する。
【０００７】
パッケージファイルにクラスを追加するにあたり、別のロード過程、クラスインタフェースに対する定義過程、および／またはクラス呼び出しのための追加の手順なく、新規クラスを直ぐに実行することができる、機能拡張方法およびシステムを提供する。
【課題を解決するための手段】
【０００８】
コンピュータによって実行される機能追加方法であって、アプリケーションのためのパッケージファイルを格納する段階、前記パッケージファイルで前記アプリケーションの構成情報として前記アプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されるファイルを抽出する段階、および前記抽出されたファイルで前記最初に呼び出されるクラスに関する情報が設定される項目に新規クラスのクラス名を設定する段階を含むことを特徴とする、機能追加方法を提供する。
【０００９】
コンピュータによって実行される機能追加方法であって、アプリケーションのためのパッケージファイルを格納する段階、前記パッケージファイルを逆アセンブル（ｄｉｓａｓｓｅｍｂｌｅ）して既存のクラスに関する情報を含むファイルを生成する段階、前記生成されたファイル内部でスーパークラス（ｓｕｐｅｒ  ｃｌａｓｓ）を設定する項目を通じ、前記項目を実現したクラスと相続関係を有する既存のクラスを確認する段階、前記確認された既存のクラスのバイトコードに新たなコードを追加する段階、および前記新たなコードが追加されたバイトコードを利用して前記パッケージファイルを再生成する段階を含むことを特徴とする、機能追加方法を提供する。
【００１０】
コンピュータによって実行される機能追加方法であって、アプリケーションのためのパッケージファイルを格納する段階、新規クラスが定義されたファイルを読み取る段階、パスエレメントまたはデックス（ｄｅｘ）エレメントを生成するためのメソッドを呼び出し、前記呼び出されたメソッドに前記定義されたファイルを因子として代入し、前記定義されたファイルに対するオブジェクトを生成する段階、および前記生成されたオブジェクトを前記パッケージファイルのクラス経路（ｃｌａｓｓ  ｐａｓｓ）を参照するためのデックスエレメント配列に追加する段階を含むことを特徴とする、機能追加方法を提供する。
【発明の効果】
【００１１】
既に完成されていてコードを修正することができないパッケージファイルに、本来のコードよりも先行して実行されることができる追加コードを挿入することによって機能を確張することができる。
【００１２】
パッケージファイルにクラスを追加するにあたり、別のロード過程、クラスインタフェースに対する定義過程、および／またはクラス呼び出しのための追加の手順なく、新規クラスを直ぐに実行することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態における、ネットワーク環境の例を示した図である。
【図２】本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。
【図３】本発明の一実施形態における、サーバのプロセッサが含むことのできる構成要素の例を示したブロック図である。
【図４】本発明の一実施形態における、サーバが実行することのできる方法の例を示したフローチャートである。
【図５】本発明の一実施形態における、サーバのプロセッサが含むことのできる構成要素の他の例を示したブロック図である。
【図６】本発明の一実施形態における、サーバが実行することのできる方法の他の例を示したフローチャートである。
【図７】本発明の一実施形態における、パッケージファイルに新たな機能のためのコードを追加する過程の例を示した図である。
【図８】本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の例を示したブロック図である。
【図９】本発明の一実施形態における、電子機器が実行することのできる方法の例を示したフローチャートである。
【図１０】本発明の一実施形態における、アプリケーションの実行時点にクラスを確張することができる過程の例を示した図である。
【発明を実施するための形態】
【００１４】
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
【００１５】
図１は、本発明の一実施形態における、ネットワーク環境の例を示した図である。図１のネットワーク環境は、複数の電子機器１１０、１２０、１３０、１４０、複数のサーバ１５０、１６０、およびネットワーク１７０を含む例を示している。このような図１は、発明を説明するための一例に過ぎず、電子機器の数やサーバの数が図１のように限定されることはない。
【００１６】
複数の電子機器１１０、１２０、１３０、１４０は、コンピュータ装置によって実現される固定型端末や移動型端末であってもよい。複数の電子機器１１０、１２０、１３０、１４０の例としては、スマートフォン（ｓｍａｒｔ  ｐｈｏｎｅ）、携帯電話、ナビゲーション、コンピュータ、ノート型パンコン、デジタル放送用端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）、ＰＭＰ（Ｐｏｒｔａｂｌｅ  Ｍｕｌｔｉｍｅｄｉａ  Ｐｌａｙｅｒ）、タブレットＰＣなどがある。一例として、電子機器１（１１０）は、無線または有線通信方式を利用し、ネットワーク１７０を介して他の電子機器１２０、１３０、１４０および／またはサーバ１５０、１６０と通信してもよい。
【００１７】
通信方式が制限されることはなく、ネットワーク１７０が含むことのできる通信網（一例として、移動通信網、有線インターネット、無線インターネット、放送網）を活用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク１７０は、ＰＡＮ（ｐｅｒｓｏｎａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＣＡＮ（ｃａｍｐｕｓ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＭＡＮ（ｍｅｔｒｏｐｏｌｉｔａｎ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＢＢＮ（ｂｒｏａｄｂａｎｄ  ｎｅｔｗｏｒｋ）、インターネットなどのネットワークのうちの１つ以上の任意のネットワークを含んでもよい。さらに、ネットワーク１７０は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター−バスネットワーク、ツリーまたは階層的（ｈｉｅｒａｒｃｈｉｃａｌ）ネットワークなどを含むネットワークトポロジのうちの任意の１つ以上を含んでもよいが、これに制限されることはない。
【００１８】
サーバ１５０、１６０それぞれは、複数の電子機器１１０、１２０、１３０、１４０とネットワーク１７０を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供するコンピュータ装置または複数のコンピュータ装置によって実現されてもよい。
【００１９】
一例として、サーバ１５０は、電子機器２（１２０）からネットワーク１７０を介してアップロードされるアプリケーションのパッケージファイルを登録し、登録されたパッケージファイルに保護機能や暗号化機能などのような追加機能のためのコードを追加してパッケージファイルに対する機能（一例として、アプリケーションの追加機能）を確張してもよい。ここで、サーバ１５０は、直接または別のサーバ１６０を通じて電子機器１（１１０）に機能が拡張されたパッケージファイルを提供してもよい。電子機器１（１１０）は、アプリケーションのパッケージファイルを通じてアプリケーションを電子機器１（１１０）にインストールおよび駆動してもよく、アプリケーションを通じて予め設定されたサービス（一例として、ゲームサービス、チャットサービス、ＳＮＳ（Ｓｏｃｉａｌ  Ｎｅｔｗｏｒｋ  Ｓｅｒｖｉｃｅ）サービスなど）の提供を受けてもよい。
【００２０】
上述した例は、サーバ１５０で本発明の実施形態に係る機能拡張システムが実現されてパッケージファイルに対する機能を確張する実施形態を説明している。一方、他の実施形態において、機能拡張システムは、電子機器１（１１０）に実現されることも可能である。この場合、電子機器１（１１０）は、本来のパッケージファイルを受信した後、受信したパッケージファイルに追加機能のためのコードを追加することでパッケージファイルに対する機能を確張することも可能である。
【００２１】
図２は、本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。図２では、１つの電子機器に対する例として電子機器１（１１０）、そして１つのサーバに対する例としてサーバ１５０の内部構成について説明する。他の電子機器１２０、１３０、１４０やサーバ１６０も、同一または類似の内部構成を備えてもよい。
【００２２】
電子機器１（１１０）とサーバ１５０は、メモリ２１１、２２１、プロセッサ２１２、２２２、通信モジュール２１３、２２３、および入力／出力インタフェース２１４、２２４を含んでもよい。メモリ２１１、２２１は、コンピュータで読み取り可能な記録媒体であって、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、およびディスクドライブのような永久大容量記憶装置（ｐｅｒｍａｎｅｎｔ  ｍａｓｓ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）を含んでよい。また、メモリ２１１、２２１には、オペレーティングシステムと、少なくとも１つのプログラムコード（一例として、電気機器１（１１０）にインストールされ駆動するブラウザや映像通話のためのアプリケーションなどのためのコード）が格納されてよい。このようなソフトウェア構成要素は、ドライブメカニズム（ｄｒｉｖｅ  ｍｅｃｈａｎｉｓｍ）を利用してメモリ２１１、２２１とは別のコンピュータで読み取り可能な記録媒体からロードされてもよい。このような別のコンピュータで読み取り可能な記録媒体は、フロッピードライブ、ディスク、テープ、ＤＶＤ／ＣＤ−ＲＯＭドライブ、メモリカードなどのコンピュータで読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータで読み取り可能な記録媒体ではない通信モジュール２１３、２２３を利用してメモリ２１１、２２１にロードされてもよい。例えば、少なくとも１つのプログラムは、開発者またはアプリケーションのインストールファイルを配布するファイル配布システム（一例として、上述したサーバ１６０）がネットワーク１７０を介して提供するファイルによってインストールされるプログラム（一例として、上述したアプリケーション）に基づいてメモリ２１１、２２１にロードされてもよい。
【００２３】
プロセッサ２１２、２２２は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ２１１、２２１または通信モジュール２１３、２２３によって、プロセッサ２１２、２２２に提供されてよい。例えば、プロセッサ２１２、２２２は、メモリ２１１、２２１のような記録装置に格納されたプログラムコードにしたがって受信される命令を実行するように構成されてもよい。
【００２４】
通信モジュール２１３、２２３は、ネットワーク１７０を介して電子機器１（１１０）とサーバ１５０とが互いに通信するための機能を提供してもよいし、他の電子機器（一例として、電子機器２（１２０））または他のサーバ（一例として、サーバ１６０）と通信するための機能を提供してもよい。一例として、電子機器１（１１０）のプロセッサ２１２がメモリ２１１のような記録装置に格納されたプログラムコードにしたがって生成した要請（一例として、映像通話サービスのための要請）が、通信モジュール２１３の制御にしたがってネットワーク１７０を介してサーバ１５０に伝達されてもよい。これとは逆に、サーバ１５０のプロセッサ２２２の制御にしたがって提供される制御信号や命令、コンテンツ、ファイルなどが、通信モジュール２２３とネットワーク１７０を経て電子機器１（１１０）の通信モジュール２１３を通じて電子機器１（１１０）に受信されてもよい。例えば、通信モジュール２１３を通じて受信されたサーバ１５０の制御信号や命令などは、プロセッサ２１２やメモリ２１１に伝達されてもよく、コンテンツやファイルなどは、電子機器１（１１０）がさらに含むことのできる格納媒体に格納されてもよい。
【００２５】
入力／出力インタフェース２１４、２２４は、入力／出力装置２１５とのインタフェースのための手段であってもよい。例えば、入力装置は、キーボードまたはマウスなどの装置を、また出力装置は、アプリケーションの通信セッションを表示するためのディスプレイのような装置を含んでもよい。他の例として、入力／出力インタフェース２１４は、タッチスクリーンのように入力と出力のための機能が１つに統合された装置とのインタフェースのための手段であってもよい。より具体的な例として、電子機器１（１１０）のプロセッサ２１２は、メモリ２１１にロードされたコンピュータプログラムの命令を処理するにあたり、サーバ１５０や電子機器２（１２０）が提供するデータを利用して構成されるサービス画面やコンテンツが入力／出力インタフェース２１４を通じてディスプレイに表示されてもよい。
【００２６】
また、他の実施形態において、電子機器１（１１０）およびサーバ１５０は、図２の構成要素よりもさらに多くの構成要素を含んでもよい。しかし、大部分の従来技術構成要素を明確に図に示す必要はない。例えば、電子機器１（１１０）は、上述した入力／出力装置２１５のうちの少なくとも一部を含むように実現されてもよいし、トランシーバ（ｔｒａｎｓｃｅｉｖｅｒ）、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）モジュール、カメラ、各種センサ、データベースなどのような他の構成要素をさらに含んでもよい。より具体的な例として、電子機器１（１１０）がスマートフォンである場合、一般的にスマートフォンが含んでいる加速度センサやジャイロセンサ、カメラ、各種物理的なボタン、タッチパネルを利用したボタン、入力／出力ポート、振動のための振動器などの多様な構成要素が電子機器１（１１０）にさらに含まれるように実現されてもよいことが分かる。
【００２７】
上述したように、本発明の実施形態に係る機能追加方法は、サーバ１５０や電子機器１（１１０）のようにパッケージファイルを格納している装置で実行されてもよい。以下では、サーバ１５０の観点から、パッケージファイルに対する機能追加方法を実行する実施形態について説明するが、電子機器１（１１０）もサーバ１５０と同じ構成要素によって機能追加方法を実行することができる。
【００２８】
図３は、本発明の一実施形態における、サーバのプロセッサが含むことのできる構成要素の例を示したブロック図であり、図４は、本発明の一実施形態における、サーバが実行することのできる方法の例を示したフローチャートである。
【００２９】
サーバ１５０は、機能拡張システムを実現してもよく、図３に示すように、サーバ１５０に含まれたプロセッサ２２２は、構成要素として、ロード制御部３１０、ファイル格納制御部３２０、ファイル抽出制御部３３０、およびクラス名設定部３４０を含んでもよい。このようなプロセッサ２２２およびプロセッサ２２２の構成要素は、図４の機能拡張方法が含む段階４１０〜４４０を実行するようにサーバ１５０を制御してもよい。このとき、プロセッサ２２２およびプロセッサ２２２の構成要素は、メモリ２２１が含むオペレーティングシステムのコードと少なくとも１つのプログラムのコードによる命令（ｉｎｓｔｒｕｃｔｉｏｎ）を実行するように実現されてもよい。ここで、プロセッサ２２２の構成要素は、サーバ１５０に格納されたプログラムコードが提供する制御命令にしたがってプロセッサ２２２によって実行される互いに異なる機能（ｄｉｆｆｅｒｅｎｔ  ｆｕｎｃｔｉｏｎｓ）の表現であってもよい。例えば、プロセッサ２２２が上述した制御命令にしたがって機能拡張方法のためのプログラムのファイルに格納されたプログラムコードをメモリ２２１にロードするように動作する機能的表現として、ロード制御部３１０が使用されてもよい。
【００３０】
段階４１０で、ロード制御部３１０は、機能拡張方法のためのプログラムのファイルに格納されたプログラムコードをメモリ２２１にロードしてもよい。例えば、サーバ１５０でプログラムが実行されると、ロード制御部３１０は、オペレーティングシステムの制御にしたがってプログラムのファイルからプログラムコードをメモリ２２１にロードするようにサーバ１５０を制御してもよい。
【００３１】
ここで、プロセッサ２２２が含むファイル格納制御部３２０、ファイル抽出制御部３３０、およびクラス名設定部３４０それぞれは、メモリ２２１にロードされたプログラムコードのうちの対応する部分の命令を実行して以後の段階４２０〜４４０を実行するためのプロセッサ２２２の機能的表現であってもよい。
【００３２】
段階４２０で、ファイル格納制御部３２０は、アプリケーションのためのパッケージファイルを格納してもよい。パッケージファイルは、一例として、アンドロイドオペレーティングシステムのためのアンドロイド応用プログラムパッケージ（Ａｎｄｒｏｉｄ  ａｐｐｌｉｃａｔｉｏｎ  ｐａｃｋａｇｅ：ＡＰＫ）ファイルのように、アプリケーションのためのプログラムコードがコンパイルされてファイルがパッケージングされた圧縮ファイルの形態を有してもよい。例えば、サーバ１５０は、コンピュータによって実現されてもよく、ファイル格納制御部３２０は、コンピュータが含む格納装置にパッケージファイルが格納および管理されるようにサーバ１５０を制御してもよい。
【００３３】
段階４３０で、ファイル抽出制御部３３０は、パッケージファイルでアプリケーションの構成情報としてアプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されるファイルを抽出してもよい。一例として、アンドロイド応用プログラムパッケージファイルには、アンドロイドマニフェストファイル（ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔ．ｘｍｌ）のようなバイナリ拡張性マークアップ言語ファイルが含まれていることがある。アンドロイドマニフェストファイルは、アプリケーションの構成情報と設定情報を含んでいるアンドロイドアプリケーション構成の基本となるファイルによって画面を構成するアクティビティ（Ａｃｔｉｖｉｔｙ）を登録し、機器資源を使用することができるように使用権限を設定するための機能を有する。さらに、アンドロイドマニフェストファイルは、上述したようにバイナリ拡張性マークアップ言語で実現され、特定のプログラムを使用することによって一般的なＸＭＬファイルのように内容を見ることができる。
【００３４】
このようなアンドロイドマニフェストファイルには、アプリケーションの構成情報としてアプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されてもよく、アプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）項目、アクティビティ（Ａｃｔｉｖｉｔｙ）項目、サービス（Ｓｅｒｖｉｃｅ）項目、レシーバ（Ｒｅｃｅｉｖｅｒ）項目、およびプロバイダ（Ｐｒｏｖｉｄｅｒ）項目などを含んでもよい。
【００３５】
段階４４０で、クラス名設定部３４０は、抽出されたファイルで最初に呼び出されるクラスに関する情報が設定される項目に新規クラスのクラス名を設定してもよい。一例として、クラス名設定部３４０は、上述したアンドロイドマニフェストファイルの項目で最初に呼び出されるように定義されているクラスを見つけ出してもよい。アプリケーション項目に最初に呼び出されるように定義されているクラスが定義されていれば、クラス名設定部３４０は、アプリケーション項目に定義されたクラスのクラス名を新規クラスのクラス名に変更してもよい。
【００３６】
また、アプリケーション項目ではない他の項目（上述したアクティビティ項目、サービス項目、レシーバ項目、またはプロバイダ項目）に最初に呼び出されるように定義されているクラスが存在することもある。この場合にも、クラス名設定部３４０は、該当のクラスのクラス名を新規クラスのクラス名に変更してもよい。
【００３７】
または、既存のクラスに対する別の確認過程なく、最も優先順位が高い項目であるアプリケーション項目に新規クラスのクラス名を指定し、新規クラスが最初に呼び出されるように設定することも可能である。
【００３８】
このとき、アプリケーションを駆動するシステム（一例として、電子機器１（１１０））は、アプリケーション項目に最初に呼び出されるように定義されているクラスのクラス名を利用して新規クラスを呼び出すようになり、したがって新たな機能のためのコードが含まれた新規クラスが最初に（一例として、パッケージファイルの本来のコードよりも先行して）実行されるようになる。
【００３９】
上述したように、図３および図４を参照しながら説明した実施形態では、アンドロイドマニフェストファイルのようにパッケージファイルで、構成情報としてアプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されるファイルを抽出して活用する実施形態について説明した。
【００４０】
一方、パッケージファイルに対する逆アセンブルによって新たな機能のためのコードを追加することも可能である。
【００４１】
図５は、本発明の一実施形態における、サーバのプロセッサが含むことのできる構成要素の他の例を示したブロック図であり、図６は、本発明の一実施形態における、サーバが実行することのできる方法の他の例を示したフローチャートである。
【００４２】
サーバ１５０は、機能拡張システムを実現してもよく、図５に示すように、サーバ１５０に含まれたプロセッサ２２２は、構成要素として、ロード制御部５１０、ファイル格納制御部５２０、ファイル生成制御部５３０、クラス確認部５４０、新規コード追加部５５０、およびパッケージファイル再生成部５６０を含んでもよい。このようなプロセッサ２２２およびプロセッサ２２２の構成要素は、図６の機能拡張方法が含む段階６１０〜６６０を実行するようにサーバ１５０を制御してもよい。このとき、プロセッサ２２２およびプロセッサ２２２の構成要素は、メモリ２２１が含むオペレーティングシステムのコードと少なくとも１つのプログラムのコードによる命令（ｉｎｓｔｒｕｃｔｉｏｎ）を実行するように実現されてもよい。ここで、プロセッサ２２２の構成要素は、サーバ１５０に格納されたプログラムコードが提供する制御命令にしたがってプロセッサ２２２によって実行される互いに異なる機能（ｄｉｆｆｅｒｅｎｔ  ｆｕｎｃｔｉｏｎｓ）の表現であってもよい。例えば、プロセッサ２２２が上述した制御命令にしたがって機能拡張方法のためのプログラムのファイルに格納されたプログラムコードをメモリ２２１にロードするように動作する機能的表現として、ロード制御部５１０が使用されてもよい。
【００４３】
段階６１０で、ロード制御部５１０は、機能拡張方法のためのプログラムのファイルに格納されたプログラムコードをメモリ２２１にロードしてもよい。例えば、サーバ１５０でプログラムが実行されると、ロード制御部５１０は、オペレーティングシステムの制御にしたがってプログラムのファイルからプログラムコードをメモリ２２１にロードするようにサーバ１５０を制御してもよい。
【００４４】
このとき、プロセッサ２２２が含むファイル格納制御部５２０、ファイル生成制御部５３０、クラス確認部５４０、新規コード追加部５５０、およびパッケージファイル再生成部５６０それぞれは、メモリ２２１にロードされたプログラムコードのうちの対応する部分の命令を実行して以後の段階６２０〜６６０を実行するためのプロセッサ２２２の機能的表現であってもよい。
【００４５】
段階６２０で、ファイル格納制御部５２０は、アプリケーションのためのパッケージファイルを格納してもよい。パッケージファイルは、一例として、アンドロイドオペレーティングシステムのためのアンドロイド応用プログラムパッケージファイルのように、アプリケーションのためのプログラムコードがコンパイルされてファイルがパッケージングされた圧縮ファイルの形態を有してもよい。例えば、サーバ１５０は、コンピュータによって実現されてもよく、ファイル格納制御部５２０は、コンピュータが含む格納装置にパッケージファイルが格納および管理されるようにサーバ１５０を制御してもよい。
【００４６】
段階６３０で、ファイル生成制御部５３０は、パッケージファイルを逆アセンブル（ｄｉｓａｓｓｅｍｂｌｅ）して既存のクラスに関する情報を含むファイルを生成してもよい。例えば、アンドロイド応用プログラムパッケージファイルに対するダルビック（Ｄａｌｖｉｋ）バイトコードを逆アセンブルした簡易コード（ｓｍａｌｉ  ｃｏｄｅ）を含むファイルが生成されてもよい。このようなファイルは拡張子として「．ｓｍａｌｉ」を有してもよい。アンドロイドで使用されるフレームワークやアプリなどのダルビック（Ｄａｌｖｉｋ）クラスファイルはすべてジャバファイルであって、Ｓｍａｌｉツールを通じて逆コンパイルされるか、再びコンパイルされてもよい。このとき、アンドロイド応用プログラムパッケージファイルを逆アセンブルして得られるファイル（拡張子として「．ｓｍａｌｉ」を有するファイル）は、「．ｓｕｐｅｒ」項目のようにスーパークラス（ｓｕｐｅｒ  ｃｌａｓｓ）を設定する項目を含んでもよい。
【００４７】
段階６４０で、クラス確認部５４０は、生成されたファイル内部でスーパークラス（ｓｕｐｅｒ  ｃｌａｓｓ）を設定する項目を通じ、項目を実現したクラスと相続関係を有する既存のクラスを確認してもよい。スーパークラスを設定する項目（一例として、アンドロイドオペレーティングシステムにおける上述した「．ｓｕｐｅｒ」項目）を実現するクラスと相続関係を有するクラスは、パッケージファイルを通じてアプリケーションが駆動されるときに最初に実行されるクラスであってもよい。
【００４８】
段階６５０で、新規コード追加部５５０は、確認された既存のクラスのバイトコードに新たなコードを追加してもよい。確認された既存のクラスは、最初に実行されるクラスであって、新規コード追加部５５０は、既存のクラスのバイトコードに新たな機能のためのコードや別のライブラリまたはクラスを呼び出すためのコードを追加することにより、パッケージファイルの本来のコードよりも先に実行されることができるコードをパッケージファイルに追加することができるようになる。このとき、新規コード追加部５５０は、既存のクラスのバイトコードの静的スコープ（ｓｔａｔｉｃ  ｓｃｏｐｉｎｇ）または生成者メソッドに新たなコードを追加し、アプリケーションの駆動時に新たなコードがパッケージファイルの本来のコードよりも先に実行されるようにしてもよい。他の例として、新規コード追加部５５０は、バイトコードに新たなコードが含まれたクラスをメンバーとして追加するか、バイトコードで最初に実行されるメソッドに新たなコードを追加するか、またはアプリケーションに対するシステムライフサイクルによって最初に呼び出し可能となるように新たなコードが含まれたメソッドをバイトコードに追加してもよい。一例として、システムライフサイクルは、アンドロイドライフサイクルを含んでもよい。
【００４９】
段階６６０で、パッケージファイル再生成部５６０は、新たなコードが追加されたバイトコードを利用してパッケージファイルを再生成してもよい。再生成されたパッケージファイルは、アプリケーションが駆動されるシステム（一例として、電子機器１（１１０））に送信されてもよく、前記システムでアプリケーションがインストールおよび駆動される場合、最初に呼び出されるクラスのバイトコードに追加された新たなコードが先に実行されてもよい。言い換えれば、アプリケーションの駆動時に既存のクラスが最初に実行されることにより、バイトコードに含まれた新たなコードがパッケージファイルの本来のコードよりも先に実行されることができる。
【００５０】
図７は、本発明の一実施形態における、パッケージファイルに新たな機能のためのコードを追加する過程の例を示した図である。図７は、サーバ１５０に実現された機能拡張システム７１０が、サーバ１５０の格納装置に格納されたＡＰＫファイル７２０からアンドロイドマニフェストファイル「ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔ．ｘｍｌ」７３０を抽出するか、またはＡＰＫファイル７２０を逆アセンブルし、既存のクラスに関する情報を含むファイルとして拡張子「．ｓｍａｌｉ」を有するファイルを生成する過程を示している。
【００５１】
図３および図４を参照しながら上述したように、機能拡張システム７１０は、「ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔ．ｘｍｌ」７３０の特定の項目（アプリケーション項目、アクティビティ項目、サービス項目、レシーバ項目、またはプロバイダ項目）に新規クラスのクラス名を指定するか、または該当の項目に設定されているクラス（最初に呼び出されるように定義された）のクラス名を新規クラスのクラス名に変更してもよく、クラス名の変更にしたがって新規クラスが最初に呼び出される新たなＡＰＫファイル７５０が生成されてもよい。
【００５２】
または、図５および図６を参照しながら説明したように、機能拡張システム７１０は、逆アセンブルによって生成された拡張子「．ｓｍａｌｉ」を有するファイルで「．ｓｕｐｅｒ」項目を確認し、「．ｓｕｐｅｒ」項目を実現したクラスと相続関係がある既存のクラスのバイトコードに新たなコードを追加してもよい。新たなコードが追加されたバイトコードは、再びアンドロイドが認識することのできるＡＰＫ形態でパッケージングされて新たなＡＰＫファイル７５０が生成されてもよい。
【００５３】
図３〜図７を参照しながら説明した実施形態とは異なり、以下の実施形態では、実行時点に新規クラスを別のロード過程やロードされたクラスインタフェースを定義する過程、または該当のクラスを呼び出すための追加の手順なく新規クラスを直ぐに使用して機能を確張する方法について説明する。本実施形態では、アプリケーションの実行時点に新規クラスを追加して機能を確張するためにアプリケーションがインストールおよび駆動される電子機器１（１１０）の観点からの機能拡張方法について説明する。
【００５４】
図８は、本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の例を示したブロック図であり、図９は、本発明の一実施形態における、電子機器が実行することのできる方法の例を示したフローチャートである。
【００５５】
電子機器１（１１０）は機能拡張システムを実現してもよく、図８に示すように、電子機器１（１１０）に含まれたプロセッサ２１２は、構成要素として、ロード制御部８１０、ファイル格納制御部８２０、ファイルリーディング制御部８３０、オブジェクト生成部８４０、およびオブジェクト追加部８５０を含んでもよい。このようなプロセッサ２１２およびプロセッサ２１２の構成要素は、図９の機能拡張方法が含む段階９１０〜９５０を実行するように電子機器１（１１０）を制御してもよい。このとき、プロセッサ２１２およびプロセッサ２１２の構成要素は、メモリ２１１が含むオペレーティングシステムのコードと少なくとも１つのプログラムのコードによる命令（ｉｎｓｔｒｕｃｔｉｏｎ）を実行するように実現されてもよい。ここで、プロセッサ２１２の構成要素は、電子機器１（１１０）に格納されたプログラムコードが提供する制御命令にしたがってプロセッサ２１２によって実行される互いに異なる機能（ｄｉｆｆｅｒｅｎｔ  ｆｕｎｃｔｉｏｎｓ）の表現であってもよい。例えば、プロセッサ２１２が上述した制御命令にしたがって機能拡張方法のためのプログラムのファイルに格納されたプログラムコードをメモリ２１１にロードするように動作する機能的表現として、ロード制御部８１０が使用されてもよい。
【００５６】
段階９１０で、ロード制御部８１０は、機能拡張方法のためのプログラムのファイルに格納されたプログラムコードをメモリ２１１にロードしてもよい。例えば、電子機器１（１１０）でプログラムが実行されると、ロード制御部８１０は、オペレーティングシステムの制御にしたがってプログラムのファイルからプログラムコードをメモリ２１１にロードするように電子機器１（１１０）を制御してもよい。ここで、機能拡張方法のためのプログラムは、後述するアプリケーションとは異なるプログラムであってもよい。
【００５７】
このときロセッサ２１２が含むファイル格納制御部８２０、ファイルリーディング制御部８３０、オブジェクト生成部８４０、およびオブジェクト追加部８５０それぞれは、メモリ２１１にロードされたプログラムコードのうちの対応する部分の命令を実行して以後の段階９２０〜９５０を実行するためのプロセッサ２１２の機能的表現であってもよい。
【００５８】
段階９２０で、ファイル格納制御部８２０は、アプリケーションのためのパッケージファイルを格納してもよい。パッケージファイルは、一例として、アンドロイドオペレーティングシステムのためのアンドロイド応用プログラムパッケージファイルのように、アプリケーションのためのプログラムコードがコンパイルされてファイルがパッケージングされた圧縮ファイルの形態を有してもよい。例えば、電子機器１（１１０）は、コンピュータによって実現されてもよく、ファイル格納制御部７２０は、コンピュータが含む格納装置にパッケージファイルが格納および管理されるように電子機器１（１１０）を制御してもよい。
【００５９】
段階９３０で、ファイルリーディング制御部８３０は、新規クラスが定義されたファイルを読み取ってもよい。このような新規クラスを別のロード過程や呼び出し過程なく仮想マシン（一例として、アンドロイドのダルビック（Ｄａｌｖｉｋ）またはアート（ＡＲＴ）仮想マシン）上で既にロードされた状態のように直ぐに使用できるようにするために以後の段階９４０および段階９５０が実行されてもよい。
【００６０】
段階９４０で、オブジェクト生成部８４０は、パスエレメントまたはデックス（ｄｅｘ）エレメントを生成するためのメソッドを呼び出し、呼び出されたメソッドに定義されたファイルを因子として代入して定義されたファイルに対するオブジェクトを生成してもよい。例えば、オブジェクト生成部８４０は、アンドロイドオペレーティングシステムのコンテキスト（Ｃｏｎｔｅｘｔ）から呼び出されるクラスローダ（ｃｌａｓｓ  ｌｏａｄｅｒ）内部のパスリスト（ｐａｔｈＬｉｓｔ）メンバーオブジェクトに実現されたメイクデックスエレメント（ｍａｋｅＤｅｘＥｌｅｍｅｎｔｓ）メソッドまたはメイクパスエレメント（ｍａｋｅＰａｔｈＥｌｅｍｅｎｔｓ）メソッドに定義されたファイルを因子として代入して定義されたファイルに対するオブジェクトを生成してもよい。他の例として、オブジェクト生成部８４０は、アンドロイドオペレーティングシステムが提供するパスリストクラスに実現されたメイクデックスエレメント（ｍａｋｅＤｅｘＥｌｅｍｅｎｔｓ）メソッドまたはメイクパスエレメント（ｍａｋｅＰａｔｈＥｌｅｍｅｎｔｓ）メソッドに定義されたファイルを因子として代入して定義されたファイルに対するオブジェクトを生成することも可能である。
【００６１】
段階９５０で、オブジェクト追加部８５０は、生成されたオブジェクトをパッケージファイルのクラス経路（ｃｌａｓｓ  ｐａｓｓ）を参照するためのデックスエレメント配列に追加してもよい。例えば、オブジェクト追加部８５０は、デックスエレメント配列に含まれた本来の値と前記メソッド（ｍａｋｅＤｅｘＥｌｅｍｅｎｔｓまたはｍａｋｅＰａｔｈＥｌｅｍｅｎｔｓ）の呼び出しに対する結果値を共に含む新規配列を生成し、デックスエレメント配列に代替してもよい。言い換えれば、オブジェクト追加部８５０は、新規配列を宣言してデックスエレメント配列に含まれた本来の値と前記メソッド（ｍａｋｅＤｅｘＥｌｅｍｅｎｔｓまたはｍａｋｅＰａｔｈＥｌｅｍｅｎｔｓ）の呼び出しに対する結果値を共に複写して格納し、新規配列をデックスエレメント配列に代入して生成されたオブジェクトをデックスエレメント配列に追加してもよい。
【００６２】
したがって、電子機器１（１１０）は、アプリケーションの駆動時、新規クラスのロードおよび呼び出しなく、デックスエレメント配列に含まれたオブジェクトを利用して新規クラスを実行することができる。
【００６３】
図１０は、本発明の一実施形態における、アプリケーションの実行時点にクラスを確張することができる過程の例を示した図である。図１０は、電子機器１（１１０）に実現された機能拡張システム１０１０が、電子機器１（１１０）の格納装置に格納されたパッケージファイルを通じてアプリケーションを駆動する実行時点にクラスを確張することができる機能拡張方法の例を示している。
【００６４】
機能拡張システム１０１０は、アンドロイドオペレーティングシステムのコンテキスト（Ｃｏｎｔｅｘｔ）からクラスローダ（Ｃｌａｓｓ  Ｌｏａｄｅｒ）１０２０を呼び出してもよく、新規クラスが実行される以前に、該当の新規クラスが定義されたデックスファイル１０３０を読み取ってもよい。
【００６５】
また、機能拡張システム１０１０は、クラスローダ１０２０内部のパスリスト（ｐａｔｈＬｉｓｔ）１０４０メンバーオブジェクトを取り込んでもよく、機能拡張システム１０１０は、パスリスト１０４０メンバーオブジェクトに実現されたデックスエレメント（ｄｅｘＥｌｅｍｅｎｔｓ）の配列１０５０を取り込んでもよい。
【００６６】
このとき、機能拡張システム１０１０は、パスリスト１０４０メンバーオブジェクトに実現された「ｍａｋｅＰａｔｈＥｌｅｍｅｎｔｓ」メソッドまたは「ｍａｋｅＤｅｘＥｌｅｍｅｎｔｓ」メソッドにデックスファイル１０３０を代入し、その呼び出し結果を取得してもよい。「ｍａｋｅＰａｔｈＥｌｅｍｅｎｔｓ」メソッドまたは「ｍａｋｅＤｅｘＥｌｅｍｅｎｔｓ」メソッドの呼び出し過程は、クラスローダ１０２０の呼び出しやローダ１０２０内部のパスリスト（ｐａｔｈＬｉｓｔ）１０４０メンバーオブジェクトを取り込む過程なく、アンドロイドシステムが提供するクラス（「ｍａｋｅＰａｔｈＥｌｅｍｅｎｔｓ」メソッドまたは「ｍａｋｅＤｅｘＥｌｅｍｅｎｔｓ」メソッドのためのクラス）を直接使用する方式でも同じ結果を得ることができる。
【００６７】
メソッド呼び出しによる結果によってオブジェクトが生成されると、機能拡張システム１０１０は、メソッドを呼び出して生成されたオブジェクトを、見つけ出しておいたデックスエレメントの配列１０５０に追加してもよい。デックスエレメントの配列１０５０にオブジェクトを追加するための方法は、配列１０５０にある本来の値とメソッド呼び出しによって得られる結果値を共に含むことが可能な新規配列を生成し、生成された新規配列に前記本来の値と前記結果値を共に複写して入れた後、新規配列を配列１０５０に代入する過程によって処理されてもよい。
【００６８】
この後、デックスエレメントの配列１０５０に新規クラスが定義されたファイルのオブジェクトが追加されたため、新規クラスは、別のロード過程やロードされたクラスに対するインタフェースの定義および／または新規クラスの呼び出しのための追加の過程（新規クラスの呼び出しのためのコードを追加する過程）なく、既にロードされた状態のように直ぐに使用されることができる。
【００６９】
このように、本発明の実施形態によると、既に完成されていてコードを修正することができないパッケージファイルに、本来のコードよりも先行して実行されることのできる追加コードを挿入して機能を確張することができる。また、パッケージファイルにクラスを追加するにあたり、別のロード過程、クラスインタフェースに対する定義過程、および／またはクラス呼び出しのための追加の手順なく新規クラスを直ぐに実行することができる。
【００７０】
上述したシステムまたは装置は、ハードウェア構成要素、ソフトウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてもよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ＡＬＵ（ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）、デジタル信号プロセッサ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、マイクロコンピュータ、ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、ＰＬＵ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｕｎｉｔ）、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、１つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてもよい。処理装置は、オペレーティングシステム（ＯＳ）および前記ＯＳ上で実行される１つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してもよい。理解の便宜のために、１つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ）および／または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは１つのプロセッサおよび１つのコントローラを含んでもよい。また、並列プロセッサ（ｐａｒａｌｌｅｌ  ｐｒｏｃｅｓｓｏｒ）のような、他の処理構成（ｐｒｏｃｅｓｓｉｎｇ  ｃｏｎｆｉｇｕｒａｔｉｏｎ）も可能である。
【００７１】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの１つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に（ｃｏｌｌｅｃｔｉｖｅｌｙ）処理装置に命令したりしてよい。ソフトウェアおよび／またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供するために、いかなる種類の機械、コンポーネント、物理装置、仮想装置（ｖｉｒｔｕａｌ  ｅｑｕｉｐｍｅｎｔ）、コンピュータ格納媒体または装置、または送信される信号波（ｓｉｇｎａｌ  ｗａｖｅ）に永久的または一時的に具現化（ｅｍｂｏｄｙ）されてもよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された方法によって格納されても実行されてもよい。ソフトウェアおよびデータは、１つ以上のコンピュータで読み取り可能な記録媒体に格納されてもよい。
【００７２】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータで読み取り可能な媒体に記録されてもよい。前記コンピュータで読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでもよい。前記媒体に記録されるプログラム命令は、実施形態のために特別に設計されて構成されたものであってもよいし、コンピュータソフトウェア当業者に公知な使用可能なものであってもよい。コンピュータで読み取り可能な記録媒体の例としては、ハードディスク、フロッピディスク、および磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光媒体、フロプティカルディスク（ｆｌｏｐｔｉｃａｌ  ｄｉｓｋ）のような光磁気媒体、およびＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を格納して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。上述したハードウェア装置は、実施形態の動作を実行するために１つ以上のソフトウェアモジュールとして動作するように構成されてもよく、その逆も同じである。
【００７３】
以上のように、実施形態を限定された実施形態と図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能である。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、および／あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
【００７４】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
【符号の説明】
【００７５】
１１０、１２０、１３０、１４０：電子機器
１５０、１６０：サーバ
１７０：ネットワーク
【図１】
2017146966.tif 000003
【図２】
2017146966.tif 000004
【図３】
2017146966.tif 000005
【図４】
2017146966.tif 000006
【図５】
2017146966.tif 000007
【図６】
2017146966.tif 000008
【図７】
2017146966.tif 000009
【図８】
2017146966.tif 000010
【図９】
2017146966.tif 000011
【図１０】
2017146966.tif 000012