(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024094552
(43)【公開日】2024-07-10
(54)【発明の名称】情報処理システム、情報処理システムの制御方法、及びプログラム
(51)【国際特許分類】
G06F 3/0484 20220101AFI20240703BHJP
【FI】
G06F3/0484
【審査請求】未請求
【請求項の数】18
【出願形態】OL
(21)【出願番号】P 2022211174
(22)【出願日】2022-12-28
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
(71)【出願人】
【識別番号】390002761
【氏名又は名称】キヤノンマーケティングジャパン株式会社
(71)【出願人】
【識別番号】592135203
【氏名又は名称】キヤノンITソリューションズ株式会社
(74)【代理人】
【識別番号】100189751
【弁理士】
【氏名又は名称】木村 友輔
(74)【代理人】
【識別番号】100227857
【弁理士】
【氏名又は名称】中山 圭
(72)【発明者】
【氏名】柴本 文洋
(72)【発明者】
【氏名】上田 勲
【テーマコード(参考)】
5E555
【Fターム(参考)】
5E555AA02
5E555AA07
5E555AA09
5E555AA13
5E555AA22
5E555AA25
5E555AA26
5E555AA54
5E555AA79
5E555BA02
5E555BA04
5E555BA69
5E555BB02
5E555BB04
5E555BC03
5E555BC04
5E555CA02
5E555CA04
5E555CA06
5E555CA12
5E555CA17
5E555CB05
5E555CB08
5E555CB33
5E555CB41
5E555DB20
5E555DB25
5E555DB39
5E555DB41
5E555DC02
5E555DC09
5E555DC13
5E555DC14
5E555DC31
5E555DC35
5E555DD01
5E555EA05
5E555FA00
(57)【要約】
【課題】
チュートリアルにおける操作性をより向上させる。
【解決手段】
チュートリアルに含まれる複数の手順のうち、1の手順でユーザーが情報を入力すべき入力対象項目を示すとともに、ガイド領域に、前記入力対象項目に入力すべき情報であるコピー対象のコピーの指示を受け付けるコピーアイテムを表示するように制御する表示制御手段と、
前記コピーアイテムが操作されたことに応じて前記コピー対象をコピーし、
前記入力対象項目に対してペーストの操作がされたことに応じて、前記コピー対象を前記入力対象項目に入力するように制御する制御手段と、
を有することを特徴とする。
【選択図】
図13
【特許請求の範囲】
【請求項1】
チュートリアルに含まれる複数の手順のうち、1の手順でユーザーが情報を入力すべき入力対象項目を示すとともに、ガイド領域に、前記入力対象項目に入力すべき情報であるコピー対象のコピーの指示を受け付けるコピーアイテムを表示するように制御する表示制御手段と、
前記コピーアイテムが操作されたことに応じて前記コピー対象をコピーし、
前記入力対象項目に対してペーストの操作がされたことに応じて、前記コピー対象を前記入力対象項目に入力するように制御する制御手段と、
を有することを特徴とする情報処理システム。
【請求項2】
前記表示制御手段は、前記チュートリアルのうち第1の手順では前記ガイド領域に前記コピーアイテムを表示することなく、入力対象項目に入力すべき内容のガイダンスを表示するように制御し、前記チュートリアルのうち第2の手順では前記コピーアイテムを表示するように制御することを特徴とする請求項1に記載の情報処理システム。
【請求項3】
前記第1の手順は、入力対象項目に入力すべき情報としての入力すべき文字列が所定文字数未満でよい手順であり、前記第2の手順は、入力対象項目に入力すべき情報としての入力すべき文字列が前記所定文字数以上を要する手順であることを特徴とする請求項2に記載の情報処理システム。
【請求項4】
前記制御手段は、ユーザー操作に応じて、前記入力対象項目に対して前記コピー対象と異なる情報を入力するように制御することも可能であることを特徴とする請求項1に記載の情報処理システム。
【請求項5】
前記制御手段は、前記入力対象項目に対して入力された情報に基づいて、チュートリアルの対象のソフトウェアの実際の機能を実行するように制御することを特徴とする請求項1に記載の情報処理システム。
【請求項6】
チュートリアルに含まれる複数の手順のうち、1の手順でユーザーが情報を入力すべき入力対象項目を示すとともに、ガイド領域に、前記入力対象項目に入力すべき情報であるコピー対象を表示するように制御する表示制御手段と、
前記コピー対象を選択してコピーを指示する操作がされたことに応じて前記コピー対象をコピーし、
前記入力対象項目に対してペーストの操作がされたことに応じて、前記コピー対象を前記入力対象項目に入力するように制御する制御手段と、
を有することを特徴とする情報処理システム。
【請求項7】
チュートリアルに含まれる複数の手順のうち、1の手順でユーザーが情報を入力すべき入力対象項目を示すとともに、スキップアイテムを表示し、ガイド領域に、前記入力対象項目に入力すべき内容のガイダンスを表示するように制御する表示制御手段と、
前記入力対象項目に対してユーザーからの入力操作があった場合には、前記ユーザーから入力された内容を前記入力対象項目に入力して前記チュートリアルのうち次のステップへ進むように制御し、
前記スキップアイテムが操作された場合は、前記入力対象項目に対するユーザーからの入力操作がなくとも、所定の内容を前記入力対象項目に入力して前記チュートリアルのうち次のステップへ進むように制御する制御手段と、
を有することを特徴とする情報処理システム。
【請求項8】
前記制御手段は、前記スキップアイテムが操作された場合、前記入力対象項目に前記所定の内容が入力された状態を表示した後に前記次のステップへ進むように制御することを特徴とする請求項7に記載の情報処理システム。
【請求項9】
前記制御手段は、前記スキップアイテムが操作された場合、前記入力対象項目に前記所定の内容が入力された状態を所定時間表示した後に前記次のステップへ進むように制御することを特徴とする請求項7に記載の情報処理システム。
【請求項10】
前記表示制御手段は、前記チュートリアルに含まれる複数の手順において前記スキップアイテムを同一の位置に表示するように制御することを特徴とする請求項7に記載の情報処理システム。
【請求項11】
前記表示制御手段は、前記スキップアイテムを前記入力対象項目の位置にかかわらない位置に表示するように制御することを特徴とする請求項7に記載の情報処理システム。
【請求項12】
前記表示制御手段は、前記スキップアイテムを前記ガイド領域の位置にかかわらない位置に表示するように制御することを特徴とする請求項7に記載の情報処理システム。
【請求項13】
前記制御手段は、ユーザー操作に応じて、前記入力対象項目に対して前記所定の内容と異なる情報を入力するように制御することも可能であることを特徴とする請求項7に記載の情報処理システム。
【請求項14】
前記制御手段は、前記入力対象項目に対して入力された情報に基づいて、チュートリアルの対象のソフトウェアの実際の機能を実行するように制御することを特徴とする請求項7に記載の情報処理システム。
【請求項15】
チュートリアルに含まれる複数の手順のうち、1の手順でユーザーが情報を入力すべき入力対象項目を示すとともに、ガイド領域に、前記入力対象項目に入力すべき情報であるコピー対象のコピーの指示を受け付けるコピーアイテムを表示するように制御する表示制御ステップと、
前記コピーアイテムが操作されたことに応じて前記コピー対象をコピーし、
前記入力対象項目に対してペーストの操作がされたことに応じて、前記コピー対象を前記入力対象項目に入力するように制御する制御ステップと、
を有することを特徴とする情報処理システムの制御方法。
【請求項16】
チュートリアルに含まれる複数の手順のうち、1の手順でユーザーが情報を入力すべき入力対象項目を示すとともに、ガイド領域に、前記入力対象項目に入力すべき情報であるコピー対象を表示するように制御する表示制御ステップと、
前記コピー対象を選択してコピーを指示する操作がされたことに応じて前記コピー対象をコピーし、
前記入力対象項目に対してペーストの操作がされたことに応じて、前記コピー対象を前記入力対象項目に入力するように制御する制御ステップと、
を有することを特徴とする情報処理システム。
【請求項17】
チュートリアルに含まれる複数の手順のうち、1の手順でユーザーが情報を入力すべき入力対象項目を示すとともに、スキップアイテムを表示し、ガイド領域に、前記入力対象項目に入力すべき内容のガイダンスを表示するように制御する表示制御ステップと、
前記入力対象項目に対してユーザーからの入力操作があった場合には、前記ユーザーから入力された内容を前記入力対象項目に入力して前記チュートリアルのうち次のステップへ進むように制御し、
前記スキップアイテムが操作された場合は、前記入力対象項目に対するユーザーからの入力操作がなくとも、所定の内容を前記入力対象項目に入力して前記チュートリアルのうち次のステップへ進むように制御する制御ステップと、
を有することを特徴とする情報処理システムの制御方法。
【請求項18】
少なくとも1つのコンピュータを、請求項1乃至14のいずれか1項に記載された情報処理システムの各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
情報処理システム、情報処理システムの制御方法、及びプログラム関し、特に、アプリケーションソフトウェアの構築のために用いて好適な技術に関する。
【背景技術】
【0002】
従来、プログラミング言語によるコード記述が不要または少なくてよいノーコード開発ツール/ローコード開発ツールとして、定義に従ってアプリケーションソフトウェア(以下、アプリケーションと称する)を構築するアプリケーション構築ツールが存在する。特許文献1には、構築するWebアプリケーションの画面を編集するためのレイアウトエディタ画面に、ボタン、テキストボックス等の画面部品のいずれかをドラッグ&ドロップで配置でき、配置した画面部品を入出力定義テーブルに記憶することが提案されている。
【0003】
アプリケーションソフトウェアの機能を習得するためのチュートリアルについても知られている。特許文献2には、複数のチュートリアルの中から選択されたチュートリアルを実行すること、チュートリアルの進捗状況を表示することなどが提案されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2019-49858号公報
【特許文献2】特開2001-356858号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ソフトウェアのチュートリアルに沿って操作することで、実際にソフトウェアの機能を実行できるようにしたチュートリアルがある。ソフトウェアの実際の機能を実行するチュートリアルでは、チュートリアルの中の操作であっても、正しい入力を行わないと、ソフトウェアが正常に動作しない。例えば、REST関数の作成に関するチュートリアルにおいて、リクエストを送信する先のURLは正しく入力しなければ、チュートリアルで作成されたREST関数は正しく機能しない。しかし、チュートリアルの中の操作で、実際に文字列を入力するのは手間であるし、ミスの可能性も高まる。また、チュートリアルに含まれる複数のステップ(手順)のうち、ユーザーが完全に習得あるいは理解しているわけではないが、多くの部分は既に習得あるいは理解している内容は、簡単な確認で素早く済ませたい。それでも、チュートリアルの中の操作で、正しい情報を手入力しなければいけないのは手間である。また、正しい情報を入力しないとチュートリアルの先へ進めないが、正しい入力をするにはどうすればよいか、正しい情報は何かがわからず、チュートリアルを先に進めるに苦労する可能性もある。
【0006】
そこで本発明は、上記課題に鑑み、チュートリアルにおける操作性をより向上させる仕組みを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の情報処理システムは、
チュートリアルに含まれる複数の手順のうち、1の手順でユーザーが情報を入力すべき入力対象項目を示すとともに、ガイド領域に、前記入力対象項目に入力すべき情報であるコピー対象のコピーの指示を受け付けるコピーアイテムを表示するように制御する表示制御手段と、
前記コピーアイテムが操作されたことに応じて前記コピー対象をコピーし、
前記入力対象項目に対してペーストの操作がされたことに応じて、前記コピー対象を前記入力対象項目に入力するように制御する制御手段と、
を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、チュートリアルにおける操作性をより向上させることができる。
【図面の簡単な説明】
【0009】
【
図2】開発者用端末100、アプリユーザー用端末200、アプリユーザー用端末201のハードウェアブロック図である。
【
図5】ログイン処理とUIエディタ処理における表示例である。
【
図6】UIエディタ処理におけるタブ部品とAppBarの表示例である。
【
図7】コンテキストメニュー処理のフローチャートである。
【
図8】アクションボード処理のフローチャートである。
【
図9】アクションボード処理を説明するための表示例である。
【
図10】アクションボード処理における表示例である。
【
図11】開発環境300が生成するソースコードの例である。
【
図13】チュートリアル処理のフローチャートである。
【
図14】チュートリアル処理にかかる表示例である。
【
図15】チュートリアル処理にかかる表示例である。
【
図16】チュートリアル処理にかかる表示例である。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態で説明されている特徴の組み合わせの全てが発明に必須のものとは限らない。実施形態で説明されている複数の特徴のうち二つ以上の特徴が任意に組み合わされてもよい。また、同一若しくは同様の構成には同一の参照番号を付し、重複した説明は省略する。
【0011】
以下に示す実施形態中で示した各種特徴事項は、互いに組み合わせ可能である。なお、以下において、「アプリケーション」、「アプリ」は、いずれも、アプリケーションソフトウェアを意味するものとする。
【0012】
<システム構成>
図1に、本発明の実施形態としての情報処理システムのシステム構成図を示す。
図1には、ソフトウェア開発を行うためのシステムと、開発されたソフトウェアを使用するためのシステムとを示す。
【0013】
開発者用端末100は、パーソナルコンピュータ(以下、PC)やスマートフォンなどで構成可能な開発者ユーザーが操作する情報処理装置(情報処理端末)である。すなわち、開発者ユーザーのユーザー端末である。開発者用端末100は、開発するアプリケーションの設計操作を開発者から受け付け、設計された内容であるアプリケーションの各種定義情報を開発環境300に送信する。
【0014】
開発環境300はネットワーク上(クラウド上、インターネット上)に構築された少なくとも1つのハードウェア資源を用いた環境である。開発環境300はマルチテナントの環境であり、複数の開発者ユーザーがログイン可能な環境である。開発環境300は、開発者情報301、実行エンジン302、ストレージ320を含む。開発環境300は、複数のWebサービス(クラウドサービス)を組み合わせて構築される。
【0015】
開発者情報301は、開発者のアカウントIDとなるメールアドレス(ユーザーID)、パスワードなどの、開発環境300にログイン可能な開発者のアカウントを記録した情報である。開発者情報301は開発環境300に含まれる少なくとも1つの記録媒体に記録されている。
【0016】
実行エンジン302は、開発環境300で実行すべき処理を実行するための少なくとも1つのハードウェア資源であり、プロセッサ303とメモリ304を含む。プロセッサ303は少なくとも1つのプロセッサからなり、クラウド上の1つのプロセッサでもよいし、複数のプロセッサを組み合わせたプロセッサ群としても良い。メモリ304は、プロセッサ303が実行すべきプログラムを記録した少なくとも1つの記録媒体である。後述する各種フローチャートのうち、開発環境300が実行するものとして説明するものは、実行エンジン302が実行する。すなわち、メモリ304に記録されたプログラムを、プロセッサ303が開発環境300のうちワークメモリとなる領域に展開して実行することにより実現する。
【0017】
配信エンジン305は、開発環境300にアクセスした開発者用端末100に対して、開発者用端末100において実行すべきクライアント用プログラム322(HTMLのソースコードやJavaScriptのソースコードなど)を送信する。クライアント用プログラム322は、開発環境300に含まれるストレージ320に予め記録されている。
【0018】
ストレージ320は、少なくとも1つの記録媒体の記憶領域であり、少なくとも、各開発者に共通であるクライアント用プログラム322を記憶している。また、開発者のアカウント毎の記憶領域である開発者用領域を有している。例えば、ログイン可能な開発者として開発者A、開発者B、開発者Cがいる場合には、開発者Aのための領域である開発者A領域323、開発者Bのための領域である開発者B領域324、開発者Cのための領域である開発者C領域325が含まれる。各開発者用領域には、各開発者が開発したアプリの定義情報を記憶している。例えば、既発者A領域323にはアプリ定義323a(アプリのUI定義情報、アプリの実行環境用プログラム含む)が記録されている。
【0019】
開発者は、開発者用端末100のブラウザソフトから、開発環境300にアクセスするためのURLにアクセスすることで開発環境300にアクセスし、開発環境にログインする。開発環境にログインすると、開発環境から、クライアント用プログラム322と、過去に開発作業を行って保存していた内容であるアプリ定義(UI定義情報)を受信する。そして、新規にアプリケーションを設計する操作、あるいは、既存の(作りかけの)アプリケーションの更新設計をする操作を行い、その結果であるアプリの定義情報(アプリ定義、UI定義情報)を開発環境300に送信する。開発環境300は受信したアプリ定義を、その開発者用領域に保存する。このように、本実施形態では、クラウド上の開発環境300にアクセスすることが可能な端末であればどのような端末であっても開発者用端末100として利用してアプリケーションの設計を行うことができる。従って、インターネットに接続することが可能な端末さえあれば、開発者は場所を選ばずにアプリケーションの開発を行うことができる。
【0020】
実行環境400は、ネットワーク上(クラウド上、インターネット上)に構築された少なくとも1つのハードウェア資源を用いた環境である。実行環境400はマルチテナント実行環境410と、複数のシングルテナント実行環境(例えば、シングルテナント実行環境450、460、470)を含む。実行環境400は、複数のWebサービス(クラウドサービス)を組み合わせて構築される。実行環境400には、開発者用端末100と開発環境300を用いて開発されたアプリケーションの定義情報(アプリ定義)がデプロイされるための環境である。そして、アプリケーションを使用するユーザーが用いるアプリユーザー用端末200、201は、アプリケーションの実行のためのURLにアクセスすることで、実行環境400にアクセスする。そして、アプリユーザー用端末200、201で行われた操作に応じた各種アクションを実行環境400が実行することで、開発されたアプリケーションが実行され、アプリユーザーにアプリケーションの機能が提供される。ネットワーク上にある実行環境400に構築されるアプリケーションはいわゆるWEBアプリケーションである。
【0021】
マルチテナント実行環境410は、複数の開発者に共用されるマルチテナント環境の実行環境であり、複数の開発者によって開発されたアプリケーションがデプロイされる。すなわち、複数の開発者によって共有される環境であり、複数の開発者の複数のアプリを構築可能な環境である。マルチテナント実行環境410には、ユーザー情報411、実行エンジン412、配信エンジン415、ストレージ420、DBセット433を含む。
【0022】
ユーザー情報411は、デプロイされたアプリケーション(構築されたアプリケーション)のユーザーアカウントIDとなるメールアドレス(ユーザーネーム)、パスワードなどの、アプリケーションにログイン可能なアプリユーザーのアカウントを記録した情報である。ユーザー情報411はマルチテナント実行環境410に含まれる少なくとも1つの記録媒体に記録されている。
【0023】
実行エンジン412は、マルチテナント実行環境410で実行すべき処理を実行するための少なくとも1つのハードウェア資源であり、プロセッサ413とメモリ414を含む。プロセッサ413は少なくとも1つのプロセッサからなり、クラウド上の1つのプロセッサでもよいし、複数のプロセッサを組み合わせたプロセッサ群としても良い。メモリ414は、プロセッサ413が実行すべきプログラムを記録した少なくとも1つの記録媒体である。後述する各種フローチャートのうち、マルチテナント実行環境410が実行するものとして説明するものは、実行エンジン412が実行する。すなわち、メモリ414に記録されたプログラムを、プロセッサ413がマルチテナント実行環境410のうちワークメモリとなる領域に展開して実行することにより実現する。ここで実行されるプログラムは、アプリケーションのアクションを実行するプログラムを含む。
【0024】
配信エンジン415は、マルチテナント実行環境410にアクセスしたアプリユーザー用端末200、201に対してアプリユーザー用端末200、201において実行すべきクライアント用プログラム422(HTMLのソースコードやJavaScriptのソースコードなど)を送信する。クライアント用プログラム422は、実行環境410に含まれるストレージ420に予め記録されている。
【0025】
ストレージ420は、少なくとも1つの記録媒体の記憶領域であり、少なくとも、複数のアプリケーションで共通であるクライアント用プログラム422を記憶している。また、ストレージ420の所定の領域(所定のフォルダ、所定のバケット、所定の階層下)には、当該実行環境(マルチテナント実行環境410)へアクセスするためのアクセス先情報421が記録されている。また、開発者のアカウント毎の記憶領域である開発者用領域を有している。例えば開発者Aのための領域である開発者A領域423、開発者Bのための領域である開発者B領域424、開発者Cのための領域である開発者C領域425が含まれる。各開発者用領域には、各開発者が開発して、開発環境300からデプロイされたアプリの定義情報を記憶している。例えば、既発者A領域423にはアプリ定義423aが記録されている。
【0026】
DBセット430は、実行環境410にデプロイされたアプリケーションが用いるデータベースに関する情報群である。DBセット430は、少なくとも1つの記録媒体の記憶領域に記憶される。
【0027】
シングルテナント実行環境1(450)、2(460)、3(470)は、それぞれ1人の開発者(1つの開発者アカウント)に専用の実行環境であり、所有者である開発者によって開発環境300を用いて開発されたアプリケーションがデプロイされる。本実施形態では例として、シングルテナント実行環境1(450)の所有者は開発者A、シングルテナント実行環境2(460)の所有者も開発者A、シングルテナント実行環境3(470)の所有者は開発者B、としている。このように、1人の開発者が複数のシングルテナント実行環境を所有することもできる。シングルテナント実行環境1(450)、2(460)、3(470)はそれぞれ、ユーザー情報451、461、471、実行エンジン452、462、472、配信エンジン455、465、475、ストレージ456、466、476、DBセット457、467、477を含む。これらは、1人の開発者に専用であることを除いては、前述したマルチテナント実行環境410の、ユーザー情報411、実行エンジン412、配信エンジン415、ストレージ420、DBセット433と同様の機能であるため、詳細な説明は省略する。シングルテナント実行環境は図示した3つだけでなく、更に数多く構築することが可能である。
【0028】
図1のシステムを用いて、例えば、運用者が、マルチテナント実行環境410を開発者に無償提供し、シングルテナント実行環境を有償提供するという運用とすることが考えられる。マルチテナント実行環境410も、各シングルテナント実行環境も、リソースとサービスの提供業者(クラウドサービス事業者)に対して本システムの運用者が維持費用を支払う必要がある。マルチテナント実行環境410の維持費用は、運用者が負担して複数の開発者に無償提供することにより、開発者が本システムの試用のために費用負担をする必要がないため、多くの開発者が利用しやすく、本システムの普及を促進することができる。運用者は、シングルテナント実行環境に対して開発者に課金することで費用回収する。
【0029】
1つの実行環境で単位時間あたりに処理できる処理リクエストの数に上限があり、数多くのアプリケーションがマルチテナント実行環境に構築され、多くのアプリユーザーが同時にアクセスした場合、リクエストが処理しきれず、アプリケーションの動作が遅くなるなどの状況になる可能性がある。他にも、マルチテナント実行環境に多くの開発者が開発した多くのアプリケーションがデプロイされて実行されることに対して、いくらかの制限があり、その制限のためにアプリケーションが十分なパフォーマンスを発揮できない場合がある。開発者が、有償で専用のシングルテナント実行環境を所有することで、このようなマルチテナント実行環境の制限による問題は回避(あるいは低減)することができる。すなわち、アプリケーションをシングルテナント実行環境に構築することで、十分なパフォーマンスを発揮するアプリケーションを構築することができる。
【0030】
このようなマルチテナントシングル環境とシングルテナント実行環境の双方の特徴を踏まえ、開発者は、本システムを次のように活用できる。例えば、本システムを初めて使う場合にはマルチテナント実行環境410に本システムを用いて開発したアプリケーションを構築して試用を行った後に、本システムが開発者のソフトウェア開発に資すると判断したうえで、シングルテナント実行環境を有償で導入するといった使い方ができる。また、開発者が特定のアプリケーションXを開発する際に、一般ユーザーに公開する前に、人数の限られたテストユーザーに試用してもらうためのアプリケーションXのα版をマルチテナント実行環境410に構築する。そこでアプリケーションXのテスト行い、アプリケーションXの修正などを行い、更に開発を進める。そして、一般ユーザーへ公開しても問題ないレベルまで開発が完了した後に、アプリケーションXの本運用版をシングルテナント実行環境に構築して、一般ユーザーに公開する。このような使い方をすれば、開発者は、開発期間の開発費用を抑え、かつ、多数の一般ユーザーが利用しても問題の無いアプリケーションの運用を行うことができる。
【0031】
図2に、開発者用端末100、アプリユーザー用端末200、アプリユーザー用端末201として適用可能な装置(電子機器)の一例としての情報処理装置のハードウェアブロック図を示す。
図2において、内部バス150に対してCPU101、メモリ102、不揮発性メモリ103、画像処理部104、ディスプレイ105、操作部106、記録媒体I/F107、外部I/F109、通信I/F110が接続されている。内部バス150に接続される各部は、内部バス150を介して互いにデータのやりとりを行うことができるようにされている。
【0032】
メモリ102は、例えばRAM(半導体素子を利用した揮発性のメモリなど)からなる。CPU101は、例えば不揮発性メモリ103に格納されるプログラムに従い、メモリ102をワークメモリとして用いて、情報処理装置の各部を制御する。不揮発性メモリ103には、画像データや音声データ、その他のデータ、CPU101が動作するための各種プログラムなどが格納される。不揮発性メモリ103は例えばハードディスク(HD)やROMなどで構成される。
【0033】
画像処理部104は、CPU101の制御に基づいて、不揮発性メモリ103や記録媒体108に格納された画像データや、外部I/F109を介して取得した映像信号、通信I/F110を介して取得した画像データ、撮像された画像などに対して各種画像処理を施す。画像処理部104が行う画像処理には、A/D変換処理、D/A変換処理、画像データの符号化処理、圧縮処理、デコード処理、拡大/縮小処理(リサイズ)、ノイズ低減処理、色変換処理などが含まれる。画像処理部104は特定の画像処理を施すための専用の回路ブロックで構成しても良い。また、画像処理の種別によっては画像処理部104を用いずにCPU101がプログラムに従って画像処理を施すことも可能である。
【0034】
ディスプレイ105は、CPU101の制御に基づいて、画像やGUI(Graphical User Interface)を構成するGUI画面などを表示する。CPU101は、プログラムに従い表示制御信号を生成し、ディスプレイ105に表示するための映像信号を生成してディスプレイ105に出力するように情報処理装置の各部を制御する。ディスプレイ105は出力された映像信号に基づいて映像を表示する。なお、情報処理装置自体が備える構成としてはディスプレイ105に表示させるための映像信号を出力するためのインターフェースまでとし、ディスプレイ105は外付けのモニタ(テレビなど)で構成してもよい。以下、開発者用端末100、アプリユーザー用端末200、アプリユーザー用端末201が実行する処理においての表示先は、特に断りが無い場合には、各動作主のディスプレイ105であるものとする。
【0035】
操作部106は、キーボードなどの文字情報入力デバイスや、マウスやタッチパネルといったポインティングデバイス、ボタン、ダイヤル、ジョイスティック、タッチセンサ、タッチパッドなどを含む、ユーザー操作を受け付けるための入力デバイスである。なお、タッチパネルは、ディスプレイ105に重ね合わせて平面的に構成され、接触された位置に応じた座標情報が出力されるようにした入力デバイスである。
【0036】
記録媒体I/F107は、メモリーカードやCD、DVDといった記録媒体108が装着可能とされ、CPU101の制御に基づき、装着された記録媒体108からのデータの読み出しや、当該記録媒体108に対するデータの書き込みを行う。外部I/F109は、外部機器と有線ケーブルや無線によって接続し、映像信号や音声信号の入出力を行うためのインターフェースである。通信I/F110は、外部機器やインターネット111などと通信して、ファイルやコマンドなどの各種データの送受信を行うためのインターフェースである。開発者用端末100は通信I/F110を用いて、インターネット111上にある開発環境300と通信可能(情報の送受信可能)である。アプリユーザー用端末200、201は通信I/F110を用いて、インターネット111上にある実行環境400と通信可能(情報の送受信可能)である。
【0037】
<ログイン処理>
図3(a)、(b)に、ログイン処理のフローチャートを示す。この処理は、開発者用端末100から開発環境300にログインしてUIエディタを表示するまでの処理である。開発者用端末100において、インターネットブラウザソフトを立ち上げ、本実施形態の開発システム(アプリケーション開発プラットフォーム)のURLを指定してアクセスする指示があると、
図3(a)の処理を開始する。
図3(a)の処理は、開発者用端末100のCPU101が、インターネットブラウザソフトを実行するための不揮発性メモリ103に記録されたプログラムと、開発環境300から受信したクライアント用プログラム322とを、メモリ102に展開して実行することにより実現する。以降、単に開発者用端末100が実行する処理として記載したものは、開発者用端末100のCPU101が、インターネットブラウザソフトを実行するための不揮発性メモリ103に記録されたプログラムと、開発環境300から受信したクライアント用プログラム322とを、メモリ102に展開して実行する処理であるものとする。
【0038】
開発者用端末100において、インターネットブラウザソフトを立ち上げ、本実施形態の開発システム(アプリケーション開発プラットフォーム)のURLを指定してアクセスすると、開発環境300の配信エンジン305がアクセスを検知し、アクセス元の開発者用端末100にクライアント用プログラム322を送信する。
【0039】
S301では、開発者用端末100は、開発環境300から送信されたクライアント用プログラム322(クライアント用情報)を受信したか否かを判定する。受信していなければS301で受信を待ち、受信したらS302に進む。
【0040】
S302では、開発者用端末100は、開発環境300から受信したクライアント用プログラム322(クライアント用情報)メモリ102に記録する。
【0041】
S303では、開発者用端末100は、クライアント用プログラム322に従い、ログイン画面をディスプレイ105に表示する。ログイン画面には、本実施形態の開発システムへのログイン画面である旨と、開発者IDとパスワードの入力欄、新規登録ボタン(アイコン)、ログインボタン(アイコン)が表示される。
【0042】
S304では、開発者用端末100は、ログイン画面の開発者IDとパスワードの入力欄への入力操作を受け付ける。ユーザーの入力操作は操作部106を用いて行われる。開発者IDは開発者ユーザーを識別(特定)するためのユーザー識別情報である。本実施形態では開発者ID(ユーザーネーム)は、メールアドレスであるものとする。また、暗証情報として用いるパスワードは任意の文字列であるものとするが、生体認証情報(指紋認証は顔認証に用いる情報)や、パターン認証の情報(画面に入力された軌跡パターンの情報)など、他の暗証情報としてもよい。
【0043】
S305では、開発者用端末100は、ログイン画面の新規登録ボタンを指示する操作(例えばクリック)されたか否かを判定する。なお、以下、表示アイテム(ボタン、アイコンなどの表示物、表示項目)に対して、操作部106に含まれるマウスでクリックする、タッチパネルへタッチする、といった方法で指示する操作を、単に「押下」と記載する。新規登録ボタンが押下された場合にはS306に進み、そうでない場合にはS307に進む。
【0044】
S306では、開発者用端末100は、開発者アカウント登録処理を行う。
【0045】
S307では、開発者用端末100は、ログイン画面のログインボタンが押下されたか否かを判定する。ログインボタンが押下された場合にはS308に進み、そうでない場合にはS304に戻る。
【0046】
S308では、開発者用端末100は、ログイン情報として、ログイン画面の開発者IDとパスワードの入力欄へ入力された情報(入力された開発者IDとパスワード)を開発環境300に送信する。送信後、開発環境300において認証処理が行われるため、その結果を待つ。
【0047】
S309では、開発者用端末100は、開発環境300からログインエラーの旨の情報を受信したか否かを判定する。ログインエラーの旨の情報を受信した場合はS304に戻って再度ログイン情報の入力を受け付け、そうでない場合にはS310へ進む。
【0048】
S310では、開発者用端末100は、開発環境300から実行環境リストを受信したか否かを判定する。開発環境300はログイン認証が成功すれば実行環境リストを開発者用端末100に送信するため、実行環境リストを受信したということは、ログイン認証に成功した(ログインできた)ということである。実行環境リストを受信した場合にはS311に進み、そうでない場合にはS309に戻る。
【0049】
S311では、開発者用端末100は、ログイン後のアプリの開発画面として、S310で受信した実行環境リストをメモリ102に記録するとともに、受信した実行環境リストに基づいて実行環境の選択肢をディスプレイ105に表示する。実行環境リストはログインした開発者がアクセス可能な実行環境を示している。なお、S311以降に開発者用端末100で表示される画面であって、構築後のアプリの画面とは異なる画面を総称して開発画面と称するものとする。
【0050】
図5(a)に、S311での実行環境の選択肢の表示例を示す。
図5(a)の表示例では、ログインした開発者がアクセス可能な実行環境として、マルチテナント実行環境410に対応する選択肢551と、シングルテナント実行環境に対応する選択肢552の2つの選択肢が表示されている。開発者ユ―ザーはこれらの選択肢のいずれかを押下することにより選択して、SAVEボタン553を押下することで選択を確定することができる。ここで選択されるのは、今回のログインにおいてこの後の作業で更新したアプリケーションをデプロイする先である。この時点で実行環境にアクセスするわけではない。また、ここで選択した実行環境は後述する操作によって変更可能である。
【0051】
S312では、開発者用端末100は、実行環境の選択が行われたか否かを判定する。実行環境の選択肢のいずれかが押下され、SAVEボタン553が押下された場合にはS313に進み、そうでない場合にはS312で実行環境の選択を待つ。
【0052】
S313では、開発者用端末100は、S312で選択された実行環境を特定する情報(実行環境IDなど)を「選択中実行環境」としてメモリ102に記録するとともに、開発環境300に送信する。開発環境300では、選択中実行環境(選択環境)を特定する情報を受信したことに応じて、アプリ情報として、ログイン開発者が所有する全てのアプリケーション(過去に生成され、ストレージ320に記録されているアプリケーション)を特定する情報(アプリIDやアプリ名など)を送信する。
【0053】
S314では、開発者用端末100は、開発環境300からアプリ情報を受信したか否かを判定する。アプリ情報を受信した場合にはS315に進み、そうでない場合にはS314でアプリ情報の受信を待つ。
【0054】
S315では、開発者用端末100は、受信したアプリ情報をメモリ102に記録するとともに、アプリ情報に基づき、ログインユーザーが所有する(開発中の)アプリケーションの一覧(アプリ一覧)をディスプレイ105に表示する。
【0055】
S316では、開発者用端末100は、アプリ一覧に表示されたアプリケーションの一覧のうち、いずれかのアプリケーションが選択されたか否かを判定する。いずれかのアプリが選択された場合にはS317に進み、そうでない場合はS320に進む。
【0056】
S317では、開発者用端末100は、アプリ一覧から選択されたアプリケーションを「選択中アプリ」として、選択中アプリを特定する情報(アプリIDやアプリ名など)をメモリ102に記録するとともに、開発環境300に送信する。開発環境300では、選択中アプリを特定する情報を受信すると、ストレージ320のうち、ログインしている開発者の領域から選択中アプリの定義情報(アプリ定義)を取得し、開発者用端末100に送信する。
【0057】
S318では、開発者用端末100は、開発環境300から選択中アプリの定義情報(UI定義情報)を受信したか否かを判定する。選択中アプリの定義情報を受信した場合には、受信した選択中アプリの定義情報をメモリ102に記録してS319に進み、そうでない場合にはS318で定義情報の受信を待つ。本実施形態では、この定義情報は、Json形式でアプリケーションに関する各種定義が記述されたJsonファイルであるものとする。以降、選択中アプリに関してディスプレイ105に表示を行う場合には、メモリ102に記録した定義情報に基づいて表示を行う。後述するUIエディタ処理などで選択中アプリについて更新する操作(例えば、UI部品の配置を変更するなど)が行われると、このメモリ102の定義情報を更新後の内容を定義するように更新する。そして保存の指示があった場合に、メモリ102に記録された最新の定義情報を開発環境300に送信し、ストレージ320のうちログイン開発者の領域に保存させる。このようにすることで、開発環境300との通信頻度の増大を抑え、通信のためにレスポンスが低下することを抑止して快適な更新作業を行うことができる。
【0058】
S319では、開発者用端末100は、ディスプレイ105にUIエディタ画面を表示するとともに、受信した定義情報に基づく表示を行う。例えば、選択中アプリがデスクトップ用であるか用であるかに応じた形状(すなわち、アプリを利用するデバイスの種別に応じた形状)のキャンバス(UI画面の編集領域)を表示する。テスクトップ用であれば16:9の矩形のキャンバスとし、モバイル用であればスマートフォンを模した縦長のアスペクト比のキャンバスとする。サブメニュー領域(後述)には選択中アプリが有する(選択中アプリに属する)UI画面の一覧を表示する(この処理は厳密には後述する
図4のS401で行われる)。また、キャンバスには、デフォルトで選択されるUI画面(イニシャルUIや最後に保存した際に編集していたUI画面)に配置されるコンポーネント(UI画面に配置されるUI部品)を表示する。なお、編集対象のUI画面をデフォルトで選択することをせず、この時点ではキャンバスには何も表示しないようにしても良い。S319の処理でログイン処理を終了し、続いて、
図4のS401へ進む。
【0059】
一方、S320では、開発者用端末100は、アプリ一覧を表示した画面に表示された、アプリケーションを新規に作成するためのアイコン(
図14(a)のアプリ作成ボタン1402)が押下され、新規アプリケーションの作成が指示されたか否かを判定する。新規アプリケーションの作成が指示されたと判定した場合にはS321に進み、そうでない場合にはS350へ進む。
【0060】
S350では、開発者用端末100は、チュートリアルボタン1401(
図14(a))が押下されたか否かを判定する。チュートリアルボタン1401が押下された場合にはS351に進み、そうでない場合にはS316に進む。
【0061】
S351では、開発者用端末100は、チュートリアルボタン処理を行う。チュートリアル処理については
図13を用いて後述する。
【0062】
S321では、開発者用端末100は、新規作成するアプリケーションを、デスクトップ用(PC用)とするかモバイル用とするかの選択画面を表示し、いずれかを選択する操作を受け付ける。デスクトップ用アプリケーションとは、デスクトップPC、ノートPCなどのアプリユーザー用端末200からアクセスされ、操作されることを想定したアプリケーションである。モバイル用アプリケーションとは、スマートフォンなどのアプリユーザー用端末201からアクセスされ、操作されることを想定したアプリケーションである。
【0063】
S322では、開発者用端末100は、新規作成するアプリケーションに関する基本となるアプリ情報(少なくともアプリ名、アプリID)の入力を受け付けるための画面を表示し、アプリ情報を設定する入力操作を受け付ける。アプリ情報の入力を受け付けると、S321で受け付けたデスクトップ用(PC用)かモバイル用かの情報と、S322で入力を受け付けたアプリ情報を開発環境300に送信する。こうして、新規作成されたアプリケーションの定義情報として、開発環境300のストレージ320に、新規のアプリケーションの定義情報が作成され、デスクトップ用(PC用)かモバイル用かの情報と、アプリ名、アプリIDが記録される。過去に作成済みのアプリケーションの定義情報にも、このようにして、デスクトップ用(PC用)かモバイル用かの情報と、アプリ名、アプリIDが記録されている。
【0064】
S323では、開発者用端末100は、新規作成されたアプリケーションの編集画面としてUIエディタ画面を表示する。この場合、キャンバスはS321で選択されたデスクトップ用であるかモバイル用であるかに応じた形状で表示される。また、キャンバスはコンポーネントが1つも配置されていない空白情報で表示される。S323の処理でログイン処理を終了し、続いて、
図4のS401へ進む。
【0065】
図3(b)に、
図3(a)の開発者用端末100側でのログイン処理と協働する開発環境300側のログイン処理を示す。
図3(b)の処理は、開発環境300のプロセッサ303が、メモリ304に記録されたプログラムを、プロセッサ303が開発環境300のうちワークメモリとなる領域に展開して実行することにより実現する。以降、単に開発環境300が実行する処理として記載したものは、開発環境300の実行エンジン302が、より詳しくはプロセッサ303が実行する処理であるものとする。
【0066】
S331では、開発環境300は、S308で開発者用端末100から送信されたログイン情報を受信したか否かを判定する。ログイン情報を受信した場合にはS332に進み、そうでない場合にはログイン情報の受信を待つ。
【0067】
S332では、開発環境300は、受信したログイン情報と、開発者情報301を比較し、ログイン認証(ユーザー認証)を行う。より具体的には、受信したログイン情報に含まれる開発者IDとパスワードの組と一致する情報が、開発者情報301(ユーザー情報)に含まれているかを判定する。含まれていれば認証は成功する。
【0068】
S333では、開発環境300は、S332の認証処理の結果、ログインOKである(認証に成功した、認証された、認証OKである)か否かを判定する。ログインOKである場合にはS335に進み、ログインOKでない場合にはS334に進み、ログインエラーである旨の情報を開発者用端末100に送信する。
【0069】
S335では、開発環境300は、開発者情報301に含まれる、ログインOKとなった開発者(ログイン開発者)の実行環境リストを開発者用端末100に送信する。開発者情報301には、各開発者について、メールアドレス(ユーザーネーム、開発者ID)とパスワードに加えて、アクセス可能な実行環境IDが記録されている。各実行環境IDはクラウドサービス(Webサービス)におけるアカウントIDであり、本実施形態では12桁のIDであるものとする。複数の実行環境にアクセス可能な開発者の場合は、12桁の実行環境IDがカンマで区切られて記録されている。S335では、ログイン開発者についての、このアクセス可能な実行環境ID(カンマで区切られた1つ以上の実行環境ID)を開発者用端末100に送信する。すなわち、S335において、開発者情報301を参照することにより、ログイン開発者がアクセス可能な実行環境が特定される。このように、各開発者のアクセス可能な実行環境(各開発者が利用可能な実行環境)は、開発環境300に記録された開発者情報301に記録されている。そして、このログイン可能な実行環境は、ログインOKとなった開発者でなければ取得できない。また、ログインOKとなった開発者自身のアクセス可能実行環境しか取得できない。このようにすることで、開発者が、自身のアクセス可能な実行環境へアクセスするための情報を、開発環境300にログインするための情報と別途に管理する必要がない。また、他のユーザーが不正に実行環境へアクセスすることも抑止できる。
【0070】
S336では、開発環境300は、S313で開発者用端末100から送信された選択中実行環境を特定する情報(環境特定情報)を受信したか否かを判定する。選択中実行環境を特定する情報を受信した場合にはS337に進み、そうでない場合には選択中実行環境を特定する情報の受信を待つ。
【0071】
S337では、開発環境300は、S336で受信した選択中実行環境を特定する情報に基づいて、選択中実行環境を、ストレージ320のログイン開発者用の領域に保存されている、設定管理用のファイルに記録する。
【0072】
S338では、開発環境300は、ストレージ320のうち、ログイン開発者の領域から、ログイン開発者が所有する(ログイン開発者が作成した)全てのアプリケーションを示すアプリ情報を取得し、開発者用端末100に送信する。ここで送信するアプリ情報は、アプリの定義情報のうち、S315で前述したアプリ一覧を表示するために必要な情報までであり、各アプリに関する詳細な定義情報(コンポーネントの配置や後述するアクションを示す情報など)は含まれない。
【0073】
S339では、開発環境300は、S322で開発者用端末100から送信された新規アプリに関する情報(デスクトップ用(PC用)かモバイル用かの情報と、アプリ名、アプリIDを含む情報)を受信したか否かを判定する。新規アプリに関する情報を受信した場合にはS340に進み、そうでない場合にはS341へ進む。
【0074】
S340では、開発環境300は、ストレージ320のうち、ログイン開発者の領域に、S339で受信した新規アプリに関する情報に基づき、新規のアプリケーションの定義情報を作成して記録する。ここで記録される定義情報には、デスクトップ用(PC用)かモバイル用かの情報と、アプリ名、アプリIDが含まれる。なお、開発環境300では、マルチテナント実行環境410において他のユーザーのアプリと区別するために、アプリIDとして、S322で開発者から入力されたIDの直前に、アプリを所有する開発者の開発者IDに一意に対応する開発者コード8桁を付して記録する。そして、ログイン処理を終了する。以降、内部処理を行う場合とアクションボードにプログラミング言語で表示する場合にはアプリIDを用いる場合にはログイン開発者の開発者コードを付したIDで処理を行う。また、UIエディタなどにアプリIDとして表示をする際には開発者コードを除く、S322で開発者から入力されたID部分だけを表示する。
【0075】
S341では、開発環境300は、S317で開発者用端末100から送信された選択中アプリを特定する情報を受信したか否かを判定する。選択中アプリを特定する情報を受信した場合にはS342に進み、そうでない場合はS339に戻る。
【0076】
S342では、開発環境300は、S341で受信した選択中アプリを特定する情報に基づき、ストレージ320のうち、ログイン開発者の領域から、選択中アプリの定義情報(アプリ定義)を取得し、開発者用端末100に送信する。ここで送信する定義情報は、選択中アプリに関する詳細な定義情報(コンポーネントの配置や後述するアクションを示す情報など)を含む。そして、ログイン処理を終了する。
【0077】
<UIエディタ処理>
図4、
図5(b)を用いて、UIエディタ処理について説明する。UIエディタ処理は、UIエディタ画面(アプリケーション開発画面)に対する開発者(ユーザー)からの操作に応じて、構築するアプリケーションの各種定義(UI部品の定義、アクション定義)を行う処理である。
【0078】
図5(b)に、ディスプレイ105におけるUIエディタ処理で表示されるレイアウト編集画面の表示例を示す。
図5(b)の画面には、ヘッダーメニュー領域500、メインメニュー領域510、サブメニュー領域520、キャンバス530(UI画面の編集受付領域)が含まれる。
【0079】
ヘッダーメニュー領域500には、選択中実行環境ボックス501、選択中アプリボックス502、選択中UI画面ボックス503、保存ボタン504、プレビューボタン505、デプロイボタン506が表示される。
【0080】
選択中実行環境ボックス501には、選択中実行環境を表す情報として、選択中実行環境IDが表示される。選択中実行環境ボックス501の右端にある矢印アイコンを押下することで、プルダウンメニューとしてS310で取得したログイン開発者がアクセス可能な実行環境の一覧が表示され、一覧から任意の実行環境を選択することで、選択中実行環境を変更することが可能である。選択中実行環境が変更されても、選択中アプリは変更されず、メインメニュー領域510、サブメニュー領域520、キャンバス530に表示される内容は変更されない。このように、同じアプリケーションに関してデプロイする先である選択中実行環境を変更することで、同じアプリケーションを任意の複数の実行環境にデプロイすることが可能である。
【0081】
選択中アプリボックス502には、選択中アプリを表す情報として、選択中アプリのアプリ名が表示される。選択中アプリボックス502の右端にある矢印アイコンを押下することで、プルダウンメニューとしてS314で取得したログイン開発者の所有するアプリ一覧が表示され、一覧から任意のアプリを選択することで、選択中アプリを変更することが可能である。選択中アプリが変更されると、サブメニュー領域520、キャンバス530に表示すべき内容が変わる。
【0082】
選択中UI画面ボックス503には、キャンバス530で編集中のUI画面を表す情報として、編集中のUI画面名が表示される。選択中UI画面ボックス503にある矢印アイコンを押下することで、プルダウンメニューとして、S318で取得した選択中アプリの定義情報に基づき、選択中アプリに属するUI画面の一覧が表示され、一覧から任意のUI画面を選択することで、キャンバス530に表示する編集対象のUI画面を変更することが可能である。
【0083】
メインメニュー領域510には、メインメニューのメニュー項目としての選択肢アイコンとして、アプリ一覧ボタン511、UI画面ボタン512、ワークフローボタン513、設定ボタン514、環境一覧ボタン515、データベースボタン516、ファイルマネージャーボタン517、ユーザー管理ボタン518、スナップショットボタン519が表示される。これらの選択肢の押下に応じた処理については
図12の画面切替処理で後述する。
【0084】
サブメニュー領域520には、メインメニューで選択された項目に応じたサブメニューが表示される。
図5(b)の例では、UI画面ボタン512の下位階層メニューとしてUIコンポーネント一覧(UI部品一覧)が表示されている例である。
【0085】
キャンバス530は、選択中アプリの選択中のUI画面(選択中UI画面ボックス503に表示されているUI画面名のUI画面)のレイアウト編集領域である。
図5(b)のキャンバス530は、デスクトップ用アプリケーションのキャンバスの表示例であり、デスクトップ用の形状で表示されている。ユーザーは、サブメニュー領域520に表示されたUI部品一覧の中から任意のUI部品(UIコンポーネント)を選び、キャンバス領域530にドラッグアンドドロップで配置することができる。キャンバス領域530に配置されたUI部品を選択してサイズや位置の調整ができる。また、キャンバス領域530に配置されたUI部品を選択して右クリックして表示される右クリックメニュー(コンテキストメニュー)に含まれるプロパティを選択することで、配色などのより詳細な設定を行える。さらに、同じくコンテキストメニューに含まれるアクションを選択することで、アクションボードが表示され、そのUI部品が操作された場合に実行すべきアクションを設定することができる。キャンバス530の空白領域にカーソルがある状態で右クリックを行うことで、キャンバスのコンテキストメニューを表示させることができ、そこに含まれるアクションを選択することにより、構築されたアプリケーションにおいてそのキャンバスのUI画面がロードされた場合に実行(そのUI画面を表示する際に実行)すべきアクションを設定することができる。
【0086】
図5(b)は、アプリ名「UI1」のアプリの、UI画面名「ui1」のキャンバス530に、UI部品として、パイチャート531(pie chart、円グラフ)、ボタン532、テキストフィールド533、534、アウトプットフィールド535、(Output Field)、タブ部品536を配置した例である。操作パス531aは、選択されているUI部品を示す選択枠かつ拡大縮小の指示を受け付ける操作パス(操作ハンドル)であり、パイチャート531が選択されていることを示している。
【0087】
図4に、UIエディタ処理のフローチャートを示す。この処理は、開発者用端末100が実行する処理であり、
図3のS319またはS323の後に続けて行われる処理である。
【0088】
S401では、開発者用端末100は、選択中アプリの定義情報に基づき、サブメニュー領域520に選択中アプリのUI画面一覧を選択肢として表示する。このUI画面一覧に表示される各画面は、選択中アプリを実行環境にデプロイして構築し、アプリユーザー用端末200、201からアクセスしてアプリを実行した場合に表示する画面として設計している画面である。このUI画面一覧では、新規UI画面を追加する操作や、UI画面の削除操作も受付可能である。
【0089】
S402では、開発者用端末100は、S401で表示されたUI画面一覧のうちいずれかのUI画面を選択する操作があったか否かを判定する。いずれかのUI画面が選択された場合はS404に進み、そうでない場合にはS403に進む。
【0090】
S403では、メインメニュー領域510に表示されたいずれかの選択肢を選択する操作があったか否かを判定する。メインメニュー領域510に表示された選択肢が選択された場合にはUIエディタ処理を終了し、
図12で後述する画面切替処理へ進む。そうでない場合にはS402に戻る。
【0091】
S404では、開発者用端末100は、メモリ102に記録した選択中アプリの定義情報に基づいて、キャンバス530にS402で選択されたUI画面を表示する。過去にUI部品が配置済みのUI画面であれば、定義情報に従って過去に配置されたUI部品がキャンバス530に表示される。すなわち、過去に途中まで作成したUI画面であれば続きから開発できる。S402で選択されたUI画面が新規に作成されたUI画面であれば、キャンバス530はUI部品が配置されていない空白の状態で表示される。S402で選択されたUI画面が、テンプレ―トとして予め用意されているUI画面(テンプレート画面)である場合には、ユーザーがそのUI画面に過去にUI部品を配置していなくても、予め定められたアクションが定義された雛形コンポーネントがキャンバス530の予め決まった位置に表示される。
【0092】
S405では、開発者用端末100は、サブメニュー領域520に、UI部品の一覧を表示する。すなわち、選択中アプリのUI画面一覧から、UI部品一覧の表示に切り替える。キャンバス530に配置可能なUI部品としては、種別としてINPUT、Button(ボタン)、Display(情報表示用部品)、Navigation、Layout、Chartが含まれ、それぞれに種別に複数のUI部品が分類されている。UI部品一覧では、まず、
図5(c)に図示するように、UI部品の種別の一覧が表示され、表示された種別のいずれかを選択する操作があったことに応じて、選択された種別に分類されるUI部品が展開表示される。前述した
図5(b)は、INPUTに対応する種別の選択肢522が選択され、INPUTに分類されたUI部品の一覧が表示された例である。INPUTに分類されたUI部品には、例えばテキストフィールド523、テキストエリア524が含まれる。サブメニュー領域520はスクロール可能であり、表示しきれない選択肢(展開している種別のUI部品の選択肢や、他の種別の選択肢)はスクロールして表示させることができる。
図5(b)のように展開している種別の選択肢522が操作されると、展開していた種別のUI部品一覧が折りたたまれ、UI部品の種別の一覧が表示される。
【0093】
S406では、開発者用端末100は、サブメニュー領域520に表示されたUI部品が選択されたか否かを判定する。より詳しくは、サブメニュー領域520に表示されたUI部品をドラッグする操作が行われたか否かを判定する。サブメニュー領域520に表示されたUI部品が選択された場合にはS407に進み、そうでない場合にはS411へ進む。
【0094】
S407では、開発者用端末100は、キャンバス530上の位置を指定する操作があったか否かを判定する。より詳しくは、ドラッグしていたUI部品をキャンバス530上にドロップする操作があったか否か判定する。キャンバス530上を指定する操作があった場合はS408へ進み、そうでない場合にはS407でキャンバス530上の位置の指定を待つ。なお、本実施形態ではドラッグアンドドロップの例を説明するが、サブメニュー領域520からUI部品を選択してキャンバス530上の指定位置に配置するための操作であれば操作方法はこれに限るものではない。
【0095】
S408では、開発者用端末100は、S407で指定されたキャンバス上の位置が、既に配置されているタブ部品(UI部品の一種)の領域に含まれるか否かを判定する。タブ部品の領域に含まれていない場合にはS409に進み、タブ部品の領域に含まれている場合にはS410へ進む。タブ部品は、例えば
図5(b)に示すタブ部品536である。タブ部品は複数のタブを有し(
図5(b)の例ではITEM1、ITEM2、ITEM3と表示された3つのタブ)、いずれかのタブが選択されたことに応じて、タブ部品で表示する表示内容を、選択されたタブに対応する要素画面に切り替える。
【0096】
図6(a)、(b)を用いて、タブ部品について説明する。
図6(a)は、
図5(b)とは異なるUI画面を表示したキャンバス530にタブ部品601を配置した場合のディスプレイ105における表示例である。タブ部品601の操作バス601aで示される範囲が、タブ部品601の占有領域である。操作バス601aを操作することで、要素画面を含むタブ部品601の全体の表示位置、全体の表示サイズを変更することができる。タブ部品601は、タブ610、タブ620、タブ630の3つのタブを持っている。各タブには、タブ部品のプロパティ設定で開発者によって設定可能なラベルがタブ名として表示されている。図示の例では、それぞれ、Tab0、Tab1、Tab2と表示されている。タブの数、順序はタブ部品のプロパティ設定から変更可能である。タブのプロパティ設定は、
図7で後述するコンテキストメニュー処理のS706において、タブのコンテキストメニューからタブのプロパティボックスを開く操作があり、それに応じて表示されるタブのプロパティボックス(設定画面)に対する設定操作によって行われる。一点破線(説明のために図示したものであって表示されるものではない)で示す要素画面領域602は、選択されたタブに応じて表示内容が切り替わる領域である。要素画面領域602に表示される各タブに対応する表示内容を、各タブに対応する要素画面と称する。各タブに対応する要素画面にはそれぞれ異なるUI部品を配置可能である。
図6(a)の例は、タブ610が選択され、タブ610に対応する要素画面が表示された例である。図示の例では、タブ610に対応する要素画面には、UI部品611とUI部品612が配置されている。
図6(b)の例は、
図6(a)の状態からタブ620がクリックされ、選択タブがタブ610からタブ620に変更された場合の表示例である。
図6(b)では、要素画面領域602には選択されているタブ620に対応する要素画面が表示されている。図示の例では、タブ620に対応する要素画面には、UI部品621が配置されている。
図6(a)、
図6(b)の例では、定義情報には少なくとも、キャンバス530で編集中のUI画面のID(UI画面の識別情報)に対応付けて、タブ部品601のUI部品ID(UI部品の識別情報)とUI画面中におけるタブ部品601の位置が記録される。また、タブ部品601のタブ610のID(要素画面の識別情報)に対応付けて、UI部品611とUI部品612のIDと、タブ610の要素画面中におけるUI部品611とUI部品612のそれぞれの位置が記録される。また、タブ部品601のタブ620のIDに対応付けて、UI部品621のIDと、タブ620の要素画面中におけるUI部品621の位置が記録される。
図4の説明に戻る。
【0097】
S409では、開発者用端末100は、サブメニュー領域520からS406で選択されたUI部品を、キャンバス530上の指定位置にデフォルトのサイズで配置し、そのことを定義する情報をメモリ102に記録した定義情報に記録する。すなわち、定義情報において、配置先のUI画面(編集中のUI画面)のIDに、S410で配置したUI部品の種別、UI部品ID、配置座標、配置サイズなどを関連付けて記録する。
【0098】
S410では、開発者用端末100は、サブメニュー領域520からS406で選択されたUI部品を、キャンバス530上の指定位置のタブ部品のうち、選択中のタブに対応する要素画面(現在表示中の要素画面)にデフォルトのサイズで配置し、そのことを定義する情報をメモリ102に記録した定義情報に記録する。すなわち、定義情報において、配置先のUI画面(編集中のUI画面)のIDに、S410で配置したUI部品の種別、UI部品IDとしてタブ部品のID、および、そのタブ部品において選択中だったタブのID、選択中だったタブに対応する要素画面中における配置座標、配置サイズなどを関連付けて記録する。このようにすることで、本実施形態ではタブ部品の各タブに対応する各要素画面に、それぞれ異なるUI部品を配置してレイアウトすることが可能である。またこのとき、UI部品の配置先の要素画面のタブを定義するために複雑な操作をする必要はなく、単に、配置したいUI部品をドラッグアンドドロップで配置する際に、配置先の要素画面を選択して表示させておけばよい。
【0099】
S411では、開発者用端末100は、キャンバス530に配置済みのUI部品がクリックなどで選択されたか否かを判定する。配置済みのUI部品がクリックされた(選択された)場合にはS412に進み、そうでない場合にはS415に進む。
【0100】
S412では、開発者用端末100は、S411でクリックされたUI部品に操作パスを表示する。操作パスの表示例が前述の操作パス531aや操作パス601aである。
【0101】
S413では、開発者用端末100は、S411においてクリックで指定された位置が、タブ部品のタブ部分の領域内であるか否かを判定する。タブ部分でない場合にはS431に進み、タブ部分である場合にはS414に進む。タブ部分は、対応する要素画面への切り替えを指示する指示領域である。
【0102】
S414では、開発者用端末100は、タブ部品の要素画面領域の表示を、S411においてクリックで指定された位置のタブに対応する要素画面に切り替える。例えば、S411でタブ部品536のうち、ITEM1、ITEM2、ITEM3と表示された3つのタブのいずれかの位置がクリックされたことに応じて、S412でタブ部品536に対して操作パスを表示するとともに、要素画面領域436aの表示内容を、クリックされたタブに対応する要素画面のものに切り替える。また、例えば
図6(a)のように表示されていた場合に、タブ620が指定されたことに応じて
図6(b)の表示に切り替える。すなわち、クリック前に表示されていた要素画面に配置されていたUI部品611、612が非表示となり、代わりに、クリックされたタブ620に対応する要素画面に配置されているUI部品621が表示される。このような制御をするのは、開発者がタブ部品の所望のタブの要素画面に他のUI部品を配置したい場合に、配置先とする所望のタブの要素画面を定義する操作を簡単にするためである。開発者は、タブ部品の所望のタブの要素画面に他のUI部品を配置したい場合、配置したいUI部品をドラッグアンドドロップで配置する前に、所望のタブを単にクリックして所望の要素画面を表示させておけばよい。
【0103】
なお、本実施形態では説明の簡略化のため、S409、S410、S413、S414の処理についてタブ部品を例にして説明したが、これに限るものではない。タブ部品以外でも、アプリケーションの構築後に、UI部品内の一部の表示内容が当該UI部品への操作に応じて切り替わる所定種別のUI部品であれば、タブ部品と同様にS409、S410、S413、S414の処理を適用可能である。
【0104】
一方、タブ部品などの所定種別のUI部品ではない他のUI部品の場合には、キャンバス530上でUI部品が選択されたことに応じて当該UI部品内の表示内容を切り替えることはしない。UI部品の選択に応じて行うのは操作バスの表示に係る処理だけであり、他のアクションは行わない。例えば、
図5(b)のキャンバス530でボタン532が選択された場合には操作パスが表示されるのみで、ボタン532のアクション(構築されたアプリでボタン532が押下された場合に実行される処理)は実行しない。また、キャンバス530でテキストフィールド533が選択された場合には操作パスが表示されるのみで、テキストフィールド533内に文字入力カーソルを表示するなどの処理は行われない。
【0105】
図6(c)、
図6(d)、
図6(e)を用いて、タブ部品と同様にS409、S410、S413、S414の処理を適用可能な種別のUI部品の例としてAppBarの例を説明する。
図6(c)は、キャンバス530に、それぞれUI部品であるAppBar650、TextField661、Button662を配置した場合の例である。AppBar650は1つのUI部品であり、AppBar650の中に要素アイコン651と要素アイコン652が含まれる。要素アイコン651は、構築されたアプリケーションにおいては、ドロワーメニューを表示させるための指示を受け付ける表示アイテムである。要素アイコン652は、構築されたアプリケーションにおいては、ポップアップメニューを表示させるための指示を受け付ける表示アイテムである。キャンバス530において、配置済みのAppBar650のうち、要素アイコン651と要素アイコン652の位置がクリックされた場合にも、タブ部品のタブ部分と同様に制御する。より詳しくは以下のように制御する。
【0106】
配置済みのAppBar650のうち、要素アイコン651の位置がクリックされた場合(S411でYes)、AppBar650に対する操作パスを表示する(S412)とともに、S413でYesと判定され、要素画面としてのドロワーメニューを表示する(S414)。これによって、
図6(c)の表示状態から
図6(d)の表示状態へ遷移する。
図6(d)において、AppBar650に対する操作パス650aが表示され、かつ、要素アイコン651に対応する要素画面であるドロワーメニュー651aが表示されている。ドロワーメニュー651aは、画面左端から右側に引き出すようにして表示される領域であり、1つ以上のメニュー項目が表示される。ドロワーメニュー651aを表示させた状態で、サブメニュー領域520から他のUI部品をドラッグしてドロワーメニュー651aにドロップすることで、タブ部品を例にしてS408、S410で説明した処理と同様、ドロワーメニュー651aに対して他のUI部品を配置可能である。
【0107】
配置済みのAppBar650のうち、要素アイコン652の位置がクリックされた場合(S411でYes)、AppBar650に対する操作パスを表示する(S412)とともに、S413でYesと判定され、要素画面としてのポップアップメニューを表示する(S414)。これによって、
図6(c)の表示状態から
図6(e)の表示状態へ遷移する。
図6(e)において、AppBar650に対する操作パス650aが表示され、かつ、要素アイコン652に対応する要素画面であるポップアップメニュー652aが表示されている。ポップアップメニュー652aは、要素アイコン652の付近に表示される領域であり、1つ以上のメニュー項目(選択肢)が表示される。ポップアップメニュー652aを表示させた状態で、サブメニュー領域520から他のUI部品をドラッグしてポップアップメニュー652aにドロップすることで、タブ部品を例にしてS408、S410で説明した処理と同様、ポップアップメニュー652aに対して他のUI部品を配置可能である。
図4の説明に戻る。
【0108】
S415では、開発者用端末100は、キャンバス530上で配置済みのUI部品をドラッグする操作があったか否かを判定する。配置済みのUI部品をドラッグする操作があった場合にはS416に進み、そうでない場合にはS417へ進む。S416では、開発者用端末100は、ドラッグ操作に応じてドラッグされたUI部品(選択部品)の配置される位置を変更する。具体的には、ドロップされた位置に配置する。配置を変更すると、メモリ102に記録している定義情報も変更後の位置を表すように更新する。
【0109】
S417では、開発者用端末100は、キャンバス530上で配置済みのUI部品の操作パスに対する操作があったか否かを判定する。操作パスへの操作があった場合にはS418に進み、そうでない場合にはS419へ進む。S418では、開発者用端末100は、操作パスへの操作に応じて操作パスが付されたUI部品(選択部品)のサイズを変更する。サイズを変更すると、メモリ102に記録している定義情報も変更後のサイズを表すように更新する。
【0110】
S419では、開発者用端末100は、キャンバス530のいずれかの領域でコンテキストメニューを表示させる指示操作(本実施形態ではマウスの右クリック)があったか否かを判定する。右クリックがあった場合にはS420に進み、そうでない場合にはS421に進む。S420では、右クリックがあった際のマウスカーソルの位置に応じてコンテキストメニュー(右クリックメニュー)を表示し、コンテキストメニューに対する操作に応じた処理を行うコンテキストメニュー処理を行う。例えば、
図5(b)のボタン532上にマウスカーソルがある状態で右クリックが行われた場合には、
図5(d)に示すようなボタン532(指定UI部品)に関するコンテキストメニュー540を表示する。コンテキストメニュー540には、選択肢となるメニュー項目としてプロパティ541、アクション542、消去543が表示される。プロパティ541が選択されると、ボタン532に関するプロパティボックス(詳細設定ダイアログ)が表示され、ボタン532に表示するボタン名(ラベル)、ボタン532の色、数値指定でのサイズ、等の詳細な設定を行える。アクション542が選択されると、ボタン532に関するアクションボードが表示され、アクションボードに対してプログラミング言語であるJavaScriptでのアクションの入力が行える。ここで入力されるアクションは、構築されたアプリケーションにおいてボタン532(指定UI部品)が押下された場合に実行すべき処理である。消去543が選択されると、キャンバス530からボタン532を消去(削除)する。コンテキストメニュー処理の詳細については
図7を用いて後述する。
【0111】
S421では、開発者用端末100は、保存ボタン504が押下されたか否かを判定する。保存ボタン504が押下された場合にはS422に進み、そうでない場合にはS423へ進む。S422では、開発者用端末100は、メモリ102に記録している編集中のアプリケーションの定義情報を開発環境300に送信する。開発環境300は、定義情報を受信すると保存処理を行う。
【0112】
S423では、開発者用端末100は、プレビューボタン505が押下されたか否かを判定する。プレビューボタン505が押下されたと判定した場合にはS424へ進み、そうでない場合にはS425へ進む。S424では、開発者用端末100は、プレビュー処理を行う。プレビュー処理では、キャンバス530を非表示とし、メモリ102に記録している定義情報または開発環境300に記録されている定義情報に基づいて、キャンバス530で編集しているUI画面について、構築されたアプリケーションでそのUI画面を見た場合と同じ見た目となるようなプレビューを表示する。プレビューでは、UI部品を操作するための操作パスは表示されない。また、UIエディタ画面では実行されない(キャンバス530への操作では実行されない)一部の動作について、プレビューでは実行される。例えば、画面遷移用のUI部品やリンク部分を操作した場合に、画面遷移やリンク先への遷移が実行される。また、項目に対する選択枠の移動をキーボードのタブキーの操作によって行うといった動作も実行される。なお、アクションボードに開発者が入力したアクションやデータベースの参照といった動作は行われない。その分、プレビュー処理は実際にデプロイして確認する場合よりも高速に表示することができる。
【0113】
S425では、開発者用端末100は、デプロイボタン506が押下されたか否かを判定する。デプロイボタン506が押下された場合にはS426へ進み、そうでない場合にはS427へ進む。S426では、開発者用端末100は、デプロイ処理を実行指示するデプロイ要求を開発環境300に送信する。なおデプロイボタン506が押下されてデプロイ処理を行う時には開発者はデプロイ先となる実行環境を選択する操作はする必要がなく、予め選択してあって、選択中実行環境ボックス501に表示されている選択中実行環境へデプロイが行われる。開発者は、特定の1つの実行環境にデプロイすべき内容をまとめて更新するように作業する場合が多い。そのため、本システムでは、更新すべきアプリケーションの選択より前にデプロイ先となる実行環境を選択させ(
図3のS311)、アプリケーションをデプロイする際に都度実行環境を選択させることはない。従って、誤って意図しない実行環境にデプロイしてしまうという操作ミスを抑止し、また、作業を効率かすることができる。また、開発環境300にログインする際に認証処理をするための操作を行ったものの、デプロイする実行環境に対して別途、アカウント認証処理するための操作をする必要は無い。従って作業手数の増大を防ぎ効率的に作業することが可能である。すなわち、開発者用端末100は、デプロイ先の実行環境に関する認証情報を開発者ユーザーから取得することはない。
【0114】
S427では、開発者用端末100は、選択中実行環境を変更する操作があったか否かを判定する。具体的には、選択中実行環境ボックス501に対して、選択中実行環境を変更する操作があったか否かを判定する。選択中実行環境を変更する操作があった場合にはS428へ進み、そうでない場合にはS429へ進む。S428では、開発者用端末100は、選択された実行環境を特定する情報(実行環境IDなど)を「選択中実行環境」としてメモリ102に記録するとともに、開発環境300に送信する。また、選択中実行環境ボックス501の表示内容を、変更後の選択中実行環境を表すように更新する。開発環境300では、選択中実行環境を特定する情報を受信すると、それに基づき、選択中実行環境を、ストレージ320のログイン開発者用の領域に保存されている、設定管理用のファイルに記録する。
【0115】
S429では、開発者用端末100は、編集対象のアプリケーションを変更する操作があったか否かを判定する。具体的には、選択中アプリボックス502に対して選択中アプリを変更する操作があったか否かを判定する。選択中アプリを変更する操作があった場合には
図3のS317に進み、変更後の選択中アプリに基づいてS317以降の処理を実行する。すなわち、サブメニュー領域520、キャンバス530の表示内容が更新される。選択中アプリを変更する操作がなかった場合には処理はS430へ進む。
【0116】
S430では、開発者用端末100は、編集対象のUI画面を変更する操作があったか否かを判定する。具体的には、選択中UI画面ボックス503に対して、選択中UI画面を変更する操作があったか否かを判定する。選択中UI画面を変更する操作があった場合にはS404に進み、変更後の選択中UI画面に基づいて処理を行う。すなわち、キャンバス530の表示内容は変更後の選択中UI画面の内容に更新される(切り替わる)。選択中UI画面を変更する操作がなかった場合には処理はS431へ進む。
【0117】
S431では、開発者用端末100は、メインメニュー領域510に表示されたいずれかの選択肢を選択する操作があったか否かを判定する。メインメニュー領域510に表示された選択肢が選択された場合にはUIエディタ処理を終了し、
図12で後述する画面切替処理へ進む。そうでない場合にはS406に戻る。
【0118】
<コンテキストメニュー処理>
図7に、コンテキストメニュー処理のフローチャートを示す。この処理は、
図5のS420の詳細フローチャートである。
【0119】
S701では、開発者用端末100は、表示すべきコンテキストメニューが、ボタン(Button)の種別のUI部品に関するものであるか否かを判定する。より詳しくは、S419で右クリックを受け付けた際にマウスで指定していたUI部品(指定UI部品)の種別がボタンであるか否かを判定する。ボタンである場合にはS710に進み、そうでない場合にはS702に進む。
【0120】
S702では、開発者用端末100は、表示すべきコンテキストメニューが、キャンバスに関するものであるか否かを判定する。より詳しくは、S419で右クリックを受け付けた際にマウスで指定していた位置が、キャンバス530のうちUI部品が配置されていない空白領域であったか否かを判定する。空白領域であった場合(表示すべきコンテキストメニューが、キャンバスに関するものである場合)はS703に進み、そうでない場合にはS704に進む。
【0121】
S703では、開発者用端末100は、キャンバスのコンテキストメニュー処理を行う。
【0122】
S704では、開発者用端末100は、表示すべきコンテキストメニューが、データグリッド(表)の種別のUI部品に関するものであるか否かを判定する。より詳しくは、S419で右クリックを受け付けた際にマウスで指定していたUI部品(指定UI部品)の種別がデータグリッドであるか否かを判定する。データグリッドである場合にはS705に進み、そうでない場合にはS706に進む。
【0123】
S705では、開発者用端末100は、データグリッドのコンテキストメニュー処理を行う。
【0124】
S706では、開発者用端末100は、その他の処理として、指定された位置に対応する指定対象に関するコンテキストメニューを表示し、操作に応じた処理を行う。詳細は省略する。
【0125】
S710では、開発者用端末100は、編集対象のUI画面(選択中UI画面)がテンプレート画面であるか否かを判定する。テンプレート画面である場合にはS721に進み、そうでない場合にはS711に進む。
【0126】
S711では、開発者用端末100は、指定UI部品に関するコンテキストメニューとして、
図5(d)に示したボタン用のコンテキストメニューを指定位置(マウスカーソル位置)の近傍に重畳表示する。
【0127】
S712では、開発者用端末100は、コンテキストメニューに含まれる選択肢のうち、プロパティ(
図5(d)のプロパティ541)が選択されたか否かを判定する。プロパティが選択された場合にはS713に進み、そうでない場合にはS714へ進む。
【0128】
S713では、開発者用端末100は、指定UI部品に関するプロパティボックス(詳細設定ダイアログ)として、ボタン用のプロパティボックスをキャンバス530に重畳して表示する。そして、プロパティボックスに対する各種設定操作を受け付ける。ここで、例えば、指定UI部品であるボタンに表示するボタン名(ラベル)、ボタンの色、数値指定でのサイズ、等の詳細な設定を行える。設定を行って反映操作を行うと、キャンバス530において、設定を反映した表示形態で指定UI部品が表示される。
【0129】
S714では、開発者用端末100は、コンテキストメニューに含まれる選択肢のうち、アクション(
図5(d)のプロパティ542)が選択されたか否かを判定する。アクションが選択された場合にはS715に進み、そうでない場合にはS716へ進む。
【0130】
S715では、開発者用端末100は、指定UI部品であるボタンに関するアクションボード処理を行う。アクションボード処理については
図8を用いて後述する。
【0131】
S716では、開発者用端末100は、コンテキストメニューに含まれる選択肢のうち、消去(
図5(d)の消去543)が選択されたか否かを判定する。消去が選択された場合にはS717に進み、そうでない場合にはS718へ進む。
【0132】
S717では、開発者用端末100は、指定UI部品を消去し、メモリ102に記録した定義情報のうち、指定UI部品に関する情報(位置やサイズなどの定義、プロパティやアクションなど)を消去する。これによって、キャンバス530において指定UI部品は消去(削除)されて非表示となる。
【0133】
S718では、開発者用端末100は、コンテキストメニューに含まれる選択肢のうち、他の選択肢が選択されたか否かを判定する。他の選択肢が選択された場合にはS719に進み、選択された選択肢に応じた処理を行う。そうでない場合にはS720へ進む。
【0134】
S720では、開発者用端末100は、コンテキストメニューを閉じる操作(例えば、コンテキストメニューが表示された領域外をクリックする操作)があったか否かを判定する。コンテキストメニューを閉じる操作があった場合には、コンテキストメニューを非表示とし、
図7の処理を終了する。閉じる操作がない場合にはS712に戻る。
【0135】
一方、S721では、開発者用端末100は、指定UI部品に関するコンテキストメニューとして、テンプレート画面用で、かつ、ボタン用のコンテキストメニューを指定位置(マウスカーソル位置)の近傍に重畳表示する。テンプレート画面用のコンテキストメニューには、通常のUI画面用のコンテキストメニュー(
図5(d)に示したコンテキストメニュー540)と異なり、選択肢としてアクション、消去は表示されず、プロパティだけが表示される。すなわち、UI画面のうち、テンプレートの画面に配置されたUI部品に関しては、当該UI部品が操作された場合のアクションを開発者が設定できないようにしている。
【0136】
S722では、開発者用端末100は、コンテキストメニューに含まれる選択肢のうち、プロパティが選択されたか否かを判定する。プロパティが選択された場合にはS723に進み、そうでない場合にはS724へ進む。S723の処理はS713と同様である。
【0137】
S724では、開発者用端末100は、コンテキストメニューを閉じる操作(例えば、コンテキストメニューが表示された領域外をクリックする操作)があったか否かを判定する。コンテキストメニューを閉じる操作があった場合には、コンテキストメニューを非表示とし、
図7の処理を終了する。閉じる操作がない場合にはS722に戻る。
【0138】
<アクションボード処理>
アクションボードに関する処理について説明する。キャンバスに配置しているUI部品を指定してコンテキストメニューからアクションを選択すると、指定されたUI部品に関するアクションを設定するためのアクションボードを表示する。例えば、
図9(a)に示すようなUI画面を編集していた場合を考える。
図9(a)は、ディスプレイ105におけるUIエディタ画面の一部を示す図である。
図9(a)では、サブメニュー領域520にUI部品一覧が表示され、キャンバス900に編集対象のUI画面が表示されている。キャンバス900には、ボタンであるUI部品901と、その他のUI部品が配置されている。UI部品901が指定され、コンテキストメニューよりアクションの選択肢が選択されたことに応じて、
図9(b)に示すようなアクションボードが表示される。
【0139】
図9(b)は、UI部品901に関するアクションボードの表示例である。アクションボード910は、キャンバス900が表示されていた領域に、キャンバスに代えて表示される。テンプレート画面に予め配置される雛形部品(雛形コンポーネント)でなければ、開発者が過去に指定UI部品に対してアクションを設定していなければ、アクションボート910は
図9(b)のように空白で表示される。なお、アクションボード910に「1」と表示されているのは行数を示すガイド表示であって、アクションの内容ではない。開発者はこのアクションボード910に、操作部106に含まれるキーボードを操作して、プログラム言語であるJavaScriptで任意の文字列を入力することにより、任意のアクションを設定することができる。アクションボードで設定された内容を実行するトリガーは予め定められており、指定UI部品が操作されたことである。従って開発者は、アクションを実行するトリガーが何かというのは設定する必要がない(JavaScriptで記述する必要はない)。例えば、指定UI部品がボタンである場合は、構築後のアプリにおいてそのボタンが押下されたことがトリガーであり、トリガーの発生に応じて、そのボタンのアクションボードに設定したアクションが実行される。
【0140】
また、アクションボード910とともに、サブメニュー領域には、UIエディタ画面で表示されていた
図9(a)のようなUI部品一覧、あるいはUI画面一覧に代えて、関数(Function)一覧920が表示される。関数一覧920には、アクションボード910の表示を指示する選択肢922と、関数のそれぞれを表示させる指示をする関数の選択肢とが表示される。なお、予め用意された関数ではなく、開発者(ユーザー)が後述する関数追加ボタン921を押下して作成(追加)した関数を創作関数(作成関数、追加関数、自作関数)と称するものとする。自動的に作成された関数や予め用意された関数が無く、開発者が過去に指定UI部品に対して創作関数を作成していなければ、関数一覧920には、
図9(b)に示すように、関数の選択肢は表示されず、選択肢922と関数追加ボタン921だけが表示される。
【0141】
関数追加ボタン921が押下されると、創作関数を追加するためのダイアログボックス(追加ダイアログ930と称する)を表示する。
図9(c)に追加ダイアログ930の表示例を示す。追加ダイアログ930には、関数の種別(Function Type)の選択を受け付ける種別選択欄931と、関数の名前(Function Name)の入力を受け付ける関数名入力欄932と、SAVEボタン933が表示される。追加ダイアログに対する入力が行われ、SAVEボタン933が押下されると、種別選択欄931で選択された種別に応じた関数の設定画面が表示されるとともに、関数一覧920に関数名入力欄932に入力された関数名が追加で表示される。
【0142】
図9(d)は、種別選択欄931でRESTが選択された場合に表示されるREST関数設定画面の表示例である。アクションボード910に代えて、REST(REpresentational State Transfer)を用いた関数(REST関数)を作成するために必要な各種設定を受け付けるためのREST関数設定画面940が表示される。また、関数一覧920には、関数の選択肢として、関数名入力欄932に入力された関数名「rest01」の関数923が表示される。なお、「rest01」の前に表示されているアイコンは、関数923の種別がREST関数であることを示している。関数の設定画面で全ての必須設定項目が設定されていない場合(設定すべき情報が不足している場合)には、関数が未完成であることを示す未完マーク929が表示され、対応する関数923が未完成の状態であることが識別可能に表示される。
【0143】
図9(d)のREST関数設定画面940には、設定欄941~944が表示される。設定欄941は、関数名の設定画面であり、初期状態では関数名入力欄932に入力された関数名が表示されるが、開発者からの入力操作に応じて変更可能である。設定欄942はarguments(引数)を設定するための変数名を設定する設定欄である。本実施形態ではparamがデフォルトで設定されており、変更できないものとする。変更できないことを示すためにグレーアウトして表示される。設定欄943は、REST関数のタイプを設定する設定欄である。この領域の右端の三角アイコンを操作することでプルダウンメニューに選択肢としてGET、POST、PUT、DELETEが表示され、いずれかの選択肢を選択して設定することができる。ここで設定される種別は、この関数が行うリクエストの種別である。設定欄944はこの関数が行うリクエストを送信する先となるURLの設定欄である。このように、REST関数設定画面940でREST関数を作成する場合には、開発者はプログラム言語でソースコードの文字列を記述する必要はない。
【0144】
図10(a)~(d)に、更に創作関数の設定画面とアクションボードの表示例を示す。
図10において、
図9と同じものについては
図10と同じ符号を付し、説明を省略する。
【0145】
図10(a)は、種別選択欄931でSQLが選択された場合に表示されるSQL関数設定画面の表示例である。アクションボード910に代えて、SQL(Structured Query Language)を用いた関数(SQL関数)を作成するために必要な各種設定を受け付けるためのSQL関数設定画面950が表示される。また、関数一覧920には、関数の選択肢として、関数名入力欄932に入力された関数名「sql01」の関数924が未完マーク929とともに表示される。なお、「sql01」の前に表示されているアイコンは、関数924の種別がSQL関数であることを示している。設定欄951は、関数名の設定画面であり、初期状態では関数名入力欄932に入力された関数名が表示されるが、開発者からの入力操作に応じて変更可能である。設定欄952はarguments(引数)を設定するための変数名を設定する設定欄である。本実施形態ではparamがデフォルトで設定されており、変更できないものとする。変更できないことを示すためにグレーアウトして表示される。設定欄953は、コンピュータ言語の一種であるSQL(データベース言語であり、プログラミング言語ではない)で、データベースへ指示を出す文字列(SQL文、SQLステートメント)を入力するための入力欄である。開発者は、設定欄953に対して、操作部106に含まれるキーボードなどから、任意のSQL STATEMENTを入力することができる。このように、SQL関数設定画面950でSQL関数を作成する場合には、開発者はプログラム言語でソースコードの文字列を記述する必要はない。
【0146】
図10(b)は、開発者が創作関数である関数923~925を作成した後に、アクションボード910に、開発者がある程度JavaScriptでコード(文字列)を入力(記述)した後に、「sq」と入力した段階の表示例である。本実施形態では、開発者ユーザーが文字列を入力した際に、入力された文字列が作成済みの創作関数の関数名(識別情報)と前方一致している場合には、コードアシスト欄911に、前方一致した関数名を入力候補の選択肢として表示する。図示の例では、入力された「sq」が、作成済みの創作関数である関数924の関数名「sql01」と前方一致するため、選択肢として「sql01」が表示される。ユーザーが、コードアシスト欄911に表示された「sql01」を選択する操作を行うと、「l01」を入力する操作を行わなくとも、
図10(c)に示すように、アクションボード910に「sql01」が入力される。このコードアシスト機能により、開発者(ユーザー)が創作関数の関数名の文字の全てをキーボードで打たなくとも創作関数の関数名(識別情報)を入力することができ、操作手数の削減に寄与する。また、作成済みの創作関数の関数名に前方一致していればコードアシスト欄911にフルネームが表示され、一致していなければ(すなわち、その文字列で始まる関数が存在しなければ)コードアシスト欄911は表示されない。従って開発者は、自身が作成済みの創作関数の関数名として誤っていないことを確認して入力することができ、関数名の入力ミスを防止することができる。なお、前方一致する創作関数が複数ある場合には、コードアシスト欄911には、複数の選択肢が表示される。また、コードアシスト欄911に表示される創作関数の関数名は、アクションボード910の対象となっている指定UI部品(図示の例ではUI部品901)について作成された関数であって、他のUI部品について作成された創作関数については表示されない。従って、誤って他のUI部品について作成した創作関数の関数名であって、指定UI部品の創作関数としては存在しない関数名をアクションボード910に記述してしまうミスも防止することができる。
【0147】
また、
図10(c)に示す通り、アクションボード910とともに、関数一覧920には、開発者が作成した創作関数の関数923~925のそれぞれについて、関数の種別(文字列の前のアイコン)と、関数の名称が表示される。従って開発者ユーザーは、アクションボード910にアクションのコード(JavaScriptでの文字列)を入力(記述)しながら、どうような種別のどのような名称の創作関数を作成済みであるかを確認することができる。そのため、アクションボード910に記述できる有効な創作関数の確認や管理の手間(例えば、手元にメモしておく、別の画面を開いて確認する、といった手間)を削減することができる。また、関数名の入力ミスの防止にも寄与する。関数一覧920に表示される関数は、アクションボード910の対象となっている指定UI部品(図示の例ではUI部品901)について作成された関数であって、他のUI部品について作成された創作関数については表示されない。従って、誤って他のUI部品について作成した創作関数の関数名であって、指定UI部品の創作関数としては存在しない関数名をアクションボード910に記述してしまうミスも防止することができる。また、創作関数は、指定UI部品のアクションの定義の際にのみ有効であり、他のUI部品のアクションの定義には影響を及ぼさない。従って、指定UI部品について作成する創作関数の関数名が、他のUI部品について作成された創作関数と同じ関数名となった場合、アクションボード910にその関数名が記述されたとしても指定UI部品について設定された関数設定のみが反映され、他のUI部品について設定された関数設定は反映されない。従って、他のUI部品について作成済みの創作関数の関数名と同じ関数名を用いたとしてもエラーとなることはない。そのため、ユーザーは、他のUI部品について作成済みの創作関数との関数名の重複を気にすることなく創作関数の関数名を決め、アクションボード910に入力することができる。すなわち、アプリケーションの開発全体において多数の創作関数を作成することになるが、それらは指定UI部品に関連付けて自動的に管理・整理され、コードアシスト欄911や関数一覧920に表示されるため、開発者による多数の創作関数の管理が非常に容易になる。従って関数名の確認に係る手間・時間を削減することができる。また、関数名の入力ミスも抑制できる。そのため、関数名の入力ミスを犯した場合のデバック作業(バグ取りの作業)も抑制することができる。以て、ソフトウェア開発(アプリケーション開発)に掛かる負荷・工数を削減し、より効率的なソフトウェア開発(アプリケーション開発)を行うことができる。
【0148】
図10(d)は、アクションボード910にアクションのコードをプログラミング言語で入力し終えた場合の表示例である。図示の例では、3行目の点線960で示した部分に、創作関数である「rest01」(関数一覧920の関数923)を用いている。
図10(d)のアクションボード910に図示したコードの文字列では、創作関数であるrest01の詳細は定義されていない。また、開発者がrest01の設定をREST関数設定画面940で行った際にも、プログラミング言語でのrest01の詳細の定義は行っていない。この状態のアクションの定義を含む定義情報を開発環境300にアップロードして保存した場合、開発環境300が、保存処理において、実行環境用プログラムとして、アップロードされた定義情報から、関数の設定内容とアクションボード910に記述された文字列に基づき、プログラミング言語での関数の定義を含むプログラミング言語でのソースコードを作成する。このように、開発環境300は、プログラミング言語で記述された創作関数の識別情報(関数名)が含まれる文字列を取得すると、関数設定画面で設定された情報に基づいて、創作関数の機能を含む文字列(アクションボードに記載されたアクション)で示される機能(アクション)を実行可能とする制御を行う。
【0149】
図11に、
図10(d)のアクションボード910に記載された文字列と、REST関数設定画面940で設定されたrest01の設定内容に基づいて、開発環境300が生成するプログラミング言語でのソースコードの例を示す。なお、図示の例において、左端に記載した1~75の数字は、行数を示すために図示したものであって、ソースコードの一部ではない。
図11の例は、プログラミング言語でのrest01の詳細の定義を含む75行のソースコードである。しかし開発者自身は75行もの入力をする必要はない。REST関数設定画面940での設定を行い、
図10(d)のアクションボード910に図示した分量(7行)の文字列を記述すれば、
図11に示すソースコードの内容を定義できる。すなわち、ローコードで効率的な開発を行うことができる。
【0150】
図8に、アクションボード処理のフローチャートを示す。この処理は、
図7のS715で前述したアクションボード処理の詳細フローチャートであり、
図9(b)~(d)、
図10(a)~(d)の表示例を用いて説明した動作となるように制御する処理である。
【0151】
S801では、開発者用端末100は、ディスプレイ105にアクションボードを表示する。指定UI部品に対してアクションが定義されていなければ、
図9(b)で説明したような空白のアクションボート910を含む画面を表示する。指定UI部品に対して既にアクションが定義されていれば、
図10(d)で説明したような、アクションの文字列が入力されたアクションボード910を含む画面を表示する。
【0152】
S802では、開発者用端末100は、アクションボード910に対してアクションを記述する操作(記述操作)があったか否かを判定する。アクションを記述する操作とは、例えば、アクションボード910を選択した状態で操作部106に含まれるキーボードに対する操作や、タッチパネルに表示されるソフトキーボードをタッチする操作によって行われるテキスト入力操作である。アクションを記述する操作があった場合にはS803に進み、そうでない場合にはS810に進む。
【0153】
S803では、開発者用端末100は、アクションを記述する操作によるアクションの入力操作を受け付け、アクションボード910に、入力された文字を表示する。
【0154】
S804では、開発者用端末100は、S803で入力された文字と、その前までに入力された文字とによる文字列が、創作関数の関数名に前方一致する(すなわち、一部一致する)か否かを判定する。前方一致する場合にはS805に進み、そうでない場合にはS808に進む。
【0155】
S805では、開発者用端末100は、S804で一致すると判定された創作関数の関数名をコードアシスト欄に選択肢として表示する。これによって、
図10(b)で説明したようにコードアシスト欄911が表示される。なお、コードアシスト欄911には、創作関数だけでなく、プログラミング言語で一般的に利用可能な関数名などについても、入力された文字列に前方一致するものを表示しても良い。
【0156】
S806では、開発者用端末100は、コードアシスト欄に表示された選択肢のいずれかが選択されたか否かを判定する。選択肢のいずれかが選択された場合にはS807に進み、選択された選択肢の関数名をコードアシスト欄911に表示する。例えば、
図10(b)の状態からコードアシスト欄911の選択肢が選択されたことに応じて、アクションボード910の5行目に示すように、「sql01」と入力して表示する。選択肢のいずれも選択されなかった場合には処理はS808に進む。
【0157】
S808では、開発者用端末100は、アクションを記述する操作が継続して行われたか否かを判定する。アクションを記述する操作が継続して行われた場合にはS803に進み、そうでない場合にはS802に進む。
【0158】
S810では、開発者用端末100は、関数を追加する指示をする操作が行われたか否かを判定する。具体的には、関数追加ボタン921が押下されたか否かを判定する。関数追加ボタン921が押下された場合にはS811に進み、そうでない場合にはS820に進む。
【0159】
S811では。開発者用端末100は、創作関数を追加するための追加ダイアログ930を表示し、追加ダイアログ930に対する入力を受け付ける。追加ダイアログで入力を受け付ける内容は
図9(c)を用いて前述したとおりである。追加ダイアログへの入力が行われ、SAVEボタン933が押下されるとS812に進む。
【0160】
S812では、開発者用端末100は、サブメニュー領域の関数一覧920に、追加ダイアログの関数名入力欄932に入力された関数名を追加で、未完マーク929を付した状態で表示する。
【0161】
S813では、開発者用端末100は、追加ダイアログの種別選択欄931で選択された種別がスクリプトであるか否かを判定する。スクリプトである場合にはS814に進み、そうでない場合にはS815に進む。S814では、開発者用端末100は、スクリプト関数の設定画面(不図示)を表示し、開発者ユーザーからの設定操作を受け付ける。
【0162】
S815では、開発者用端末100は、追加ダイアログの種別選択欄931で選択された種別がSQLであるか否かを判定する。SQLである場合にはS816に進み、そうでない場合(すなわち、追加ダイアログの種別選択欄931で選択された種別がRESTである場合)にはS817に進む。S816では、開発者用端末100は、SQL関数設定画面を表示し、開発者ユーザーからの設定操作を受け付ける。SQL関数設定画面で受け付ける設定内容は
図10(a)を用いて前述したとおりである。
【0163】
S817では、開発者用端末100は、REST関数設定画面を表示し、開発者ユーザーからの設定操作を受け付ける。REST関数設定画面で受け付ける設定内容は
図9(d)を用いて前述したとおりである。
【0164】
S818では。開発者用端末100は、それぞれの種別の関数設定画面において、必須項目として予め定められた設定項目への入力が完了したか(設定が完了したか)を判定する。必須項目への入力が完了した場合にはS819に進み、そうでない場合にはS802に進む。
【0165】
S819では、開発者用端末100は、設定中の創作関数に関して関数一覧920に表示された関数名に対応付けて表示していた未完マークを非表示とする。これによってユーザー(開発者)は、設定中の創作関数が、アクションボード910で使える有効な設定状態であることを認識することができる。
【0166】
S820では、開発者用端末100は、関数一覧920に表示されたいずれかの創作関数が選択(押下)されたか否かを判定する。関数一覧920で創作関数が選択された場合には、S813に進み、S814、S816、S817のいずれかで、選択された創作関数の種別に応じた設定画面を、既に設定済みの内容を反映して表示する。ユーザー(開発者)は、設定画面に対して設定内容の変更や追加の設定を行うことができる(すなわち、創作関数の編集を行うことができる)。
【0167】
S821では、開発者用端末100は、保存の指示操作(例えば保存ボタン915の押下)があったか否かを判定する。保存の指示操作があった場合にはS822に進み、そうでない場合にはS823へ進む。
【0168】
S822では、開発者用端末100は、現在までにアクションボード処理で行われた内容をメモリ102に保持した定義情報に記録するとともに、開発環境300に送信する。
【0169】
S823では、開発者用端末100は、関数一覧920に表示された、アクションボード910の表示を指示する選択肢922が押下されたか否かを判定する。選択肢922が押下された場合はS801に進み、指定UI部品のアクションボードを表示する。これによって、関数の設定画面を表示していた場合には、アクションボードの表示に切り替わる。選択肢922が押下されていない場合にはS824へ進む。
【0170】
S824では、開発者用端末100は、アクションボードを閉じる操作(アクションボード処理を終了する操作)があったか否かを判定する。アクションボードを閉じる操作が無い場合にはS802に進んで処理を繰り返す。アクションボードを閉じる操作があった場合にはアクションボードを非表示とし、選択中UI画面のキャンバスの表示に切り替え、UIエディタ処理へ戻る。
【0171】
<画面切替処理>
図12に、画面切替処理のフローチャートを示す。この処理は、
図5(b)の表示例で前述したメインメニュー領域510に表示された選択肢の選択に応じた処理である。
【0172】
S1201では、開発者用端末100は、アプリ一覧ボタン511が押下されたか否かを判定する。アプリ一覧ボタン511が押下された場合は
図3のS315に進み、そうでない場合はS1202に進む。
【0173】
S1202では、開発者用端末100は、UI画面ボタン512が押下されたか否かを判定する。UI画面ボタン512が押下された場合はS1203に進み、そうでない場合はS1204へ進む。S1203では、
図4のUIエディタ処理を行う。
【0174】
S1204では、開発者用端末100は、ワークフローボタン513が押下されたか否かを判定する。ワークフローボタン513が押下されたと判定した場合はS1205に進み、そうでない場合はS1206に進む。
【0175】
S1205では、開発者用端末100は、ワークフロー作成処理を行う。
【0176】
S1206では、開発者用端末100は、設定ボタン514が押下されたか否かを判定する。設定ボタン514が押下された場合にはS1207に進み、そうでない場合はS1209へ進む。
【0177】
S1207では、開発者用端末100は、アプリ設定画面を表示する。アプリ設定画面は、選択中アプリに関する設定操作を受け付ける画面である。S1208では、開発者用端末100は、アプリ設定画面への設定操作を受け付け、設定に基づいてメモリ102に記録した定義情報を更新する。S1208で受け付け可能な設定には、例えば、表示言語の設定や、PWA(Progressive Web Apps)としての利用を可とするアプリを構築するか否かの設定がある。また、アプリに所属する複数のUI画面のうち、どのUI画面をイニシャルUIとするかの設定がある。イニシャルUIとは、実行環境にデプロイされた構築済みアプリにアクセスした際に最初に表示される画面、あるいは構築済みアプリにアクセスした後にアプリの認証画面において認証OKになった後に最初に表示される画面である。
【0178】
S1209では、開発者用端末100は、環境一覧ボタン515が押下されたか否かを判定する。環境一覧ボタン515が押下された場合には
図3のS311に進み、そうでない場合にはS1210へ進む。
【0179】
S1210では、開発者用端末100は、データベースボタン516が押下されたか否かを判定する。データベースボタン516が押下された場合にはS1211に進み、そうでない場合にはS1215へ進む。データベースボタン516の押下はデータベースへの接続要求である。
【0180】
S1211では、開発者用端末100は、選択中実行環境がマルチテナント実行環境410であるか否かを判定する。マルチテナント実行環境410である場合にはS1213に進み、そうでない場合(シングルテナント実行環境である場合)にはS1212に進む。
【0181】
S1212では、開発者用端末100は、開発環境300が選択中実行環境から取得したデータベースの情報を取得する。より詳しくは、開発環境300が、選択中実行環境がマルチテナント実行環境であるかシングルテナント実行環境であるかを判定し、シングルテナント実行環境である場合には、開発環境300が選択中実行環境であるシングルテナント実行環境のDBセット(DBセット457、467、477などのうちいずれか)にアクセスし、データベースに記録されている内容を取得する。そして、開発環境300が選択中実行環境から取得したデータベースの情報を開発者用端末100に送信する。開発者用端末100から、開発環境300を介さずにシングルテナント実行環境にアクセスすることは無い。
【0182】
S1213では、開発者用端末100は、ログイン開発者の開発者情報(開発者情報301のうち、ログイン開発者について登録された情報)に記録されたDBインスタンス名を参照する。そして、開発環境300が選択中実行環境であるマルチテナント実行環境410に含まれるDBセット430のうち、ログイン開発者の開発者情報を参照して得たDBインスタンス名が示すDBインスタンスのデータベースに記録されている内容を取得する。そして、開発環境300が選択中実行環境から取得したデータベースの情報を開発者用端末100に送信する。開発者用端末100から、開発環境300を介さずにマルチテナント実行環境410にアクセスすることは無い。
【0183】
S1214では、開発者用端末100は、データベースの管理画面を表示し、S1212またはS1213で取得したデータベースの情報を表示する。そして、選択中実行環境のデータベースに関する各種設定や、内容の更新の指示を行うDB管理操作を受け付ける。
【0184】
S1215では、開発者用端末100は、ファイルマネージャーボタン517が押下されたか否かを判定する。ファイルマネージャーボタン517が押下された場合にはS1216に進み、そうでない場合にはS1218に進む。
【0185】
S1216では、開発者用端末100は、選択中実行環境に保存するファイルを管理するファイル管理画面を表示し、S1217で、選択中実行環境に保存するファイルを管理する操作を受け付ける。例えば、構築されるアプリケーションの画面に表示すべき画像ファイルを選択中実行環境の開発者領域にアップロードして保存することができる。開発者用端末100のローカル保存領域(記録媒体108など)から選択中実行環境に保存すべきファイルが選択され保存の指示がされると、開発者用端末100は、選択されたファイルを開発環境300に送信する。開発環境300は、選択されたファイルを受信すると、選択中実行環境の開発者領域に送信することで、選択中実行環境に保存させる。各種実行環境は、開発環境300からのアクセスだけを受け付ける。そのため、ファイル管理のためには、開発者用端末100から、開発環境300を介して各種実行環境にアクセスする。開発者用端末100から、開発環境300を介さずにマルチテナント実行環境410にアクセスすることは無い。前述のログイン処理で説明した取り、開発者は、開発環境300へは認証を行ってログインする必要がある。従って開発環境300を介してでないと各種実行にアクセスできないようにすることで、開発環境300にログインできない他のユーザーが不正に実行環境にアクセスすることは出来ず、その分、セキュリティが向上する。
【0186】
また、開発者ユーザーは開発環境300にログインするための認証に掛かる操作だけを行えばよく、実行環境毎にログインするための認証にかかる操作をする必要がない。そのため、操作手数の増大を抑制することができる。
【0187】
S1218では、開発者用端末100は、ユーザー管理ボタン518が押下されたか否かを判定する。ユーザー管理ボタン518が押下されたと判定した場合はS1219に進み、そうでない場合はS1220に進む。
【0188】
S1219では、開発者用端末100は、ユーザー情報表示処理を行う。ユーザー情報表示処理は、選択中実行環境に構築されるアプリケーションにログイン可能なアプリユーザー(開発者とは別途管理される情報)の情報であるユーザー情報(
図1に図示した各実行環境におけるユーザー情報411、451、461、471など)を表示し、開発者からの管理操作を受け付ける処理である。
【0189】
S1220では、開発者用端末100は、スナップショットボタン519が押下されたか否かを判定する。スナップショットボタン519が押下された場合にはS1221に進んでスナップ処理を行い、そうでない場合にはS1222に進む。
【0190】
S1222では、開発者用端末100は、終了操作が行われたか否かを判定する。終了操作が行われていない場合にはS1201に進んで処理を繰り返し、終了操作があった場合には画面切替処理を終了する。
<チュートリアル処理>
図13に、開発者用端末100が実行するチュートリアル処理のフローチャートを示す。この処理は、
図3のS351の処理の詳細である。
図14(a)に、S315の処理によってディスプレイ105に表示されるアプリケーションの一覧(アプリ一覧)の表示例を示す。アプリ一覧には、アプリの選択肢として選択肢1403、1404の2つが表示されている。ヘッダーメニュー領域には、チュートリアルボタン1401とアプリ作成ボタン1402が表示される。チュートリアルボタン1401が押下されると、
図13のチュートリアル処理を開始する。なお、
図13でのチュートリアル処理における各種表示処理の表示先は開発者用端末100のディスプレイ105であるものとする。また、各種表示例は、ディスプレイ105の全体ではなく、一部分における例である。
【0191】
S1301では、開発者用端末100は、レッスン一覧を表示する。
図14(b)に、レッスン一覧1410の表示例を示す。チュートリアルは、複数のレッスンを含む。各レッスンにはそれぞれ複数のチャプターが含まれ、さらに各チャプターには複数のステップ(手順)が含まれる。
図14(b)の例では、レッスン一覧1410に、Lesson1~5の5つのレッスンが一覧表示されている。表示されたいずれかのレッスンの右わきの下向き矢印を表示すると、対応するレッスンに含まれる複数のチャプターが展開して表示される。
図14(c)に、Lesson1に含まれる複数のチャプターを展開した表示した場合の表示例を示す。この状態ではLesson1が選択されており、領域1411に、Lesson1に含まれる4つのチャプターが表示されている。開発者が一度やったことのあるチャプターと未着手のチャプターとが認識可能なように、異なる色で表示される。いずれかのレッスンを選択した状態でスタートボタン1412が押下されると、選択されたLessonのチュートリアルが開始される。
【0192】
S1302では、開発者用端末100は、レッスン一覧1410のうちいずれかのレッスンが選択され、スタートが指示された(スタートボタン1412が押下)されたか否かを判定する。レッスンを選択してスタートが指示されるとS1304に進み、そうでない場合にはS1303に進む。
【0193】
S1303では、開発者用端末100は、レッスン一覧1410を非表示とする操作(チュートリアル処理を終了する操作)があったか否かを判定する。終了する操作がない場合にはS1302に進み、終了する操作があった場合には
図13のチュートリアル処理を終了する。
【0194】
S1304では、開発者用端末100は、メモリ102に保持するチュートリアルの処理対象のレッスンを示すレッスンナンバーの変数Lを、選択されたレッスンに対応する番号に設定する。
【0195】
S1305では、開発者用端末100は、メモリ102に保持するチュートリアルの処理対象のチャプターを示すチャプターナンバーの変数Cを1に初期化する。なお、
図14(c)の領域1411に示したようなチャプターの一覧から特定のチャプターを選択してそのチャプターからチュートリアルを開始できるようにしてもよい。その場合、S1305では、変数Cは選択されたチャプターに対応する番号に設定する。
【0196】
S1306では、開発者用端末100は、メモリ102に保持するチュートリアルの処理対象のステップ(手順)を示すステップナンバーの変数Sを1に初期化する。
【0197】
S1307では、開発者用端末100は、変数L,C,Sが示す、現在の処理対象のステップで表示すべきチュートリアルの内容が、コピーの文字列を含むものであるか否かを判定する。なお、レッスン毎のチュートリアル毎の各ステップで表示すべきチュートリアルの内容は、S302で開発環境300から受信し、メモリ102に記録しているクライアント用プログラム322(クライアント用情報)によって示される。すなわち、S1306の判定は、メモリ102に記録しているクライアント用プログラム322(クライアント用情報)を参照して行う。処理対象のステップが、コピーの文字列を含むステップである場合にはS1320に進み、そうでない場合にはS1308に進む。なお、入力対象項目に入力すべき情報である入力すべき文字列が所定文字数以上を要するステップ(手順)である場合にS1330へ進み、入力対象項目に入力すべき情報である入力すべき文字列が所定文字数未満で良いステップ(手順)である場合に1308に進むようにしても良い。
【0198】
S1308では、開発者用端末100は、処理対象のステップのチュートリアルにおけるガイド表示を行う。
図14(d)に、チュートリアルにおけるガイド表示の表示例を示す。
図14(d)は、レッスン1のチャプター1のステップ1のガイド表示の例である。操作対象項目であるアプリ作成ボタン1402を強調するように、他の部分をグレーアウトし、チュートリアルの対象ステップにおける操作対象項目を示す(指す、識別させる)吹き出し1420(ガイド表示領域)を重畳表示する。吹き出し1420には、現在のチャプターを示すチャプターガイド1421、現在のステップにおけるガイドメッセージ1422、終了ボタン1423が表示される。
図14(d)の例では、ガイドメッセージ1422として「[アプリ作成]ボタンをクリックします。」と表示されている。なお、操作対象項目はステップによって異なり、ボタンであったり、入力項目(テキストボックスなどの入力対象項目)であったりする。
【0199】
S1310では、開発者用端末100は、操作対象項目が入力項目であり、その入力項目(入力対象項目)に入力操作があったか否かを判定する。なお、チュートリアルでの処理対象ステップにおける操作対象項目である入力項目を入力対象項目と称するものとする。操作対象項目がボタンなどの入力項目以外である場合や、操作対象項目が入力項目であっても入力操作が行われていない場合にはS1312に進む。操作対象項目が入力項目であり、その入力項目(入力対象項目)に入力操作(例えば、入力項目を選択した状態で操作部106に含まれるキーボードを操作する文字入力操作)があった場合にはS1311に進む。
【0200】
図15(a)に、操作対象項目が入力項目であった場合にチュートリアルにおけるガイド表示の表示例を示す。
図15(a)は、レッスン1のチャプター1に含まれるステップのガイド表示の例である。入力対象項目1501を強調するように、他の部分をグレーアウトし、入力対象項目を指す吹き出し1520(ガイド表示領域)を重畳表示する。入力対象項目1501は、新規に作成するアプリのIDの設定(IDとなる文字列の入力)を開発者(ユーザー)から受け付けるためのテキストボックスである。吹き出し1520には、現在のステップにおけるガイドメッセージ1522、終了ボタン1523、次へボタン1524が表示される。
図15(a)の例では、ガイドメッセージ1522として「[ID]を入力します。入力後、[次へ]ボタンをクリックします。」と表示されている。すなわち、入力対象項目1501に入力すべき内容のガイダンスを表示している。
図15(a)では、コピーボタンは表示されない。
【0201】
S1311では、開発者用端末100は、S1310で受け付けたユーザーからの入力操作に応じた文字列を入力対象項目に入力する。これによって例えば、
図15(b)に示すように、入力対象項目1501に「app01」という文字列が表示される。
図15(b)は、入力対象項目1501に文字列が入力されている以外は、
図15(a)と同じ表示例である。
【0202】
S1312では、開発者用端末100は、次へボタンの押下、あるいは、操作対象項目の操作があったか否かを判定する。次へボタンの押下、あるいは、操作対象項目の操作があった場合はS1340へ進み、そうでない場合にはS1313に進む。例えば、
図14(d)の状態であればアプリ作成ボタン140が押下された場合にS1340に進む。また例えば、
図15(a)または
図15(b)の状態であれば、次へボタン1524が押下された場合にS1340へ進む。
【0203】
S1313では、開発者用端末100は、スキップボタン(例えば
図16のスキップボタン1610)が押下されたか否かを判定する。スキップボタンは、表示アイテム(操作アイコン)であり、スキップアイテムとも称するものとする。スキップボタンが押下された場合にはS1314へ進み、そうでない場合にはS1316へ進む。スキップボタンは、操作対象項目の表示位置にかかわらない位置(すなわち、ガイドを表示する吹き出しの位置にかかわらない位置)であって、ステップが先へ進んでも画面上での位置が変わらない固定位置(面上の所定位置、同一の位置)に表示するものとする。このようにすることで、一度スキップボタンにマウスオーバーした後は、マウスの位置を固定したまま、チュートリアルに含まれる複数のステップにおける操作対象項目への操作を連続でスキップしていくことができる。従って、チュートリアルをじっくりやるのではなく、素早く簡単に確認を済ませたい場合などに、効率的にチュートリアルの複数のステップの内容を確認することができる。
【0204】
S1314では、開発者用端末100は、入力対象項目に、予め定められた所定の値(諸所定の情報)を入力する。所定の値は、メモリ102に記録しているクライアント用プログラム322(クライアント用情報)に、ステップ毎に記録されている値(情報)であり、エラーなくチュートリアルの次以降のステップへ進むことが可能な値(情報)であるものとする。例えば、
図15(a)の状態でスキップボタンが押下された場合は、入力対象項目に、新規に作成するアプリのIDとして適正な値(例えば「app_tutorial」という文字列)を自動的に入力する。すなわち、S1310、S1311で入力対象項目にユーザー操作に応じた入力がされていない場合でも、スキップボタン(スキップアイテム)が操作されると自動的に適正な情報(値)が入力される。なお、操作対象項目が入力項目でない場合には、S1314では操作対象項目を自動的に操作(ボタンなら押下)し、S1315を経ずにS1340に進むものとする。
【0205】
S1315では、開発者用端末100は、入力対象項目に自動的に入力された所定の値を表示した状態で、所定時間(例えば2秒)経過したか否かを判定する。所定時間が経過した場合はS1340に進み、そうでない場はS1315で所定時間の経過を待つ。このように、入力対象項目に自動的に入力した適正な値を所定時間表示する。従って、自分自身で入力対象項目にどのような値を入力してよいかわからずにスキップボタンを押下した開発者ユーザーであっても、どのような値を入力するのが適切だったのかを確認することができる。このように、発者ユーザーに、本システムの使い方、操作方法をより好適に学ばせることができる。
【0206】
S1316では、開発者用端末100は、チュートリアルの終了を指示する操作(例えば終了ボタン1423の押下)があったか否かを判定する。終了を指示する操作があった場合は
図13の処理を終了し、そうでない場合にはS1310に進み処理を繰り返す。
【0207】
S1340では、開発者用端末100は、エラーが生じたか否かを判定する。エラーが生じた場合はS1941へ進み、そうでない場合にはS1342へ進む。
【0208】
S1321では、開発者用端末100は、エラー発生箇所のステップに戻して警告表示を行う。例えば、
図15(a)の状態で入力対象項目1501を空欄にしたまま次へボタン1524が押下され、さらにチュートリアルの先のステップで、操作対象項目であるアプリの作成確定ボタンが押下された場合、新規作成するアプリのIDが無い状態となってしまうため、エラーと判定される。この場合、
図15(a)の表示を行うステップまで処理を戻し(変数Sを戻り先のステップ番号に設定し)、エラーの要因となった入力対象項目1501を強調表示(例えば赤枠で表示)し、S1307へ進んで
図15(a)の表示を行うステップの処理を再度行う。
【0209】
S1322では、開発者用端末100は、変数SがSmax(処理対象チャプターの最後のステップの番号)であるか否かを判定する。変数SがSmaxである場合はS1324に進み、そうでない場合にはS1323に進む。
【0210】
S1323では、開発者用端末100は、変数Sの値を1つインクリメントする。すなわち、次のステップの番号に設定する。そして、S1307に進み、チュートリアルにおける次のステップに関する処理を行う。例えば、S1308で、
図14(d)のレッスン1のチャプター1のステップ1のガイド表示をした状態で、操作対象項目であるアプリ作成ボタン1402が押下された場合、S1302でYesと判定され、S1320No,S1322Noと進んで、S1323で同じチャプター1の次のステップに設定したうえで、S1307No、S1308と進む。S1308では、
図14(e)に示すような、チャプター1のステップ2のガイド表示が行われる。
【0211】
S1324では、変数CがCmax(処理対象レッスンの最後のチャプターの番号)であるか否かを判定する。変数CがCmaxでない場合はS1325に進む。変数CがCmaxである場合は、そのレッスンのチュートリアルは完了であり、
図13の処理を終了する。
図15(c)に、レッスン1の最後のチャプターの最後のステップのチュートリアルのガイド表示の例を示す。この状態で操作対象項目であるデプロイボタンが押下されると、S1324でYesと判定され、
図13の処理を終了する。
【0212】
なお、チュートリアルにおける操作に基づいて、実際にアプリを開発する制御が行われる。すなわち、
図15(c)でデプロイボタンが押下されるのは、前述した
図4のS425でデプロイボタンが押下された後に表示される確認画面に含まれるデプロイボタンが押下されるのと同義である。従って、
図15(c)でデプロイボタンが押下されると、S426の処理を行い、選択実行環境にデプロイするように指示するデプロイ要求を開発環境300に送信する。これに応じて開発環境300は実際に選択実行環境にデプロイを行い、アプリを構築する。チュートリアルに従って新規に作成したアプリの定義情報も開発環境300に保存され、レッスン1を完了した後にアプリ一覧画面を表示させると、
図15(d)に示す通り、チュートリアルで作成したアプリの選択肢1530が追加されて表示される。
【0213】
S1325では、開発者用端末100は、変数Cの値を1つインクリメントする。すなわち、次のチャプターの番号に設定する。そして、S1328に進み、変数Sを1に設定する。すんわち、次のチャプターの最初のステップの番号に設定する。そして、S1307へ進み、チュートリアルにおける次のチャプターの最初のステップに関する処理を行う。
【0214】
一方、1330では、開発者用端末100は、処理対象のステップのチュートリアルにおける、コピーボタン付きのガイド表示を行う。
図16(a)に、チュートリアルにおける、コピーボタン付きのガイド表示の表示例を示す。入力対象項目1601を強調するように、他の部分がグレーアウトされ、入力対象項目1601を識別させる(指す、指し示す)吹き出し1620(ガイド表示領域)が重畳表示される。吹き出し1620には、現在のチャプターを示すチャプターガイド1621、現在のステップにおけるガイドメッセージ1622、終了ボタン1623、次へボタン1624が表示される。加えて、ボックス1626にコピー対象文字列が表示されるとともに、コピー対象文字列のコピーを指示する操作アイコン(表示アイテム)であるコピーボタン1624(コピーアイテム)が表示される。ボックス1626に表示されるコピー対象文字列は、スキップボタン1610が押下された場合に入力対象項目1601に自動的に入力される所定の値と同じものである。すなわち、メモリ102に記録しているクライアント用プログラム322(クライアント用情報)に、ステップ毎に記録されている値(情報)であり、エラーなくチュートリアルの次以降のステップへ進むことが可能な適正な値(情報)である。
【0215】
S1331では、開発者用端末100は、コピーボタン1624が押下されたか否かを判定する。コピーボタン1624が押下された場合はS1332へ進み、そうでない場合にはS1333へ進む。
【0216】
S1332では、開発者用端末100は、コピー対象文字列(ボックス1626に表示された文字列)をクリップボードにコピーする。
【0217】
S1333では、開発者用端末100は、入力対象項目1601に対するペースト操作があったか否かを判定する。入力対象項目1601に対するペースト操作があった場合にはS1334へ進み、そうでない場合にはS1340へ進む。
【0218】
S1334では、開発者用端末100は、入力対象項目1601に、クリップボードにコピーされてる文字列を入力(ペースト)する。これによって、コピーボタン1624を押下した直後であれば、入力対象項目1601に、コピー対象文字列(ボックス1626に表示された文字列)が入力される。
【0219】
S1340~S1346の処理は、S1310~S1316の処理とそれぞれ同様であるため説明を省略する。なお、S1341で、コピー対象文字列とは異なる、入力対象項目に対する適正でない値(例えば誤ったURL)を入力することも可能である。あえて適正でない値の入力も受け付けることで、適正でない入力を行うと後段の処理でエラーが発生するという学びをユーザーに提供することができる。
【0220】
図16(b)に、
図16(a)の状態から、コピーボタン1624を押下してから入力対象項目1601に対してペーストする操作を行ったことにより、入力対象項目1601にコピー対象文字列(ボックス1626に表示された文字列)が入力された場合の表示例を示す。このようにすることで、チュートリアルにおいて入力すべき文字列を簡単に入力することができる。長い文字列であっても、エラーの起きない適切な文字列(コピーボタン1624の押下でコピーされる文字列)を、簡単に入力することができる。
【0221】
図16(a)、
図16(b)は、
図9(d)で説明したREST関数の設定画面のチュートリアルである。そして、本実施形態は、入力対象項目へ入力された内容に基づいて実際にアプリケーション開発ソフトウェアの機能を実行するように制御する。すなわち、入力対象項目1601は
図9(d)の設定欄944であり、この関数が行うリクエストを送信する先となるURLの設定欄である。この入力対象項目1601に、リクエストを送信する先として適切なURLを示す文字列を入力すると、チュートリアルを通して実際に正しく機能するREST関数を作成することができる。入力対象項目1601に、リクエストを送信する先として適切でないURL(例えば、存在しないURLなど)を示す文字列を入力すると、チュートリアルで生成されるREST関数は正しく機能しない関数となり、エラーを生じさせる要因となる。URLの文字列入力は、コピーをせずに手入力するとタイプミスなどが起こりやすく、適切でない文字列となってしまう可能性がある。これに対し、本実施形態のように、リクエストを送信する先として適切な文字列であるコピー対象文字列を簡単にコピーできるコピーボタン1624をチュートリアル中に表示することで、簡単で、かつ、ミスのない確実な入力を行うことができる。
【0222】
またコピー対象文字列を簡単にコピーできるコピーボタンは、前述したアクションボードに関するチュートリアルの際にも非常に効果的である。アクションボードにはJavaScript(プログラミング言語)でアクションを表す文字列を記入することができる。このことをチュートリアルでガイドして実際に開発者ユーザーに操作してもらうには、入力対象項目をアクションボードとし、開発者ユーザーに実際にアクションボードにJavaScriptでアクションを表す文字列を入力させることとなる。JavaScriptでのアクションを表す文字列は長く、入力が手間である上に、タイプミスなども発生しやすい。また、開発者ユーザーにとって、そもそもどのようなアクションを書けば良いのかというのをすぐに思いつくことは簡単ではなく、どんなアクションを書くかというのから検討するのでは、チュートリアルとしては手間がかかりすぎる。そこで、予め用意された適当なアクションを表すJavaScriptでの文字列をコピー対象文字列としてコピーボタンでコピーしてアクションボードに貼り付けることができれば、手間やミスを大きく削減しつつも、アクションボードがどういうものであるかというのを開発者ユーザーに理解させるというチュートリアルの効果も奏することができる。スキップボタンを押下することでコピー対象文字列と同じ文字列をアクションボードに自動入力して表示することでも、同様の効果を得ることができる。
【0223】
なお、本実施形態では、チュートリアルにおいてスキップボタンとコピーボタンの双方を表示する例を説明したが、いずれか一方だけを表示するようにしてもよい。すなわち、スキップボタンの押下による入力対象項目への所定の値の自動入力処理と、コピーボタンによる入力対象項目へ入力する値として適正なコピー対象文字列をコピーする処理のいずれか一方を実施するものとしてもよい。
【0224】
また、コピーボタンを表示せずとも、入力対象項目へ入力する値(情報)として適正なコピー対象文字列を、チュートリアルのガイド領域に、選択してコピー可能な形態で表示するだけでもよい。ガイド領域に表示されたコピー対象文字列を選択してコピーを指示する操作がされたことに応じてコピー対象文字列をコピーし、入力対象項目に対してペーストの操作がされたことに応じて、コピーされていたコピー対象文字列を入力対象項目に入力するように制御するとしても、チュートリアルにおける操作性向上の効果を奏することができる。
【0225】
このように、本実施形態では、チュートリアルにおける操作性をより向上させることができる。
【0226】
なお、上述の各フローチャートで説明した各種制御は1つのハードウェアが行ってもよいし、複数のハードウェア(例えば、複数のプロセッサや回路)が処理を分担することで、装置全体の制御を行ってもよい。
また、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。さらに、上述した各実施形態は本発明の一実施形態を示すものにすぎず、各実施形態を適宜組み合わせることも可能であ
【0227】
(他の実施形態)
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムコードを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【0228】
100:開発者用端末、200:アプリユーザー用端末、201:アプリユーザー用端末201、300:開発環境、400:実行環境