(57)【要約】  【課題】従来技術では、開発しようとする新製品の仕様が変更されるような状況は想定されていない。すなわち、例えばプログラムのように、インストール先の端末の動作環境が刻一刻と変化するようなものを開発する際には対応することができない。【解決手段】  本発明は上記課題を解決するために、プログラム開発支援サーバで管理されている端末の各種情報を元に利用可否を判断する利用可否判断手段と、前述の利用可否判断手段で利用できないと判定された機能ブロックのみ表示を変える編集画面表示手段と、プログラム開発支援サーバで管理されている端末情報が更新されたことを検知して、編集画面の再描画を実行する情報更新通知手段を備える。【選択図】図４
2014203226.tif 000002
【特許請求の範囲】
【請求項１】
プログラム開発支援サーバとプログラム開発支援端末とを備えたプログラム開発支援システムにおいて、
前記プログラム開発支援サーバは、
前記プログラム開発支援端末およびプログラム転送先の端末との間で通信を行うサーバ通信部と、
前記プログラム開発支援端末から前記サーバ通信部を介して受信したプログラムコード、端末情報、およびアカウント情報を記録するサーバ記録部と、
前記サーバ記録部の前記端末情報または前記アカウント情報が更新された際に当該更新の情報である更新情報を作成し、前記プログラム開発支援端末に通知する情報更新検知手段と、前記プログラム開発支援端末からプログラムを転送する要求を受信した際に当該プログラムを前記プログラム転送先の端末に転送するプログラム転送手段とを備えるサーバ制御部と、を備え、
前記プログラム開発支援端末は、
プログラムコード、端末情報、およびアカウント情報を記録する記録部と、
ユーザ操作の入力を受付ける入力部と、
操作画面を表示する表示部と、
前記プログラム開発支援サーバとの間で通信を行う通信部と、
前記入力部でユーザ操作の入力を受付けた際に当該操作により編集されたプログラムの編集部分を検出するプログラム編集手段と、当該検出された編集部分が前記転送先の端末で利用できるか否かを判断する利用可否判断手段と、当該判断の結果を前記表示部に表示させる編集画面表示手段と、前記プログラム開発支援サーバから前記更新情報を受信した際に当該更新に伴って影響を受けるプログラムコードを前記表示部に表示する情報更新通知手段と、を備える制御部と、
を備えることを特徴とするプログラム開発支援システム。
【請求項２】
請求項１に記載のプログラム開発支援システムにおいて、
前記プログラム開発支援端末の前記制御部は、作成したプログラムコードを前記プログラム転送先端末に転送する要求である転送要求を前記プログラム開発支援サーバに送信するプログラム転送要求手段を更に備え、
前記プログラム開発支援サーバの前記サーバ制御部は、当該受信した転送要求を前記転送先端末に転送するプログラム転送手段を更に備えることを特徴とするプログラム開発支援システム。
【請求項３】
請求項２に記載のプログラム開発支援システムにおいて、
前記プログラム転送手段は、転送するプログラム内で指定されたグループ、所属組織、および端末ＩＤを、サーバ記録部に記録されている端末情報およびアカウント情報に基づいて更新し、前記転送先の端末へ転送することを特徴とするプログラム開発支援システム。
【請求項４】
請求項１乃至３に記載のプログラム開発支援システムにおいて、
前記編集画面表示手段は、プログラムに対する前記利用可否判断の結果が利用不可である場合に、当該プログラムと所定の値以上の関連性を持つプログラムを前記表示部に表示することを特徴とするプログラム開発支援システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム開発を支援するための技術に関する。
【背景技術】
【０００２】
本技術分野の背景技術として、特開２００６−２８５９２１号公報（特許文献１）がある。この公報には、製品開発の初期段階で、新製品の製品仕様に基づいて、新たに発生する可能性のある問題点を抽出することができる開発支援装置が記載されている。前記特許文献１では、開発支援装置によって、製品開発の初期段階で、新製品の製品仕様に基づいて、新たに発生する可能性のある問題点を予め抽出することで、開発者の作業効率を高める技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２８５９２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の技術では、新製品の仕様が変更されるような状況は想定されていない。すなわち、例えばアプリケーションのように、インストール先端末の動作環境が刻一刻と変化するようなものを開発する際には対応することができない。
【課題を解決するための手段】
【０００５】
本発明は上記課題を解決するために、プログラム開発支援サーバで管理する端末情報、アカウント情報を元に、プログラムの機能が利用できるかどうかを判定する利用可否判断手段と、前述の利用可否判断手段の結果から利用できないプログラムをグレーアウト表示にし、利用できないようにする編集画面表示手段と、端末情報、アカウント情報が更新されたことを契機にし、再度編集画面を再表示させる情報更新通知手段を設けることを特徴とする。
【発明の効果】
【０００６】
本発明によれば、端末のＶｅｒｓｉｏｎと開発環境のＶｅｒｓｉｏｎが不一致であったり、端末の制約により一部の機能が利用できない場合だったりしても、端末情報から利用できない機能を判定し、利用できない機能の表示を変えることで、開発者は誤って利用できない機能を使ってプログラムを開発できないようになり、プログラムの開発効率を高めることができる。
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【０００７】
【図１】本システムの実施形態の一例を示す図である。
【図２】プログラム開発支援端末のハードウェア構成の一例を示す図である。
【図３】プログラム開発支援サーバのハードウェア構成の一例を示す図である。
【図４】本システムの機能構成の一例を示す図である。
【図５】プログラム開発支援端末の処理手順を示したフローチャート図である。
【図６】プログラム開発支援端末の処理手順を示したフローチャート図である。
【図７】プログラム開発支援端末の処理手順を示したフローチャート図である。
【図８】プログラム開発支援端末の処理手順を示したフローチャート図である。
【図９】転送要求のデータ構造を示した図である。
【図１０】転送応答のデータ構造を示した図である。
【図１１】ログラム開発支援サーバの処理手順を示したフローチャート図である。
【図１２】プログラムコードＤＢのデータ構造を示した図である。
【図１３】端末情報ＤＢのデータ構造を示した図である。
【図１４】アカウント情報ＤＢのデータ構造を示した図である。
【図１５】プログラム開発支援端末の処理手順を示したフローチャート図である。
【図１６】プログラム開発支援端末の処理手順を示したフローチャート図である。
【図１７】プログラム開発支援端末の処理手順を示したフローチャート図である。
【図１８】プログラム開発支援端末の処理手順を示したフローチャート図である。
【図１９】プログラム開発支援端末の処理手順を示したフローチャート図である。
【図２０】プログラム開発支援サーバの処理手順を示したフローチャート図である。
【図２１】情報更新通知のデータ構造を示した図である。
【図２２】プログラム開発支援端末の処理手順を示したフローチャート図である。
【図２３】編集画面の画面構造の一例を示した図である。
【図２４】編集画面の表示の一例を示した図である。
【図２５】編集画面の表示の一例を示した図である。
【図２６】プログラム開発支援端末の処理手順を示したフローチャート図である。
【図２７】関連情報ＤＢのデータ構造を示した図である。
【図２８】プログラム開発支援端末の処理手順を示したフローチャート図である。
【図２９】プログラム開発支援端末の処理手順を示したフローチャート図である。
【図３０】編集画面の表示の一例を示した図である。
【発明を実施するための形態】
【０００８】
以下、本発明に係る実施例を、図面を用いて説明する。
【実施例１】
【０００９】
図１は、本システムのシステム構成を示したものである。
【００１０】
プログラム開発支援システム１００は、開発支援端末２００、およびプログラム開発支援サーバ３００から構成されている。プログラム開発支援装置２００は、携帯電話、スマートフォン、およびタブレットといったモバイルデバイスや、建設機械のコントローラなどの端末にインストールするプログラムを開発する装置である。また、プログラム開発支援サーバ３００は、携帯電話、スマートフォン、およびタブレットといったモバイルデバイスや、建設機械のコントローラなどの端末の情報を記憶している。また、プログラム開発支援サーバ３００は、プログラム開発支援端末２００からの要求に従い、端末に対して作成したプログラムコードを転送（デプロイ）する。
【００１１】
プログラム開発支援システムの利用者は、プログラム開発支援端末２００を操作することで、プログラムコードの作成、編集、保存を行う。操作の結果はプログラム開発支援サーバ３００に記憶される。利用者がプログラムの転送を要求すると、プログラム開発支援サーバ上のプログラムコードを動作端末４００ａ、４００ｂに転送（デプロイ）され、各端末上で、転送されたプログラムコードが動作する。
【００１２】
本実施例におけるプログラムコードとは、図２３のようにブロック形のプログラム部品単体、およびプログラム部品の組合せによって構成されるプログラムブロックのことを指す。
【００１３】
図２はプログラム開発支援端末のハードウェア構成要素を示したものである。
【００１４】
プログラム開発支援端末２００は、プログラムコードや操作を入力するための入力部２０１と、プログラムコードや操作画面を表示するための表示部２０２と、処理プログラムや設定、編集内容を記録するための記録部２０３と、プログラム開発支援サーバ３００と通信を行うための通信部２０４と、各種処理を行う制御部２０５から構成されている。  入力部２０１は、キーボードやボタン、タッチパネルなどから構成され、ユーザによる操作の入力が可能である。その他に、マイクやカメラなどの外部装置からの入力を受け取っても良い。
【００１５】
表示部２０２は、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）や有機ＥＬ等の表示デバイスから構成され、入力部より入力された文字や操作、記録部に記録されているファイルやソフトウェアなどを表示する。
【００１６】
記録部２０３は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成され、プログラム開発支援装置１００で扱うデータやソフトウェアなどを記録する。通常、筺体内部に設置されるが、着脱可能なメモリカードやＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ、外部より接続された記憶装置等で実現されても良い。
【００１７】
通信部２０４は、例えば、有線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）や、無線ＬＡＮ等で構成され、外部のサーバと通信するために利用される。
【００１８】
制御部２０５は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）で実現され、記録部に記録されたソフトウェアに基づいて動作し、各部を制御する。
【００１９】
本実施例では、プログラム開発支援端末２００は、マウスやキーボードといった入力部を持ち、外部機器と通信が行えるＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）を想定して説明を行っているが、ユーザ操作が可能で、外部機器と通信が行えるのであれば、携帯電話、スマートフォン、タブレット、携帯情報端末等、いかなるものであってもよい。
【００２０】
図３はプログラム開発支援サーバのハードウェア構成要素を示したものである。
【００２１】
プログラム開発支援サーバ３００は、プログラムコード、設定情報、およびプログラムの編集内容を記録する記録部３０１と、プログラム開発支援端末２００と通信する通信部３０２と、これらを制御するための制御部３０３から構成されている。
【００２２】
記録部３０１は、ＲＯＭやＲＡＭ等で構成され、プログラム開発支援端末２００やプログラム開発支援サーバ３００で扱うデータやソフトウェアなどを記録する。通常、筺体内部に設置されるが、着脱可能なメモリカードやＵＳＢメモリ、外部より接続された記憶装置等で実現されても良い。
【００２３】
通信部３０２は、例えば、有線ＬＡＮや、無線ＬＡＮ等で構成され、外部のサーバや、プログラム開発支援端末２００と通信するために利用される。
【００２４】
制御部３０３は、ＣＰＵで実現され、記録部３０１に記憶されたソフトウェアに基づいて動作し、各部を制御する。
【００２５】
本実施例では、プログラム開発支援端末２００は、マウスやキーボードからのユーザ入力処理、開発したプログラムが端末で利用できるか否かの判定処理、および判定結果やプログラムコード等の表示処理を行い、プログラム開発支援サーバ３００は、本システムで開発したプログラムコードや各種設定、その他の情報の取得処理を行うことを想定して説明を行っている。しかし、プログラム開発支援端末２００だけでサーバ処理も行わせる構成であってもよい。
【００２６】
次に、動作を詳細に説明する。
【００２７】
図４は、本実施例におけるプログラム開発支援システム１００が有する機能の構成を示す図である。プログラム開発支援端末２００の制御部２０５は、ユーザ操作検知手段２１０、プロジェクト管理手段２１１、編集画面表示手段２１２、利用可否判断手段２１３、プログラムコード編集手段２１４、プログラム転送要求手段２１５、情報更新通知手段２１６を有している。プログラム開発支援サーバ３００の制御部３０３は、プログラム転送手段３１２、情報更新検知手段３１３を有し、記憶部３０１は管理データ３１１を有している。管理データ３１１は、プログラムコードＤＢ６００、端末情報ＤＢ７００、アカウント情報ＤＢ８００から構成されている。そして、プログラムコードＤＢ６００は、図１２のように、プロジェクトリスト６１０、プログラムリスト６２０、プログラムデータリスト６３０から構成されている。
【００２８】
プロジェクトリスト６１０は、プロジェクトを一意に識別するプロジェクトＩＤ６１１と、プロジェクトの保存場所を表すプロジェクトパス６１２と、プロジェクトへのアクセス権に関する情報を格納するアクセス権情報６１３から構成される１つのレコードが複数保存されているリスト構造となっている。
【００２９】
プログラムリスト６２０は、プログラムを一意に識別するプログラムＩＤ６２１と、プロジェクトを一意に識別するプロジェクトＩＤ６２２と、プログラムデータにアクセスするためのファイルパス名を表すプログラム名６２３と、プログラムが動作する対象を一意に識別する動作対象ＩＤ６２４から構成される１つのレコードが複数保存されているリスト構造となっている。なお、動作対象ＩＤ６２４は、端末ＩＤと所属組織ＩＤが重複しないようにＩＤが割り当てられるものとして、動作させる端末を指定する場合には、端末を一意に識別する端末ＩＤが格納され、同じ所属の端末全ての上で動作させるプログラムの場合には、所属を一意に表す所属組織ＩＤが格納される。なお、端末ＩＤと所属組織ＩＤが重複する可能性がある場合には、データ種別を表すコード別途レコードに追加して識別できるようにしてもよい。
【００３０】
プログラムデータリスト６３０は、プログラムを一意に識別するプログラムＩＤ６３１と、プログラム自体がＸＭＬ（Ｅｘｔｅｎｄ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）データとして表されているプログラムデータ６３２から構成される１つのレコードが複数保存されているリスト構造となっている。プロジェクトリスト６１０のプロジェクトＩＤ６１１と、プログラムリスト６２０のプロジェクトＩＤ６２２は、同じプロジェクトであれば同じＩＤが指定されるので、それぞれのリストから参照することが可能となっている。また同様に、プログラムリスト６２０のプログラムＩＤ６２１と、プログラムデータリスト６３０のプログラムＩＤ６３１は、同じプログラムであれば同じＩＤが指定されるので、それぞれのリストから参照することが可能となっている。
【００３１】
端末情報ＤＢ７００は、図１３のように、端末リスト７１０、端末情報リスト７２０から構成されている。端末リスト７１０は、端末を一意に識別する端末ＩＤ７１１と、利用者を一意に識別する利用者ＩＤ７１２と、所属組織を一意に識別する所属組織ＩＤ７１３と、端末にインストールされているプログラム実行環境のＶｅｒｓｉｏｎを表す環境Ｖｅｒ７１４から構成される１つのレコードが複数保存されているリスト構造になっている。  端末情報リスト７２０は、端末を一意に識別する端末ＩＤ７２１と、端末に搭載されているＯＳのＶｅｒｓｉｏｎや、端末に搭載されているハードウェア情報や、端末の電話番号など様々な端末情報を格納する端末情報７２２から構成される１つのレコードが複数保存されるようなリスト構造になっている。端末リスト７１０の端末ＩＤ７１１と、端末情報リスト７２０の端末ＩＤ７２１は、同じ端末であれば同じＩＤが指定されているので、それぞれのリストから参照することが可能となっている。
【００３２】
アカウント情報ＤＢ８００は、図１４のように、アカウントリスト８１０、所属情報リスト８２０、グループリスト８３０から構成されている。アカウントリスト８１０は、利用者を一意に識別する利用者ＩＤ８１１と、所属組織を一意に識別する所属組織ＩＤ８１２と、利用者が所属するグループＩＤのリストとなっている所属グループＩＤリスト８１３と、利用者の氏名、年齢などの様々な識別情報を格納する利用者情報８１４から構成される１つのレコードが複数保存されるリスト構造となっている。所属情報リスト８２０は、所属組織を一意に識別する所属組織ＩＤ８２１と、その上位に属する組織を表す上位組織ＩＤ８２２と、その下位に属する組織を表す下位組織ＩＤリスト８２３と、組織の名称を表す組織名称８２４から構成される１つのレコードが複数保存されるリスト構造となっている。また、グループリスト８３０は、グループを一意に表すグループＩＤ８３１と、グループの名称を格納するグループ情報８３２から構成される１つのレコードが複数保存されるリスト構造となっている。アカウントリスト８１０の所属組織ＩＤ８１２と、所属情報リスト８２０の所属組織ＩＤ８２１は、同じ組織であれば同じＩＤが指定されるので、それぞれのリストから参照することができるようになっている。同様に、アカウントリスト８１０の所属グループＩＤリスト８１３に格納されている個々のＩＤと、グループリスト８３０のグループＩＤ８３１に格納されているＩＤは、同じグループであれば同じＩＤが指定されるので、それぞれのリストから参照することができるようになっている。さらに、端末リスト７１０の利用者ＩＤ７１２と、アカウントリスト８１０の利用者ＩＤ８１１は同じＩＤで対応しており、また、端末リスト７１０の所属組織ＩＤ７１３と、所属情報リスト８２０の所属組織８２１は同じＩＤで対応しているので、それぞれのリストから参照することができるようになっている。
【００３３】
図５は、本実施例におけるプログラム開発支援端末２００の制御部２０５で行われるユーザ操作検出手段２１０の処理手順を示した図である。
【００３４】
処理が開始される（Ｓ２１０１）と、まず、プログラム開発支援端末のユーザ操作検出手段は、入力部に入力されるユーザ操作の監視を開始し、プロジェクトを開く、プロジェクトを新規作成する、プロジェクトを保存する、プロジェクトを閉じる、プログラムコードを編集する、プログラムを端末へ転送する、などのユーザ操作を検知する（Ｓ２１０２）。
【００３５】
入力部から前述のユーザ操作が検知されると、検知されたユーザ操作に対する各々の処理として、プロジェクト管理処理、プログラムコード編集処理、プログラム転送処理を行い（Ｓ２１０３）、ユーザ操作の監視を再開する（Ｓ２１０２）。ユーザ操作による処理が、プログラム開発支援端末を終了させる処理であれば（Ｓ２１０４）、処理を終了する（Ｓ２１０５）。
【００３６】
図６、図７、図８は、入力部より入力されたユーザ操作によってユーザ操作検知手段が行う各々の処理を示した図である。
【００３７】
図６は、プログラム開発支援端末２００の制御部２０５のユーザ操作検知手段２１０において、プロジェクトを開く、プロジェクトを新規作成する、プロジェクトを保存する、プロジェクトを閉じる、等のユーザ操作を検知した場合に行うプロジェクト管理手段２１１のプロジェクト管理処理の処理手順である。
【００３８】
ユーザ操作検知手段２１０において、プロジェクトを開く、プロジェクトを新規作成する、プロジェクトを保存する、プロジェクトを閉じる、のいずれかのユーザ操作が検知されると、プロジェクト管理手段２１１の処理が開始され（Ｓ２１１１）、検知した処理を判断する（Ｓ２１１２）。プロジェクトを開くユーザ操作が検知されると、ユーザ操作検知手段は、プログラム開発支援サーバ３００の記憶部３０１にあるプログラムコードＤＢ６００にアクセスし、プログラムデータを読み込む（Ｓ２１１３）。Ｓ２１１３では、指定されたプロジェクトパスを元に、プロジェクトリスト６１０から該当するプロジェクトＩＤ６１１を検索する。そして、検索して見つかったプロジェクトＩＤを検索キーとして、プログラムリスト６２０から該当するプログラムＩＤ６２１を全て抽出し、プログラムデータリスト６３０から該当するプログラムデータを全て読み込む処理を行う。次に、読み込んだプログラムコードを元に画面を表示する編集画面表示処理を行い（Ｓ２１１４）、処理を終了する（Ｓ２１１７）。プロジェクトを新規作成するユーザ操作が検知されると、空のプログラムコードを作成し（Ｓ２１１５）、空のプログラムコードを元に画面を表示する編集画面表示処理を行い（Ｓ２１１４）、処理を終了する（Ｓ２１１７）。プロジェクトの保存、プロジェクトを閉じる、のユーザ操作が検知されると、現在編集中のプログラムコードを、プログラム開発支援サーバ３００の記憶部３０１にあるプログラムコードＤＢ６００のプロジェクトリスト６１０、プログラムリスト６２０、プログラムデータリスト６３０に対して、変更部分を書き換えてに保存し（Ｓ２１１６）、処理を終了する（Ｓ２１１７）。
【００３９】
図７は、プログラム開発支援端末２００の制御部２０５のユーザ操作検知手段２１０において、プログラムコードを編集したことを検知した場合に行うプログラムコード編集手段２１４のプログラムコード編集処理の処理手順である。
【００４０】
ユーザ操作検知手段２１０において、プログラムコードを編集するユーザ操作が検知されると、プログラムコード編集手段２１４の処理が開始され（Ｓ２１４１）、編集したプログラムコードの箇所を検出する（Ｓ２１４２）。そして、検出したプログラムコードが利用可能か否かを判断する利用可否判断処理を実行する（Ｓ２１４３）。次に、利用可否判断処理の判定結果を確認し（Ｓ２１４４）、利用可否判断処理の結果が利用可能という判定であれば、編集画面を再表示させる編集画面表示処理を呼び出し（Ｓ２１４５）、処理を終了する（Ｓ２１４７）。利用可否判断処理の結果が利用不可という判定であれば、編集ができない旨のエラー画面を表示し（Ｓ２１４６）、処理を終了する（Ｓ２１４７）。
【００４１】
図８は、プログラム開発支援端末２００の制御部２０５のユーザ操作検知手段２１０において、プログラムを対象となる端末への転送要求を検知した場合に行うプログラムコード転送要求手段２１５のプログラムコード転送要求処理の処理手順である。
【００４２】
ユーザ操作検知手段２１０において、プログラムを動作対象となる端末へ転送要求するユーザ操作が検知されると、プログラムコード転送要求手段２１５の処理が開始され（Ｓ２１５１）、プログラム開発支援サーバ３００に対して、作成したプログラムコードの転送要求５００（図９）を送信する（Ｓ２１５２）。
【００４３】
転送要求５００は、転送要求を識別する転送要求ヘッダー５０１と、転送要求を一意に識別する転送要求ＩＤ５０２と、転送するプログラムコードを管理するプロジェクトを識別するプロジェクトＩＤ５０３と、転送するプログラムの識別子のリストを表す転送プログラムＩＤリスト５０４から構成される。Ｓ２１５２では、転送要求ＩＤを生成し、現在開いているプロジェクトのプロジェクトＩＤ、および現在開いているプロジェクトに属するプログラムコードに対応するプログラムＩＤのリストを、転送要求５００のプロジェクトＩＤ５０３、転送プログラムＩＤリスト５０４のそれぞれに設定し、プログラム開発支援サーバ３００に対して転送要求５００を送信する。次に、プログラム開発支援サーバ３００からの転送要求に対する、動作端末からの転送応答５１０（図１０）を受信する（Ｓ２１５３）。
【００４４】
転送応答５１０は、転送応答を識別する転送応答ヘッダー５１１と、転送要求を一意に識別する転送要求ＩＤ５１２と、転送要求の処理結果を表す転送結果５１３から構成される。そして、受信した転送応答５１０の転送結果５１３を確認し（Ｓ２１５４）、もし、転送結果が成功だった場合は、処理が成功した旨の表示を行い（Ｓ２１５５）、処理を終了する（Ｓ２１５７）。もし、転送結果が失敗だった場合は、処理が失敗した旨の表示を行い（Ｓ２１５６）、処理を終了する（Ｓ２１５７）。
【００４５】
図１１は、プログラム開発支援サーバの制御部３０３において、プログラム開発支援端末２００のプログラム転送要求手段２１５によって送信された転送要求を検知した場合に行うプログラム転送手段３１２の処理手順である。
【００４６】
プログラム開発支援端末２００から送信されたプログラム転送要求を検知すると、プログラム転送手段３１２の処理が開始され（Ｓ３１２１）、プログラム開発支援端末２００からの転送要求５００を受信する（Ｓ３１２２）。転送要求５００を受信すると、転送要求５００のプロジェクトＩＤ５０３、および転送プログラムＩＤリスト５０４を元に、プログラムコードＤＢ６００から、転送先の端末ＩＤのリストを作成する（Ｓ３１２３）。そして、作成した端末ＩＤリストの各端末ＩＤに対して（Ｓ３１２４）、プログラムコードＤＢ６００から対応するプログラムコードデータを取得し、端末情報ＤＢ７００の端末リスト７１０から環境Ｖｅｒ７１４を取得する。そして、動作しないプログラムコードを削除したり、端末ＩＤ、所属組織ＩＤ、利用者ＩＤ、グループＩＤで記載されているプログラムコードを、より具体的な情報、すなわち、端末の電話番号や、メールアドレスといった端末情報に置換する加工を行う。次に、そのプログラムコードを端末上で実行できる形式に変換し、その変換結果を対応する動作端末に対して送信する（Ｓ３１２５）という処理を繰り返し実行する（Ｓ３１２４）。そして、プログラムコード送信を繰り返し行った結果を確認し（Ｓ３１２６）、全て送信に成功した場合は、Ｓ３１２２で受信した転送要求５００の転送要求ＩＤ５０２を、転送応答５１０の転送要求ＩＤ５１２に設定し、転送結果５１３に「処理成功」を設定して、転送要求送信元であるプログラム開発支援端末２００へ送信し（Ｓ３１２７）、処理を終了する（Ｓ３１２９）。また、Ｓ３１２５の処理のいずれかが失敗した場合には、Ｓ３１２５で行った転送処理を中断させ、Ｓ３１２２で受信した転送要求５００の転送要求ＩＤ５０２を、転送応答５１０の転送要求ＩＤ５１２に設定し、転送結果５１３に「処理失敗」を設定して、転送要求送信元であるプログラム開発支援端末２００へ送信し（Ｓ３１２８）、処理を終了する（Ｓ３１２９）。
【００４７】
図２０は、プログラム開発支援サーバ３００の制御部３０３において、プログラム開発支援サーバの記録部３０１に格納されている端末情報ＤＢ７００と、アカウント情報ＤＢ８００のいずれかが更新された場合に行う情報更新検知手段３１３の処理手順である。
【００４８】
プログラム開発支援サーバ３００が保持する端末情報ＤＢ７００と、アカウント情報ＤＢ８００のいずれかが更新されたことを検知すると、情報更新検知手段３１３の処理が開始され（Ｓ３１３１）、プログラム開発支援端末２００に対して、情報が更新されたことを表す情報更新通知５２０を通信部３０２を介して送信し（Ｓ３１３２）、処理を終了する（Ｓ３１３３）。Ｓ３１３２で送信される情報更新通知５２０は、図２０のように、情報更新通知であることを識別するための情報更新通知ヘッダー５２１と、複数個の更新ＤＢ種別５２２から構成される。更新ＤＢ種別５２２は、端末情報ＤＢ７００と、アカウント情報ＤＢ８００の中に存在する端末リスト７１０、端末情報リスト７２０、アカウントリスト８１０、所属情報リスト８２０、グループリスト８３０それぞれを識別するための識別子が格納され、１個以上が格納される。
【００４９】
図２２は、プログラム開発支援端末２００の制御部２０５において、プログラム開発支援サーバ３００から送信された情報更新通知５２０を検知した場合に行う情報更新通知手段２１６の処理手順である。
【００５０】
プログラム開発支援サーバ３００から情報更新通知５２０を受信したことを検知すると、情報更新通知手段２１６の処理が開始され（Ｓ２１６１）、プログラム開発支援端末２００の通信部２０４を介して情報更新通知５２０を受信する（Ｓ２１６２）。次に、情報更新通知５２０の更新ＤＢ種別５２２を元に、更新による表示の影響を受ける箇所を抽出し（Ｓ２１６３）、変更箇所の有無について確認する（Ｓ２１６４）。もし、更新箇所がない場合には、処理を終了する（Ｓ２１６６）。もし更新箇所がある場合には、編集画面表示処理を実行し（Ｓ２１６５）、処理を終了する（Ｓ２１６６）。
【００５１】
図１５は、プログラム開発支援端末２００の制御部２０５において、プロジェクト管理手段２１１、プログラムコード編集手段２１４、情報更新通知手段２１６から実行される編集画面表示手段２１２の処理手順である。
【００５２】
プログラム開発支援端末２００のプロジェクト管理手段２１１、プログラムコード編集手段２１４、情報更新通知手段２１６のいずれかから呼び出されると、編集画面表示手段２１６の処理が開始され（Ｓ２１６１）、編集画面の描画対象毎、すなわち、図２３のようにプログラムとして利用できるテンプレート部品エリア上のプログラム部品や、プログラムエリアに配置されたプログラム部品それぞれに対して以下の処理を繰り返し実行する（Ｓ２１２２）。まず、対象のプログラム部品が利用可否判断処理を実行し（Ｓ２１２３）、その処理結果を確認する（Ｓ２１２４）（利用可否判断処理の詳細は図１６、図１７、図１８、図１９で説明する）。
【００５３】
利用可という結果であれば、マウスやタッチ操作で選択、ドロップなどの操作が行える状態とし、色も変更せずに表示を行い（Ｓ２１２５）、まだ描画対象が存在すればループを繰り返す（Ｓ２１２２）。利用不可という結果であれば、マウスやタッチ操作で選択、ドロップなどの操作が行えない状態とし、図２４のようなグレーアウト表示を行い（Ｓ２１２６）、まだ処理を実行していない描画対象が存在すればループを繰り返す（Ｓ２１２２）。そして、処理を実行していない描画対象が存在しなくなったら、処理を終了する（Ｓ２１２７）。
【００５４】
なお、図２５のように、プログラム部品から構成されるプログラムブロックを矩形で囲み、それぞれの矩形内のプログラムブロックがプログラムとして登録される構成でも構わない。このとき、それぞれの矩形には端末ＩＤ，所属組織ＩＤ、利用者ＩＤ、グループＩＤが割り当てられて、該当する端末に対してプログラムを転送する処理としてもよい。さらに、ＳＭＳ送信・受信、Ｅメール送信・受信といった端末間での連携が取りえる機能については、その機能に該当するプログラム部品同士を線で結ぶことによって、宛先や受信条件が自動的に指定されるようにしても構わない。
【００５５】
図１６は、プログラム開発支援端末２００の制御部２０５において、編集画面表示手段２１２、プログラムコード編集手段２１４から実行される利用可否判断手段２１３の処理手順である。
【００５６】
プログラム開発支援端末２００の編集画面表示手段２１２、プログラムコード編集手段２１４のいずれかから呼び出されると、利用可否判断手段２１３の処理が開始される（Ｓ２１３１）。まず、実行される端末の動作環境の状況を確認する環境Ｖｅｒ判定処理（詳細は図１７で説明する）を実行する（Ｓ２１３２）。
【００５７】
次に、端末の機能として利用可能かを確認する利用条件判定処理（詳細は図１８で説明する）を実行する（Ｓ２１３３）。
【００５８】
次に、作成者が機能を利用することができるかを確認する機能制限判定処理(詳細は図１９で説明する）を実行する（Ｓ２１３４）。
【００５９】
Ｓ２１３２、Ｓ２１３３、Ｓ２１３４の処理全ての処理結果を確認し（Ｓ２１３５）、全ての処理結果が「利用可」であった場合、戻り値を「利用可」と設定し（Ｓ２１３６）、処理を終了する（Ｓ２１３８）。Ｓ２１３２、Ｓ２１３３、Ｓ２１３４いずれかの処理結果が「利用不可」であった場合、戻り値を「利用不可」と設定し（Ｓ２１３７）、処理を終了する（Ｓ２１３８）。
【００６０】
図１７は、プログラム開発支援端末２００の制御部２０５の利用可否判断手段２１３において、利用可否判断手段２１３から実行される環境Ｖｅｒ判定処理の処理手順である。  プログラム開発支援端末２００の利用可否判断手段２１３から呼び出されると、環境Ｖｅｒ判定処理が開始され（Ｓ２１３２１）、該当するプログラム部品が対応する環境Ｖｅｒの情報である対応Ｖｅｒを取得する（Ｓ２１３２２）。
【００６１】
そして、端末情報ＤＢ７００より、プログラムをデプロイする対象となりえる端末全ての環境Ｖｅｒ情報を取得し（Ｓ２１３２３）、Ｓ２１３２２で取得した対応ＶｅｒとＳ２１３２３で取得した環境Ｖｅｒを比較し、プログラム部品が利用可能かを確認する（Ｓ２１３２４）。処理結果が「利用可」であった場合、戻り値を「利用可」と設定し（Ｓ２１３２５）、処理を終了する（Ｓ２１３２７）。もし、処理結果が「利用不可」であった場合、戻り値を「利用不可」と設定し（Ｓ２１３２６）、処理を終了する（Ｓ２１３２７）。
【００６２】
なお、本実施例のＳ２１３２４では、下位互換は保たれたまま動作端末の環境Ｖｅｒが更新されることを想定し、動作端末の環境Ｖｅｒの最小値と、対応Ｖｅｒとの大小比較により、対応Ｖｅｒが環境Ｖｅｒ以下であれば利用可と判定しているが、特定のＶｅｒでのみ動作するプログラム部品の場合には、特定のＶｅｒ内に全てが一致するかを確認することで利用可否を判定する判定方法でも構わない。
【００６３】
図１８は、プログラム開発支援端末２００の制御部２０５の利用可否判断手段２１３において、利用可否判断手段２１３から実行される利用条件判定処理の処理手順である。
【００６４】
プログラム開発支援端末２００の利用可否判断手段２１３から呼び出されると、利用条件判定処理が開始され（Ｓ２１３３１）、まず、該当するプログラム部品が利用できる端末情報の条件を取得する（Ｓ２１３３２）。そして、端末情報ＤＢより、プログラムをデプロイする対象となりえる端末全ての詳細端末情報を取得し（Ｓ２１３３３）、Ｓ２１３３２で取得した端末情報の条件に、Ｓ２１３３３で取得した詳細端末情報が合致するかを確認する（Ｓ２１３３４）。その結果、条件が合致した場合、戻り値を「利用可」と設定し（Ｓ２１３３５）、処理を終了する（Ｓ２１３３７）。もし、条件に合致しなかった場合、戻り値を「利用不可」と設定し（Ｓ２１３３６）、処理を終了する（Ｓ２１３３７）。
【００６５】
図１９は、プログラム開発支援端末２００の制御部２０５の利用可否判断手段２１３において、利用可否判断手段２１３から実行される機能利用制限判定処理の処理手順である。
【００６６】
プログラム開発支援端末２００の利用可否判断手段２１３から呼び出されると、機能利用制限判定処理が開始され（Ｓ２１３４１）、該当するプログラム部品が所属する機能グループ情報を取得する（Ｓ２１３４２）。そして、アカウント情報ＤＢ８００より、プログラムをデプロイする対象となりえる端末全ての所有者が持つ権限情報を取得し（Ｓ２１３４３）、機能を利用するための権限があるかを確認する（Ｓ２１３４４）。その結果、権限があると判定された場合、戻り値を「利用可」と設定し（Ｓ２１３４５）、処理を終了する（Ｓ２１３４７）。もし、権限がないと判定された場合、戻り値を「利用不可」と設定し（Ｓ２１３４６）、処理を終了する（Ｓ２１３４７）。
【００６７】
本実施例の利用可否判断手段２１３の処理手順では、環境Ｖｅｒ判定処理、利用条件判定処理、機能制限判定処理という順序で判定を行う構成としていたが、判定処理の順序を入れ変えた構成としても構わない。また、例えば、センサー値を収集するコントローラのように、利用者自体が設定されずに利用される場合では、端末情報ＤＢ７００内のアカウント情報（端末リスト７１０の利用者ＩＤ７１２や所属組織ＩＤ７１３）を設定しないようにし、機能制限判定処理を実行しないような構成にしても構わない。
【００６８】
また、プログラム開発支援サーバ３００内の管理データ３１１を解析し、入力したプログラムブロックの後に、利用されるプログラムブロックの関連性を数値化し、それを元に図３０のような候補部品を表示する構成にしてもかまわない。
【００６９】
前述の構成より変更された構成、処理について、図２６、図２７、図２８、図２９を用いて説明する。
【００７０】
図２６は、プログラム開発支援システム１００が有する機能の構成を示すブロック図である。図４と比較し、管理データ３１１の中には、現在入力したプログラムブロックと、次に使用されるプログラムブロックの関連性を、開発中のユーザが過去に開発したプログラム、もしくは、他のユーザが入力したプログラム、もしくはその両方を元に解析したデータが格納されている関連情報ＤＢ９００が追加され、プログラム編集手段２１４から参照される構成に変更されている。
【００７１】
図２７は、管理データ３１１の中に格納される関連情報ＤＢ９００のデータ構成を示す図である。関連情報ＤＢ９００は、複数のプログラムブロック関連リスト９１０から成り、プログラムブロック関連リスト９１０の各レコードは、先に入力されたプログラムブロックを表すプログラムブロック９１１と、その後に入力される関連があるプログラムブロックを表す関連プログラムブロック９１２と、その関連性を数値化したレート９１３から構成される。プログラムブロック９１１および関連プログラムブロック９１２は、図２７のように、プログラム部品名をそのまま文字列として格納されているが、プログラム部品に対応した一意の数値が格納される構成でもかまわない。レート９１３は、値が大きければ大きいほど（１に近ければ近いほど）関連性が高く、逆に値が小さければ小さいほど（０に近ければ近いほど）、関連性が低い値になる。また、プログラムブロック関連リスト９１０は、各開発者アカウント毎に算出される。
【００７２】
図２８は、プログラム開発支援端末２００の制御部２０５のユーザ操作検知手段２１０において、プログラムコードを編集したことを検知した場合に行うプログラムコード編集手段２１４ａのプログラムコード編集処理の処理手順である。
【００７３】
図７と比較し、図７の編集画面表示処理Ｓ２１４５の後に、候補部品表示処理Ｓ２１４ａ７が追加された点が異なっている。追加された候補部品表示処理Ｓ２１４ａ７によって、図３０のような候補部品を表示する処理が動作する。
【００７４】
図２９は、候補部品表示処理２１４ａ７の処理手順を表すフローチャートである。
【００７５】
本処理が起動されると、まずプログラム開発支援端末２００の通信部２０４を用いて、プログラム開発支援サーバ３００と通信し、プログラム開発支援サーバ３００が保持する管理情報３１１内の関連情報ＤＢ９００の中から、プログラムブロック関連リスト９１０のプログラムブロック９１１のカラムが、現在入力されたプログラムブロックと一致するレコード全てを取得し、その中から、基準値以上のレートをもつレコードのみを抽出する。（Ｓ２１４ａ７２）例えば、基準値を０．５とし、現在入力されたプログラムブロックが「ｓｃｒｅｅｎ＿ｕｎｋｏｃｋ」とし、プログラムブロック関連リスト９１０が図２７の通りだったと仮定すると、本処理Ｓ２１４ａ７１では、関連プログラムブロック９１２が「ｎｏｔｉｆｉｃａｔｉｏｎ」と「ａｌｅｒｔ」であるレコードが抽出される。
【００７６】
次に、Ｓ２１４ａ７２で取得したレコードの関連プログラムブロック９１２の値に対して、（Ｓ２１４ａ７３）、利用可否判断処理を行い（Ｓ２１４ａ７４）、Ｓ２１４ａ７４の結果が「利用可」かどうかを判断し（Ｓ２１４ａ７５）、「利用可」の場合には、候補部品リストに追加する（Ｓ２１４ａ７６）処理を繰り返す。なお、利用可否判断処理Ｓ２１４ａ７４は、図７のＳ２１４３と同じ処理になる。
【００７７】
そして、最後に候補部品リストに、１つでも格納されていれば、図３０のように候補部品を表示し（Ｓ２１４ａ７７）、本処理を終える（Ｓ２１４ａ７８）。
【００７８】
以上のような構成、処理により、開発者が入力したプログラムブロックの後に続く確率の高いプログラムブロックの候補を表示し、入力の手間を省き、また、実績のあるプログラムを容易に開発することが可能となる。
【００７９】
なお、本実施例では、プログラムブロック関連リスト９１０の各レコードには、単一のプログラムブロックを前提に説明したが、複数のプログラムブロックから構成されたものとの関連度を算出する構成としてもかまわない。
【００８０】
また、本実施例では、プログラムコードは、プログラム部品という画面部品を組み合わせて構築する構成としていたが、プログラム言語を用いて記述された文字列として表現されている場合でも構わない。その場合は、プログラム部品に対応するものが、プログラム言語で記述された文字列を構文解析した結果に対応させればよい。
【００８１】
本実施例では、プログラム開発支援システム１００は、プログラムコード、端末情報、アカウント情報をプログラム開発支援サーバ３００で保存する構成としていたが、これらの情報をプログラム開発支援端末２００でも一部分散させて保存したり、キャッシュとしてプログラム開発支援端末２００でも保持させる構成でも構わない。さらに、少なくとも端末情報またはアカウント情報をプログラム開発支援サーバ３００とは別のサーバに保存させる構成にしても構わない。
【００８２】
また、本実施例では、プログラム開発支援システム１００は、プログラム開発支援端末２００と、プログラム開発支援サーバ３００と分かれる構成としていたが、１つのプログラム開発支援装置として実装される構成でも構わない。
【符号の説明】
【００８３】
１００  プログラム開発支援システム
２００  プログラム開発支援端末
３００  プログラム開発支援サーバ
４００  動作端末
６００  プログラムコードＤＢ
７００  端末情報ＤＢ
８００  アカウント情報ＤＢ
【図１】
2014203226.tif 000003
【図２】
2014203226.tif 000004
【図３】
2014203226.tif 000005
【図４】
2014203226.tif 000006
【図５】
2014203226.tif 000007
【図６】
2014203226.tif 000008
【図７】
2014203226.tif 000009
【図８】
2014203226.tif 000010
【図９】
2014203226.tif 000011
【図１０】
2014203226.tif 000012
【図１１】
2014203226.tif 000013
【図１２】
2014203226.tif 000014
【図１３】
2014203226.tif 000015
【図１４】
2014203226.tif 000016
【図１５】
2014203226.tif 000017
【図１６】
2014203226.tif 000018
【図１７】
2014203226.tif 000019
【図１８】
2014203226.tif 000020
【図１９】
2014203226.tif 000021
【図２０】
2014203226.tif 000022
【図２１】
2014203226.tif 000023
【図２２】
2014203226.tif 000024
【図２３】
2014203226.tif 000025
【図２４】
2014203226.tif 000026
【図２５】
2014203226.tif 000027
【図２６】
2014203226.tif 000028
【図２７】
2014203226.tif 000029
【図２８】
2014203226.tif 000030
【図２９】
2014203226.tif 000031
【図３０】
2014203226.tif 000032