(57)【特許請求の範囲】
【請求項１】
複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発用モジュールの選択を受け付けるモジュール選択受付手段と、
選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定手段と、
アプリの展開先である複数の環境のうちの少なくとも１つの環境の選択を受け付ける環境選択受付手段と、
選択された前記アプリ開発用モジュール、特定された前記他のアプリ開発用モジュール、及び選択された前記環境の間におけるライブラリの重複を排除する重複排除手段と、
前記ライブラリの重複が排除された、選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を開発者に提供する提供手段と、
を含むことを特徴とするモジュール提供システム。
【請求項２】
複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発用モジュールの選択を受け付けるモジュール選択受付手段と、
選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定手段と、
アプリの展開先である複数の環境のうちの少なくとも１つの環境の選択を受け付ける環境選択受付手段と、
選択された前記環境における不要なライブラリを排除する不要排除手段と、
不要な前記ライブラリが排除された、選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を開発者に提供する提供手段と、
を含むことを特徴とするモジュール提供システム。
【請求項３】
複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発用モジュールの選択を受け付けるモジュール選択受付手段と、
選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定手段と、
アプリの展開先である複数の環境のうちの少なくとも１つの環境の選択を受け付ける環境選択受付手段と、
選択された前記環境に基づいて、選択された前記アプリ開発用モジュールと、特定された前記アプリ開発用モジュールと、の各々のコードを最適化するコード最適化手段と、
前記コードが最適化された、前記選択されたアプリ開発用モジュールと、前記特定された他のアプリ開発用モジュールと、を開発者に提供する提供手段と、
を含むことを特徴とするモジュール提供システム。
【請求項４】
複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発用モジュールの選択を受け付けるモジュール選択受付手段と、
選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定手段と、
アプリで重視される複数の項目のうちの少なくとも１つの項目の選択を受け付ける項目選択受付手段と、
選択された前記アプリ開発用モジュール、特定された前記他のアプリ開発用モジュール、及び選択された前記項目に応じたプロファイルを、開発者に提供する提供手段と、
を含むことを特徴とするモジュール提供システム。
【請求項５】
複数のアプリ開発用モジュールのうち、ＡＩ（Artificial Intelligence）に関するアプリ開発用モジュールの選択、又は、ＸＲ（Cross Reality）に関するアプリ開発用モジュールの選択を受け付けるモジュール選択受付手段と、
選択された前記ＡＩに関するアプリ開発用モジュールに関連付けられた、ＸＲに関する他のアプリ開発用モジュール、又は、選択された前記ＸＲに関するアプリ開発用モジュールに関連付けられた、ＡＩに関する他のアプリ開発用モジュールを特定する特定手段と、
選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を開発者に提供する提供手段と、
前記ＸＲに関するアプリ開発用モジュールに基づいて、前記ＡＩに関するアプリ開発用モジュールのパラメータを調整するパラメータ調整手段と、
を含み、
前記提供手段は、前記パラメータが調整された前記ＡＩに関するアプリ開発用モジュールを提供する、
ことを特徴とするモジュール提供システム。
【請求項６】
前記環境選択受付手段は、選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、の組み合わせに応じた複数の環境の中から、前記選択を受け付ける、
ことを特徴とする請求項１〜３の何れかに記載のモジュール提供システム。
【請求項７】
前記環境は、前記アプリの展開先のデバイスである、
ことを特徴とする請求項１〜３，６の何れかに記載のモジュール提供システム。
【請求項８】
複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発用モジュールの選択を受け付けるモジュール選択受付ステップと、
選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定ステップと、
アプリの展開先である複数の環境のうちの少なくとも１つの環境の選択を受け付ける環境選択受付ステップと、
選択された前記アプリ開発用モジュール、特定された前記他のアプリ開発用モジュール、及び選択された前記環境の間におけるライブラリの重複を排除する重複排除ステップと、
前記ライブラリの重複が排除された、選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を開発者に提供する提供ステップと、
を含むことを特徴とするモジュール提供方法。
【請求項９】
複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発用モジュールの選択を受け付けるモジュール選択受付ステップと、
選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定ステップと、
アプリの展開先である複数の環境のうちの少なくとも１つの環境の選択を受け付ける環境選択受付ステップと、
選択された前記環境における不要なライブラリを排除する不要排除ステップと、
不要な前記ライブラリが排除された、選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を開発者に提供する提供ステップと、
を含むことを特徴とするモジュール提供方法。
【請求項１０】
複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発用モジュールの選択を受け付けるモジュール選択受付ステップと、
選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定ステップと、
アプリの展開先である複数の環境のうちの少なくとも１つの環境の選択を受け付ける環境選択受付ステップと、
選択された前記環境に基づいて、選択された前記アプリ開発用モジュールと、特定された前記アプリ開発用モジュールと、の各々のコードを最適化するコード最適化ステップと、
前記コードが最適化された、前記選択されたアプリ開発用モジュールと、前記特定された他のアプリ開発用モジュールと、を開発者に提供する提供ステップと、
を含むことを特徴とするモジュール提供方法。
【請求項１１】
複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発用モジュールの選択を受け付けるモジュール選択受付ステップと、
選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定ステップと、
アプリで重視される複数の項目のうちの少なくとも１つの項目の選択を受け付ける項目選択受付ステップと、
選択された前記アプリ開発用モジュール、特定された前記他のアプリ開発用モジュール、及び選択された前記項目に応じたプロファイルを、開発者に提供する提供ステップと、
を含むことを特徴とするモジュール提供方法。
【請求項１２】
複数のアプリ開発用モジュールのうち、ＡＩ（Artificial Intelligence）に関するアプリ開発用モジュールの選択、又は、ＸＲ（Cross Reality）に関するアプリ開発用モジュールの選択を受け付けるモジュール選択受付ステップと、
選択された前記ＡＩに関するアプリ開発用モジュールに関連付けられた、ＸＲに関する他のアプリ開発用モジュール、又は、選択された前記ＸＲに関するアプリ開発用モジュールに関連付けられた、ＡＩに関する他のアプリ開発用モジュールを特定する特定ステップと、
選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を開発者に提供する提供ステップと、
前記ＸＲに関するアプリ開発用モジュールに基づいて、前記ＡＩに関するアプリ開発用モジュールのパラメータを調整するパラメータ調整ステップと、
を含み、
前記提供ステップは、前記パラメータが調整された前記ＡＩに関するアプリ開発用モジュールを提供する、
ことを特徴とするモジュール提供方法。
【請求項１３】
複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発用モジュールの選択を受け付けるモジュール選択受付手段、
選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定手段、
アプリの展開先である複数の環境のうちの少なくとも１つの環境の選択を受け付ける環境選択受付手段、
選択された前記アプリ開発用モジュール、特定された前記他のアプリ開発用モジュール、及び選択された前記環境の間におけるライブラリの重複を排除する重複排除手段、
前記ライブラリの重複が排除された、選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を開発者に提供する提供手段、
としてコンピュータを機能させるためのプログラム。
【請求項１４】
複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発用モジュールの選択を受け付けるモジュール選択受付手段、
選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定手段、
アプリの展開先である複数の環境のうちの少なくとも１つの環境の選択を受け付ける環境選択受付手段、
選択された前記環境における不要なライブラリを排除する不要排除手段、
不要な前記ライブラリが排除された、選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を開発者に提供する提供手段、
としてコンピュータを機能させるためのプログラム。
【請求項１５】
複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発用モジュールの選択を受け付けるモジュール選択受付手段、
選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定手段、
アプリの展開先である複数の環境のうちの少なくとも１つの環境の選択を受け付ける環境選択受付手段、
選択された前記環境に基づいて、選択された前記アプリ開発用モジュールと、特定された前記アプリ開発用モジュールと、の各々のコードを最適化するコード最適化手段、
前記コードが最適化された、前記選択されたアプリ開発用モジュールと、前記特定された他のアプリ開発用モジュールと、を開発者に提供する提供手段、
としてコンピュータを機能させるためのプログラム。
【請求項１６】
複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発用モジュールの選択を受け付けるモジュール選択受付手段、
選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定手段、
アプリで重視される複数の項目のうちの少なくとも１つの項目の選択を受け付ける項目選択受付手段、
選択された前記アプリ開発用モジュール、特定された前記他のアプリ開発用モジュール、及び選択された前記項目に応じたプロファイルを、開発者に提供する提供手段、
としてコンピュータを機能させるためのプログラム。
【請求項１７】
複数のアプリ開発用モジュールのうち、ＡＩ（Artificial Intelligence）に関するアプリ開発用モジュールの選択、又は、ＸＲ（Cross Reality）に関するアプリ開発用モジュールの選択を受け付けるモジュール選択受付手段、
選択された前記ＡＩに関するアプリ開発用モジュールに関連付けられた、ＸＲに関する他のアプリ開発用モジュール、又は、選択された前記ＸＲに関するアプリ開発用モジュールに関連付けられた、ＡＩに関する他のアプリ開発用モジュールを特定する特定手段、
選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を開発者に提供する提供手段、
前記ＸＲに関するアプリ開発用モジュールに基づいて、前記ＡＩに関するアプリ開発用モジュールのパラメータを調整するパラメータ調整手段、
としてコンピュータを機能させ、
前記提供手段は、前記パラメータが調整された前記ＡＩに関するアプリ開発用モジュールを提供する、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モジュール提供システム、モジュール提供方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、ソフトウェアベンダなどよって、アプリ開発用モジュールが開発者に提供されている。例えば、非特許文献１のウェブサイトでは、ＸＲ（Cross Reality）に関するアプリ開発用モジュールやＡＩ（Artificial Intelligence）に関するアプリ開発用モジュールなどが多数用意されており、開発者は任意のアプリ開発用モジュールを選択してアプリを開発できるようになっている。非特許文献２−３のウェブサイトにおいても、種々のアプリ開発用モジュールが開発者に提供されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】“Ｔｏｏｌｓ−ＧｏｏｇｌｅＡＩ”，［ｏｎｌｉｎｅ］，［令和１年７月１３日検索］，インターネット，＜ＵＲＬ：https://ai.google/tools/＞
【非特許文献２】“Ａｍａｚｏｎ  ＳａｇｅＭａｋｅｒ” ，［ｏｎｌｉｎｅ］，［令和１年７月１３日検索］，インターネット，＜ＵＲＬ：https://aws.amazon.com/jp/sagemaker/＞
【非特許文献３】“Ｂｕｉｌｔ−Ｉｎ  Ｐｌｕｇｉｎｓ” ，［ｏｎｌｉｎｅ］，［令和１年７月１３日検索］，インターネット，＜ＵＲＬ：https://docs.unrealengine.com/en-US/Engine/Plugins＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１−３のようなウェブサイトでは、任意の組み合わせのアプリ開発用モジュールを選択可能としており、アプリ開発の自由度を高めている。しかしながら、開発者が複数のアプリ開発用モジュールを利用する場合、例えば、互いにサポートされているアプリ開発用モジュールを選択しなければアプリの動作に支障をきたすことがある。他にも例えば、互いに相性の良いアプリ開発用モジュールを選択しなければ、開発効率が悪くなることもある。この点、非特許文献１−３のウェブサイトでは、自由度が高い反面、適切なアプリ開発用モジュールの組み合わせを提供できないことがあった。
【０００５】
本発明は上記課題に鑑みてなされたものであって、その目的は、適切なアプリ開発用モジュールの組み合わせを提供することが可能なモジュール提供システム、モジュール提供方法、及びプログラムを提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明に係るモジュール提供システムは、複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発モジュールの選択を受け付けるモジュール選択受付手段と、選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定手段と、選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を開発者に提供する提供手段と、を含むことを特徴とする。
【０００７】
本発明に係るモジュール提供方法は、複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発モジュールの選択を受け付けるモジュール選択受付ステップと、選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定ステップと、選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を開発者に提供する提供ステップと、を含むことを特徴とする。
【０００８】
本発明に係るプログラムは、複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発モジュールの選択を受け付けるモジュール選択受付手段、選択された前記アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する特定手段、選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を開発者に提供する提供手段、としてコンピュータを機能させる。
【０００９】
本発明の一態様によれば、前記モジュール提供システムは、選択された前記アプリ開発用モジュールに関連付けられた複数の他のアプリ開発用モジュールを、開発者端末において選択可能に表示させる表示制御手段を更に含み、前記特定手段は、前記複数の他のアプリ開発用モジュールのうち、選択された少なくとも１つの他のアプリ開発用モジュールを特定する、ことを特徴とする。
【００１０】
本発明の一態様によれば、前記モジュール提供システムは、選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、の間におけるライブラリの重複を排除する重複排除手段を更に含み、前記提供手段は、前記ライブラリの重複が排除された、選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を前記開発者に提供する、ことを特徴とする。
【００１１】
本発明の一態様によれば、前記モジュール提供システムは、アプリの展開先である複数の環境のうちの少なくとも１つの環境の選択を受け付ける環境選択受付手段を更に含み、前記重複排除手段は、選択された前記アプリ開発用モジュール、特定された前記他のアプリ開発用モジュール、及び選択された前記環境の間における前記ライブラリの重複を排除する、ことを特徴とする。
【００１２】
本発明の一態様によれば、前記モジュール提供システムは、アプリの展開先である複数の環境のうちの少なくとも１つの環境の選択を受け付ける環境選択受付手段と、選択された前記環境における不要なライブラリを排除する不要排除手段と、を更に含み、前記提供手段は、不要な前記ライブラリが排除された、選択された前記アプリ開発用モジュールと、特定された前記他のアプリ開発用モジュールと、を前記開発者に提供する、ことを特徴とする。
【００１３】
本発明の一態様によれば、前記モジュール提供システムは、アプリの展開先である複数の環境のうちの少なくとも１つの環境の選択を受け付ける環境選択受付手段と、選択された前記環境に基づいて、選択された前記アプリ開発用モジュールと、特定された前記アプリ開発用モジュールと、の各々のコードを最適化するコード最適化手段と、を含み、前記提供手段は、前記コードが最適化された、前記選択されたアプリ開発用モジュールと、前記特定された他のアプリ開発用モジュールと、を前記開発者に提供する、ことを特徴とする。
【００１４】
本発明の一態様によれば、前記モジュール提供システムは、アプリで重視される複数の項目のうちの少なくとも１つの項目の選択を受け付ける項目選択受付手段を更に含み、前記提供手段は、選択された前記項目に応じたプロファイルを、前記開発者に提供する、ことを特徴とする。
【００１５】
本発明の一態様によれば、前記モジュール選択受付手段は、ＡＩ（Artificial Intelligence）に関するアプリ開発用モジュールの選択を受け付け、前記特定手段は、選択された前記ＡＩに関するアプリ開発用モジュールに関連付けられた、ＸＲ（Cross Reality）に関する他のアプリ開発用モジュールを特定する、ことを特徴とする。
【００１６】
本発明の一態様によれば、前記モジュール選択受付手段は、ＸＲ（Cross Reality）に関するアプリ開発用モジュールの選択を受け付け、前記特定手段は、選択された前記ＸＲ（Cross Reality）に関するアプリ開発用モジュールに関連付けられた、ＡＩ（Artificial Intelligence）に関する他のアプリ開発用モジュールを特定する、ことを特徴とする。
【００１７】
本発明の一態様によれば、前記モジュール提供システムは、前記ＸＲに関するアプリ開発用モジュールに基づいて、前記ＡＩに関するアプリ開発用モジュールのパラメータを調整するパラメータ調整手段を更に含み、前記提供手段は、前記パラメータが調整された前記ＡＩに関するアプリ開発用モジュールを提供する、ことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、適切なアプリ開発用モジュールの組み合わせを提供することができる。
【図面の簡単な説明】
【００１９】
【図１】モジュール提供システムの全体構成の一例を示す図である。
【図２】設定画面の一例を示す図である。
【図３】モジュール設定画面の一例を示す図である。
【図４】開発者がアプリ開発用モジュールを示すボタンを選択した場合のモジュール設定画面の一例を示す図である。
【図５】展開設定画面の一例を示す図である。
【図６】プロファイル設定画面の一例を示す図である。
【図７】モジュール提供システムで実現される機能の一例を示す機能ブロック図である。
【図８】モジュールデータのデータ格納例を示す図である。
【図９】ライブラリデータのデータ格納例を示す図である。
【図１０】プロファイルデータのデータ格納例を示す図である。
【図１１】開発者データのデータ格納例を示す図である。
【図１２】本実施形態において実行される処理の一例を示すフロー図である。
【図１３】本実施形態において実行される処理の一例を示すフロー図である。
【発明を実施するための形態】
【００２０】
［１．モジュール提供システムの全体構成］
以下、本発明に係るモジュール提供システムの実施形態の例を説明する。図１は、モジュール提供システムの全体構成の一例を示す図である。図１に示すように、モジュール提供システムＳは、サーバ１０及び開発者端末２０を含み、これらは、インターネットなどのネットワークＮに接続可能である。なお、図１では、サーバ１０及び開発者端末２０の各々を１台ずつ示しているが、これらは複数台あってもよい。
【００２１】
サーバ１０は、サーバコンピュータである。サーバ１０は、制御部１１、記憶部１２、及び通信部１３を含む。制御部１１は、少なくとも１つのプロセッサを含む。制御部１１は、記憶部１２に記憶されたプログラムやデータに従って処理を実行する。記憶部１２は、主記憶部及び補助記憶部を含む。例えば、主記憶部はＲＡＭなどの揮発性メモリであり、補助記憶部は、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、又はハードディスクなどの不揮発性メモリである。通信部１３は、有線通信又は無線通信用の通信インタフェースであり、ネットワークＮを介してデータ通信を行う。
【００２２】
開発者端末２０は、アプリの開発者が操作するコンピュータである。例えば、開発者端末２０は、携帯電話機（スマートフォンを含む）、携帯情報端末（タブレット型コンピュータ端末を含む）、又はパーソナルコンピュータ等である。例えば、開発者端末２０は、制御部２１、記憶部２２、通信部２３、操作部２４、及び表示部２５を含む。制御部２１、記憶部２２、及び通信部２３の物理的構成は、それぞれ制御部１１、記憶部１２、及び通信部１３と同様であってよい。
【００２３】
操作部２４は、入力デバイスであり、例えば、タッチパネルやマウス等のポインティングデバイス、キーボード、又はボタン等である。操作部２４は、開発者による操作内容を制御部２１に伝達する。表示部２５は、例えば、液晶表示部又は有機ＥＬ表示部等である。表示部２５は、制御部２１の指示に従って画像を表示する。
【００２４】
なお、記憶部１２，２２に記憶されるものとして説明するプログラム及びデータは、ネットワークＮを介して供給されるようにしてもよい。また、上記説明した各コンピュータのハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部（例えば、光ディスクドライブやメモリカードスロット）や外部機器とデータの入出力をするための入出力部（例えば、ＵＳＢポート）が含まれていてもよい。例えば、情報記憶媒体に記憶されたプログラムやデータが読取部や入出力部を介して、各コンピュータに供給されるようにしてもよい。
【００２５】
［２．モジュール提供システムの概要］
本実施形態では、サーバ１０は、アプリ開発用モジュールを開発者に提供する。アプリ開発用モジュールとは、開発者によるアプリの開発を支援するツールキットである。アプリ開発用モジュールは、ＳＤＫ（Software Development Kit）そのものを意味してもよいし、ＳＤＫに含まれる一部分の構成要素（ソフトウェア開発キットよりも小さい単位）だけを意味してもよい。
【００２６】
アプリ開発用モジュールの構成要素は、開発対象となるアプリの用途等に応じて異なる。例えば、アプリが展開されるデバイスの電話機能やカメラ機能などの機能を操作する関数、画面を構成するボタンやテキストボックスなどのパーツ、当該パーツを表示するための関数、コンパイラやデバッガなどのツール、開発者が作成するプログラムにより使用されるクラスファイルやライブラリファイル、アプリ開発用モジュールの仕様などを記述した文書ファイル、及びサンプルコードのうちの少なくとも１つが、アプリ開発用モジュールに含まれる。
【００２７】
開発者は、アプリを作成する技術者であり、モジュール提供システムの利用者である。本実施形態におけるアプリは、アプリケーションプログラム又はアプリケーションソフトウェアの略称である。開発者は、アプリ開発用モジュールを利用してコードを入力し、コンパイラやデバッガなどを利用してアプリを作成する。アプリの開発言語は、任意の言語であってよく、例えば、Ｊａｖａ（登録商標）などの一般的に知られた言語であってもよいし、アプリ開発用モジュール専用に開発された言語であってもよい。アプリは、サーバ上で実行されるものであってもよいし、ユーザの端末上で実行されるものであってもよい。なお、本実施形態で単にユーザと記載した箇所は、開発者が開発したアプリの利用者を意味する。
【００２８】
本実施形態では、開発者が、アプリ開発用モジュールを利用してＸＲ（Cross Reality）のアプリを開発する場合を例に挙げて、モジュール提供システムＳの処理を説明する。ＸＲは、人工環境（例えば、映像を含む）をユーザに提供するものであり、例えば、ＶＲ（Virtual Reality）、ＡＲ（Augmented Reality）、及びＭＲ（Mixed Reality）を含む概念である。例えば、ＶＲは、仮想世界の映像をユーザに提供する。また例えば、ＡＲ及びＭＲは、現実世界と仮想世界が合成された映像をユーザに提供する。なお、ＸＲにおいてユーザに提供されるのは、映像に限られず、ユーザが体感できるものであればよい。例えば、音声、匂い、味、振動などの触覚、又は気温などが提供されてもよい。
【００２９】
例えば、開発者は、一部の画像処理にＡＩを利用するＸＲのアプリを開発する。この場合、開発者は、ＸＲのアプリ開発用モジュールと、ＡＩのアプリ開発用モジュールと、を組み合わせてアプリ開発を行う。開発者は、開発者端末２０を操作してサーバ１０にアクセスし、アプリ開発の設定をするためのメニュー画面を表示部２５に表示させる。
【００３０】
図２は、メニュー画面の一例を示す図である。本実施形態では、開発者はアプリ開発に関する３つの設定をすることができ、メニュー画面Ｇ１には、これら３つの設定の各々に対応するボタンＢ１〜Ｂ３が表示される。ボタンＢ１は、アプリ開発で利用するアプリ開発用モジュールを選択するためのボタンである。ボタンＢ２は、アプリを展開する環境に応じたライブラリの設定やコードの最適化をするためのボタンである。ボタンＢ３は、開発者が重視する項目に応じたプロファイルを設定するためのボタンである。なお、ボタンＢ４は、設定を完了するためのボタンである。
【００３１】
環境とは、アプリの展開先である。環境は、ソフトウェア的な環境を意味してもよいし、ハードウェア的な環境を意味してもよい。例えば、環境は、アプリを動作させるプラットフォーム（オペレーティングシステム又はファームウェア）の種類やバージョン、又は、アプリがインストールされるデバイスの種類や性能である。なお、デバイスは、アプリがインストールされるコンピュータである。また、環境は、デバイスに接続された機器（例えば、ヘッドマウントディスプレイ又はウェアラブル端末）の種類や性能などを意味してもよい。
【００３２】
開発者が重視する項目とは、アプリの動作で重視する項目であり、例えば、画質重視、処理速度重視、又は消費電力重視といった項目である。プロファイルは、アプリで用いられる技術についての仕様、規格、又はこれらの詳細な設定であり、例えば、画像圧縮技術の種類、画像における色表現、通信規格の種類、又は暗号化で用いる暗号方式や暗号キーなどである。
【００３３】
開発者は、モジュール提供システムＳを初めて利用する場合、アプリ開発のプロジェクトを新規作成する。例えば、開発者は、アプリ開発で利用するアプリ開発用モジュールを選択するために、メニュー画面Ｇ１に表示されたボタンＢ１を選択する。開発者がボタンＢ１を選択すると、任意のアプリ開発用モジュールの組み合わせを選択するためのモジュール設定画面Ｇ２が表示部２５に表示される。
【００３４】
図３は、モジュール設定画面Ｇ２の一例を示す図である。図３に示すように、モジュール設定画面Ｇ２には、モジュール提供システムＳにおいて提供可能なアプリ開発用モジュールの一覧が表示される。モジュール設定画面Ｇ２が表示されたばかりの時点では、開発者がどのアプリ開発用モジュールを利用するか分からないので、モジュール提供システムＳで提供可能な全てのアプリ開発用モジュールが選択可能に表示される。
【００３５】
例えば、モジュール設定画面Ｇ２には、ＸＲのアプリ開発用モジュールである「モジュールＸＲｎ」（ｎは任意の自然数）を示すボタンＢ５と、ＡＩのアプリ開発用モジュールである「モジュールＡＩｋ」（ｋは任意の自然数）を示すボタンＢ６と、が表示される。例えば、開発者が「モジュールＸＲ１」を示すボタンＢ５選択すると、モジュール設定画面Ｇ２には、「モジュールＸＲ１」に関連付けられたアプリ開発用モジュールが選択可能に表示される。
【００３６】
図４は、開発者がアプリ開発用モジュールを示すボタンＢ５を選択した場合のモジュール設定画面Ｇ２の一例を示す図である。図４に示すように、モジュール設定画面Ｇ２には、開発者が選択した「モジュールＸＲ１」に関連付けられた「モジュールＡＩ１」、「モジュールＡＩ４」、及び「モジュールＡＩ５」の各々のボタンＢ６が表示される。
【００３７】
「モジュールＡＩ１」、「モジュールＡＩ４」、及び「モジュールＡＩ５」の各々は、開発者が選択した「モジュールＸＲ１」でサポートされているＡＩのアプリ開発用モジュールである。開発者は、何れかのボタンＢ６選択し、「モジュールＸＲ１」とともに利用するアプリ開発用モジュールを選択する。なお、「モジュールＸＲ１」に関連付けられていない他のモジュールが選択可能であってもよい。
【００３８】
開発者は、アプリ開発で利用するアプリ開発用モジュールの選択を終えると、メニュー画面Ｇ１に戻り、アプリを展開する環境を設定するためのボタンＢ２を選択する。開発者がボタンＢ２を選択すると、任意の環境を選択するための展開設定画面Ｇ３が表示部２５に表示される。
【００３９】
図５は、展開設定画面Ｇ３の一例を示す図である。図５に示すように、展開設定画面Ｇ３には、開発者が選択したアプリ開発用モジュールで開発したアプリを展開可能な環境が選択可能に表示される。例えば、展開設定画面Ｇ３には、アプリを展開するプラットフォームを選択するためのボタンＢ７と、アプリを展開するデバイスを選択するためのボタンＢ８と、が表示される。
【００４０】
例えば、開発者は、ボタンＢ７を選択し、アプリを展開するプラットフォームを選択する。また例えば、開発者は、ボタンＢ８を選択し、アプリを展開するデバイスを選択する。本実施形態では、開発者が、展開設定画面Ｇ３の中から、アプリを展開するプラットフォームとデバイスを１つずつ選択する場合を説明するが、開発者は、複数のプラットフォームとデバイスを選択してもよい。
【００４１】
本実施形態では、開発者が選択したアプリ開発用モジュール間で同じライブラリが用意されていることがあるので、ライブラリの重複が排除されるようになっている。また、開発者が選択した環境に用意されているライブラリには、開発者が選択したアプリ開発用モジュールにとって不要なライブラリが含まれていることがあるので、不要なライブラリが排除されるようもなっている。また、開発者が選択した環境に応じて、コードが最適化されるようにもなっている。これらの詳細については、後述する。
【００４２】
開発者は、アプリを展開する環境の選択を終えると、メニュー画面Ｇ１に戻り、アプリで重視する項目に応じたプロファイルを設定するためのボタンＢ３を選択する。開発者がボタンＢ３を選択すると、任意の項目を選択するためのプロファイル設定画面が表示部２５に表示される。
【００４３】
図６は、プロファイル設定画面の一例を示す図である。図６に示すように、プロファイル設定画面Ｇ４には、開発者が重視する項目が選択可能に表示される。本実施形態では、開発者が何れかのボタンＢ９を選択する場合を説明するが、開発者は複数のボタンＢ９を選択してもよい。開発者がボタンＢ９を選択すると、選択されたボタンＢ９が示す項目に応じたプロファイルが設定される。
【００４４】
例えば、開発者が映像のクオリティを重視したＸＲアプリを開発する場合、画質を優先してプロファイルを作成する。この場合、例えば、高解像度でビットレートの高いプロファイルが作成される。また例えば、開発者がシームレスでリアルタイムな処理が必要なＸＲのアプリを開発する場合、処理速度を優先してプロファイルを作成する。この場合、データ量の小さい画像形式のプロファイルが作成される。また例えば、開発者が長時間起動するＸＲアプリを開発する場合、消費電力を優先してプロファイルを作成する。この場合、例えば、映像の表示の際の計算量が小さくなるようにプロファイルが作成される。
【００４５】
以上のように、モジュール提供システムＳでは、アプリ開発用モジュールの選択、アプリを展開する環境に応じた設定、及びアプリで重視する項目に応じたプロファイルの設定といった３つの設定が行われることによって、開発者によるアプリ開発を支援するようにしている。以降、モジュール提供システムＳの詳細を説明する。
【００４６】
［３．モジュール提供システムにおいて実現される機能］
図７は、モジュール提供システムＳで実現される機能の一例を示す機能ブロック図である。図７に示すように、モジュール提供システムＳでは、データ記憶部１００、モジュール選択受付部１０１、環境選択受付部１０２、項目選択受付部１０３、表示制御部１０４、特定部１０５、重複排除部１０６、不要排除部１０７、コード最適化部１０８、パラメータ調整部１０９、及び提供部１１０が実現される。本実施形態では、これら各機能がサーバ１０によって実現される場合を説明する。
【００４７】
[３−１．データ記憶部]
データ記憶部１００は、記憶部１２を主として実現される。データ記憶部１００は、本実施形態で説明する処理を実行するために必要なデータを記憶する。ここでは、データ記憶部１００が記憶するデータの一例として、モジュールデータＤＴ１、ライブラリデータＤＴ２、プロファイルデータＤＴ３、及び開発者データＤＴ４について説明する。
【００４８】
図８は、モジュールデータＤＴ１のデータ格納例を示す図である。図８に示すように、モジュールデータＤＴ１には、開発者に提供可能なアプリ開発用モジュールに関する各種情報が格納される。例えば、モジュールデータＤＴ１には、開発者に提供可能な複数のアプリ開発用モジュールの各々を識別するモジュール識別情報に関連付けて、他のアプリ開発用モジュールを識別するモジュール識別情報と、環境を識別する環境識別情報と、が格納される。
【００４９】
モジュール識別情報は、アプリ開発用モジュールを識別可能な情報であればよく、例えば、アプリ開発用モジュールの名前であってもよいし、アプリ開発用モジュールに割り当てられたＩＤであってもよい。例えば、モジュールデータＤＴ１には、アプリ開発用モジュールごとに、サポートされている他のアプリ開発用モジュールを識別する情報が格納される。なお、サポートとは、提供者による動作確認が得られていることである。また例えば、モジュールデータＤＴ１には、アプリ開発用モジュールごとに、アプリ開発の際に必要な他のアプリ開発用モジュールを識別する情報が格納される。また例えば、モジュールデータＤＴ１には、アプリ開発用モジュールごとに、一緒に利用することが好ましい他のアプリ開発用モジュールを識別する情報が格納される。他のアプリ開発用モジュールは、アプリ開発用モジュールの提供者によって決定されてもよいし、開発者の口コミ等によって決定されてもよい。
【００５０】
環境識別情報は、プラットフォーム又はデバイスといった展開先の環境を識別可能な情報であればよく、例えば、アプリが展開されるプラットフォームの名前又はバージョン情報であってもよいし、デバイスの名前又は型番であってもよいし、これらを示すＩＤであってもよい。例えば、モジュールデータＤＴ１には、アプリ開発用モジュールごとに、サポートされている環境の環境識別情報が格納される。また例えば、モジュールデータＤＴ１には、アプリ開発用モジュールごとに、開発したアプリを展開することが好ましい環境の環境識別情報が格納される。環境識別情報は、アプリ開発用モジュールの提供者によって決定されてもよいし、開発者の口コミ等によって決定されてもよい。
【００５１】
図９は、ライブラリデータＤＴ２のデータ格納例を示す図である。図９に示すように、ライブラリデータＤＴ２は、アプリ開発用モジュール及び環境の各々に関連付けられたライブラリを示すデータである。なお、本実施形態では、ライブラリデータＤＴ２に、アプリ開発用モジュール及び環境の各々のライブラリが定義されている場合を説明するが、アプリ開発用モジュールにライブラリと、環境のライブラリと、が別々のデータに定義されていてもよい。
【００５２】
例えば、ライブラリデータＤＴ２には、複数のアプリ開発用モジュールの各々のモジュール識別情報に関連付けて、当該アプリ開発用モジュールで用意されているライブラリを識別するライブラリ識別情報が格納される。
【００５３】
ライブラリ識別情報は、ライブラリを識別可能な情報であればよく、例えば、ライブラリのファイル名であってもよいし、ライブラリに割り当てられたＩＤであってもよい。例えば、各アプリ開発用モジュールのライブラリは、アプリ開発用モジュールの提供者により用意される。各アプリ開発用モジュールには、任意の種類のライブラリが用意されてよく、その数も任意であってよい。
【００５４】
本実施形態では、ライブラリデータＤＴ２には、複数の環境の各々の環境識別情報に関連付けて、当該環境で用意されているライブラリを識別するライブラリ識別情報が格納される。例えば、各環境のライブラリは、アプリ開発用モジュールの提供者又は環境の提供者（例えば、プラットフォームを提供するソフトウェアベンダ、又は、デバイスを製造するメーカ）により用意される。各環境には、任意の種類のライブラリが用意されてよく、その数も任意であってよい。
【００５５】
図１０は、プロファイルデータＤＴ３のデータ格納例を示す図である。図１０に示すように、プロファイルデータＤＴ３には、複数の項目の各々を識別する項目識別情報に関連付けて、プロファイルの内容を示すプロファイル情報が格納される。項目識別情報は、項目を識別可能な情報であればよく、例えば、項目の名前であってもよいし、項目に割り当てられたＩＤであってもよい。
【００５６】
プロファイル情報は、アプリで使用される仕様、規格、又はこれらの詳細な設定を示す情報である。例えば、プロファイル情報には、画像圧縮技術の種類、フレームレート、解像度、又はビットレートが示される。また例えば、プロファイル情報には、画像のデータ形式又はビット数が示される。また例えば、プロファイル情報には、アプリで利用される通信規格の種類や通信速度が示される。また例えば、プロファイル情報には、暗号化で用いる暗号方式や暗号キーなどが示される。
【００５７】
図１１は、開発者データＤＴ４のデータ格納例を示す図である。図１１に示すように、開発者データＤＴ４は、複数の開発者の各々により開発されるアプリに関する各種情報が格納される。例えば、開発者データＤＴ４には、開発者を一意に識別する開発者識別情報、開発者の名前、開発者が指定したプロジェクト名、アプリ開発で利用されるアプリ開発用モジュールのモジュール識別情報、アプリ開発で利用されるライブラリのライブラリ識別情報、アプリが展開される環境の環境識別情報、開発者が重視する項目に応じたプロファイルのプロファイル情報、及び開発中のコードが格納される。開発者データＤＴ４は、開発者による設定作業や開発作業に応じて適宜更新される。
【００５８】
なお、データ記憶部１００に記憶されるデータは、上記の例に限られない。データ記憶部１００は、本実施形態で説明する処理を実行するために必要なデータを記憶すればよく、例えば、モジュール提供システムＳが提供可能なアプリ開発用モジュールに含まれるライブラリファイルやサンプルコードなどの構成要素を記憶してもよい。
【００５９】
［３−２．モジュール選択受付部］
モジュール選択受付部１０１は、制御部１１を主として実現される。モジュール選択受付部１０１は、複数のアプリ開発用モジュールのうちの少なくとも１つのアプリ開発モジュールの選択を受け付ける。本実施形態では、開発者が自らアプリ開発用モジュールを選択する場合を説明するが、予め定められたアルゴリズムによって、例えば過去の開発実績や口コミなどを利用してアプリ開発用モジュールが自動的に選択されてもよい。なお、本実施形態で「選択されたアプリ開発用モジュール」と記載した箇所は、モジュール選択受付部１０１が選択を受け付けたアプリ開発用モジュールを意味する。
【００６０】
本実施形態では、モジュール選択受付部１０１がサーバ１０において実現されるので、モジュール選択受付部１０１は、開発者端末２０から、開発者が選択したアプリ開発用モジュールのモジュール識別情報を受信することによって、開発者によるアプリ開発用モジュールの選択を受け付ける。例えば、開発者端末２０は、モジュール設定画面Ｇ２から開発者が選択したアプリ開発用モジュールのモジュール識別情報を、サーバ１０に送信し、モジュール選択受付部１０１は、当該モジュール識別情報を受信する。
【００６１】
［３−３．環境選択受付部］
環境選択受付部１０２は、制御部１１を主として実現される。環境選択受付部１０２は、アプリの展開先である複数の環境のうちの少なくとも１つの環境の選択を受け付ける。本実施形態では、開発者が自ら環境を選択する場合を説明するが、予め定められたアルゴリズムによって、例えば過去の開発実績や口コミなどを利用して環境が自動的に選択されてもよい。なお、本実施形態で「選択された環境」と記載した箇所は、環境選択受付部１０２が選択を受け付けた環境を意味する。
【００６２】
本実施形態では、環境選択受付部１０２がサーバ１０において実現されるので、環境選択受付部１０２は、開発者端末２０から、開発者が選択した環境の環境識別情報を受信することによって、開発者による環境の選択を受け付ける。例えば、開発者端末２０は、展開設定画面Ｇ３から開発者が選択した環境の環境識別情報を、サーバ１０に送信し、環境選択受付部１０２は、当該環境識別情報を受信する。
【００６３】
［３−４．項目選択受付部］
項目選択受付部１０３は、制御部１１を主として実現される。項目選択受付部１０３は、アプリで重視される複数の項目のうちの少なくとも１つの項目の選択を受け付ける。本実施形態では、開発者が自ら項目を選択する場合を説明するが、予め定められたアルゴリズムによって、例えば過去の開発実績や口コミなどを利用して項目が自動的に選択されてもよい。なお、本実施形態で「選択された項目」と記載した箇所は、項目選択受付部１０３が選択を受け付けた項目を意味する。
【００６４】
本実施形態では、項目選択受付部１０３がサーバ１０において実現されるので、項目選択受付部１０３は、開発者端末２０から、開発者が選択した項目の項目識別情報を受信することによって、開発者による項目の選択を受け付ける。例えば、開発者端末２０は、プロファイル設定画面Ｇ４から開発者が選択した項目の項目識別情報を、サーバ１０に送信し、項目選択受付部１０３は、当該項目識別情報を受信する。
【００６５】
［３−５．表示制御部］
表示制御部１０４は、制御部１１を主として実現される。表示制御部１０４は、本実施形態で説明する各画面を開発者端末２０に表示させる。本実施形態では、表示制御部１０４がサーバ１０において実現されるので、表示制御部１０４は、各画面の表示データを開発者端末２０に送信することによって、各画面を開発者端末２０に表示させる。
【００６６】
例えば、表示制御部１０４は、複数のアプリ開発用モジュールの各々を、開発者端末において選択可能に表示させる。表示制御部１０４は、モジュールデータＤＴ１に基づいて、開発者に提供可能な全てのアプリ開発用モジュールを特定し、特定した全てのアプリ開発用モジュールを選択可能なモジュール設定画面Ｇ２の表示データを生成し、開発者端末２０に送信する。
【００６７】
なお、本実施形態では、モジュール設定画面Ｇ２が表示されたばかりの時点では、全てのアプリ開発用モジュールが選択可能に表示される場合を説明するが、一部のアプリ開発用モジュールだけが選択可能に表示されてもよい。この場合、表示制御部１０４は、一部のアプリ開発用モジュールを、ランダムに選択してもよいし、開発者の過去の行動などに基づいて選択してもよい。表示データは、任意の形式のデータであってよく、例えば、ＨＴＭＬデータであってもよい。この点は、他の画面の表示データについても同様である。
【００６８】
モジュール設定画面Ｇ２からアプリ開発用モジュールが選択された場合、表示制御部１０４は、選択されたアプリ開発用モジュールに関連付けられた複数の他のアプリ開発用モジュールを、開発者端末において選択可能に表示させる。例えば、表示制御部１０４は、モジュールデータＤＴ１に基づいて、開発者により選択されたアプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定し、特定した他のアプリ開発用モジュールを選択可能なモジュール設定画面Ｇ２の表示データを生成し、開発者端末２０に送信する。
【００６９】
［３−６．特定部］
特定部１０５は、制御部１１を主として実現される。特定部１０５は、選択されたアプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する。なお、本実施形態で「特定された他のアプリ開発用モジュール」と記載した箇所は、特定部１０５により特定された他のアプリ開発用モジュールを意味する。
【００７０】
本実施形態では、アプリ開発用モジュール同士の対応関係は、モジュールデータＤＴ１に定義されているので、特定部１０５は、モジュールデータＤＴ１に基づいて、開発者により選択されたアプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する。なお、アプリ開発用モジュール同士の対応関係は、図８のようなテーブル形式以外にも、数式形式、プログラムコードの一部、又は機械学習モデルの中に定義されていてもよい。
【００７１】
特定部１０５は、開発者に選択させることなく、他のアプリ開発用モジュールを自動的に特定してもよいが、本実施形態では、特定部１０５は、複数の他のアプリ開発用モジュールの中から、開発者により選択された他のアプリ開発用モジュールを特定する。例えば、開発者が選択したアプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールがモジュール設定画面Ｇ２に表示され、特定部１０５は、当該モジュール設定画面Ｇ２の中から、開発者により選択された他のアプリ開発用モジュールを特定する。
【００７２】
例えば、モジュール選択受付部１０１が、ＡＩに関するアプリ開発用モジュールの選択を受け付けた場合に、特定部１０５は、選択されたＡＩに関するアプリ開発用モジュールに関連付けられた、ＸＲに関する他のアプリ開発用モジュールを特定する。一方、モジュール選択受付部１０１が、ＸＲに関するアプリ開発用モジュールの選択を受け付けた場合に、特定部１０５は、選択されたＸＲに関するアプリ開発用モジュールに関連付けられた、ＡＩに関する他のアプリ開発用モジュールを特定する。
【００７３】
なお、ＡＩに関するアプリ開発用モジュールは、ＡＩを利用したアプリを開発するためのモジュールであり、例えば、機械学習モデル、教師データ、学習時に利用されるアルゴリズム、ＡＩの仕様や利用方法などが記述された文書、及びサンプルコードなどが含まれる。また、ＸＲに関するアプリ開発用モジュールは、ＸＲを利用したアプリを開発するためのモジュールであり、例えば、３次元空間のレンダリング処理をするための関数、スマートフォンなどのカメラを起動するための関数、仮想画像と現実画像を合成するための関数、仮想の３次元モデルやテクスチャなどの情報、関数の説明が記述された文書、及びサンプルコードなどが含まれる。
【００７４】
［３−７．重複排除部］
重複排除部１０６は、制御部１１を主として実現される。重複排除部１０６は、選択されたアプリ開発用モジュールと、特定された他のアプリ開発用モジュールと、の間におけるライブラリの重複を排除する。ライブラリの重複とは、同じライブラリファイルが２つ以上存在することである。
【００７５】
重複を排除するとは、同じライブラリファイルが複数個提供されないようにすることである。即ち、あるアプリ開発用モジュールと、他のアプリ開発用モジュールと、の間で同じライブラリファイルが存在した場合に、当該ライブラリファイルが１つだけ提供されるようにすることは、重複を排除することに相当する。
【００７６】
本実施形態では、アプリ開発用モジュールに用意されたライブラリは、ライブラリデータＤＴ２に定義されているので、重複排除部１０６は、ライブラリデータＤＴ２に基づいて、開発者により選択されたアプリ開発用モジュールと、特定部１０５により特定された他のアプリ開発用モジュールと、の各々のライブラリを特定し、重複したライブラリが存在するか否かを判定する。重複排除部１０６は、重複したライブラリが存在する場合、同じライブラリが複数個提供されないように、１つだけ提供する。なお、アプリ開発用モジュールに用意されたライブラリは、図９のようなテーブル形式以外にも、数式形式、プログラムコードの一部、又は機械学習モデルの中に定義されていてもよい。
【００７７】
例えば、画像の被写体を分類してＡＲの映像を提供するアプリが開発される場合、ＡＲのアプリ開発用モジュールと、画像の分類をするＡＩのアプリ開発用モジュールと、はライブラリが共通していることがある。この場合、重複排除部１０６は、ＡＲのアプリ開発用モジュールと、分類学習器に関するＡＩのアプリ開発用モジュールと、の間におけるライブラリの重複を排除する。他にも例えば、ゲームアプリの開発において、複数のアプリ開発用モジュールが利用される場合、３Ｄレンダリングなどのグラフィック処理に関するライブラリが共通していることがある。この場合、重複排除部１０６は、複数のアプリ開発用モジュールの間におけるライブラリの重複を排除する。
【００７８】
また例えば、重複排除部１０６は、選択されたアプリ開発用モジュール、特定された他のアプリ開発用モジュール、及び選択された環境の間におけるライブラリの重複を排除する。本実施形態では、プラットフォームやデバイスなどの環境に用意されたライブラリは、ライブラリデータＤＴ２に定義されているので、重複排除部１０６は、ライブラリデータＤＴ２に基づいて、選択されたアプリ開発用モジュール、特定された他のアプリ開発用モジュール、及び選択された環境の各々のライブラリを特定し、重複したライブラリが存在するか否かを判定する。重複排除部１０６は、重複したライブラリが存在する場合、同じライブラリが複数個提供されないように、１つだけ提供する。
【００７９】
例えば、画像の被写体を分類してＡＲの映像を提供するアプリが特定のオペレーティングシステムで展開される場合、アプリ開発用モジュールのライブラリと、オペレーティングシステムにもともと備わっている画像検出のライブラリと、が重複していることがある。この場合、重複排除部１０６は、アプリ開発用モジュールと、オペレーティングシステムと、の間におけるライブラリの重複を排除する。また例えば、ＭＲのアプリ開発用モジュールが選択され、アプリがヘッドマウントディスプレイに展開される場合、アプリ開発モジュールのライブラリと、ヘッドマウントディスプレイのライブラリと、が重複していることがある。この場合、重複排除部１０６は、アプリ開発用モジュールと、ヘッドマウントディスプレイと、の間におけるライブラリの重複を排除する。
【００８０】
［３−８．不要排除部］
不要排除部１０７は、制御部１１を主として実現される。不要排除部１０７は、選択された環境における不要なライブラリを排除する。不要なライブラリは、例えば、選択された環境で用意されたライブラリのうちアプリ開発用モジュールでは使用しないライブラリ、又は、アプリ開発用モジュールで用意されたライブラリのうち選択された環境で使用しないライブラリである。
【００８１】
不要なライブラリは、データ記憶部１００に定義されているものとする。例えば、不要排除部１０７は、選択された環境で用意されたライブラリを特定し、アプリ開発用モジュールで不要か否かを判定する。また例えば、不要排除部１０７は、アプリ開発用モジュールで用意されたライブラリを特定し、選択された環境で不要か否かを判定する。不要排除部１０７は、不要なライブラリが存在する場合、当該ライブラリが提供されないようにする。なお、不要なライブラリは、テーブル形式、数式形式、プログラムコードの一部、又は機械学習モデルの中に定義されていてもよい。
【００８２】
［３−９．コード最適化部］
コード最適化部１０８は、制御部１１を主として実現される。コード最適化部１０８は、選択された環境に基づいて、選択されたアプリ開発用モジュールと、特定されたアプリ開発用モジュールと、の各々のコードを最適化する。環境と最適なコードとの関係は、データ記憶部に予め記憶されているものとする。これらの関係は、任意の形式で記憶されてよく、例えば、テーブル形式、数式形式、プロフラムコードの一部、又は機械学習モデル内に定義されていてもよい。コード最適化部１０８は、選択された環境に関連付けられたコードとなるように、現状のコードを変更する。
【００８３】
例えば、アプリを展開するデバイスが特定のＧＰＵを備えている場合、画面を表示させる際に所定のループ処理を実行する必要がないことがある。この場合、コード最適化部１０８は、選択された環境が特定のＧＰＵを備えていれば、当該ループ処理を削除するようにコードを最適化する。また例えば、アプリを展開するデバイスが特定のヘッドマウントディスプレイであれば、ニューラルネットワークの処理に耐えうるプロセッサを有しているため、コード最適化部１０８は、ニューラルネットワークの処理を実行するためのコードを追加する。
【００８４】
［３−１０．パラメータ調整部］
パラメータ調整部１０９は、制御部１１を主として実現される。パラメータ調整部１０９は、ＸＲに関するアプリ開発用モジュールに基づいて、ＡＩに関するアプリ開発用モジュールのパラメータを調整する。パラメータは、アプリ開発用モジュールに含まれる機械学習モデルのハイパーパラメータである。ＸＲに関するアプリ開発用モジュールと、ＡＩに関するアプリ開発用モジュールのパラメータと、の関係は、データ記憶部１００に予め記憶されているものとする。これらの関係は、任意の形式で記憶されてよく、例えば、テーブル形式、数式形式、プロフラムコードの一部、又は機械学習モデル内に定義されていてもよい。
【００８５】
［３−１１．提供部］
提供部１１０は、制御部１１を主として実現される。提供部１１０は、選択されたアプリ開発用モジュールと、特定された他のアプリ開発用モジュールと、を開発者に提供する。アプリ開発用モジュールを提供するとは、アプリ開発用モジュールを利用してアプリ開発をする環境を提供することである。本実施形態では、選択されたアプリ開発用モジュールと、特定された他のアプリ開発用モジュールと、がアプリ開発で利用されるアプリ開発用モジュールとして決定される。
【００８６】
提供部１１０は、アプリ開発で利用されるアプリ開発用モジュールの構成要素の少なくとも一部を開発者端末２０に送信したり、オンライン上で開発者が利用可能な状態にしたりする。開発者は、開発者端末２０にアプリ開発用モジュールをダウンロードしたうえでアプリ開発を行ってもよいし、サーバ１０上に設けられた自身の記憶領域にアプリ開発モジュールを展開してアプリ開発を行ってもよい。
【００８７】
例えば、提供部１１０は、アプリ開発用モジュールに含まれる関数をアプリで利用可能とする。また例えば、提供部１１０は、アプリ開発用モジュールに含まれるボタンやテキストボックスなどのパーツ、又は、当該パーツを表示するための関数をアプリで利用可能とする。また例えば、提供部１１０は、アプリ開発用モジュールに含まれるコンパイラやデバッガなどのツールを、開発者の開発作業で利用可能とする。また例えば、提供部１１０は、アプリ開発用モジュールに含まれるクラスファイルやライブラリファイルを、アプリで利用可能とする。また例えば、提供部１１０は、アプリ開発用モジュールの仕様などを記述した文書ファイル及びサンプルコードを、開発者に閲覧可能とする。
【００８８】
例えば、提供部１１０は、重複排除部１０６によりライブラリの重複が排除された、選択されたアプリ開発用モジュールと、特定された他のアプリ開発用モジュールと、を開発者に提供する。即ち、提供部１１０は、開発者が利用する複数のアプリ開発用モジュールの各々の重複するライブラリを複数個提供するのではなく、１つだけ提供する。また、提供部１１０は、開発者が利用する複数のアプリ開発用モジュール及び選択された環境の間でライブラリが重複している場合には、これら重複するライブラリを複数個提供するのではなく、１つだけ提供する。
【００８９】
また例えば、提供部１１０は、不要排除部１０７により不要なライブラリが排除された、選択されたアプリ開発用モジュールと、特定された他のアプリ開発用モジュールと、を開発者に提供する。即ち、提供部１１０は、選択された環境に用意されたライブラリのうち、開発者が利用する複数のアプリ開発用モジュールにとって不要なライブラリを開発者に提供しないようにする。
【００９０】
また例えば、提供部１１０は、コード最適化部１０８によりコードが最適化された、選択されたアプリ開発用モジュールと、特定された他のアプリ開発用モジュールと、を開発者に提供する。例えば、コード最適化部１０８がアプリ開発用モジュールに含まれるサンプルコードを最適化する場合、提供部１１０は、当該最適化されたサンプルコードを開発者に提供する。また例えば、コード最適化部１０８が、開発者がアプリ開発用モジュールを利用して開発中のコードを最適化する場合、提供部１１０は、当該最適化されたコードを開発者に提供する。
【００９１】
また例えば、提供部１１０は、選択された項目に応じたプロファイルを、開発者に提供する。例えば、提供部１１０は、プロファイルデータＤＴ３を参照し、選択された項目に関連付けられたプロファイルを開発者に提供する。開発者は、提供部１１０により提供されたプロファイルに基づいて、アプリ開発を行うことになる。
【００９２】
また例えば、提供部１１０は、パラメータ調整部１０９によりパラメータが調整されたＡＩに関するアプリ開発用モジュールを提供する。例えば、提供部１１０は、初期値のパラメータが設定されたＡＩに関するアプリ開発用モジュールではなく、初期値のパラメータが変更された後のＡＩに関するアプリ開発用モジュールを開発者に提供する。
【００９３】
［４．本実施形態において実行される処理］
図１２及び図１３は、本実施形態において実行される処理の一例を示すフロー図である。図１２及び図１３に示す処理は、制御部１１，２１がそれぞれ記憶部１２，２２に記憶されたプログラムに従って動作することによって実行される。以降説明する処理は、図７に示す機能ブロックにより実行される処理の一例である。
【００９４】
図１２に示すように、まず、開発者端末２０においては、制御部２１は、サーバ１０に、メニュー画面Ｇ１の表示要求を送信する（Ｓ１）。メニュー画面Ｇ１の表示要求は、サーバ１０のＵＲＬが選択された場合などの任意のタイミングで送信されるようにすればよい。なお、開発者は、予めモジュール提供システムＳの利用登録をしており、開発者識別情報などが発行済みであるものとする。
【００９５】
サーバ１０においては、表示要求を受信すると、制御部１１は、メニュー画面Ｇ１の表示データを生成し、開発者端末２０に送信する（Ｓ２）。本実施形態では、開発者が新規のプロジェクトを作成する場合の処理について説明するが、開発者が作成済みのプロジェクトの設定変更がなされてもよい。
【００９６】
開発者端末２０においては、表示データを受信すると、制御部２１は、メニュー画面Ｇ１を表示部２５に表示させる（Ｓ３）。Ｓ３においては、図２に示すメニュー画面Ｇ１が表示され、ボタンＢ１〜Ｂ４の何れかの選択が受け付けられる。制御部２１は、操作部２４の検出信号に基づいて、開発者の操作内容を送信する（Ｓ４）。Ｓ４においては、制御部２１は、ボタンＢ１〜Ｂ４のうち、開発者が選択したボタンを識別する情報を送信する。
【００９７】
サーバ１０においては、開発者の操作内容を受信すると、制御部１１は、開発者の操作内容を参照する（Ｓ５）。Ｓ５においては、制御部１１は、ボタンＢ１〜Ｂ４のうち開発者が選択したボタンを特定する。ボタンＢ１が選択された場合（Ｓ５；Ｂ１）、制御部１１は、モジュールデータＤＴ１に基づいて、モジュール設定画面Ｇ２の表示データを生成し、開発者端末２０に送信する（Ｓ６）。Ｓ６においては、制御部１１は、モジュール提供システムＳが提供可能な全てのアプリ開発用モジュールを選択可能なモジュール設定画面Ｇ２の表示データを生成する。
【００９８】
開発者端末２０においては、表示データを受信すると、制御部２１は、モジュール設定画面Ｇ２を表示部２５に表示させる（Ｓ７）。Ｓ７においては、図３に示すモジュール設定画面Ｇ２が表示され、ボタンＢ５，Ｂ６の選択が受け付けられる。開発者は、ボタンＢ５が示すＸＲのアプリ開発用モジュールを先に選択してもよいし、ボタンＢ６が示すＡＩのアプリ開発用モジュールを先に選択してもよい。なお、各ボタンＢ５，Ｂ６に対応するモジュール識別情報は、モジュール設定画面Ｇ２の表示データに含まれているものとする。
【００９９】
制御部２１は、操作部２４の検出信号に基づいて、開発者により選択されたアプリ開発用モジュールのモジュール識別情報を、サーバ１０に送信する（Ｓ８）。Ｓ８においては、制御部２１は、開発者が選択したボタンＢ５又はＢ６に対応するモジュール識別情報を、サーバ１０に送信する。
【０１００】
サーバ１０においては、モジュール識別情報を受信すると、制御部１１は、モジュールデータＤＴ１に基づいて、開発者により選択されたアプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定する（Ｓ９）。Ｓ９においては、制御部１１は、開発者により選択されたアプリ開発用モジュールのモジュール識別情報に関連付けられた他のモジュール識別情報を参照することによって、他のアプリ開発用モジュールを特定する。
【０１０１】
制御部１１は、Ｓ９で特定した他のアプリ開発用モジュールに基づいて、モジュール設定画面Ｇ２の更新データを生成し、開発者端末２０に送信する（Ｓ１０）。更新データには、Ｓ１０で特定された他のアプリ開発用モジュールのモジュール識別情報が含まれているものとする。
【０１０２】
開発者端末２０においては、表示データを受信すると、制御部２１は、モジュール設定画面の表示を更新する（Ｓ１１）。Ｓ１１においては、図４に示すモジュール設定画面Ｇ２の状態となり、開発者により選択されたアプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールが選択可能に表示される。例えば、開発者によりＸＲのアプリ開発用モジュールが選択された場合には、ＡＩのアプリ開発用モジュールが選択可能に表示される。また例えば、開発者によりＡＩのアプリ開発用モジュールが選択された場合には、ＸＲのアプリ開発用モジュールが選択可能に表示される。
【０１０３】
制御部２１は、操作部２４の検出信号に基づいて、開発者により選択された他のアプリ開発用モジュールのモジュール識別情報を送信する（Ｓ１２）。Ｓ１２においては、制御部２１は、開発者が選択したボタンＢ５又はＢ６に対応するモジュール識別情報を、サーバ１０に送信する。
【０１０４】
サーバ１０においては、モジュール識別情報を受信すると、制御部１１は、当該モジュール識別情報を参照し、選択された他のアプリ開発用モジュールを特定する（Ｓ１３）。なお、開発者により選択されたアプリ開発用モジュールのモジュール識別情報は、サーバ１０の記憶部１２に一時的に記録される。また、Ｓ１３の処理の際に、ＡＩのアプリ開発用モジュールのパラメータが最適化されてもよい。その後、Ｓ２の処理に戻り、Ｓ３の処理が実行され、メニュー画面Ｇ１が開発者端末２０に表示される。
【０１０５】
一方、Ｓ５において、ボタンＢ２が選択された場合（Ｓ５；Ｂ２）、図１３に移り、制御部１１は、モジュールデータＤＴ１に基づいて、展開設定画面Ｇ３の表示データを生成し、開発者端末２０に送信する（Ｓ１４）。Ｓ１４においては、制御部１１は、開発者データＤＴ４を参照し、アプリ開発で利用される複数のアプリ開発用モジュールを特定する。制御部１１は、モジュールデータＤＴ１を参照し、当該複数のアプリ開発用モジュールの各々に関連付けられた環境を特定し、展開設定画面Ｇ３の表示データを生成する。
【０１０６】
開発者端末２０においては、表示データを受信すると、制御部２１は、展開設定画面Ｇ３を表示部２５に表示させる（Ｓ１５）。Ｓ１５においては、図５に示す展開設定画面Ｇ３が表示され、ボタンＢ７，Ｂ８の選択が受け付けられる。開発者は、ボタンＢ７及びボタンＢ８の少なくとも一方を選択する。なお、各ボタンＢ７，Ｂ８に対応する環境識別情報は、展開設定画面Ｇ３の表示データに含まれているものとする。
【０１０７】
制御部２１は、操作部２４の検出信号に基づいて、開発者により選択された環境の環境識別情報を送信する（Ｓ１６）。Ｓ１６においては、制御部２１は、開発者が選択したボタンＢ７，Ｂ８に対応する環境識別情報を、サーバ１０に送信する。
【０１０８】
サーバ１０においては、環境識別情報を受信すると、制御部１１は、開発者が選択した複数のアプリ開発用モジュールと、開発者が選択した環境と、の各々の間におけるライブラリの重複を排除する（Ｓ１７）。Ｓ１７においては、制御部１１は、ライブラリデータＤＴ２を参照し、開発者が選択した複数のアプリ開発用モジュールと、開発者が選択した環境と、の各々に関連付けられたライブラリ識別情報を取得する。制御部１１は、これら取得したライブラリ識別情報に基づいて、重複するライブラリが存在するか否かを判定する。制御部１１は、重複するライブラリが存在する場合には、同じライブラリファイルが重複して提供されないようにする。
【０１０９】
制御部１１は、ライブラリデータＤＴ２に基づいて、開発者が選択した環境における不要なライブラリを排除する（Ｓ１８）。Ｓ１８においては、制御部１１は、ライブラリデータＤＴ２を参照し、開発者が選択した環境におけるライブラリを特定し、アプリ開発で利用されるアプリ開発用モジュールで不要なライブラリを排除する。なお、アプリ開発用モジュールで不要なライブラリは、ライブラリデータＤＴ２又は別のデータに定義されているものとする。
【０１１０】
制御部１１は、開発者が選択した環境に基づいて、アプリ開発用モジュールのコードを最適化する（Ｓ１９）。Ｓ１９においては、制御部１１は、開発者が選択した環境に基づいて、アプリ開発用モジュールのサンプルコードを編集する。その後、Ｓ２の処理に戻り、Ｓ３の処理が実行され、メニュー画面Ｇ１が開発者端末２０に表示される。
【０１１１】
一方、図１２に示すＳ５において、ボタンＢ３が選択された場合（Ｓ５；Ｂ３）、図１３に移り、制御部１１は、プロファイルデータＤＴ３に基づいて、プロファイル設定画面Ｇ４の表示データを生成し、開発者端末２０に送信する（Ｓ２０）。Ｓ２０においては、制御部１１は、プロファイルデータＤＴ３を参照し、全ての項目を選択可能なプロファイル設定画面Ｇ４の表示データを生成する。
【０１１２】
開発者端末２０においては、表示データを受信すると、制御部２１は、プロファイル設定画面Ｇ４を表示部２５に表示させる（Ｓ２１）。Ｓ２１においては、図６に示すプロファイル設定画面Ｇ４が表示され、ボタンＢ９の選択が受け付けられる。なお、各ボタンＢ９に対応する項目識別情報は、プロファイル設定画面Ｇ４の表示データに含まれているものとする。
【０１１３】
制御部２１は、操作部２４の検出信号に基づいて、開発者により選択された項目の項目識別情報を送信する（Ｓ２２）。Ｓ２２においては、制御部２１は、開発者が選択したボタンＢ９に対応する項目識別情報を、サーバ１０に送信する。
【０１１４】
サーバ１０においては、環境識別情報を受信すると、制御部１１は、アプリ開発のプロジェクトを作成し（Ｓ２３）、開発者が選択した項目に応じたプロファイルを追加する（Ｓ２４）。Ｓ２３においては、制御部１１は、新規作成したプロジェクトに対応するレコードを開発者データＤＴ４に作成し、Ｓ２４において、開発者が選択したアプリ開発用モジュール、開発者に提供されるライブラリ、開発者が選択した環境、開発者が選択した項目に応じたプロファイルなどの情報を格納する。
【０１１５】
一方、Ｓ５において、ボタンＢ４が選択された場合（Ｓ５；Ｂ４）、本処理は終了し、開発者によるアプリ開発が行われる。例えば、サーバ１０は、開発者データＤＴ４を参照し、開発者端末２０に対し、ライブラリの重複等が行われたアプリ開発用モジュールを送信する。開発者は、開発者端末２０にダウンロードされたアプリ開発用モジュールを利用してアプリ開発を行う。開発者は、開発したアプリを自身のデバイスに展開してテストを行い、十分な品質となるまで開発作業を行う。開発者は、十分な品質を担保できたと判断した場合に、アプリ開発を終了する。開発者は、十分な品質ではないと判断した場合には、再び図１２及び図１３の処理を実行し、アプリ開発用モジュールの設定をやり直してもよい。
【０１１６】
以上説明したモジュール提供システムＳによれば、アプリ開発用モジュールが選択された場合に、当該アプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールを特定し、選択されたアプリ開発用モジュールと、特定された当該他のアプリ開発用モジュールと、を開発者に提供することができる。例えば、あるアプリ開発用モジュールに対し、サポートされている他のアプリ開発用モジュールを関連付けておく場合には、開発者が開発するアプリを確実に動作させることができる。また例えば、あるアプリ開発用モジュールに対し、相性の良い他のアプリ開発用モジュールを関連付けておく場合には、開発効率を向上させることができる。
【０１１７】
また、モジュール提供システムＳは、開発者が選択したアプリ開発用モジュールに関連付けられた複数の他のアプリ開発用モジュールを、開発者端末２０において選択可能に表示させ、開発者により選択された他のアプリ開発用モジュールを提供することができる。これにより、開発者が選択したアプリ開発用モジュールに関連付けられた他のアプリ開発用モジュールが複数存在する場合であっても、開発者の好みのアプリ開発用モジュールを選択させることができ、開発効率を効果的に向上させることができる。
【０１１８】
また、モジュール提供システムＳは、開発者が選択したアプリ開発用モジュールと、特定された他のアプリ開発用モジュールと、の間におけるライブラリの重複を排除することによって、同じライブラリが重複して利用されるといった無駄を排除することができる。また、同じライブラリが重複して利用されると、開発者のアプリ開発で消費されるメモリ消費量が増大する可能性があるが、ライブラリの重複を排除することによって、メモリ消費量の増大を抑制することができる。また、重複したライブラリを排除することで、アプリの容量も減らすことができる。
【０１１９】
また、モジュール提供システムＳは、開発者により選択されたアプリ開発用モジュール、特定された他のアプリ開発用モジュール、及び開発者により選択された環境の間におけるライブラリの重複を排除することによって、同じライブラリが何重にも重複して利用されるといった無駄を排除することができる。また、同じライブラリが何重にも重複して利用されると、開発者のアプリ開発で消費されるメモリ消費量がその分だけ増大する可能性があるが、ライブラリの重複を排除することによって、メモリ消費量の増大を効果的に抑制することができる。また、重複したライブラリを排除することで、アプリの容量も減らすことができる。
【０１２０】
また、モジュール提供システムＳは、開発者により選択された環境における不要なライブラリを排除することによって、ライブラリが不要であるにも関わらず用意されるといった無駄を排除することができる。また、不要なライブラリが用意されると、開発者のアプリ開発で消費されるメモリ消費量が増大する可能性があるが、不要なライブラリを排除することによって、メモリ消費量の増大を抑制することができる。また、不要なライブラリを排除することで、アプリの容量も減らすことができる。
【０１２１】
また、モジュール提供システムＳは、開発者により選択されたアプリ開発用モジュールと、特定されたアプリ開発用モジュールと、の各々のコードを最適化することによって、アプリの質を高めることができる。また、開発者がコードを書きなおす手間を省くことができ、開発効率を向上させることができる。
【０１２２】
また、モジュール提供システムＳは、開発者により選択された項目に応じたプロファイルを開発者に提供することによって、開発中のアプリの質を適切に評価することができ、アプリの質を高めるとともに、開発効率を向上させることができる。
【０１２３】
また、モジュール提供システムＳは、開発者により選択されたＡＩに関するアプリ開発用モジュールに関連付けられた、ＸＲに関する他のアプリ開発用モジュールを特定することができる。これにより、開発者がＡＩを利用したＸＲに関するアプリを開発する際の開発効率を向上させることができる。
【０１２４】
また、モジュール提供システムＳは、開発者により選択されたＸＲに関するアプリ開発用モジュールに関連付けられた、ＡＩに関する他のアプリ開発用モジュールを特定することができる。これにより、開発者がＡＩを利用したＸＲに関するアプリを開発する際の開発効率を向上させることができる。
【０１２５】
また、モジュール提供システムＳは、ＸＲに関するアプリ開発用モジュールに基づいて、ＡＩに関するアプリ開発用モジュールのパラメータを調整することによって、開発者がＡＩを利用したＸＲに関するアプリの質を高めることができる。
【０１２６】
［５．変形例］
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【０１２７】
例えば、実施形態では、ＡＩを利用したＸＲアプリが開発される場合を説明したが、アプリは、任意の種類であってよく、ＸＲのアプリに限られない。例えば、開発者は、アプリ開発用モジュールを利用して、カメラで撮影した画像の被写体を分類するアプリ、バーコードをスキャンするアプリ、文字認識や機械翻訳をするアプリ、顔認識をするアプリ、道案内のアプリ、オンラインショッピングモール又はインターネットオークションにおける商品を購入するアプリ、金融サービスを提供するアプリ、又はゲームアプリを開発してもよい。
【０１２８】
また例えば、モジュールデータＤＴ１には、アプリ開発用モジュールに関連付けて、奨励すべき項目又はプロファイルが関連付けられていてもよい。また例えば、モジュール設定画面Ｇ２において、開発者により選択されたアプリ開発用モジュールに関連付けられた他のアプリ開発用モジュール以外の他のモジュールが選択可能に表示されてもよい。また例えば、実施形態では、アプリを展開するプラットフォーム及びデバイスの各々が選択可能である場合を説明したが、これらの何れか一方のみが選択可能であってもよい。
【０１２９】
また例えば、主な機能がサーバ１０で実現される場合を説明したが、各機能は、複数のコンピュータで分担されてもよい。例えば、サーバ１０及び開発者端末２０の各々で機能が分担されてもよい。また例えば、モジュール提供システムＳが複数のサーバコンピュータを含む場合には、これら複数のサーバコンピュータで機能が分担されてもよい。また例えば、データ記憶部１００で記憶されるものとして説明したデータは、サーバ１０以外のコンピュータによって記憶されてもよい。
【符号の説明】
【０１３０】
Ｓ  モジュール提供システム、Ｎ  ネットワーク、１０  サーバ、１１，２１  制御部、１２，２２  記憶部、１３，２３  通信部、２０  開発者端末、２４  操作部、２５  表示部、Ｂ１，Ｂ２，Ｂ３，Ｂ４，Ｂ５，Ｂ６，Ｂ７，Ｂ８，Ｂ９  ボタン、Ｇ１  メニュー画面、Ｇ２  モジュール設定画面、Ｇ３  展開設定画面、Ｇ４  プロファイル設定画面、１００  データ記憶部、１０１  モジュール選択受付部、１０２  環境選択受付部、１０３  項目選択受付部、１０４  表示制御部、１０５  特定部、１０６  重複排除部、１０７  不要排除部、１０８  コード最適化部、１０９  パラメータ調整部、１１０  提供部、ＤＴ１  モジュールデータ、ＤＴ２  ライブラリデータ、ＤＴ３  プロファイルデータ、ＤＴ４  開発者データ。
【図１】
0006916843.tif 000002
【図２】
0006916843.tif 000003
【図３】
0006916843.tif 000004
【図４】
0006916843.tif 000005
【図５】
0006916843.tif 000006
【図６】
0006916843.tif 000007
【図７】
0006916843.tif 000008
【図８】
0006916843.tif 000009
【図９】
0006916843.tif 000010
【図１０】
0006916843.tif 000011
【図１１】
0006916843.tif 000012
【図１２】
0006916843.tif 000013
【図１３】
0006916843.tif 000014