(57)【特許請求の範囲】
【請求項１】
プログラムの開発に用いる作業領域の確保を要求する確保要求であって、ユーザを識別するユーザ情報を含む確保要求と、前記プログラムの開発に用いる開発環境の利用を要求する利用要求であって、前記開発環境を識別する開発環境識別子と前記ユーザを識別する前記ユーザ情報とを含む利用要求とを送信する端末側送信部を備える端末装置と、
前記端末側送信部から、前記確保要求を受信し、受信した前記確保要求に含まれる前記ユーザ情報に対応するユーザ作業領域を処理装置により確保する確保部と、
前記開発環境と、前記開発環境を識別する前記開発環境識別子とを対応付けて記憶装置に記憶する開発環境記憶部と、
前記端末側送信部から前記利用要求を受信し、受信した前記利用要求に含まれる前記開発環境識別子に対応する前記開発環境を前記開発環境記憶部から処理装置により抽出し、抽出した前記開発環境と、前記利用要求に含まれる前記ユーザ情報に対応する前記ユーザ作業領域とを処理装置により利用可能とする開発環境管理部と、
前記ユーザにより前記プログラムが編集されるとき、前記ユーザ以外のユーザが前記ユーザが編集しようとする編集箇所を編集しているか否かを判定するための情報である編集履歴情報であって、日時と、前記ユーザを識別する前記ユーザ情報と、前記開発環境を識別する前記開発環境識別子と、前記プログラムを識別するプログラム識別子と、前記日時に前記開発環境を利用して編集された前記プログラムの編集箇所とが対応付けられた編集履歴情報を記憶装置に記憶する編集履歴情報記憶部と
を備える開発環境装置と
を備えることを特徴とする開発環境システム。
【請求項２】
前記端末装置は、さらに、
前記開発環境管理部により利用可能となった前記開発環境と前記ユーザ作業領域とを用いた前記プログラムの開発を要求する開発要求を前記開発環境装置に送信する端末側開発部を備えることを特徴とする請求項１に記載の開発環境システム。
【請求項３】
前記開発環境記憶部は、
前記開発環境として、プログラムを開発する開発プログラムと、前記開発プログラムのユーザインターフェースであるユーザインターフェースプログラムとを記憶し、
前記開発環境管理部は、
前記開発プログラムを前記開発環境装置にインストールするとともに、前記ユーザインターフェースプログラムを前記端末側開発部に送信し、
前記端末側開発部は、
前記開発環境管理部から送信された前記ユーザインターフェースプログラムを受信し、受信した前記ユーザインターフェースプログラムを前記端末装置にインストールし、インストールした前記ユーザインターフェースプログラムを処理装置により実行することにより前記開発要求を送信することを特徴とする請求項２に記載の開発環境システム。
【請求項４】
前記開発環境装置は、さらに、
前記プログラムと、前記プログラムを識別するプログラム識別子とを対応付けて記憶装置に記憶するプログラム記憶部と、
前記端末側送信部から、前記プログラムの開発を要求する開発要求であって、前記プログラムを識別する前記プログラム識別子を含む開発要求を受信し、受信した前記開発要求に含まれる前記プログラム識別子に対応する前記プログラムを前記プログラム記憶部から抽出し、抽出した前記プログラムを前記ユーザ作業領域に格納するプログラム管理部と
を備えることを特徴とする請求項３に記載の開発環境システム。
【請求項５】
前記開発環境装置は、さらに、
前記ユーザ情報と、前記プログラム識別子と、前記ユーザにおける前記プログラム識別子により識別される前記プログラムに対するアクセス権とが対応付けられたアクセス権情報を記憶装置に記憶するアクセス権記憶部を備え、
前記プログラム管理部は、
前記アクセス権記憶部に記憶された前記アクセス権情報に基づいて、前記ユーザの前記プログラムに対する前記アクセス権を処理装置により判定し、前記ユーザが前記プログラムに対して変更権限があると判定した場合に、前記プログラムを前記プログラム記憶部から抽出し、前記ユーザ作業領域に格納することを特徴とする請求項４に記載の開発環境システム。
【請求項６】
前記開発環境装置は、さらに、
前記ユーザ情報と、前記プログラム識別子と、前記プログラム識別子により識別される前記プログラムのプログラム部位と、前記ユーザにおける前記プログラム部位に対するコード単位アクセス権とが対応付けられたコード単位アクセス権情報を記憶装置に記憶するコード単位アクセス権記憶部を備え、
前記端末側開発部は、
前記コード単位アクセス権記憶部に記憶された前記コード単位アクセス権情報に基づいて、前記ユーザの前記プログラム部位に対する前記コード単位アクセス権を処理装置により判定し、判定した前記コード単位アクセス権に応じて前記プログラムの開発処理のインタフェース制御を実行するコード単位アクセス制御部を備えることを特徴とする請求項５に記載の開発環境システム。
【請求項７】
前記コード単位アクセス制御部は、
前記ユーザにより前記プログラムの前記編集箇所が編集されると、前記編集履歴情報記憶部により記憶された前記編集履歴情報に基づいて、前記ユーザ以外のユーザが前記プログラムの前記編集箇所を編集しているか否かを処理装置により判定し、編集していないと判定した場合に、前記日時と、前記ユーザ情報と、前記開発環境識別子と、前記プログラム識別子と、前記編集箇所とを前記編集履歴情報に記録し、編集していると判定した場合に、前記プログラムの編集の中止を前記ユーザに通知する
ことを特徴とする請求項６に記載の開発環境システム。
【請求項８】
前記開発環境装置は、さらに、
前記プログラムを識別する前記プログラム識別子と、前記プログラムのロック箇所とが対応付けられた編集ロック情報を記憶装置に記憶する編集ロック情報記憶部を備え、
前記コード単位アクセス制御部は、
前記ユーザにより前記プログラムが編集されると、前記編集ロック情報記憶部により記憶された前記編集ロック情報に基づいて、前記プログラムを編集した箇所がロックされているか否かを処理装置により判定し、ロックされていないと判定した場合に、前記プログラム識別子と、前記プログラムを編集した箇所を前記編集ロック情報に記録し、ロックされていると判定した場合に、前記プログラムを編集した箇所はロックされていることを前記ユーザに通知する
ことを特徴とする請求項７に記載の開発環境システム。
【請求項９】
前記端末装置は、前記プログラムが書き込まれる端末側記憶機器と接続され、
前記開発環境装置は、さらに、
前記ユーザが前記端末側記憶機器に対して操作した操作日時と、前記ユーザを識別する前記ユーザ情報と、前記開発環境を識別する前記開発環境識別子と、前記プログラムを識別する前記プログラム識別子と、前記操作日時に操作対象となった前記端末側記憶機器を識別する端末側記憶機器識別子と、前記操作の内容とが対応付けられた操作履歴情報を記憶装置に記憶する操作履歴情報記憶部を備える
ことを特徴とする請求項８に記載の開発環境システム。
【請求項１０】
前記端末装置は、さらに、
前記プログラムを開発していた時点の前記開発環境と前記プログラムの状態との復元を要求する復元要求であって、前記端末側記憶機器に記憶された前記プログラムの情報を含む復元要求を前記開発環境装置に送信する開発環境復元部を備え、
前記開発環境装置は、さらに、
前記開発環境復元部から前記復元要求を受信し、受信した前記復元要求に含まれる前記プログラムの情報に基づいて、前記操作履歴情報記憶部に記憶された前記操作履歴情報を検索し、前記プログラムを開発していた時点の前記開発環境と前記プログラムの状態とを復元する
ことを特徴とする請求項９に記載の開発環境システム。
【請求項１１】
プログラムの開発に用いる作業領域の確保を要求する確保要求であって、ユーザを識別するユーザ情報を含む確保要求と、前記プログラムの開発に用いる開発環境の利用を要求する利用要求であって、前記開発環境を識別する開発環境識別子と前記ユーザを識別する前記ユーザ情報とを含む利用要求とを送信する端末装置から、前記確保要求を受信し、受信した前記確保要求に含まれる前記ユーザ情報に対応するユーザ作業領域を確保する確保部と、
前記開発環境と、前記開発環境を識別する開発環境識別子とを対応付けて記憶装置に記憶する開発環境記憶部と、
前記端末装置から前記利用要求を受信し、受信した前記利用要求に含まれる前記開発環境識別子に対応する前記開発環境を前記開発環境記憶部から抽出し、抽出した前記開発環境と、前記利用要求に含まれる前記ユーザ情報に対応する前記ユーザ作業領域とを利用可能とする開発環境管理部と、
前記ユーザにより前記プログラムが編集されるとき、前記ユーザ以外のユーザが前記ユーザが編集しようとする編集箇所を編集しているか否かを判定するための情報である編集履歴情報であって、日時と、前記ユーザを識別する前記ユーザ情報と、前記開発環境を識別する前記開発環境識別子と、前記プログラムを識別するプログラム識別子と、前記日時に前記開発環境を利用して編集された前記プログラムの編集箇所とが対応付けられた編集履歴情報を記憶装置に記憶する編集履歴情報記憶部と
を備えることを特徴とする開発環境装置。
【請求項１２】
プログラムの開発に用いる作業領域の確保を要求する確保要求であって、ユーザを識別するユーザ情報を含む確保要求と、前記プログラムの開発に用いる開発環境の利用を要求する利用要求であって、前記開発環境を識別する開発環境識別子と前記ユーザを識別する前記ユーザ情報とを含む利用要求とを端末装置から送信し、
前記端末装置から前記確保要求を受信し、受信した前記確保要求に含まれる前記ユーザ情報に対応するユーザ作業領域を確保し、
前記端末装置から前記利用要求を受信し、受信した前記利用要求に含まれる前記開発環境識別子に対応する前記開発環境を、前記開発環境と前記開発環境を識別する開発環境識別子とを対応付けて記憶装置に記憶する開発環境記憶部から抽出し、抽出した前記開発環境と、前記利用要求に含まれる前記ユーザ情報に対応する前記ユーザ作業領域とを利用可能とし、
前記ユーザにより前記プログラムが編集されるとき、前記ユーザ以外のユーザが前記ユーザが編集しようとする編集箇所を編集しているか否かを判定するための情報である編集履歴情報であって、日時と、前記ユーザを識別する前記ユーザ情報と、前記開発環境を識別する前記開発環境識別子と、前記プログラムを識別するプログラム識別子と、前記日時に前記開発環境を利用して編集された前記プログラムの編集箇所とが対応付けられた編集履歴情報を記憶装置に記憶することを特徴とする開発環境提供方法。
【請求項１３】
プログラムの開発に用いる作業領域の確保を要求する確保要求であって、ユーザを識別するユーザ情報を含む確保要求と、前記プログラムの開発に用いる開発環境の利用を要求する利用要求であって、前記開発環境を識別する開発環境識別子と前記ユーザを識別する前記ユーザ情報とを含む利用要求とを送信する端末装置から、前記確保要求を受信し、受信した前記確保要求に含まれる前記ユーザ情報に対応するユーザ作業領域を確保する確保処理と、
前記端末装置から前記利用要求を受信し、受信した前記利用要求に含まれる前記開発環境識別子に対応する前記開発環境を、前記開発環境と前記開発環境を識別する前記開発環境識別子とを対応付けて記憶装置に記憶する開発環境記憶部から抽出し、抽出した前記開発環境と、前記利用要求に含まれる前記ユーザ情報に対応する前記ユーザ作業領域とを利用可能とする開発環境処理と、
前記ユーザにより前記プログラムが編集されるとき、前記ユーザ以外のユーザが前記ユーザが編集しようとする編集箇所を編集しているか否かを判定するための情報である編集履歴情報であって、日時と、前記ユーザを識別する前記ユーザ情報と、前記開発環境を識別する前記開発環境識別子と、前記プログラムを識別するプログラム識別子と、前記日時に前記開発環境を利用して編集された前記プログラムの編集箇所とが対応付けられた編集履歴情報を記憶装置に記憶する編集履歴情報記憶処理と
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発環境システム、開発環境装置、開発環境提供方法及びプログラムに関する。特に、端末装置からの操作により、開発環境装置においてソフトウェアの開発を行う分散共有型環境開発装置に関する。
【背景技術】
【０００２】
近年、ラダープログラムのように、工場等で動作する制御ソフトウェアの大規模化が進んできており、ソフトウェア資産の管理や複数人による共同開発を効率的に行う事が重要となってきた。
これまでは、開発担当者それぞれのＰＣ（Ｐｅｒｓｏｎａｌ・Ｃｏｍｐｕｔｅｒ）へ開発環境を導入しソフトウェアを開発してきたため、ソフトウェアは個々のＰＣで管理されていた。そのため、ＰＣ間で同一ソフトウェアのバージョンが異なり、開発環境とソフトウェアのバージョンの対応が取れなくなる等の課題を抱えていた。
このような課題を解決するため、ソフトウェアや開発環境をサーバで集中管理し、ネットワークを経由してサーバに接続して開発を行うような、ネットワーク型開発環境が求められている。【０００３】
特許文献１では、ネットワークを介して接続されたクライアントからの遠隔操作により、サーバ側でソフトウェア開発を行う遠隔操作型ソフトウェアに関する方法が開示されている。特許文献１によれば、クライアント側では、開発環境クライアント部と入出力制御部が動作し、サーバ側では、入出力制御部、コンポーネントリポジトリ、コンポーネントファクトリ、インスタンス保存処理部、ソースコード自動生成部が動作する。開発者がクライアント側の開発環境クライアント部を操作すると、クライアント側の入出力制御部からサーバ側の入出力制御部へ処理がインターネットを経由して送信される。サーバ側では、クライアント側から送信された処理を受け、コンポーネントの組み合わせやソースコードの自動生成、インスタンス（プログラムの実行環境）の生成等が行われ、インターネットを経由した開発を可能としている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２７８７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術では、開発環境のバージョンを管理する仕組みがない。そのため、従来技術では、開発環境のバージョンが変わることにより、サーバ側、クライアント側の開発環境を入れ替えることができないという課題がある。
また、従来技術では、サーバで一元管理された情報を複数のユーザで同時に開発する際に、競合の解決、アクセス制御の対策が不十分であるという課題がある。【０００６】
本発明は、上記のような課題を解決するためになされたものであり、開発環境のバージョンを適切に管理するとともに、同一プログラムに対する複数ユーザによる競合を解決する開発環境システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る開発環境システムは、
プログラムの開発に用いる作業領域の確保を要求する確保要求であって、ユーザを識別するユーザ情報を含む確保要求と、前記プログラムの開発に用いる開発環境の利用を要求する利用要求であって、前記開発環境を識別する開発環境識別子と前記ユーザを識別する前記ユーザ情報とを含む利用要求とを送信する端末側送信部を備える端末装置と、
前記端末側送信部から、前記確保要求を受信し、受信した前記確保要求に含まれる前記ユーザ情報に対応するユーザ作業領域を処理装置により確保する確保部と、
前記開発環境と、前記開発環境を識別する前記開発環境識別子とを対応付けて記憶装置に記憶する開発環境記憶部と、
前記端末側送信部から前記利用要求を受信し、受信した前記利用要求に含まれる前記開発環境識別子に対応する前記開発環境を前記開発環境記憶部から処理装置により抽出し、抽出した前記開発環境と、前記利用要求に含まれる前記ユーザ情報に対応する前記ユーザ作業領域とを処理装置により利用可能とする開発環境管理部とを備える開発環境装置と
を備えることを特徴とする。
【発明の効果】
【０００８】
本発明の一の態様によれば、確保部がユーザ情報に対応するユーザ作業領域を開発環境装置に確保し、開発環境管理部が利用要求に含まれる開発環境識別子に対応する開発環境を開発環境記憶部から抽出し、確保したユーザ作業領域と抽出した開発環境とを利用可能とするので、開発環境のバージョンが変わっても適切に対応することができるとともに、複数ユーザによる競合を解決することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る開発環境システム５００のブロック構成図である。
【図２】実施の形態１に係るユーザ情報テーブル１１３の構成を示す図である。
【図３】実施の形態１に係る構成情報テーブル１１４の構成を示す図である。
【図４】実施の形態１に係る開発環境サーバ１００、クライアント端末２００のハードウェア構成の一例を示す図である。
【図５】実施の形態１に係る開発環境システム５００による開発環境提供処理及びプログラム開発処理の動作を示すフローチャートである。
【図６】実施の形態２に係る開発環境システム５００ａのブロック構成を示す図である。
【図７】実施の形態２に係るアクセス権テーブル１３０の構成を示す図である。
【図８】実施の形態３に係る開発環境システム５００ｂのブロック構成を示す図である。
【図９】実施の形態３に係るコード単位アクセス権テーブル１３２の構成を示す図である。
【図１０】実施の形態３に係るコード単位アクセス制御部２０３によるラダープログラム開発における定数変更の例を示す図である。
【図１１】実施の形態３に係るコード単位アクセス制御部２０３によるラダープログラム開発におけるコード追加の例を示す図である。
【図１２】実施の形態４に係る開発環境システム５００ｃのブロック構成を示す図である。
【図１３】実施の形態４に係る編集履歴テーブル１３３の構成を示す図である。
【図１４】実施の形態５に係る開発環境システム５００ｄのブロック構成を示す図である。
【図１５】実施の形態５に係る編集ロックテーブル１３４の構成を示す図である。
【図１６】実施の形態６に係る開発環境システム５００ｅのブロック構成を示す図である。
【図１７】実施の形態６に係る操作履歴テーブル１３５の構成を示す図である。
【図１８】実施の形態７に係る開発環境システム５００ｆのブロック構成を示す図である。
【図１９】実施の形態８に係る開発環境システム５００ｇのブロック構成を示す図である。
【発明を実施するための形態】
【００１０】
実施の形態１．
図１は、本実施の形態に係る開発環境システム５００のブロック構成図である。図１を用いて、本実施の形態に係る開発環境システム５００のブロック構成について説明する。
【００１１】
開発環境システム５００は、開発環境サーバ１００（開発環境装置）、クライアント端末２００（端末装置）を備える。開発環境サーバ１００は、クライアント端末２００に対し、ユーザによるプログラムの開発処理を実行するための開発環境を提供する。
開発環境は、プログラムの開発の際に提供される開発環境サービスとして実行される開発環境サービス部１２５と、開発環境サービス部１２５にアクセスする際のユーザインターフェースとして実行される開発環境クライアント部２０２とから構成される。
【００１２】
図１では、開発環境システム５００は、ユーザにより利用されるクライアント端末２００を２つ備えているが、クライアント端末２００は１つでもよいし、３つ以上備えていてもよい。
開発環境サーバ１００と、クライアント端末２００とは、ネットワーク４００を介して接続されている。クライアント端末２００には、制御装置３００が接続されている。制御装置３００は、ユーザの操作により、開発環境を利用して開発されたプログラムが書き込まれる端末側記憶機器の一例である。
【００１３】
クライアント端末２００側の構成を説明する。
クライアント端末２００は、クライアント環境管理部２０１、開発環境クライアント部２０２を備える。
【００１４】
クライアント環境管理部２０１は、ユーザから開発環境の利用を要求する利用要求を受け付ける。クライアント環境管理部２０１は、受け付けた利用要求に基づいて、ユーザにより利用が要求された開発環境を識別する開発環境ＩＤ（開発環境識別子）と、ユーザを識別するユーザ情報とを利用要求に含める。クライアント環境管理部２０１は、開発環境ＩＤとユーザ情報とが含まれた利用要求を開発環境サーバ１００へ送信する。クライアント環境管理部２０１は、端末側送信部の一例である。
また、クライアント環境管理部２０１は、開発環境の利用下において、ユーザの操作により、開発環境サーバ１００側の各種機能を呼び出す。
【００１５】
開発環境クライアント部２０２は、開発環境のユーザインターフェースに相当する機能を有する。
開発環境クライアント部２０２は、開発環境サーバ１００により利用可能となった開発環境と作業領域１２６（ユーザ作業領域）とを用いて、ユーザによるプログラムの開発処理を実行するためのユーザインターフェースである。
開発環境クライアント部２０２は、開発環境サーバ１００からプログラムを開発する開発プログラムのユーザインタフェースであるインタフェースプログラムを受信する。開発環境クライアント部２０２は、受信したインタフェースプログラムをクライアント端末２００にインストールする。開発環境クライアント部２０２は、インストールされたインタフェースプログラムを処理装置により実行することにより、開発環境クライアント部２０２の機能を実現する。以下、インタフェースプログラムを開発環境クライアント部２０２と呼ぶ場合もある。開発環境クライアント部２０２は、利用可能となった開発環境と作業領域１２６（ユーザ作業領域）とを用いたプログラムの開発要求をユーザから受け付け、受け付けた開発要求を開発環境サーバ１００に送信する端末側開発部の一例である。
【００１６】
ユーザがクライアント環境管理部２０１を通して開発環境を選択すると、選択された開発環境に対応した開発環境クライアント部２０２（インタフェースプログラム）が開発環境サーバ１００側よりダウンロードされ、クライアント端末２００側にインストールされる。つまり、開発環境クライアント部２０２は、開発環境サーバ１００による開発環境提供処理が実行されている場合に、クライアント端末２００に備えられる。
開発環境クライアント部２０２は、ユーザから開発要求に応じて、開発環境サーバ１００側の機能を呼び出す。開発環境クライアント部２０２は、クライアント環境管理部２０１を通して、開発環境サーバ１００側の機能を呼び出してもよいし、クライアント環境管理部２０１を通さないで、開発環境サーバ１００側の機能を呼び出してもよい。開発環境に閉じた処理の場合は、開発環境クライアント部２０２は、開発環境サーバ１００側で実行されている開発環境サービス部１２５を直接呼び出す。
【００１７】
開発環境サーバ１００側の構成を説明する。
開発環境サーバ１００は、ウェブサーバ部１１８、ステート制御部１１７、認証・認可部１１２、ユーザ管理部１１１、ユーザ情報テーブル１１３、サーバ環境管理部１１６、構成情報管理部１１５、構成情報テーブル１１４、作業領域管理部１１９、プログラム管理部１２０、プログラムリポジトリ１２１、開発環境管理部１２２、開発環境リポジトリ１２３、開発環境サービス制御部１２４を備える。
【００１８】
図２は、本実施の形態に係るユーザ情報テーブル１１３の構成を示す図である。
図２に示すように、ユーザ情報テーブル１１３は、ユーザＩＤ、名前、パスワードを対応付けて格納する。
【００１９】
図３は、本実施の形態に係る構成情報テーブル１１４の構成を示す図である。
図３に示すように、構成情報テーブル１１４は、構成管理テーブル１１４１、プログラム情報テーブル１１４２、開発環境情報テーブル１１４３、制御装置情報テーブル１１４４を備える。
【００２０】
プログラム情報テーブル１１４２は、プログラムＩＤ、プログラム名、プログラムバージョンを対応付けて格納する。
プログラム管理部１２０は、プログラム名とバージョンに基づき、プログラムリポジトリ１２１からプログラムを取得する。
開発環境情報テーブル１１４３は、開発環境ＩＤ、開発環境名、バージョンを対応付けて格納する。開発環境管理部１２２は、開発環境名とバージョンに基づき、開発環境リポジトリ１２３から開発環境を取得する。
制御装置情報テーブル１１４４は、制御装置ＩＤ、制御装置名、制御装置を特定するシリアルＩＤを対応付けて格納する。
構成管理テーブル１１４１は、ユーザＩＤ、プログラムＩＤ、開発環境ＩＤ、制御装置ＩＤを対応付けて格納する。
【００２１】
構成情報管理部１１５は、構成情報テーブル１１４からの読み出し処理、構成情報テーブル１１４への書き込み処理を管理する。
【００２２】
ウェブサーバ部１１８は、クライアント端末２００のクライアント環境管理部２０１からの処理要求に基づいて処理を実行し、処理の結果をクライアント環境管理部２０１に送信する。クライアント環境管理部２０１からの処理要求は、例えば、ログイン処理の要求（認証要求、確保要求）、開発環境提供処理の要求（利用要求）、プログラム開発処理の要求等（開発要求）である。
【００２３】
ステート制御部１１７は、ステートを持たないＨＴＴＰアクセスと開発環境サーバ１００側の状態を関連付ける。具体的には、ステート制御部１１７は、ユーザが認証を受けた時点で、ログインユーザを特定するトークンを発行し、ユーザとトークンとを対応付ける。トークンはユーザを識別するユーザ情報の一例である。クライアント端末２００と開発環境サーバ１００とは、発行されたトークンを送受信することによりユーザを特定する。このように、ステート制御部１１７は、ステートを持たないＨＴＴＰアクセスと、開発環境サーバ１００側の状態とを紐付ける。
ステート制御部１１７は、トークンの代わりにユーザＩＤを用いて、ステートを持たないＨＴＴＰアクセスと開発環境サーバ１００側の状態を関連付けることも可能である。このとき、ユーザＩＤは、ユーザ情報の一例である。しかし、ユーザＩＤを用いる場合は成り済ましの危険性があるため、ステート制御部１１７は、ログイン毎に異なるトークンを発行することによりステートを管理することが好ましい。
【００２４】
認証・認可部１１２は、ユーザＩＤとパスワードを受け取り、ユーザ情報テーブル１１３を参照する。ユーザＩＤとパスワードは、ユーザの認証を要求する認証要求の一例である。認証・認可部１１２は、ユーザ情報テーブル１１３に基づいて、パスワードを照合し、ユーザを認証する。認証・認可部１１２は、ユーザの認証を実行するユーザ認証部の一例である。
【００２５】
ユーザ管理部１１１は、認証・認可部１１２によりユーザが認証され、ユーザがログインすると、サーバ環境管理部１１６に対してユーザ用の作業領域１２６の作成を依頼する。作業領域１２６は、開発環境サーバ１００側のファイルシステム上のディレクトリである。また、ユーザ管理部１１１は、クライアント環境管理部２０１、サーバ環境管理部１１６から、ユーザの情報に関する問合せ、ユーザの登録の操作を受け付ける。
【００２６】
サーバ環境管理部１１６は、ログインしたユーザのユーザＩＤを作業領域管理部１１９に出力する。
作業領域管理部１１９は、ユーザの認証が完了すると、ユーザに対応する作業領域１２６を記憶装置に確保する。つまり、ユーザの認証要求は、作業領域の確保要求の一例である。
作業領域管理部１１９は、確保した作業領域１２６とユーザを示すユーザ情報とを対応付けて管理する。作業領域管理部１１９は、サーバ環境管理部１１６から入力したユーザＩＤに基づき、ユーザＩＤに一意に対応する名前を持つ作業領域１２６（ユーザ作業領域）を作成する。
【００２７】
開発環境リポジトリ１２３は、開発環境ＩＤ（開発環境識別子）に対応付けられた開発環境を格納する。開発環境リポジトリ１２３は、開発環境と、開発環境を一意に識別する開発環境ＩＤとを対応付けて記憶装置に記憶する開発環境記憶部の一例である。
開発環境リポジトリ１２３は、開発環境として、プログラムを開発する開発環境サービス（開発プログラム）と、開発環境サービスのユーザインターフェースであるユーザインターフェースプログラムとを記憶する。
【００２８】
開発環境管理部１２２は、ユーザにより選択された開発環境ＩＤに対応する開発環境を開発環境リポジトリ１２３から取得する。
開発環境管理部１２２は、クライアント環境管理部２０１から、ウェブサーバ部１１８、ステート制御部１１７、サーバ環境管理部１１６を介して開発環境の利用要求を受信し、受信した利用要求に含まれる開発環境ＩＤに対応する開発環境を開発環境リポジトリ１２３から抽出する。開発環境管理部１２２は、抽出した開発環境をクライアント端末２００において利用可能とする。
【００２９】
開発環境管理部１２２は、開発環境サービス部１２５を開発環境サーバ１００にインストールし、開発環境クライアント部２０２をクライアント端末２００にインストールすることにより、開発環境を用いてユーザ作業領域１２６においてプログラムの開発をすることを可能とする。開発環境サービス部１２５は、開発プログラムをインストールし、処理装置により実行することにより開発環境サービス機能を実現する。以下、開発環境サービス部１２５を開発プログラムと呼ぶ場合もある。開発環境サービス部１２５は、開発環境サーバ１００側で動作する。開発環境クライアント部２０２は、クライアント端末２００側において、開発環境サービス部１２５のユーザインターフェースとして機能する。
【００３０】
開発環境クライアント部２０２は、起動されると、例えば、開発環境操作画面をクライアント端末２００の表示装置に表示する。ユーザは、開発環境操作画面を介して、プログラムの開発をする。ユーザは、開発環境操作画面を介して、必要な開発環境サービス部１２５を呼び出し、プログラムの開発をする。
開発環境クライアント部２０２は、クライアント環境管理部２０１経由で、開発環境サービス部１２５を呼び出してもよい。
開発環境サービス制御部１２４は、開発環境サーバ１００側で動作する開発環境サービス部１２５を制御する。例えば、開発環境サービス制御部１２４は、クライアント環境管理部２０１経由で開発環境サービス部１２５が呼び出された場合の開発環境サービス部１２５の動作を制御する。
【００３１】
プログラムリポジトリ１２１は、プログラムＩＤ（プログラム識別子）に対応付けられたプログラムを格納する。プログラムリポジトリ１２１は、プログラムと、プログラムを一意に識別するプログラムＩＤとを対応付けて記憶装置に記憶するプログラム記憶部の一例である。
【００３２】
プログラム管理部１２０は、クライアント環境管理部２０１から、ウェブサーバ部１１８、ステート制御部１１７、サーバ環境管理部１１６を介して、ユーザにより選択されたプログラムＩＤを含むプログラムの開発要求を受信する。プログラム管理部１２０は、ユーザにより選択されたプログラムＩＤに基づき、プログラムリポジトリ１２１からプログラムを取得する。プログラム管理部１２０は、取得したプログラムをログイン時に作成されたユーザ作業領域１２６へ展開する。
【００３３】
図４は、本実施の形態に係る開発環境サーバ１００、クライアント端末２００のハードウェア構成の一例を示す図である。
図４を用いて、開発環境サーバ１００、クライアント端末２００のハードウェア構成例について説明する。
【００３４】
開発環境サーバ１００、クライアント端末２００はコンピュータであり、開発環境サーバ１００、クライアント端末２００の各要素をプログラムで実現することができる。
開発環境サーバ１００、クライアント端末２００のハードウェア構成としては、バスに、演算装置９０１、外部記憶装置９０２、主記憶装置９０３、通信装置９０４、入出力装置９０５が接続されている。
【００３５】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）である。
外部記憶装置９０２は、例えばＲＯＭ（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）やフラッシュメモリ、ハードディスク装置である。
主記憶装置９０３は、ＲＡＭ（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）である。
通信装置９０４は、例えば通信ボード等であり、ＬＡＮ（Ｌｏｃａｌ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）等に接続されている。通信装置９０４は、ＬＡＮに限らず、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ・Ｐｒｏｔｏｃｏｌ・Ｖｉｒｔｕａｌ・Ｐｒｉｖａｔｅ・Ｎｅｔｗｏｒｋ）、広域ＬＡＮ、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ・Ｔｒａｎｓｆｅｒ・Ｍｏｄｅ）ネットワークといったＷＡＮ（Ｗｉｄｅ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）、あるいは、インターネットに接続されていても構わない。ＬＡＮ、ＷＡＮ、インターネットは、ネットワークの一例である。
入出力装置９０５は、例えばマウス、キーボード、ディスプレイ装置等である。マウスの代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。ディスプレイ装置は、ＬＣＤ（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）、あるいは、その他の表示装置でもよい。
【００３６】
プログラムは、通常は外部記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１に読み込まれ、実行される。
プログラムは、図１に示す「〜部」として説明している機能を実現するプログラムである。
更に、外部記憶装置９０２にはオペレーティングシステム（ＯＳ）も記憶されており、ＯＳの少なくとも一部が主記憶装置９０３にロードされ、演算装置９０１はＯＳを実行しながら、図１に示す「〜部」の機能を実現するプログラムを実行する。
また、アプリケーションプログラムも外部記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１により実行される。
また、「〜テーブル」等の情報も外部記憶装置９０２に記憶されている。
【００３７】
また、本実施の形態の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の検知」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置９０３にファイルとして記憶されている。
また、開発環境サーバ１００、クライアント端末２００が受信したデータが主記憶装置９０３に記憶される。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置９０３にファイルとして記憶されてもよい。
【００３８】
なお、図４の構成は、あくまでも開発環境サーバ１００、クライアント端末２００のハードウェア構成の一例を示すものであり、開発環境サーバ１００、クライアント端末２００のハードウェア構成は図４に記載の構成に限らず、他の構成であってもよい。
【００３９】
図５は、本実施の形態に係る開発環境システム５００による開発環境提供処理及びプログラム開発処理の動作を示すフローチャートである。
図５を用いて、開発環境サーバ１００及びクライアント端末２００の開発環境提供処理（開発環境提供方法）及びプログラム開発処理（プログラム開発方法）の動作について説明する。
【００４０】
Ｓ１０１において、クライアント環境管理部２０１は、ユーザによるログインを受け付ける。
Ｓ２０１において、ウェブサーバ部１１８は、クライアント環境管理部２０１からのログイン要求を受け付け、ユーザＩＤとパスワードを認証・認可部１１２に渡す。認証・認可部１１２は、ユーザＩＤとパスワードを受け取り、ユーザ情報テーブル１１３を参照し、ユーザを認証する。
【００４１】
Ｓ２０２において、ユーザ管理部１１１は、ユーザの認証が完了すると、サーバ環境管理部１１６に対してユーザ用の作業領域１２６の作成を依頼する。作業領域管理部１１９は、サーバ環境管理部１１６から入力したユーザＩＤに基づき、ユーザＩＤに一意に対応する名前を持つ作業領域１２６を作成する。
【００４２】
Ｓ１０２において、ユーザがクライアント端末２００のクライアント環境管理部２０１を通じて開発環境を選択する。クライアント環境管理部２０１は、選択された開発環境の開発環境ＩＤを含む利用要求を開発環境サーバ１００に対して送信する。
ユーザが利用する開発環境の種類、開発環境のバージョンを変更したい場合には、ユーザは開発環境を選択し直す。
【００４３】
Ｓ２０３において、開発環境管理部１２２は、クライアント環境管理部２０１により送信された利用要求に含まれる開発環境ＩＤを取得する。開発環境管理部１２２は、取得した開発環境ＩＤに基づき、開発環境リポジトリ１２３から開発環境を抽出する。開発環境は、開発環境サービス部１２５と開発環境クライアント部２０２を含む。
開発環境管理部１２２は、抽出した開発環境に含まれる開発環境サービス部１２５を開発環境サーバ１００側に配置する。また、開発環境管理部１２２は、クライアント環境管理部２０１へ開発環境クライアント部２０２を送信する。
【００４４】
Ｓ１０３において、クライアント環境管理部２０１は、開発環境管理部１２２により送信された開発環境クライアント部２０２を受信する。クライアント環境管理部２０１は、受信した開発環境クライアント部２０２をクライアント端末２００にインストールする。
【００４５】
次に、開発環境システム５００の開発環境提供処理により利用可能となった開発環境を用いて、プログラムを開発するプログラム開発処理について説明する。
【００４６】
Ｓ１０４において、ユーザがクライアント端末２００側のクライアント環境管理部２０１で開発するプログラムを選択する。クライアント環境管理部２０１は、選択されたプログラムのプログラムＩＤを含む開発要求を開発環境サーバ１００に対して送信する。
【００４７】
Ｓ２０４において、プログラム管理部１２０は、クライアント環境管理部２０１により送信された開発要求を受信する。プログラム管理部１２０は、受信した開発要求に含まれるプログラムＩＤに基づき、プログラムリポジトリ１２１からプログラムを取得する。プログラム管理部１２０は、取得したプログラムを、ログイン時に作成された作業領域１２６へ格納する。
【００４８】
Ｓ１０５において、クライアント端末２００側へインストールされた開発環境クライアント部２０２が起動される。ユーザは、起動された開発環境クライアント部２０２のユーザインターフェース機能を用いて、プログラムの製作・編集を行うことができる。起動した開発環境クライアント部２０２では、プログラムを開発することが可能な状態となっている。開発環境クライアント部２０２の起動後に別のプログラムを読み込む事も可能である。
ユーザによるプログラムの編集は、クライアント端末２００側の開発環境クライアント部２０２の中で処理される。
【００４９】
一方、ユーザが、プログラムのコンパイル等の開発環境サーバ１００側で処理すべき開発環境サービス処理を要求する操作を行うと、開発環境サーバ１００側の開発環境サービス部１２５が動作し、開発環境サービス処理を実行する。開発環境サービス部１２５は、コンパイル処理、デバック処理等のサーバ側処理毎にサービス処理ブロックを有する。
Ｓ２０５において、開発環境サービス部１２５は、ユーザから要求された開発環境サービス処理に該当するサービス処理ブロックを呼び出し、サーバ側で処理を行う。開発環境サービス部１２５は、サービス処理ブロックの実行結果のみをクライアント端末２００側へ返却する。
【００５０】
Ｓ１０６において、開発環境クライアント部２０２は、ユーザからのプログラムの保存操作を受け付ける。開発環境クライアント部２０２は、プログラムの保存要求を開発環境サーバ１００へ送信する。
【００５１】
Ｓ２０６において、開発環境サービス部１２５は、作業領域１２６のプログラムが格納されたファイルに対し、クライアント端末２００側での変更内容を反映する。Ｓ１０６でのユーザによる保存操作時に、ユーザがバージョン登録を行う場合は、クライアント環境管理部２０１は、ユーザからのバージョン登録操作を受け付ける。プログラム管理部１２０は、作業領域１２６へのプログラムの保存が完了した後に、作業領域１２６上のプログラムのファイルをプログラムリポジトリ１２１に登録する。ファイル単位で登録してもよいし、フォルダ単位で登録してもよい。プログラム管理部１２０は、初回以降の登録時には、プログラムにおいて変更があった差分のみを登録する。
【００５２】
以上で、開発環境システム５００による開発環境提供処理及びプログラム開発処理についての説明を終わる。
【００５３】
以上のように、本実施の形態に係る開発環境システム５００によれば、作業領域管理部１１９は、ユーザＩＤに対し一意となるディレクトリ名の作業領域１２６を作成する。このため、開発環境システム５００では、複数ユーザが作業領域１２６に同時にアクセスしても競合することはない。
【００５４】
プログラム管理部１２０は、プログラムリポジトリ１２１からユーザ毎の作業領域１２６へプログラムをコピーし、ユーザは作業領域１２６にコピーされたプログラムを編集する。このため、同じプログラムを複数のユーザが同時に編集することが可能である。
【００５５】
プログラム管理部１２０がプログラムの変更をプログラムリポジトリ１２１に登録する場合、他のユーザによって別の変更が既に登録され、変更部分が競合する場合がある。プログラム管理部１２０は、ファイル単位で変更状況を管理しているので、変更部分の競合を検出することができる。
例えば、プログラム管理部１２０は、ファイルの競合を検出した場合には、それをユーザへ通知する。競合の検出がユーザに通知された場合、ユーザは次の３通りの処理が可能である。
１つ目は、ユーザは、競合を無視して変更部分を登録する。２つ目は、ユーザは、他のユーザの変更を保ちながら自身の変更が反映可能であれば、変更を反映して登録する。３つ目は、ユーザは、自身の変更を別のバージョンとして登録する。
【００５６】
ユーザは、上記のような競合を防ぐため、最初にプログラムを取得した場合に、プログラムをロックして、他のユーザが取得できないようにする。あるいは、ユーザは、最初にプログラムを取得した場合、他のユーザの権限がプログラムについて読取専用となるようにし、他のユーザが編集できないようにする。
【００５７】
以上のように、本実施の形態に係る開発環境システム５００によれば、開発環境のバージョン管理と、ソフトウェアのバージョンに応じた開発環境の入れ替えと、同一プログラムに対する複数ユーザでの同時開発とを実現し、大規模プログラムの開発効率を向上させる。
【００５８】
実施の形態２．
本実施の形態では、主に、実施の形態１との差異について説明する。
実施の形態１で説明した構成部と同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合がある。
図６は、本実施の形態に係る開発環境システム５００ａのブロック構成を示す図である。
本実施の形態では、実施の形態１に加えて、アクセス権テーブル１３０、アクセス権管理部１３１を備える。
【００５９】
図７は、本実施の形態に係るアクセス権テーブル１３０の構成を示す図である。
図７に示すように、アクセス権テーブル１３０（アクセス権情報）は、ユーザ情報アクセス権テーブル１３０１、プログラムアクセス権テーブル１３０２を備える。アクセス権テーブル１３０（アクセス権情報）は、アクセス権情報記憶部の一例である。
【００６０】
ユーザ情報アクセス権テーブル１３０１は、主体のユーザＩＤ、対象のユーザＩＤ、アクセス権が対応付けられて格納されている。主体のユーザＩＤは、アクセスする側のユーザのユーザＩＤである。対象のユーザＩＤは、アクセスされる側のユーザのユーザＩＤである。アクセス権は、読取、変更等の権限である。ユーザ情報アクセス権テーブル１３０１は、ユーザ情報テーブル１１３に対するアクセス制御を行う際に用いられる。
【００６１】
プログラムアクセス権テーブル１３０２は、主体のユーザＩＤ、対象のプログラムＩＤ、アクセス権が対応付けられて格納されている。主体のユーザＩＤは、アクセスする側のユーザのユーザＩＤである。対象のプログラムＩＤは、アクセスされる側のプログラムのプログラムＩＤである。アクセス権は、読取、変更等の権限である。プログラムアクセス権テーブル１３０２は、プログラムに対するアクセス制御を行う際に用いられる。
【００６２】
アクセス権管理部１３１は、クライアント環境管理部２０１からアクセス権の変更要求を受信する。アクセス権管理部１３１は、ユーザ情報アクセス権テーブル１３０１とプログラムアクセス権テーブル１３０２とに基づいて、アクセス権の変更要求に応じたアクセス権の変更を実行する。
【００６３】
ユーザＵ００１がユーザＵ００２への読取権限を持っている場合、ユーザＵ００１は、ユーザ情報テーブル１１３によってユーザＵ００２が存在することを知ることができる。一方、ユーザＵ００４がいたとしても、ユーザＵ００１がユーザＵ００４への読取権限を持っていない場合、ユーザ情報テーブル１１３によってはその存在を知ることはできない。
ユーザは、ユーザ情報テーブル１１３に他のユーザを登録することができ、登録したユーザに対しては変更権限を持つ。ユーザＵ００１がユーザＵ００２をユーザ情報テーブル１１３に登録した場合、ユーザＵ００１は、ユーザＵ００２に対して変更権限を持ち、ユーザＵ００２のユーザ情報テーブル１１３を変更する、ユーザＵ００２を削除することなどができる。
【００６４】
ユーザＵ００１がプログラムＰ００１の変更権限を持っている場合、ユーザＵ００１はプログラムＰ００１の編集をすることができる。ユーザＵ００２がプログラムＰ００１に対して読取権限しか持っていない場合、ユーザＵ００２は、プログラムＰ００１を閲覧する事はできるが編集することはできない。ユーザがプログラムを作成すると、そのユーザは作成したプログラムに対して変更権限を持つ。
【００６５】
例えば、開発環境サーバ１００がクライアント端末２００からプログラムの開発要求を受信した場合について説明する。アクセス権管理部１３１は、アクセス権テーブル１３０のプログラムアクセス権テーブル１３０２に基づいて、開発要求を送信したユーザのプログラムに対するアクセス権を参照する。アクセス権が変更の場合は、プログラムの開発処理を続行し、プログラム管理部１２０はプログラムを作業領域１２６に展開する。アクセス権が読取の場合は、プログラムの読取権限しかないことをクライアント端末２００に通知する。あるいは、アクセス権が読取の場合、プログラム管理部１２０はプログラムを作業領域１２６に展開し、その後プログラムの変更要求を受信した場合に、プログラムの読取権限しかないことをクライアント端末２００に通知する。
【００６６】
以上のように、アクセス権を変更する操作と、アクセス権の操作に対する権限を導入すると、ユーザ情報やプログラムに対するアクセス権を他人に付与することが可能となる。アクセス権の操作に対する権限には、読取、変更等の権限がある。アクセス権の操作権限もユーザ情報アクセス権テーブル１３０１、プログラムアクセス権テーブル１３０２へ導入することが可能である。
以上の構成により、ユーザに対してプログラム操作に関する適切な権限を与えて、必要な情報を開示することができ、開発効率が向上する。
【００６７】
実施の形態３．
本実施の形態では、主に、実施の形態２との差異について説明する。
実施の形態１，２で説明した構成部と同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合がある。
図８は、本実施の形態に係る開発環境システム５００ｂのブロック構成を示す図である。
本実施の形態では、実施の形態２に加えて、開発環境サーバ１００は、コード単位アクセス権テーブル１３２（コード単位アクセス権情報）を備える。また、実施の形態２に加えて、クライアント端末２００の開発環境クライアント部２０２は、コード単位アクセス制御部２０３を備える。コード単位アクセス権テーブル１３２は、コード単位アクセス権記憶部の一例である。
【００６８】
図９は、本実施の形態に係るコード単位アクセス権テーブル１３２の構成を示す図である。
コード単位アクセス権テーブル１３２は、主体のユーザＩＤ、対象のプログラムＩＤ、アクセスするプログラム部位、コード単位アクセス権が対応付けられて格納されている。主体のユーザＩＤは、アクセスする側のユーザのユーザＩＤである。対象のプログラムＩＤは、アクセスされる側のプログラムのプログラムＩＤである。コード単位アクセス権は、読取不可、変更、追加等の権限である。プログラム部位は、プログラム中の定数、コードの範囲等である。
【００６９】
コード単位アクセス制御部２０３は、コード単位アクセス権テーブル１３２に基づいて、ユーザのプログラム部位に対するコード単位アクセス権に応じたプログラムの開発処理のインタフェース制御を実行する。
コード単位アクセス制御部２０３は、ログインしたユーザのコード単位アクセス権を検出する。コード単位アクセス制御部２０３は、コード単位アクセス権に応じてエディタを制御し、読取不可権限のある部位を不可視とする、変更権限の無い部位を編集不可とする等のインターフェース制御を実行する。
【００７０】
図１０は、本実施の形態に係るコード単位アクセス制御部２０３によるラダープログラム開発における定数変更の例を示す図である。図１１は、本実施の形態に係るコード単位アクセス制御部２０３によるラダープログラム開発におけるコード追加の例を示す図である。
【００７１】
図９のコード単位アクセス権テーブル１３２に示すように、ユーザＵ００２はプログラムＰ００１の「定数Ｋ１０」に対して変更権限がある。また、図７のプログラムアクセス権テーブル１３０２に示すように、ユーザＵ００２は、プログラムＰ００１に対して読取権限しか持っていない。本実施の形態では、ユーザＵ００２がプログラムＰ００１に対して読取権限しか持っていなくても、「定数Ｋ１０」の値だけは画面上で変更することが可能である。
【００７２】
図１０は、シーケンサの制御を行うプログラミング言語であるラダープログラムにおいて、定数Ｋ１０を変更する様子を示している。図１０では、ユーザＵ００２は、定数Ｋ１０（ループ回数）のみを変更することができる。
【００７３】
図９のコード単位アクセス権テーブル１３２に示すように、ユーザＵ００３はプログラムＰ００１に対して、追加権限を持っている。また、図７のプログラムアクセス権テーブル１３０２に示すように、ユーザＵ００３は、プログラムＰ００１に対して読取権限しか持っていない。この場合、ユーザＵ００３はプログラムＰ００１の既存コードは変更できないが、新規にコードを追加することができる。
【００７４】
図１１は、ラダープログラムにおいて、コードを追加する様子を示している。図１１のように、ユーザＵ００３は、点線部分の既存コードは変更できないが、下段に新規にコードを追加することはできる。ただし、ユーザＵ００３は、コード単位アクセス権テーブル１３２において読取不可であるコードを参照したコードを追加することはできない。
【００７５】
コード単位アクセス権に関して、読取不可、変更、追加の権限についての説明を行った。コード単位アクセス権に関して、その他に、読取、変更不可等の権限を設定できるとしてもよい。コード単位アクセス権の定義が矛盾なく簡潔に記述できる権限を用意し、このようなコード単位アクセス権を設定することができる。
コードの変更パターンに関して、定数名（Ｋ１０）を指定した変更に関して説明した。コードの変更パターンに関して、その他に、定数全般を指定する、正規表現で指定する、定数の上限、下限など設定可能な範囲を制限する等の変更パターンでもよい。
【００７６】
以上のように、本実施の形態に係る開発環境システム５００ｂによれば、プログラムロジックの変更は許可しないが、定数の変更による微調整は許可するような柔軟なアクセス制御が可能である。例えば、プログラムの変更を許可したくないが、エンドユーザや保守要員に対して、定数の変更による調整のみを許可することで、保守性や開発効率を向上する。
【００７７】
実施の形態４．
本実施の形態では、主に、実施の形態３との差異について説明する。
実施の形態１〜３で説明した構成部と同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合がある。
【００７８】
図１２は、本実施の形態に係る開発環境システム５００ｃのブロック構成を示す図である。図１３は、本実施の形態に係る編集履歴テーブル１３３の構成を示す図である。
図１２に示すように、本実施の形態に係る開発環境システム５００ｃでは、実施の形態３の構成に加えて、編集履歴テーブル１３３（編集履歴情報）を備える。編集履歴テーブル１３３は、編集履歴情報記憶部の一例である。
【００７９】
図１３に示すように、編集履歴テーブル１３３は、日付、ユーザＩＤ、開発環境ＩＤ、プログラムＩＤ、編集箇所から構成される。日付には、開発環境システム５００ｃを操作した日と時間が格納される。ユーザＩＤには、操作したユーザのユーザＩＤが格納される。開発環境ＩＤには、操作の際に使用していた開発環境の開発環境ＩＤが格納される。プログラムＩＤには、操作の際に使用していたプログラムのプログラムＩＤが格納される。編集箇所には、編集を行ったプログラムのコードの位置が記録される。
【００８０】
コード単位アクセス制御部２０３は、ユーザが指定した粒度（関数やブロック単位）でユーザの編集箇所を検出し、編集履歴テーブル１３３へ記録する。コード単位アクセス制御部２０３は、編集履歴テーブル１３３に編集箇所を記録する度に、他のユーザが同じプログラムの同じ編集箇所を編集していないかをチェックする。コード単位アクセス制御部２０３は、他のユーザが同じプログラムの同じ編集箇所を編集していたと判断すると、編集の中止を編集中のユーザに通知する。
【００８１】
編集箇所としてコードの行番号で指定する方法について説明した。編集箇所としては、その他に、パッケージ、関数等、コードの部位が特定できる他の指定方法も適用することができる。
【００８２】
以上のように、本実施の形態に係る開発環境システム５００ｃによれば、複数ユーザによる同時開発の効率を向上する。
【００８３】
実施の形態５．
本実施の形態では、主に、実施の形態４との差異について説明する。
実施の形態１〜４で説明した構成部と同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合がある。
【００８４】
図１４は、本実施の形態に係る開発環境システム５００ｄのブロック構成を示す図である。図１５は、本実施の形態に係る編集ロックテーブル１３４の構成を示す図である。
図１４に示すように、本実施の形態に係る開発環境システム５００ｄでは、実施の形態４の構成に加えて、編集ロックテーブル１３４（編集ロック情報）を備える。編集ロックテーブル１３４は、編集ロック情報記憶部の一例である。
【００８５】
図１５に示すように、編集ロックテーブル１３４は、プログラムＩＤ、ロック箇所から構成される。図１５に示す編集ロックテーブル１３４は、プログラムＰ００１の１０行目は、ロックされていることを示す。
アクセス権管理部１３１は、あるユーザがプログラムにおいてロック箇所で指定したコードを編集すると、編集ロックテーブル１３４に記録する。これにより、他のユーザによるプログラムのロック箇所の編集は、ロックされる。
【００８６】
コード単位アクセス制御部２０３は、ユーザによりプログラムが編集されると、編集ロック情報記憶部により記憶された編集ロック情報に基づいて、当該プログラムの編集箇所がロック箇所となっているか否かを判定する。ロックされていなければ、コード単位アクセス制御部２０３は、当該プログラムの編集箇所を編集ロックテーブル１３４に記録する。ロックされている場合は、コード単位アクセス制御部２０３は、当該プログラムの編集がロックされていることを当該ユーザに通知する。
【００８７】
ロック箇所としてコードの行番号で指定する方法を説明したが、パッケージや関数等、コードの部位が特定できる他の指定方法も可能である。
以上の構成により、コードレベルでの柔軟なアクセス制御を可能とし、保守性や開発効率が向上する。
【００８８】
実施の形態６．
本実施の形態では、主に、実施の形態１との差異について説明する。
実施の形態１で説明した構成部と同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合がある。
【００８９】
図１６は、本実施の形態に係る開発環境システム５００ｅのブロック構成を示す図である。図１７は、本実施の形態に係る操作履歴テーブル１３５の構成を示す図である。
図１６に示すように、本実施の形態に係る開発環境システム５００ｅでは、実施の形態１の構成に加えて、操作履歴テーブル１３５（操作履歴情報）を備える。操作履歴テーブル１３５は、操作履歴情報記憶部の一例である。
【００９０】
図１７に示すように、操作履歴テーブル１３５は、日付、ユーザＩＤ、開発環境ＩＤ、プログラムＩＤ、制御装置ＩＤ、操作から構成される。日付には、ユーザが制御装置（端末側記憶機器）に対して操作した操作日時が格納される。ユーザＩＤには、操作したユーザのユーザＩＤが格納される。開発環境ＩＤには、操作の際に使用していた開発環境の開発環境ＩＤが格納される。プログラムＩＤには、操作の対象であるプログラムのプログラムＩＤが格納される。制御装置ＩＤには、操作を行った対象の制御装置３００の制御装置ＩＤ（端末側記憶機器識別子）が格納される。操作には、操作により実行された処理の内容が格納される。
【００９１】
制御装置３００へのプログラムの書込み処理が行われた場合は、書込み処理が実行された場合の日時、ユーザＩＤ、開発環境ＩＤ、プログラムＩＤ、制御装置ＩＤ、操作の内容である書込操作が操作履歴テーブル１３５に記録される。
操作履歴テーブル１３５への書込み処理は、ネットワーク４００を経由して、クライアント端末２００から開発環境サーバ１００側へ書き込まれる。このため、履歴の粒度はネットワーク遅延を考慮して書込み処理をするユーザが設定できるようにする。ただし、制御装置３００への書込み処理等のような履歴に残すべき処理は、ユーザの設定に関わらず必ず書き込むようにしてもよい。
【００９２】
操作履歴テーブル１３５は、サーバ環境管理部１１６を経由して、ユーザより閲覧可能とする。
本実施の形態に係る開発環境システム５００ｅによれば、開発環境、プログラム、制御装置等のトレーサビリティを高め、保守性や開発効率を向上する。
【００９３】
実施の形態７．
本実施の形態では、主に、実施の形態６との差異について説明する。
実施の形態６で説明した構成部と同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合がある。
本実施の形態では、ユーザがプログラムの開発を始める際に、クライアント端末２００に制御装置３００を接続することにより、復元したい時点のプログラムの開発環境、プログラムの状態を自動的に復元することができる仕組みについて説明する。
【００９４】
図１８は、本実施の形態に係る開発環境システム５００ｆのブロック構成を示す図である。図１８に示すように、本実施の形態に係る開発環境システム５００ｆでは、実施の形態６の構成に加えて、クライアント端末２００に開発環境復元部２０４を備える。
【００９５】
開発環境復元部２０４は、制御装置３００がクライアント端末２００に接続されると、制御装置３００を検出する。開発環境復元部２０４は、制御装置３００を検出すると、開発環境サーバ１００側のサーバ環境管理部１１６を呼び出す。開発環境復元部２０４は、呼び出したサーバ環境管理部１１６に対して、制御装置３００に書き込まれたプログラムの情報を含む復元要求を送信する。
【００９６】
サーバ環境管理部１１６は、復元要求を受信すると、復元要求に含まれるプログラムの情報に基づいて、操作履歴テーブル１３５等を検索する。サーバ環境管理部１１６は、制御装置３００に書き込まれた際の開発環境、プログラムの状態等を検出する。サーバ環境管理部１１６は、検出した開発環境、プログラムの状態等を、クライアント端末２００側に復元する。基本的にはプログラムが書き込まれた時点の開発環境等を復元するが、任意の時点の開発環境等を復元することもできる。
【００９７】
以上のように、本実施の形態に係る開発環境システム５００ｆによれば、クライアント端末２００に制御装置３００を接続するだけで、プログラムの開発時の環境が自動復元できるため、保守性や開発効率が向上する。
【００９８】
実施の形態８．
本実施の形態では、主に、実施の形態１〜７との差異について説明する。
実施の形態１〜７で説明した構成部と同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合がある。
【００９９】
図１９は、本実施の形態に係る開発環境システム５００ｇのブロック構成を示す図である。開発環境システム５００ｇは、実施の形態１〜７の構成を組み合わせた構成である。
【０１００】
本実施の形態では、実施の形態１〜７の構成を組み合わせた構成の開発環境システム５００ｇを示したが、これらの実施の形態のうち、２つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、１つを部分的に実施しても構わない。あるいは、これらの実施の形態のうち、２つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【０１０１】
上記実施の形態１〜７で説明したブロック構成についても、これらの実施の形態に限定されるものではない。例えば、「ウェブサーバ部」と「ステート制御部」はひとつの機能ブロックとし、「アクセス権管理部」、「構成情報管理部」、「ユーザ管理部」をひとつの機能ブロックとしてもよい。あるいは、上記実施の形態１〜７で説明した機能ブロックを、他のどのような組み合わせで開発環境サーバ１００及びクライアント端末２００を構成しても構わない。
【符号の説明】
【０１０２】
１００  開発環境サーバ、１１１  ユーザ管理部、１１２  認証・認可部、１１３  ユーザ情報テーブル、１１４  構成情報テーブル、１１５  構成情報管理部、１１６  サーバ環境管理部、１１７  ステート制御部、１１８  ウェブサーバ部、１１９  作業領域管理部、１２０  プログラム管理部、１２１  プログラムリポジトリ、１２２  開発環境管理部、１２３  開発環境リポジトリ、１２４  開発環境サービス制御部、１２５  開発環境サービス部、１２６  作業領域、１３０  アクセス権テーブル、１３１  アクセス権管理部、１３２  コード単位アクセス権テーブル、１３３  編集履歴テーブル、１３４  編集ロックテーブル、１３５  操作履歴テーブル、２００  クライアント端末、２０１  クライアント環境管理部、２０２  開発環境クライアント部、２０３  コード単位アクセス制御部、２０４  開発環境復元部、３００  制御装置、４００  ネットワーク、５００  開発環境システム、９０１  演算装置、９０２  外部記憶装置、９０３  主記憶装置、９０４  通信装置、９０５  入出力装置、１１４１  構成管理テーブル、１１４２  プログラム情報テーブル、１１４３  開発環境情報テーブル、１１４４  制御装置情報テーブル、１３０１  ユーザ情報アクセス権テーブル、１３０２  プログラムアクセス権テーブル。
【図１】
0005963957.tif 000002
【図２】
0005963957.tif 000003
【図３】
0005963957.tif 000004
【図４】
0005963957.tif 000005
【図５】
0005963957.tif 000006
【図６】
0005963957.tif 000007
【図７】
0005963957.tif 000008
【図８】
0005963957.tif 000009
【図９】
0005963957.tif 000010
【図１０】
0005963957.tif 000011
【図１１】
0005963957.tif 000012
【図１２】
0005963957.tif 000013
【図１３】
0005963957.tif 000014
【図１４】
0005963957.tif 000015
【図１５】
0005963957.tif 000016
【図１６】
0005963957.tif 000017
【図１７】
0005963957.tif 000018
【図１８】
0005963957.tif 000019
【図１９】
0005963957.tif 000020