(57)【特許請求の範囲】
【請求項１】
プログラムと、ユーザ識別子と、ユーザ識別子に対応付けられたユーザパスワードとを含んだプログラムセットを記憶するプログラムセット記憶部と、
ユーザの認証識別子と前記ユーザの認証パスワードとを取得するユーザ情報取得部と、
前記ユーザ情報取得部によって取得された前記認証パスワードが前記ユーザ情報取得部によって取得された前記認証識別子と同じユーザ識別子に対応付けられたユーザパスワードと同じ場合に前記ユーザを認証するユーザ認証部と、
前記ユーザ認証部によって前記ユーザが認証された場合、前記ユーザの指示に基づいて前記プログラムセットに含まれる前記プログラムを編集するプログラム編集部とを備え、
前記プログラムセットは、ユーザ識別子に対応付けられた許可フラグと有効フラグとを含み、
前記ユーザ認証部は、前記認証識別子と同じユーザ識別子に対応付けられた有効フラグが無効を示して、前記認証パスワードが前記認証識別子と同じユーザ識別子に対応付けられたユーザパスワードと同じ場合と、前記有効フラグが有効を示して、前記認証識別子と同じユーザ識別子に対応付けられた許可フラグが許可を示す場合に、前記ユーザを認証する
プログラム編集装置。
【請求項２】
前記ユーザ情報取得部は、前記ユーザのログイン識別子と前記ユーザのログインパスワードとをユーザ情報として取得し、
前記プログラム編集装置は、
前記ユーザ情報取得部によって取得された前記ユーザ情報をプログラム管理装置に送信するユーザ情報送信部と、
前記ユーザ情報送信部によって送信された前記ユーザ情報に基づいて前記ユーザが認証された場合に前記プログラム管理装置から送信されるアップロード許可通知を受信するアップロード許可受信部と、
前記アップロード許可受信部によって前記アップロード許可通知が受信された場合、前記プログラム編集部によって編集されたプログラムを含んだ前記プログラムセットを前記プログラム管理装置に送信するプログラムセット送信部とを備える
ことを特徴とする請求項１に記載のプログラム編集装置。
【請求項３】
プログラムを含んだプログラムセットと、ユーザ識別子とユーザ識別子に対応付けられたユーザパスワードとを含んだユーザ管理テーブルとを記憶する管理装置記憶部と、
前記プログラムを編集するプログラム編集装置から、ユーザのログイン識別子と前記ユーザのログインパスワードとを受信するユーザ情報受信部と、
前記ユーザ情報受信部によって受信された前記ログインパスワードが前記ユーザ情報受信部によって受信された前記ログイン識別子と同じユーザ識別子に対応付けられたユーザパスワードと同じ場合に前記ユーザを認証するユーザ認証部と、
前記ユーザ認証部によって前記ユーザが認証された場合、アップロードの許可を通知するアップロード許可通知を前記プログラム編集装置に送信するアップロード許可通知部と、
プログラムとユーザ識別子とユーザパスワードとを含んだプログラムセットを前記プログラム編集装置から受信するプログラムセット受信部と、
前記プログラムセット受信部によって受信された前記プログラムセットによって、前記管理装置記憶部に記憶された前記プログラムセットを更新するプログラムセット更新部と、
前記ユーザ管理テーブルに含まれるユーザ識別子のうちの前記ログイン識別子と同じユーザ識別子と、前記ログイン識別子と同じユーザ識別子に対応付けられたユーザパスワードとを、前記プログラムセット受信部によって受信された前記プログラムセットに含まれる前記ユーザ識別子と前記ユーザパスワードとによって更新するユーザ管理テーブル更新部と
を備えることを特徴とするプログラム管理装置。
【請求項４】
前記ユーザ管理テーブルは、ユーザ識別子に対応付けられた認証フラグを含み、
前記ユーザ認証部は、前記ユーザが認証された場合、前記ログイン識別子と同じユーザ識別子に対応付けられた認証フラグに認証を示す認証値を設定し、
前記プログラムセット更新部は、前記ログイン識別子と同じユーザ識別子に対応付けられた認証フラグが前記認証値を示す場合に前記プログラムセットを更新し、
前記ユーザ管理テーブル更新部は、前記認証フラグが前記認証値を示す場合に前記ユーザ識別子と前記ユーザパスワードとを更新する
ことを特徴とする請求項３に記載のプログラム管理装置。
【請求項５】
前記ユーザ情報受信部は、新たなログイン識別子と新たなログインパスワードとを前記プログラム編集装置から受信し、
前記ユーザ認証部は、前記新たなログインパスワードが前記新たなログイン識別子と同じユーザ識別子に対応付けられたユーザパスワードと同じ場合に前記ユーザを認証し、
前記プログラム管理装置は、
前記ユーザが認証された場合、更新されたプログラムセットに前記更新されたプログラムセットに含まれるプログラムの編集の許可を示す許可フラグを設定するフラグ設定部と、
前記許可フラグが設定された前記更新されたプログラムセットを前記プログラム編集装置に送信するプログラムセット送信部とを備える
ことを特徴とする請求項３に記載のプログラム管理装置。
【請求項６】
プログラムを含んだプログラムセットと、ユーザ識別子とユーザ識別子に対応付けられたユーザパスワードとを含んだユーザ管理テーブルとを記憶する記憶部を用いるプログラム管理プログラムであって、
前記プログラムを編集するプログラム編集装置から、ユーザのログイン識別子と前記ユーザのログインパスワードとを受信するユーザ情報受信処理と、
前記ユーザ情報受信処理によって受信された前記ログインパスワードが前記ユーザ情報受信処理によって受信された前記ログイン識別子と同じユーザ識別子に対応付けられたユーザパスワードと同じ場合に前記ユーザを認証するユーザ認証処理と、
前記ユーザ認証処理によって前記ユーザが認証された場合、アップロードの許可を通知するアップロード許可通知を前記プログラム編集装置に送信するアップロード許可通知処理と、
プログラムとユーザ識別子とユーザパスワードとを含んだプログラムセットを前記プログラム編集装置から受信するプログラムセット受信処理と、
前記プログラムセット受信処理によって受信された前記プログラムセットによって、前記記憶部に記憶された前記プログラムセットを更新するプログラムセット更新処理と、
前記ユーザ管理テーブルに含まれるユーザ識別子のうちの前記ログイン識別子と同じユーザ識別子と、前記ログイン識別子と同じユーザ識別子に対応付けられたユーザパスワードとを、前記プログラムセット受信処理によって受信された前記プログラムセットに含まれる前記ユーザ識別子と前記ユーザパスワードとによって更新するユーザ管理テーブル更新処理と
をコンピュータに実行させるためのプログラム管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの管理に関するものである。
【背景技術】
【０００２】
近年、プログラマブルロジックコントローラ（ＰＬＣ）の制御プログラムをサーバで管理し、サーバで管理される制御プログラムをネットワーク経由で編集可能にする仕組みが提供されている。
ユーザは制御プログラムの編集に必要なアカウント情報をサーバに入力し、認証が成功したときに制御プログラムのダウンロード、閲覧および編集が可能となる。これにより、普段はクライアント端末に制御プログラムを保持する必要がなく、制御プログラムの漏えいを防ぐことができる。しかし、この方式はネットワークが利用できない環境では利用できない。【０００３】
特許文献１は、特定のＰＬＣでのみ制御プログラムを動作させる方式を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１６５０４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、不正者からプログラムの保護できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明のプログラム編集装置は、
プログラムと、ユーザ識別子と、ユーザ識別子に対応付けられたユーザパスワードとを含んだプログラムセットを記憶するプログラムセット記憶部と、
ユーザの認証識別子と前記ユーザの認証パスワードとを取得するユーザ情報取得部と、
前記ユーザ情報取得部によって取得された前記認証パスワードが前記ユーザ情報取得部によって取得された前記認証識別子と同じユーザ識別子に対応付けられたユーザパスワードと同じ場合に前記ユーザを認証するユーザ認証部と、
前記ユーザ認証部によって前記ユーザが認証された場合、前記ユーザの指示に基づいて前記プログラムセットに含まれる前記プログラムを編集するプログラム編集部とを備える。
【発明の効果】
【０００７】
本発明によれば、不正者からプログラムを保護することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１におけるプログラム管理システム１００の構成図である。
【図２】実施の形態１における開発コンピュータ３００の機能構成図である。
【図３】実施の形態１における開発コンピュータ３００のユーザ情報管理部３１０の機能構成図である。
【図４】実施の形態１における開発コンピュータ３００のプログラムセット管理部３２０の機能構成図である。
【図５】実施の形態１における開発コンピュータ３００のダウンロード部３３０の機能構成図である。
【図６】実施の形態１における開発コンピュータ３００のアップロード部３４０の機能構成図である。
【図７】実施の形態１における管理サーバ２００の機能構成図である。
【図８】実施の形態１における管理サーバ２００のダウンロード部２４０の機能構成図である。
【図９】実施の形態１における管理サーバ２００のアップロード部２５０の機能構成図である。
【図１０】実施の形態１におけるコントローラ４００の機能構成図である。
【図１１】実施の形態１におけるプログラムセット１１０のダウンロードの手順を示すフローチャートである。
【図１２】実施の形態１における管理サーバ２００のユーザ認証処理（Ｓ１２０）のフローチャートである。
【図１３】実施の形態１における管理サーバ２００のユーザ管理テーブル２８０の一例を示す図である。
【図１４】実施の形態１における管理サーバ２００のプログラムセット送信処理（Ｓ１３５）のフローチャートである。
【図１５】実施の形態１におけるプログラムセット１１０の一例を示す図である。
【図１６】実施の形態１におけるプログラムセット１１０のユーザ管理テーブル１１２の一例を示す図である。
【図１７】実施の形態１におけるプログラムセット１１０のユーザ管理テーブル１１２の一例を示す図である。
【図１８】実施の形態１におけるプログラムセット１１０に含まれるソースプログラム１１１の編集の手順を示すフローチャートである。
【図１９】実施の形態１における開発コンピュータ３００のユーザ認証処理（Ｓ２２０）のフローチャートである。
【図２０】実施の形態１におけるプログラムセット１１０のアップロードの手順を示すフローチャートである。
【図２１】実施の形態１におけるコントローラＩＤ登録処理（Ｓ３４０）のフローチャートである。
【図２２】実施の形態１におけるプログラムセット１１０のユーザ管理テーブル１１２の一例を示す図である。
【図２３】実施の形態１におけるプログラムセット更新処理（Ｓ３６０）のフローチャートである。
【図２４】実施の形態１における管理サーバ２００のユーザ管理テーブル２８０の一例を示す図である。
【図２５】実施の形態１における管理サーバ２００、開発コンピュータ３００およびコントローラ４００のハードウェア構成図である。
【発明を実施するための形態】
【０００９】
実施の形態１．
プログラムを管理するプログラム管理システムについて説明する。
【００１０】
図１は、実施の形態１におけるプログラム管理システム１００の構成図である。
実施の形態１におけるプログラム管理システム１００の構成について、図１に基づいて説明する。但し、プログラム管理システム１００の構成は図１と同一の構成でなくても構わない。
【００１１】
プログラム管理システム１００は、ソースプログラムを含んだプログラムセット１１０を管理するシステムである。
プログラム管理システム１００は、管理サーバ２００（プログラム管理装置の一例）と、開発コンピュータ３００（プログラム編集装置の一例）と、コントローラ４００（プログラム実行装置の一例）とを備える。
【００１２】
管理サーバ２００は、プログラムセット１１０を管理する装置である。プログラムセット１１０はソースプログラムを含んだ電子ファイルである。例えば、ソースプログラムはラダーコードで記述されたラダープログラムである。
開発コンピュータ３００は、プログラムセット１１０に含まれるソースプログラムを編集し、ソースプログラムを実行プログラム１２０に変換する装置である。実行プログラム１２０は実行形式のプログラムである。例えば、実行プログラムはマシンコードで記述されたプログラムである。
コントローラ４００は、実行プログラム１２０を実行する装置である。例えば、コントローラ４００はプログラマブルロジックコントローラ（ＰＬＣ）である。
【００１３】
開発コンピュータ３００は通信回線１０１を介して管理サーバ２００と通信する。例えば、通信回線１０１はローカルエリアネットワーク（ＬＡＮ）またはインターネットなどのネットワークである。
開発コンピュータ３００は通信回線１０２を介してコントローラ４００と通信する。例えば、通信回線１０２はＵＳＢケーブルまたはＬＡＮケーブルなどの通信ケーブルである。ＵＳＢはＵｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓの略称である。
【００１４】
図２は、実施の形態１における開発コンピュータ３００の機能構成図である。
実施の形態１における開発コンピュータ３００の機能構成について、図２に基づいて説明する。但し、開発コンピュータ３００の機能構成は図２と同一の機能構成でなくても構わない。
【００１５】
開発コンピュータ３００（プログラム編集装置の一例）は、ユーザ情報管理部３１０と、プログラムセット管理部３２０と、ダウンロード部３３０と、アップロード部３４０とを備える。また、開発コンピュータ３００はコンピュータ記憶部３９０（プログラムセット記憶部の一例）を備える。
【００１６】
ユーザ情報管理部３１０は、ユーザを認証するために必要なユーザ情報を管理する。ユーザ情報はユーザを識別するユーザＩＤ（ユーザ識別子の一例）と、ユーザＩＤに対応付けられるユーザパスワードとを含む。ＩＤは識別子を意味する。
プログラムセット管理部３２０は、ソースプログラムの編集、ソースプログラムの変換およびユーザ情報の登録など、プログラムセット１１０の管理を行う。
ダウンロード部３３０は、プログラムセット１１０を管理サーバ２００からダウンロードする。
アップロード部３４０は、編集されたソースプログラムを含んだプログラムセット１１０を管理サーバ２００にアップロードする。
【００１７】
コンピュータ記憶部３９０は、開発コンピュータ３００が使用、生成または入出力するデータを記憶する。
例えば、コンピュータ記憶部３９０はプログラムセット１１０を記憶する。
【００１８】
図３は、実施の形態１における開発コンピュータ３００のユーザ情報管理部３１０の機能構成図である。
実施の形態１における開発コンピュータ３００のユーザ情報管理部３１０の機能構成について、図３に基づいて説明する。但し、ユーザ情報管理部３１０は図３と同一の機能構成でなくても構わない。
【００１９】
ユーザ情報管理部３１０は、ユーザ情報取得部３１１と、ユーザ情報送信部３１２と、ユーザ認証部３１３とを備える。
ユーザ情報取得部３１１は、ユーザが開発コンピュータ３００に入力するユーザ情報を取得する。
ユーザ情報送信部３１２は、ユーザ情報取得部３１１によって取得されたユーザ情報を管理サーバ２００に送信する。
ユーザ認証部３１３は、ユーザ情報取得部３１１によって取得されたユーザ情報とプログラムセット１１０に登録されたユーザ情報とに基づいて、ユーザを認証する。
【００２０】
図４は、実施の形態１における開発コンピュータ３００のプログラムセット管理部３２０の機能構成図である。
実施の形態１における開発コンピュータ３００のプログラムセット管理部３２０の機能構成について、図４に基づいて説明する。但し、プログラムセット管理部３２０は図４と同一の機能構成でなくても構わない。
【００２１】
プログラムセット管理部３２０は、プログラム編集部３２１と、プログラム変換部３２２と、実行プログラム送信部３２３と、ユーザ情報登録部３２４と、コントローラＩＤ登録部３２５とを備える。
プログラム編集部３２１は、プログラムセット１１０に含まれるソースプログラムをユーザの指示に従って編集する。
プログラム変換部３２２は、プログラムセット１１０に含まれるソースプログラムを実行プログラム１２０に変換する。
実行プログラム送信部３２３は、実行プログラム１２０をコントローラ４００に送信する。
ユーザ情報登録部３２４は、ユーザ情報をプログラムセット１１０に登録する。
コントローラＩＤ登録部３２５は、コントローラ４００を識別するコントローラＩＤ（実行装置識別子の一例）をコントローラ４００から取得し、コントローラＩＤをプログラムセット１１０に登録する。
【００２２】
図５は、実施の形態１における開発コンピュータ３００のダウンロード部３３０の機能構成図である。
実施の形態１における開発コンピュータ３００のダウンロード部３３０の機能構成について、図５に基づいて説明する。但し、ダウンロード部３３０の機能構成は図５と同一の機能構成でなくても構わない。
【００２３】
ダウンロード部３３０は、ダウンロード許可受信部３３１と、プログラムセット要求部３３２と、プログラムセット受信部３３３とを備える。
ダウンロード許可受信部３３１は、プログラムセット１１０のダウンロードの許可を通知するダウンロード許可通知を管理サーバ２００から受信する。
プログラムセット要求部３３２は、プログラムセット１１０を管理サーバ２００に要求する。
プログラムセット受信部３３３は、管理サーバ２００から送信されるプログラムセット１１０を受信する。
【００２４】
図６は、実施の形態１における開発コンピュータ３００のアップロード部３４０の機能構成図である。
実施の形態１における開発コンピュータ３００のアップロード部３４０の機能構成について、図６に基づいて説明する。但し、アップロード部３４０の機能構成は図６と同一の機能構成でなくても構わない。
【００２５】
アップロード部３４０は、アップロード許可要求部３４１と、アップロード許可受信部３４２と、プログラムセット送信部３４３と、アップロード完了受信部３４４とを備える。
アップロード許可要求部３４１は、プログラムセット１１０のアップロードの許可を管理サーバ２００に要求する。
アップロード許可受信部３４２は、プログラムセット１１０のアップロードの許可を通知するアップロード許可通知を管理サーバ２００から受信する。
プログラムセット送信部３４３は、プログラムセット１１０を管理サーバ２００に送信する。
アップロード完了受信部３４４は、プログラムセット１１０のアップロードの完了を通知するアップロード完了通知を受信する。
【００２６】
図７は、実施の形態１における管理サーバ２００の機能構成図である。
実施の形態１における管理サーバ２００の機能構成について、図７に基づいて説明する。但し、管理サーバ２００の機能構成は図７と同一の機能構成でなくても構わない。
【００２７】
管理サーバ２００（プログラム管理装置の一例）は、要求受信部２１０と、ユーザ情報受信部２２０と、ユーザ認証部２３０と、ダウンロード部２４０と、アップロード部２５０とを備える。また、管理サーバ２００は、サーバ記憶部２９０（管理装置記憶部の一例）を備える。
【００２８】
要求受信部２１０は、プログラムセット要求またはアップロード許可要求など、開発コンピュータ３００から送信される要求を受信する。
ユーザ情報受信部２２０は、開発コンピュータ３００から送信されるユーザ情報を受信する。
ユーザ認証部２３０は、ユーザ情報受信部２２０によって受信されたユーザ情報とユーザ管理テーブル２８０に含まれるユーザ情報とに基づいて、開発コンピュータ３００のユーザを認証する。
ダウンロード部２４０は、開発コンピュータ３００から要求されたプログラムセット１１０を開発コンピュータ３００に送信する。
アップロード部２５０は、開発コンピュータ３００から送信されるプログラムセット１１０を受信し、受信したプログラムセット１１０によってサーバ記憶部２９０に記憶されたプログラムセット１１０を更新する。また、アップロード部２５０は、受信したプログラムセット１１０に含まれるユーザ情報によってユーザ管理テーブル２８０に含まれるユーザ情報を更新する。
【００２９】
サーバ記憶部２９０は、管理サーバ２００が使用、生成または入出力するデータを記憶する。
例えば、サーバ記憶部２９０は、ユーザ管理テーブル２８０およびプログラムセット１１０などを記憶する。
【００３０】
図８は、実施の形態１における管理サーバ２００のダウンロード部２４０の機能構成図である。
実施の形態１における管理サーバ２００のダウンロード部２４０の機能構成について、図８に基づいて説明する。但し、ダウンロード部２４０の機能構成は図８と同一の機能構成でなくても構わない。
【００３１】
ダウンロード部２４０は、ダウンロード許可通知部２４１と、プログラムセット送信部２４２と、フラグ設定部２４３とを備える。
ダウンロード許可通知部２４１は、プログラムセット１１０のダウンロードの許可を通知するダウンロード許可通知を開発コンピュータ３００に送信する。
プログラムセット送信部２４２は、開発コンピュータ３００から要求されたプログラムセット１１０を開発コンピュータ３００に送信する。
フラグ設定部２４３は、ユーザが認証されたことを示す認証フラグをプログラムセット１１０に設定する。
【００３２】
図９は、実施の形態１における管理サーバ２００のアップロード部２５０の機能構成図である。
実施の形態１における管理サーバ２００のアップロード部２５０の機能構成について、図９に基づいて説明する。但し、アップロード部２５０の機能構成は図９と同一の機能構成でなくても構わない。
【００３３】
アップロード部２５０は、アップロード許可通知部２５１と、プログラムセット受信部２５２と、プログラムセット更新部２５３と、ユーザ管理テーブル更新部２５４と、アップロード完了通知部２５５とを備える。
アップロード許可通知部２５１は、プログラムセット１１０のアップロードの許可を通知するアップロード許可通知を開発コンピュータ３００に送信する。
プログラムセット受信部２５２は、開発コンピュータ３００から送信されるプログラムセット１１０を受信する。
プログラムセット更新部２５３は、受信されたプログラムセット１１０によってサーバ記憶部２９０に記憶されたプログラムセット１１０を更新する。
ユーザ管理テーブル更新部２５４は、受信されたプログラムセット１１０に含まれるユーザ情報によってユーザ管理テーブル２８０に含まれるユーザ情報を更新する。
アップロード完了通知部２５５は、プログラムセット１１０のアップロードの完了を通知するアップロード完了通知を開発コンピュータ３００に送信する。
【００３４】
図１０は、実施の形態１におけるコントローラ４００の機能構成図である。
実施の形態１におけるコントローラ４００の機能構成について、図１０に基づいて説明する。但し、コントローラ４００の機能構成は図１０と同一の機能構成でなくても構わない。
【００３５】
コントローラ４００（プログラム実行装置の一例）は、実行プログラム受信部４１０と、プログラム実行部４２０と、コントローラＩＤ通知部４３０とを備える。また、コントローラ４００はコントローラ記憶部４９０（実行プログラム記憶部）を備える。
【００３６】
実行プログラム受信部４１０は、開発コンピュータ３００から送信される実行プログラム１２０を受信する。
プログラム実行部４２０は、実行プログラム１２０を実行する。
コントローラＩＤ通知部４３０は、コントローラＩＤ４０１を開発コンピュータ３００に通知する。
【００３７】
図１１は、実施の形態１におけるプログラムセット１１０のダウンロードの手順を示すフローチャートである。
実施の形態１におけるプログラムセット１１０のダウンロードについて、図１１に基づいて説明する。但し、プログラムセット１１０のダウンロードの手順は図１１と同一の手順でなくても構わない。
【００３８】
Ｓ１１１において、開発コンピュータ３００のユーザ情報取得部３１１は、ユーザＩＤおよびユーザパスワードを入力するためのユーザ情報入力画面を、開発コンピュータ３００の表示装置に表示する。
ユーザは、入力装置を用いて、ユーザＩＤとユーザパスワードとをユーザ情報入力画面に入力する。例えば、入力装置はキーボードおよびマウスである。
そして、ユーザ情報取得部３１１は、入力されたユーザＩＤ（ログイン識別子の一例）およびユーザパスワード（ログインパスワードの一例）を取得する。
Ｓ１１１の後、処理はＳ１１２に進む。
【００３９】
Ｓ１１２において、開発コンピュータ３００のユーザ情報送信部３１２は、Ｓ１１１で取得されたユーザＩＤおよびユーザパスワードを管理サーバ２００に送信する。
Ｓ１１２の後、処理はＳ１１３に進む。
【００４０】
Ｓ１１３において、管理サーバ２００のユーザ情報受信部２２０は、Ｓ１１２で送信されたユーザＩＤおよびユーザパスワードを受信する。
Ｓ１１３の後、処理はＳ１２０に進む。
【００４１】
図１２は、実施の形態１における管理サーバ２００のユーザ認証処理（Ｓ１２０）のフローチャートである。
実施の形態１における管理サーバ２００のユーザ認証処理（Ｓ１２０）について、図１２に基づいて説明する。但し、ユーザ認証処理（Ｓ１２０）は図１２に示す処理と同一でなくても構わない。
【００４２】
Ｓ１２１において、ユーザ認証部２３０は、Ｓ１１３で受信されたユーザＩＤと同じユーザＩＤが管理サーバ２００のユーザ管理テーブル２８０（図１３参照）に含まれるか判定する。ユーザ管理テーブル２８０に含まれるユーザＩＤのうち、Ｓ１１３で受信されたユーザＩＤと同じユーザＩＤを該当ＩＤという。
該当ＩＤがユーザ管理テーブル２８０に含まれる場合（ＶＡＬＩＤ）、処理はＳ１２２に進む。
該当ＩＤがユーザ管理テーブル２８０に含まれない場合（ＩＮＶＡＬＩＤ）、ユーザは認証されずにユーザ認証処理（Ｓ１２０）は終了する。
【００４３】
図１３は、実施の形態１における管理サーバ２００のユーザ管理テーブル２８０の一例を示す図である。
実施の形態１における管理サーバ２００のユーザ管理テーブル２８０の一例について、図１３に基づいて説明する。
ユーザ管理テーブル２８０は１つ以上のユーザ管理レコードを備える。図中の１行が１つのユーザ管理レコードに相当する。
ユーザ管理レコードはユーザＩＤを含む。さらに、ユーザ管理レコードは、ユーザＩＤに対応付けられたユーザパスワード（ユーザＰＷ）、コントロールＩＤ（ＣＴＲＬ  ＩＤ）および認証フラグなどを含む。
認証フラグは、ユーザＩＤによって識別されるユーザが認証されているか否かを示す情報である。ユーザが認証されていることを示すフラグ値を認証値といい、ユーザが認証されていないことを示すフラグ値を不認証値という。認証フラグの初期値は不認証値である。
該当ＩＤを含んだユーザ管理レコードを該当レコードという。
【００４４】
Ｓ１２２（図１２）において、ユーザ認証部２３０は、該当ＩＤを含んだユーザ管理レコード（該当レコード）をユーザ管理テーブル２８０から選択する。
ユーザ認証部２３０は、Ｓ１１３で受信されたユーザパスワードを該当レコードに含まれるユーザパスワードと比較する。
Ｓ１１３で受信されたユーザパスワードが該当レコードに含まれるユーザパスワードと同じである場合（ＶＡＬＩＤ）、処理はＳ１２３に進む。
Ｓ１１３で受信されたユーザパスワードが該当レコードに含まれるユーザパスワードと異なる場合（ＩＮＶＡＬＩＤ）、ユーザは認証されずにユーザ認証処理（Ｓ１２０）は終了する。
【００４５】
Ｓ１２３において、ユーザ認証部２３０は、該当レコードに含まれる認証フラグに認証値を設定する。
Ｓ１２３の後、ユーザ認証処理（Ｓ１２０）は終了する。
【００４６】
ユーザ認証処理（Ｓ１２０）の後、処理はＳ１３１（図１１）に進む。
【００４７】
Ｓ１３１（図１１）において、管理サーバ２００のダウンロード許可通知部２４１はダウンロード許可通知を生成し、ダウンロード許可通知を開発コンピュータ３００に送信する。
但し、ユーザ認証処理（Ｓ１２０）でユーザが認証されなかった場合、ダウンロード許可通知部２４１はエラー通知を開発コンピュータ３００に送信する。
Ｓ１３１の後、処理はＳ１３２に進む。
【００４８】
Ｓ１３２において、開発コンピュータ３００のダウンロード許可受信部３３１は、Ｓ１３１で送信されたダウンロード許可通知を受信し、ダウンロードが許可されたことを示す許可メッセージを開発コンピュータ３００の表示装置に表示する。
但し、Ｓ１３１でエラー通知が送信された場合、ダウンロード許可受信部３３１はエラーメッセージを表示し、Ｓ１３３以降の処理は行われずに図１１の手順は終了する。
Ｓ１３２の後、処理はＳ１３３に進む。
【００４９】
Ｓ１３３において、ユーザは、入力装置を用いて、ダウンロードしたいプログラムセット１１０を識別するプログラムセット名（プログラムセット識別子の一例）を開発コンピュータ３００に入力する。
開発コンピュータ３００のプログラムセット要求部３３２は、入力されたプログラムセット名を取得する。
プログラムセット要求部３３２は、取得したプログラムセット名とＳ１１１で取得されたユーザＩＤとを含むプログラムセット要求を生成し、プログラムセット要求を管理サーバ２００に送信する。
Ｓ１３３の後、処理はＳ１３４に進む。
【００５０】
Ｓ１３４において、管理サーバ２００の要求受信部２１０は、Ｓ１３３で送信されたプログラムセット要求を受信する。
Ｓ１３４の後、処理はＳ１３５に進む。
【００５１】
図１４は、実施の形態１における管理サーバ２００のプログラムセット送信処理（Ｓ１３５）のフローチャートである。
実施の形態１における管理サーバ２００のプログラムセット送信処理（Ｓ１３５）について、図１４に基づいて説明する。但し、プログラムセット送信処理（Ｓ１３５）は図１４に示す処理と同一でなくても構わない。
【００５２】
Ｓ１３５−１において、プログラムセット送信部２４２は、プログラムセット要求に含まれるユーザＩＤと同じユーザＩＤを含んだユーザ管理レコード（該当レコードＡ）を、管理サーバ２００のユーザ管理テーブル２８０から選択する。
プログラムセット送信部２４２は、該当レコードＡに含まれる認証フラグのフラグ値が認証値であるか判定する。
ユーザ管理テーブル２８０の該当レコードＡに含まれる認証フラグのフラグ値が認証値である場合（ＹＥＳ）、処理はＳ１３５−２に進む。
該当レコードＡに含まれる認証フラグのフラグ値が不認証値である場合（ＮＯ）、プログラムセット送信部２４２はエラー通知を開発コンピュータ３００に送信し、プログラムセット送信処理（Ｓ１３５）は終了し、処理はＳ１３６（図１１）に進む。
【００５３】
Ｓ１３５−２において、プログラムセット送信部２４２は、プログラムセット要求に含まれるプログラムセット名によって識別されるプログラムセット１１０（該当セット）を、サーバ記憶部２９０から選択する。
Ｓ１３５−２の後、処理はＳ１３５−３に進む。
【００５４】
図１５は、実施の形態１におけるプログラムセット１１０の一例を示す図である。
実施の形態１におけるプログラムセット１１０の一例について、図１５に基づいて説明する。
プログラムセット１１０は、ソースプログラム１１１とユーザ管理テーブル１１２（図１６参照）とを備える。
【００５５】
図１６は、実施の形態１におけるプログラムセット１１０のユーザ管理テーブル１１２の一例を示す図である。
実施の形態１におけるプログラムセット１１０のユーザ管理テーブル１１２の一例について、図１６に基づいて説明する。
ユーザ管理テーブル１１２はユーザ管理レコードが追加されるテーブルである。図１６のユーザ管理テーブル１１２は、ユーザ管理レコードが登録されていない初期状態のテーブルである。例えば、ユーザ管理レコードは、プログラムセット１１０をダウンロードした開発コンピュータ３００によってユーザ管理テーブル１１２に登録される。
ユーザ管理レコードはユーザＩＤを含む。さらに、ユーザ管理レコードは、ユーザＩＤに対応付けてユーザパスワード、コントロールＩＤ、許可フラグ、有効フラグおよび更新フラグなどを含む。
許可フラグは、ソースプログラム１１１の編集が許可されるか否かを示す情報である。編集が許可されることを示すフラグ値を許可値といい、編集が許可されないことを示すフラグ値を不許可値という。許可フラグの初期値は不許可値である。
有効フラグは、許可フラグが有効であるか否かを示す情報である。許可フラグが有効であることを示すフラグ値を有効値といい、許可フラグが無効であることを示すフラグ値を無効値という。有効フラグの初期値は無効値である。
更新フラグは、ユーザ管理レコードの更新がされたか否かを示す情報である。更新がされたことを示すフラグ値を更新値といい、更新がされていないことを示すフラグ値を未更新値という。更新フラグの初期値は未更新値である。
【００５６】
Ｓ１３５−３（図１４）において、フラグ設定部２４３は、Ｓ１３５−２で選択された該当セットのユーザ管理テーブル１１２から、プログラムセット要求に含まれるユーザＩＤと同じユーザＩＤを含んだユーザ管理レコード（該当レコードＢ）を選択する。
該当レコードＢがある場合（ＹＥＳ）、処理はＳ１３５−４に進む。この場合、今回のダウンロードは該当セットを要求したユーザに対する２回目以降のダウンロードである。
該当レコードＢがない場合（ＮＯ）、処理はＳ１３５−６に進む。この場合、今回のダウンロードは該当セットを要求したユーザに対する初回のダウンロードである。
【００５７】
Ｓ１３５−４において、フラグ設定部２４３は、Ｓ１３５−３で選択された該当レコードＢに含まれる許可フラグに許可値を設定する。
Ｓ１３５−４の後、処理はＳ１３５−５に進む。
【００５８】
Ｓ１３５−５において、フラグ設定部２４３は、Ｓ１３５−３で選択された該当レコードＢに含まれる有効フラグに有効値を設定する。
Ｓ１３５−５の後、処理はＳ１３５−６に進む。
【００５９】
Ｓ１３５−６において、プログラムセット送信部２４２は、Ｓ１３５−２で選択された該当セットを開発コンピュータ３００に送信する。
Ｓ１３５−６の後、処理はＳ１３５−７に進む。
【００６０】
Ｓ１３５−７において、プログラムセット送信部２４２は、Ｓ１３５−１で選択された該当レコードＡに含まれる認証フラグを初期化する。つまり、プログラムセット送信部２４２は、認証フラグに不認証値を設定する。
Ｓ１３５−７の後、プログラムセット送信処理（Ｓ１３５）は終了し、処理はＳ１３６（図１１）に進む。
【００６１】
Ｓ１３６（図１１）において、開発コンピュータ３００のプログラムセット受信部３３３は、Ｓ１３５で送信されたプログラムセット１１０を受信する。
但し、Ｓ１３５でエラー通知が送信された場合、プログラムセット受信部３３３はエラーメッセージを開発コンピュータ３００の表示装置に表示し、Ｓ１３６以降の処理は行われずに図１１の手順は終了する。
Ｓ１３６の後、ユーザがユーザ情報の新規登録を開発コンピュータ３００に指示したときにＳ１４０が実行される。
【００６２】
Ｓ１４０において、開発コンピュータ３００のユーザ情報取得部３１１は、ユーザ情報入力画面を開発コンピュータ３００の表示装置に表示する。
ユーザは、入力装置を用いて、ユーザＩＤとユーザパスワードとをユーザ情報入力画面に入力する。ユーザＩＤおよびユーザパスワードはＳ１１１で入力されたユーザＩＤおよびパスワードと同じであっても異なっても構わない。
ユーザ情報取得部３１１は、入力されたユーザＩＤおよびユーザパスワードを取得する。
開発コンピュータ３００のユーザ情報登録部３２４は、ユーザ管理レコードをプログラムセット１１０のユーザ管理テーブル１１２に追加し、ユーザ管理レコードにユーザＩＤおよびユーザパスワードを設定する（図１７参照）。
図１７は、実施の形態１におけるプログラムセット１１０のユーザ管理テーブル１１２の一例を示す図である。
図１７において、許可フラグは不許可値を示し、有効フラグは無効値を示し、更新フラグは更新値を示している。
Ｓ１４０の後、プログラムセット１１０のダウンロードの手順（図１１）は終了する。
【００６３】
開発コンピュータ３００のユーザ情報登録部３２４は、ユーザの指示に従って、プログラムセット１１０のユーザ管理テーブル１１２に登録されているユーザ情報（ユーザＩＤ、ユーザパスワード）を変更しても構わない。
【００６４】
図１８は、実施の形態１におけるプログラムセット１１０に含まれるソースプログラム１１１の編集の手順を示すフローチャートである。
実施の形態１におけるプログラムセット１１０に含まれるソースプログラム１１１の編集の手順について、図１８に基づいて説明する。但し、ソースプログラム１１１の編集の手順は図１８と同一の手順でなくても構わない。
【００６５】
Ｓ２１１において、開発コンピュータ３００のユーザは、入力装置を用いて、プログラムセット１１０に含まれるソースプログラム１１１の表示を開発コンピュータ３００に指示する。
Ｓ２１１の後、処理はＳ２１２に進む。
【００６６】
Ｓ２１２において、開発コンピュータ３００のユーザ情報取得部３１１は、ユーザＩＤを入力するためのユーザＩＤ入力画面を開発コンピュータ３００の表示装置に表示する。
ユーザは、入力装置を用いて、ユーザＩＤをユーザＩＤ入力画面に入力する。
そして、ユーザ情報取得部３１１は、入力されたユーザＩＤ（認証識別子の一例）を取得する。
Ｓ２１２の後、処理はＳ２２０に進む。
【００６７】
図１９は、実施の形態１における開発コンピュータ３００のユーザ認証処理（Ｓ２２０）のフローチャートである。
実施の形態１における開発コンピュータ３００のユーザ認証処理（Ｓ２２０）について、図１９に基づいて説明する。但し、ユーザ認証処理（Ｓ２２０）は図１９に示す処理と同一でなくても構わない。
【００６８】
Ｓ２２１において、ユーザ認証部３１３は、Ｓ２１２で取得されたユーザＩＤと同じユーザＩＤを含んだユーザ管理レコード（該当レコード）をユーザ管理テーブル１１２から選択する。
該当レコードがある場合（ＶＡＬＩＤ）、処理はＳ２２２に進む。
該当レコードがない場合（ＩＮＶＡＬＩＤ）、ユーザは認証されずにユーザ認証処理（Ｓ２２０）は終了する。
【００６９】
Ｓ２２２において、ユーザ認証部３１３は、Ｓ２２１で選択された該当レコードに含まれる有効フラグを参照する。
該当レコードに含まれる有効フラグが有効値を示す場合（ＹＥＳ）、処理はＳ２２５に進む。この場合、今回のユーザ認証処理（Ｓ２２０）は、２回目以降のダウンロードにおけるプログラムセット１１０の閲覧および編集を許可するための処理である。
該当レコードに含まれる有効フラグが無効値を示す場合（ＮＯ）、処理はＳ２２３に進む。この場合、今回のユーザ認証処理（Ｓ２２０）は、初回のダウンロードにおけるプログラムセット１１０の閲覧および編集を許可するための処理である。
【００７０】
Ｓ２２３において、ユーザ情報取得部３１１は、ユーザパスワードを入力するためのユーザパスワード入力画面を表示する。
ユーザは、入力装置を用いて、ユーザパスワードをユーザパスワード入力画面に入力する。
ユーザ情報取得部３１１は、入力されたユーザパスワード（認証パスワードの一例）を取得する。
Ｓ２２３の後、処理はＳ２２４に進む。
【００７１】
Ｓ２２４において、ユーザ情報取得部３１１は、Ｓ２２３で取得されたユーザパスワードと、Ｓ２２１で選択された該当レコードに含まれるユーザパスワードとを比較する。
Ｓ２２３で取得されたユーザパスワードがＳ２２１で選択された該当レコードに含まれるユーザパスワードと同じ場合（ＶＡＬＩＤ）、ユーザが認証されてユーザ認証処理（Ｓ２２０）は終了する。
Ｓ２２３で取得されたユーザパスワードがＳ２２１で選択された該当レコードに含まれるユーザパスワードと異なる場合（ＩＮＶＡＬＩＤ）、ユーザが認証されてユーザ認証処理（Ｓ２２０）は終了する。
【００７２】
Ｓ２２５において、ユーザ認証部３１３は、Ｓ２２１で選択された該当レコードに含まれる許可フラグを参照する。
該当レコードに含まれる許可フラグが許可値を示す場合（ＹＥＳ）、ユーザが認証されてユーザ認証処理（Ｓ２２０）は終了する。この場合、プログラムセット１１０の閲覧および編集が管理サーバ２００によって許可されている。
該当レコードに含まれる許可フラグが不許可値を示す場合（ＮＯ）、ユーザが認証されずにユーザ認証処理（Ｓ２２０）は終了する。この場合、プログラムセット１１０の閲覧および編集が管理サーバ２００によって許可されていない。
【００７３】
ユーザ認証処理（Ｓ２２０）の後、処理はＳ２３０（図１８）に進む。
【００７４】
Ｓ２３０（図１８）において、開発コンピュータ３００のプログラム編集部３２１は、プログラムセット１１０に含まれるソースプログラム１１１を開発コンピュータ３００の表示装置に表示する。
ユーザは、入力装置を用いて、表示されたソースプログラム１１１の編集を開発コンピュータ３００に指示する。
プログラム編集部３２１は、ユーザの指示に従って、ソースプログラム１１１を編集する。
但し、ユーザ認証処理（Ｓ２２０）でユーザが認証されなかった場合、プログラム編集部３２１はソースプログラム１１１の表示および編集を行わない。
Ｓ２３０の後、ユーザが実行プログラムの生成を開発コンピュータ３００に指示したときにＳ２４０が実行される。
【００７５】
Ｓ２４０において、開発コンピュータ３００のプログラム変換部３２２は、プログラムセット１１０からソースプログラム１１１を取得し、ソースプログラム１１１を実行プログラム１２０に変換する。これにより、実行プログラム１２０が生成される。
Ｓ２４０の後、処理はＳ２５１に進む。
【００７６】
Ｓ２５１において、開発コンピュータ３００の実行プログラム送信部３２３は、Ｓ２４０で生成された実行プログラム１２０をコントローラ４００に送信する。
Ｓ２５１の後、処理はＳ２５２に進む。
【００７７】
Ｓ２５２において、コントローラ４００の実行プログラム受信部４１０は、Ｓ２５１で送信された実行プログラム１２０を受信する。
Ｓ２５２の後、特定のタイミングでＳ２６０が実行される。
【００７８】
Ｓ２６０において、コントローラ４００のプログラム実行部４２０は、Ｓ２５２で受信された実行プログラム１２０を実行する。
Ｓ２６０の後、ソースプログラム１１１の編集の手順（図１８）は終了する。
【００７９】
図２０は、実施の形態１におけるプログラムセット１１０のアップロードの手順を示すフローチャートである。
実施の形態１におけるプログラムセット１１０のアップロードについて、図２０に基づいて説明する。但し、プログラムセット１１０のアップロードの手順は図２０と同一の手順でなくても構わない。
【００８０】
Ｓ３１１において、開発コンピュータ３００のユーザは、入力装置を用いて、プログラムセット１１０のアップロードを開発コンピュータ３００に指示する。
開発コンピュータ３００のアップロード許可要求部３４１は、アップロード許可要求を生成し、アップロード許可要求を管理サーバ２００に送信する。
Ｓ３１１の後、処理はＳ３１２に進む。
【００８１】
Ｓ３１２において、管理サーバ２００の要求受信部２１０は、Ｓ３１１で送信されたアップロード許可要求を受信する。
Ｓ３１２の後、処理はＳ３１３に進む。
【００８２】
Ｓ３１３において、管理サーバ２００のユーザ情報受信部２２０は、ユーザ情報を要求するユーザ情報要求を生成し、ユーザ情報要求を開発コンピュータ３００に送信する。
Ｓ３１３の後、処理はＳ３１４に進む。
【００８３】
Ｓ３１４において、開発コンピュータ３００のユーザ情報取得部３１１は、Ｓ３１３で送信されたユーザ情報要求を受信する。
Ｓ３１４の後、処理はＳ３１５に進む。
【００８４】
Ｓ３１５において、開発コンピュータ３００のユーザ情報取得部３１１は、ユーザ情報入力画面を開発コンピュータ３００の表示装置に表示する。
ユーザは、入力装置を用いて、ユーザＩＤおよびユーザパスワードをユーザ情報入力画面に入力する。
そして、ユーザ情報取得部３１１は、入力されたユーザＩＤおよびユーザパスワードを取得する。
Ｓ３１５の後、処理はＳ３１６に進む。
【００８５】
Ｓ３１６において、開発コンピュータ３００のユーザ情報送信部３１２は、Ｓ３１５で取得されたユーザＩＤおよびユーザパスワードを管理サーバ２００に送信する。
Ｓ３１６の後、処理はＳ３１７に進む。
【００８６】
Ｓ３１７において、管理サーバ２００のユーザ情報受信部２２０は、Ｓ３１６で送信されたユーザＩＤおよびユーザパスワードを受信する。
Ｓ３１７の後、処理はＳ３２０に進む。
【００８７】
Ｓ３２０において、管理サーバ２００のユーザ認証部２３０は、Ｓ３１７で受信されたユーザ情報（ユーザＩＤ、ユーザパスワード）と管理サーバ２００のユーザ管理テーブル２８０に含まれるユーザ情報とに基づいて、ユーザを認証する（図１２と同様）。
ユーザが認証された場合、処理はＳ３３１に進む。
ユーザが認証されなかった場合、プログラムセット１１０のアップロードは許可されず、図２０の手順は終了する。
【００８８】
Ｓ３３１において、管理サーバ２００のアップロード許可通知部２５１は、アップロード許可通知を開発コンピュータ３００に送信する。
Ｓ３３１の後、処理はＳ３３２に進む。
【００８９】
Ｓ３３２において、開発コンピュータ３００のアップロード許可受信部３４２は、Ｓ３３１で送信されたアップロード許可通知を受信する。
Ｓ３３２の後、処理はＳ３４０に進む。
【００９０】
図２１は、実施の形態１におけるコントローラＩＤ登録処理（Ｓ３４０）のフローチャートである。
実施の形態１におけるコントローラＩＤ登録処理（Ｓ３４０）について、図２１に基づいて説明する。但し、コントローラＩＤ登録処理（Ｓ３４０）は図２１に示す処理と同一でなくても構わない。
【００９１】
Ｓ３４１において、開発コンピュータ３００のコントローラＩＤ登録部３２５は、コントローラＩＤ４０１を要求するコントローラＩＤ要求を生成し、コントローラＩＤ要求をコントローラ４００に送信する。
Ｓ３４１の後、処理はＳ３４２に進む。
【００９２】
Ｓ３４２において、コントローラ４００のコントローラＩＤ通知部４３０は、Ｓ３４１で送信されたコントローラＩＤ要求を受信する。
Ｓ３４２の後、処理はＳ３４３に進む。
【００９３】
Ｓ３４３において、コントローラ４００のコントローラＩＤ通知部４３０は、コントローラＩＤ４０１を開発コンピュータ３００に送信する。
Ｓ３４３の後、処理はＳ３４４に進む。
【００９４】
Ｓ３４４において、開発コンピュータ３００のコントローラＩＤ登録部３２５は、Ｓ３４３で送信されたコントローラＩＤ４０１を受信する。
Ｓ３４４の後、処理はＳ３４５に進む。
【００９５】
Ｓ３４５において、開発コンピュータ３００のコントローラＩＤ登録部３２５は、Ｓ３１５（図２０）で取得されたユーザＩＤと同じユーザＩＤを含んだユーザ管理レコード（該当レコード）をプログラムセット１１０のユーザ管理テーブル１１２から選択する。
そして、コントローラＩＤ登録部３２５は、Ｓ３４４で受信したコントローラＩＤ４０１を該当レコードに設定する（図２２参照）。
図２２は、実施の形態１におけるプログラムセット１１０のユーザ管理テーブル１１２の一例を示す図である。
Ｓ３４５の後、コントローラＩＤ登録処理（Ｓ３４０）は終了し、処理はＳ３５１（図２０参照）に進む。
【００９６】
プログラムセット１１０がソースプログラム１１１とユーザ管理テーブル１１２とに加えてコントローラＩＤ４０１を含んでいる場合、コントローラＩＤ登録処理（Ｓ３４０）は実行されなくても構わない。
【００９７】
Ｓ３５１（図２０参照）において、開発コンピュータ３００のプログラムセット送信部３４３は、プログラムセット１１０を管理サーバ２００に送信する。
プログラムセット１１０のユーザ管理テーブル１１２はユーザＩＤを含み、ユーザＩＤに対応付けられたユーザパスワードおよびコントローラＩＤを含む（図２２参照）。
Ｓ３５１の後、処理はＳ３５２に進む。
【００９８】
Ｓ３５２において、管理サーバ２００のプログラムセット受信部２５２は、Ｓ３５１で送信されたプログラムセット１１０を受信する。
Ｓ３５２の後、処理はＳ３６０に進む。
【００９９】
図２３は、実施の形態１におけるプログラムセット更新処理（Ｓ３６０）のフローチャートである。
実施の形態１におけるプログラムセット更新処理（Ｓ３６０）について、図２３に基づいて説明する。但し、プログラムセット更新処理（Ｓ３６０）は図２３に示す処理と同一でなくても構わない。
【０１００】
Ｓ３６１において、プログラムセット更新部２５３は、Ｓ３１７（図２０参照）で受信されたユーザＩＤと同じユーザＩＤを含んだユーザ管理レコード（該当レコード）を管理サーバ２００のユーザ管理テーブル２８０から選択する。
プログラムセット更新部２５３は、該当レコードに含まれる認証フラグを参照する。
認証フラグが認証値を示す場合（ＹＥＳ）、処理はＳ３６２に進む。
認証フラグが不認証値である場合（ＮＯ）、プログラムセット１１０は更新されずにプログラムセット更新処理（Ｓ３６０）は終了する。
【０１０１】
Ｓ３６２において、プログラムセット更新部２５３は、Ｓ３５２（図２０）で受信されたプログラムセット１１０のプログラムセット名と同じプログラムセット名によって識別されるプログラムセット１１０（該当セット）をサーバ記憶部２９０から選択する。
そして、プログラムセット更新部２５３は、Ｓ３５２で受信されたプログラムセット１１０によって該当セットを更新する。
Ｓ３６２の後、処理はＳ３６３に進む。
【０１０２】
Ｓ３６３において、ユーザ管理テーブル更新部２５４は、Ｓ３５２で受信されたプログラムセット１１０に含まれるユーザ管理テーブル１１２から、更新値を示す更新フラグを含んだユーザ管理レコード（該当レコード）を選択する。
そして、ユーザ管理テーブル更新部２５４は、プログラムセット１１０のユーザ管理テーブル１１２の該当レコードに含まれるユーザＩＤによって、管理サーバ２００のユーザ管理テーブル２８０の該当レコード（Ｓ３６１参照）に含まれるユーザＩＤを更新する。
Ｓ３６３の後、処理はＳ３６４に進む。
【０１０３】
Ｓ３６４において、ユーザ管理テーブル更新部２５４は、プログラムセット１１０のユーザ管理テーブル１１２の該当レコードに含まれるユーザパスワードによって、管理サーバ２００のユーザ管理テーブル２８０の該当レコードに含まれるユーザパスワードを更新する。
Ｓ３６４の後、処理はＳ３６５に進む。
【０１０４】
Ｓ３６５において、ユーザ管理テーブル更新部２５４は、プログラムセット１１０のユーザ管理テーブル１１２の該当レコードに含まれるコントローラＩＤを、管理サーバ２００のユーザ管理テーブル２８０の該当レコードに登録する。
Ｓ３６５の後、処理はＳ３６６に進む。
【０１０５】
Ｓ３６６において、ユーザ管理テーブル更新部２５４は、管理サーバ２００のユーザ管理テーブル２８０の該当レコードに含まれる認証フラグを初期化する。つまり、ユーザ管理テーブル更新部２５４は、認証フラグに不認証値を設定する。
Ｓ３６６の後、プログラムセット更新処理（Ｓ３６０）は終了し、処理はＳ３７１（図２０参照）に進む。
【０１０６】
図２４は、実施の形態１における管理サーバ２００のユーザ管理テーブル２８０の一例を示す図である。
例えば、管理サーバ２００のユーザ管理テーブル２８０は、プログラムセット１１０のユーザ管理テーブル１１２（図２２参照）に基づいて、図２４に示すように更新される。
【０１０７】
Ｓ３７１（図２０参照）において、管理サーバ２００のアップロード完了通知部２５５は、アップロード完了通知を生成し、アップロード完了通知を開発コンピュータ３００に送信する。
但し、Ｓ３６０でプログラムセット１１０が更新されなかった場合、アップロード完了通知部２５５はエラー通知を開発コンピュータ３００に送信する。
Ｓ３７１の後、処理はＳ３７２に進む。
【０１０８】
Ｓ３７２において、開発コンピュータ３００のアップロード完了受信部３４４は、Ｓ３７１で送信されたアップロード完了通知を受信し、プログラムセット１１０のアップロードが完了したことを示す完了メッセージを開発コンピュータ３００の表示装置に表示する。
但し、Ｓ３７１でエラー通知が送信された場合、アップロード完了受信部３４４はエラーメッセージを開発コンピュータ３００の表示装置に表示する。
Ｓ３７２の後、プログラムセット１１０のアップロードの手順（図２０）は終了する。
【０１０９】
図２５は、実施の形態１における管理サーバ２００、開発コンピュータ３００およびコントローラ４００のハードウェア構成図である。
実施の形態１における管理サーバ２００、開発コンピュータ３００およびコントローラ４００のハードウェア構成について、図２５に基づいて説明する。但し、管理サーバ２００、開発コンピュータ３００およびコントローラ４００のハードウェア構成は図２０に示す構成と同一でなくても構わない。
【０１１０】
管理サーバ２００、開発コンピュータ３００およびコントローラ４００は、演算装置９０１、補助記憶装置９０２、主記憶装置９０３、通信装置９０４および入出力装置９０５を備えるコンピュータである。
演算装置９０１、補助記憶装置９０２、主記憶装置９０３、通信装置９０４および入出力装置９０５はバス９０９に接続している。
【０１１１】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリまたはハードディスク装置である。
主記憶装置９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、有線または無線でインターネット、ＬＡＮ（ローカルエリアネットワーク）、電話回線網またはその他のネットワークを介して通信を行う。
入出力装置９０５は、例えば、マウス、キーボード、ディスプレイ装置である。
【０１１２】
プログラムは、補助記憶装置９０２に記憶されている。
例えば、オペレーティングシステム（ＯＳ）が補助記憶装置９０２に記憶される。また、「〜部」として説明している機能を実現するプログラムが補助記憶装置９０２に記憶される。
プログラムは、補助記憶装置９０２に記憶されており、主記憶装置９０３にロードされ、演算装置９０１に読み込まれ、演算装置９０１によって実行される。
【０１１３】
「〜の判断」、「〜の判定」、「〜の抽出」、「〜の検知」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等の処理の結果を示す情報、データ、ファイル、信号値または変数値が主記憶装置９０３または補助記憶装置９０２に記憶される。
【０１１４】
実施の形態１により、例えば、以下のような効果を奏する。
プログラムセット１１０に含まれるユーザ管理テーブル１１２に編集の許可を示す許可フラグが設定されている場合、ユーザは、ユーザパスワードを開発コンピュータ３００に入力しなくても、プログラムセット１１０に含まれるソースプログラム１１１を編集することができる（図１９のＳ２２５参照）。つまり、プログラム管理システム１００はソースプログラム１１１が編集される際のユーザの利便性を向上することができる。
開発コンピュータ３００が通信回線１０１から切り離されて管理サーバ２００と通信できない場合、編集の許可を示す許可フラグがソースプログラム１１１に設定されていない場合、ユーザはソースプログラム１１１を編集することができない。つまり、プログラム管理システム１００は、ソースプログラム１１１の閲覧および編集を制限し、ソースプログラム１１１の漏えいを防ぐことができる。
【０１１５】
実施の形態１は、プログラム管理システム１００の形態の一例である。
つまり、プログラム管理システム１００は、実施の形態１で説明した構成要素の一部を備えなくても構わない。また、プログラム管理システム１００は、実施の形態１で説明していない構成要素を備えても構わない。
【０１１６】
実施の形態１においてフローチャート等を用いて説明した処理手順は、実施の形態１に係る方法およびプログラムの処理手順の一例である。実施の形態１に係る方法およびプログラムは、実施の形態１で説明した処理手順と一部異なる処理手順で実現されても構わない。
【０１１７】
実施の形態１において「〜部」は「〜処理」「〜工程」「〜プログラム」「〜装置」などに読み替えることができる。
【符号の説明】
【０１１８】
１００  プログラム管理システム、１０１  通信回線、１０２  通信回線、１１０  プログラムセット、１１１  ソースプログラム、１１２  ユーザ管理テーブル、１２０  実行プログラム、２００  管理サーバ、２１０  要求受信部、２２０  ユーザ情報受信部、２３０  ユーザ認証部、２４０  ダウンロード部、２４１  ダウンロード許可通知部、２４２  プログラムセット送信部、２４３  フラグ設定部、２５０  アップロード部、２５１  アップロード許可通知部、２５２  プログラムセット受信部、２５３  プログラムセット更新部、２５４  ユーザ管理テーブル更新部、２５５  アップロード完了通知部、２８０  ユーザ管理テーブル、２９０  サーバ記憶部、３００  開発コンピュータ、３１０  ユーザ情報管理部、３１１  ユーザ情報取得部、３１２  ユーザ情報送信部、３１３  ユーザ認証部、３２０  プログラムセット管理部、３２１  プログラム編集部、３２２  プログラム変換部、３２３  実行プログラム送信部、３２４  ユーザ情報登録部、３２５  コントローラＩＤ登録部、３３０  ダウンロード部、３３１  ダウンロード許可受信部、３３２  プログラムセット要求部、３３３  プログラムセット受信部、３４０  アップロード部、３４１  アップロード許可要求部、３４２  アップロード許可受信部、３４３  プログラムセット送信部、３４４  アップロード完了受信部、３９０  コンピュータ記憶部、４００  コントローラ、４０１  コントローラＩＤ、４１０  実行プログラム受信部、４２０  プログラム実行部、４３０  コントローラＩＤ通知部、４９０  コントローラ記憶部、９０１  演算装置、９０２  補助記憶装置、９０３  主記憶装置、９０４  通信装置、９０５  入出力装置、９０９  バス。
【図１】
0006009130.tif 000002
【図２】
0006009130.tif 000003
【図３】
0006009130.tif 000004
【図４】
0006009130.tif 000005
【図５】
0006009130.tif 000006
【図６】
0006009130.tif 000007
【図７】
0006009130.tif 000008
【図８】
0006009130.tif 000009
【図９】
0006009130.tif 000010
【図１０】
0006009130.tif 000011
【図１１】
0006009130.tif 000012
【図１２】
0006009130.tif 000013
【図１３】
0006009130.tif 000014
【図１４】
0006009130.tif 000015
【図１５】
0006009130.tif 000016
【図１６】
0006009130.tif 000017
【図１７】
0006009130.tif 000018
【図１８】
0006009130.tif 000019
【図１９】
0006009130.tif 000020
【図２０】
0006009130.tif 000021
【図２１】
0006009130.tif 000022
【図２２】
0006009130.tif 000023
【図２３】
0006009130.tif 000024
【図２４】
0006009130.tif 000025
【図２５】
0006009130.tif 000026