以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
図1は、実施例1の計算機システム100の構成の一例を示す図である。
図1に示すように、計算機システム100は、複数の拠点101及び拠点管理装置102から構成される。本実施例では、計算機システム100はN個の拠点を含むものとする。なお、(1)、(2)、(N)等は、拠点101の識別情報を表す。
複数の拠点101及び拠点管理装置102は、ネットワーク103を介して互いに接続される。ネットワーク103は、イーサネット(登録商標)及びTCP/IP等の所定の通信プロトコルにしたがった通信を実現する通信基盤(Network Infrastructure)であり、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、専用線、公衆通信網等である。ネットワーク103の接続方式は有線及び無線のいずれでもよい。
拠点101(1)は、複数のクライアント端末111、開発支援装置112、メッセージルータ113、複数の実行装置114、データ管理装置115を含む。なお、クライアント端末111は一つでもよいし、実行装置114は一つでもよい。拠点101(2)及び拠点101(N)等の他の拠点101は、複数の実行装置114及びデータ管理装置115を含む。なお、実行装置114は一つでもよい。
拠点101は、クラウドシステム、センサ及び従業員により入力されたデータが収集される現場(工場、各種作業現場、物流倉庫、オフィス、医療介護施設、農場、スーパーマーケットなどの商業施設、役所)、設備(エレベータ、自動改札機、各種ゲート、鉄道設備、道路設備、街中の監視カメラなどセンサ利用の環境計測設備)、移動体(自動車、列車、航空機、ドローン、農業機器等)、及びデータセンタ等である。
拠点管理装置102は、各拠点101に含まれる実行装置114の状態を管理する。
クライアント端末111は、データアナリスト及びソフトウェア開発技術者等のユーザが使用する端末である。開発支援装置112は、クライアント端末111と連携してユーザに対話型プログラミング環境を提供する。また、開発支援装置112は、プログラムコード及び実行結果等を一つのデータとして管理する。以下の説明では、複数のデータをまとめたものをノートブックとも記載する。
本実施例の対話型プログラミング環境では、ユーザは、一連のプログラムコードを入力し、実行を指示し、プログラムコードが記載された場所の下側等に表示された実行結果を参照する。
なお、本発明は、プログラミング環境の態様は限定されない。入力するプログラムコードは一つの処理文でもよいし、複数行の処理文をまとめたコードスニペットでもよい。
ユーザは、クライアント端末111を用いて、プログラムコード及び拠点101の入力及び編集を行い、また、プログラムコードの実行結果を参照する。対話型プログラミング環境は各クライアント端末111に提供されるため、複数のユーザが同時に開発等を行うことができる。
メッセージルータ113は各種メッセージを送受信する。具体的には、メッセージルータ113は、プログラムコードを含む実行要求を拠点101に送信し、また、拠点101から実行結果を受信する。メッセージルータ113は、実行装置114に関する情報を取得するための要求を拠点管理装置102に送信する。メッセージルータ113は、拠点管理装置102から取得した情報に基づいて、プログラムコードにしたがった処理の実行制御及び監視、並びに、複数の実行装置114を用いたクラスタサービス(負荷分散及びフェイルオーバ等)の提供を行う。本実施例のクラスタは、連携してプログラムコードにしたがった処理を実行する実行装置114の集合を示す。
データ管理装置115は、拠点101において入力、収集、又は蓄積等されたデータを管理する。
実行装置114は、データ管理装置115が管理するデータと、プログラムコードとに基づいて処理を実行する。複数の実行装置114からクラスタを構成できる。クラスタは、同一の拠点101に含まれる実行装置114のみから構成されてもよいし、複数の拠点101に含まれる実行装置114から構成されてもよい。クラスタを構成する実行装置114は、連携してプログラムコードを実行できる。
拠点管理装置102、クライアント端末111、開発支援装置112、メッセージルータ113、実行装置114、及びデータ管理装置115は、例えば、図2に示す情報処理装置200を用いて実現できる。なお、各装置は、協調して動作する複数の情報処理装置200を用いて実現してもよい。
図2は、実施例1の情報処理装置200のハードウェア構成の一例を示す図である。
情報処理装置200は、プロセッサ201、主記憶装置202、補助記憶装置203、入力装置204、出力装置205、及び通信装置206を備える。
プロセッサ201は、主記憶装置202に格納されるプログラムを実行する演算装置である。プロセッサ201は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)等を用いて構成されている。
プロセッサ201がプログラムにしたがって処理を実行することによって、拠点管理装置102、クライアント端末111、開発支援装置112、メッセージルータ113、実行装置114、及びデータ管理装置115の機能を実現する機能部(モジュール)として動作する。以下の説明では、機能部を主語に処理を説明する場合、プロセッサ201が当該機能部を実現するプログラムを実行していることを示す。
主記憶装置202は、プロセッサ201が実行するプログラム及びプログラムが使用するデータを格納する記憶装置であり、また、プログラムが一時的に使用するワークエリアとしても使用される。主記憶装置202は、例えば、ROM(Read Only Memory)、SRAM (Static Random Access Memory)、NVRAM(Non Volatile RAM)、マスクROM(Mask Read Only Memory)、PROM(Programmable ROM)、RAM(Random Access Memory)、DRAM(Dynamic Random Access Memory)等である。
補助記憶装置203は、プログラム及びデータを永続的に格納する記憶装置である。補助記憶装置203は、例えば、HDD(Hard Disk Drive)、フラッシュメモリ(Flash Memory)、SSD(Solid State Drive)、並びに、CD(Compact Disc)及びDVD(Digital Versatile Disc)等の光学式記憶装置等である。
なお、主記憶装置202に格納されるプログラム及びデータは補助記憶装置203に格納されていてもよい。この場合、プロセッサ201が、補助記憶装置203からプログラム及びデータを読み出し、主記憶装置202にロードする。なお、主記憶装置202に格納するプログラム及びデータは、例えば、記録媒体から取得してもよい。
入力装置204は、ユーザの入力を受け付けるユーザインタフェースであり、例えば、キーボード、マウス、カードリーダ、タッチパネル等である。
出力装置205は、画像、音声、印字等を出力することによって、ユーザに情報を提供するユーザインタフェースであり、例えば、LCD(Liquid Crystal Display)及びグラフィックカード等の表示装置、スピーカ等の音声出力装置、プリンタ等の印字装置である。
通信装置206は、ネットワークを介して他の装置と通信する装置であり、例えば、NIC(Network Interface Card)、無線通信モジュール、USB(Universal Serial Interface)モジュール、シリアル通信モジュール等である。
なお、通信装置206は、通信可能に接続する他の装置からの入力を受け付ける入力装置として機能させることができる。また、通信装置206は、通信可能に接続する他の装置に情報を提供する出力装置として機能させることができる。
なお、拠点管理装置102、クライアント端末111、開発支援装置112、メッセージルータ113、実行装置114、及びデータ管理装置115は、情報処理装置200のリソースを仮想化した仮想マシンを用いて実現してもよい。この場合、一つの情報処理装置200を用いて複数の装置を実現してもよい。仮想マシンは、クラウドシステムによって提供されるものを用いてもよい。
次に、クライアント端末111、開発支援装置112、メッセージルータ113、実行装置114、データ管理装置115、及び拠点管理装置102の機能構成について説明する。
図3は、実施例1のクライアント端末111の機能構成の一例を示す図である。
クライアント端末111の主記憶装置202は、ノートブック入力表示部300を実現するプログラムを格納する。なお、主記憶装置202には、オペレーティングシステム、ファイルシステム、デバイスドライバ、DBMS(DataBase Management System)等の他の機能を実現するプログラムが格納されているが、説明の簡単のために省略している。クライアント端末111は、前述の機能を用いて、テーブル及びファイルとしてデータを記憶する。
ノートブック入力表示部300は、ノートブック510(図5参照)の生成、削除、プログラムコードの入力、開発支援装置112が管理するノートブック510の提示等を行うための画面を表示する。また、ノートブック入力表示部300は、画面を介して入力されたユーザの要求を受け付け、当該要求に対する応答を提示する。本実施例では、ノートブック入力表示部300は、開発支援装置112に含まれるエディタサーバ500(図5参照)から受信した情報に基づいて、各種表示を行うことを想定している。
ここで、クライアント端末111が表示する画面の一例について説明する。図4は、実施例1のクライアント端末111が表示する画面の一例を示す図である。
画面400は、開発支援装置112が管理するノートブック510に基づいて表示される。ユーザは、画面400を介して、プログラムコードの入力、編集、及び実行、並びに、実行結果の閲覧を行う。
画面400は、ノートブック情報欄401、コード入力欄402、拠点指定欄403、及び結果表示欄404を含む。
ノートブック情報欄401は、ノートブック510の生成日、識別情報、名称等、ノートブック510を識別するための情報を表示し、また、編集する欄である。以下の説明では、ノートブック510の識別情報をノートIDと記載し、ノートブック510の名称をノート名とも記載する。
コード入力欄402は、プログラムコードを入力又は編集する欄である。本明細書では、コード入力欄402に入力されたプログラムコードの集合を単に「プログラムコード」と記載する。
拠点指定欄403は、プログラムコードを実行する拠点101を選択する欄である。
結果表示欄404は、プログラムコードの実行結果を表示する欄である。なお、コード入力欄402に入力されたプログラムコードが実行されていない場合、結果表示欄404は表示されない。図4では、コード入力欄402-3のプログラムコードはまだ実行されていないため、当該コード入力欄402-3の下側には結果表示欄404が表示されていない。
なお、画面400は、ファイルの保存、画面表示の編集、及びプログラムコードの編集が可能なツールバー、拠点101の生存状態及び実行装置114の稼働状態を表示する欄、プログラムコードの入力及び拠点の選択をアシストするボタン及び欄を含んでもよい。
なお、画面400に含まれるコード入力欄402及び拠点指定欄403は三つであり、結果表示欄404は二つであるが、画面400に含まれる欄の数はこれらに限定されない。開発の状態に合わせて各欄が表示される。
画面400では、プログラムコードの実行順に、コード入力欄402、拠点指定欄403、及び結果表示欄404からなる表示ブロックが表示される。
ユーザは、入力装置204を用いて、ノートブック情報欄401に値を入力し、また、ノートブック情報欄401の値を編集する。ユーザは、入力装置204を用いて、コード入力欄402にプログラムコードを入力し、また、コード入力欄402のプログラムコードを編集する。なお、ノートブック510の生成日、ノートID等は開発支援装置112が自動的に付与してもよい。ユーザは、入力装置204を用いて、プルダウン形式で拠点指定欄403に表示された拠点101のリストの中から、一つの拠点101を選択する。リストは、画面400とは異なる画面に表示されてもよい。リストには、ネットワーク103に接続され、実行装置114を含む拠点101が表示される。なお、ユーザが直接、拠点指定欄403に値を入力してもよい。
コード入力欄402-1には、拠点101(N)のデータベースに格納される表データ(data.xslx)の3列目の値を変数dataとして設定し、変数dataを表示するためのプログラムコードが格納されている。拠点指定欄403-1には、拠点101(N)が格納される。結果表示欄404-1には、ヘッダ及び変数dataの値が表示される。ここでは、一例として温度が表示されている。
コード入力欄402-2には、拠点101(N)のデータベースに格納される表データ(data.xslx)の3列目の値として定義された変数dataをプロットするためのプログラムコードが格納されている。拠点指定欄403-2には、拠点101(N)が格納される。結果表示欄404-2には、変数dataの値のグラフが表示される。
ここで、クライアント端末111を含む拠点101(1)には、拠点101(N)からグラフの画像データのみが送信される。送信されるグラフの画像データはjpeg、tiff及びeps等の形式がある。また、javascript(登録商標)及びpixiedust等のブラウザを通してグラフ描画が可能なツールを用いて拠点101(N)から画像データを拠点(1)に送信し、結果表示欄404に表示してもよい。
このように、グラフを表示する場合、プロット結果そのものではなく、画像データを送信することで、データを管理する拠点101からのデータ流出を防止することが可能である。
コード入力欄402-3には、拠点101(N)のデータベースに格納される表データ(data.xslx)の3列目の値として定義された変数dataの平均値を算出し、変数ave_dataに格納するためのプログラムコードが格納されている。拠点指定欄403-2には選択可能な拠点101のリストが表示されている。コード入力欄402-3に設定されたプログラムコードは実行されていないため、コード入力欄402-3の下には結果表示欄404が表示されていない。
本実施例は、図4に示すように、プログラムコードを実行する拠点101を指定する拠点指定欄403を含むことを特徴とする。これによって、ユーザは、入力したプログラムコードの実行結果を確認しながら、プログラムコードの内容、拠点、分析対象のデータ等を容易に修正できるため、複数の拠点をまたいだ、試行錯誤的なアプリケーション開発が可能となる。また、関連のあるプログラムコード及び実行結果をまとめて一つのノートブック510として管理し、ノートブック入力表示部300がノートブック510を表示することによって、ユーザ間で容易に解析内容及び結果を共有できる。
図5は、実施例1の開発支援装置112の機能構成の一例を示す図である。図6は、実施例1のノートブック510のデータ構造の一例を示す図である。
開発支援装置112の主記憶装置202は、エディタサーバ500及び記憶部501を実現するプログラムを格納する。なお、主記憶装置202には、オペレーティングシステム、ファイルシステム、デバイスドライバ、DBMS(DataBase Management System)等の他の機能を実現するプログラムが格納されているが、説明の簡単のために省略している。開発支援装置112は、前述の機能を用いて、テーブル及びファイルとしてデータを記憶する。
エディタサーバ500は、ノートブック510の生成及び編集、並びに、クライアント端末111のノートブック入力表示部300及びメッセージルータ113へのノートブック510の送信を行う。
記憶部501は、ノートブック(プログラム開発情報)510を管理する。ここで、図6を用いて、本実施例のノートブック510のデータ構造について説明する。
ノートブック510は、ノートブック情報600、並びに、コードID601、プログラムコード602、実行結果603、及び実行拠点情報604から構成されるコード情報610を含む。
ノートブック情報600は、図4で説明したように、ノートブック510の生成日、識別情報、及び名称等、ノートブック510を識別するための情報を格納するフィールドである。
コードID601は、ノートブック510に含まれるプログラムコードを識別するための識別情報を格納するフィールドである。本実施例では、プログラムコード、実行結果、及び拠点101を一つのコードID601に関連付けたコード情報610としてプログラムコードが管理される。
プログラムコード602は、プログラムコードを格納するフィールドである。なお、ノートブック510は、プログラムコードで使用したプログラミング言語の名称を含んでもよい。
実行結果603は、プログラムコード602に格納されたプログラムコードの実行結果を格納するフィールドである。実行結果には実行ステータスが含まれる。実行ステータスは、例えば、プログラムコードの実行が正常に完了したことを示すメッセージ、クライアント端末111に表示可能なデータがないことを示すメッセージ、プログラムコードの実行がエラーを示し、かつ、その詳細を含むメッセージ等である。なお、プログラムコードが実行されていない場合、実行結果603は空(Null)である。
実行拠点情報604は、プログラムコード602に格納されたプログラムコードを実行する拠点101の情報を格納するフィールドである。実行拠点情報604には、例えば、拠点101の名称が含まれる。プログラムコードが実行された場合、実行拠点情報604には、プログラムコードを実行した実行装置114のIPアドレス及びポート番号等が格納されてもよい。なお、拠点101が選択されていない場合、実行拠点情報604は空(Null)である。
ノートブック510には、実行順又は入力順に、コード情報610が保存されている。これによって、プログラムコードの実行順又は入力順を判別することができる。なお、プログラムコードの実行順又は入力順を判別する方法としては、コード情報610に、プログラムコードの実行順又は入力順を示す識別情報を含める方法が考えられる。
ノートブック510には実行拠点情報604が保存されているため、エディタサーバ500は、過去に実行したプログラムコードと同じプログラムコードを実行する場合、ノートブック510を読み出すことによって、拠点101を選択する手順を省略できる。
なお、プログラムコードの管理形式はノートブック510のような形式に限定されない。例えば、プログラムコード及び実行結果と、実行拠点とを分離して管理していてもよい。
なお、ノートブック510は、コンテナ(ノートブックの実行モジュール、実行環境に関する情報、展開方法や操作方法に関する情報等をパッケージ化したもの)として開発支援装置112に管理されてもよい。コンテナの一例としてDocker(登録商標)によるものがある。また、開発支援装置112は、GitHub(登録商標)及びGitLab(登録商標)等、ノートブック510のバージョン管理を行う仕組みを備えていてもよい。
図7は、実施例1のメッセージルータ113の機能構成の一例を示す図である。図8は、実施例1の実行装置管理情報710のデータ構造の一例を示す図である。
メッセージルータ113の主記憶装置202は、メッセージ転送部700及び記憶部701を実現するプログラムを格納する。なお、主記憶装置202には、オペレーティングシステム、ファイルシステム、デバイスドライバ、DBMS(DataBase Management System)等の他の機能を実現するプログラムが格納されているが、説明の簡単のために省略している。メッセージルータ113は、前述の機能を用いて、テーブル及びファイルとしてデータを記憶する。
メッセージ転送部700は、各種メッセージを転送する。メッセージ転送部700は、主に、エディタサーバ500及び各拠点101の実行装置114との間で、コード情報610を含むメッセージの送受信を行う。メッセージ転送部700は、ノートブック情報600及び実行装置管理情報710等、拠点101(1)に含まれる装置が要求する情報を送受信する。
記憶部701は、実行装置管理情報710を管理する。ここで、図8を用いて、本実施例の実行装置管理情報710のデータ構造について説明する。
実行装置管理情報710は、ネットワーク103を介して接続される各拠点101の実行装置114を管理するための情報であり、拠点名801、IPアドレス802、ポート番号803、及びリソース使用量804から構成されるエントリ810を含む。一つのエントリ810が一つの実行装置114に対応する。ここでは、エントリ810を管理データ810と記載する。
拠点名801は、実行装置114が含まれる拠点101の名称を格納するフィールドである。IPアドレス802は、実行装置114のIPアドレスを格納するフィールドである。ポート番号803は、実行装置114との通信に使用するポート番号を格納するフィールドである。リソース使用量804は、実行装置114のリソースの使用量を示す情報を格納するフィールドである。
メッセージ転送部700は、コード情報610を含むメッセージを送信する場合、コード情報610に基づいて実行装置管理情報710を参照して、メッセージを送信する実行装置114を選択する。具体的には、メッセージ転送部700は、拠点名801がコード情報610の実行拠点情報604と一致する実行装置114の中から送信先の実行装置114を選択する。実行装置114の選択方法としては、ラウンドロビン方式又はリソース使用量を基準に選択する方法が考えられる。メッセージ転送部700は、選択した実行装置114に対応する管理データ810からIPアドレス及びポート番号を取得し、メッセージを実行装置114に送信する。
なお、拠点101の単位毎又は拠点101の種別毎に、実行装置管理情報710を用意してもよい。
図9は、実施例1の拠点管理装置102の機能構成の一例を示す図である。
拠点管理装置102の主記憶装置202は、拠点管理部900及び記憶部901を実現するプログラムを格納する。なお、主記憶装置202には、オペレーティングシステム、ファイルシステム、デバイスドライバ、DBMS(DataBase Management System)等の他の機能を実現するプログラムが格納されているが、説明の簡単のために省略している。拠点管理装置102は、前述の機能を用いて、テーブル及びファイルとしてデータを記憶する。
記憶部901は、実行装置管理情報910を管理する。実行装置管理情報910は、実行装置管理情報710と同一のデータ構造である。実行装置管理情報710及び実行装置管理情報910は同期するように管理される。
拠点管理部900は、記憶部901に保存されるデータの共有を行う。具体的には、拠点管理部900は、メッセージルータ113へ実行装置管理情報910を送信し、各拠点101の実行装置114から管理データ810を受信し、また、実行装置管理情報910の更新(管理データ810の追加及び削除等)を行う。また、拠点管理部900は、実行装置管理情報910が更新された場合、更新を通知するメッセージをメッセージルータ113に送信して、メッセージルータ113に実行装置管理情報710の更新を促してもよい。
図10は、実施例1の実行装置114の機能構成の一例を示す図である。
実行装置114の主記憶装置202は、プログラムコード実行部1000、メッセージ転送部1001、及び記憶部1002を実現するプログラムを格納する。なお、主記憶装置202には、オペレーティングシステム、ファイルシステム、デバイスドライバ、DBMS(DataBase Management System)等の他の機能を実現するプログラムが格納されているが、説明の簡単のために省略している。実行装置114は、前述の機能を用いて、テーブル及びファイルとしてデータを記憶する。
記憶部1002は、部分ノートブック1010を管理する。部分ノートブック1010は、実行装置114が実行したプログラムコードを含むノートブックである。部分ノートブック1010はノートブック510と同一のデータ構造である。
なお、拠点101に複数の実行装置114が存在する場合、拠点101内の各実行装置114は、互いに、部分ノートブック1010を共有してもよい。部分ノートブック1010の共有にあたってはマージ等の操作が行われてもよい。
プログラムコード実行部1000は、受信したコード情報610に含まれるプログラムコードを実行する。また、プログラムコード実行部1000は、実行結果を記憶部1002に送信し、実行結果を含めたコード情報610をメッセージ転送部1001に送信する。
メッセージ転送部1001は、メッセージルータ113との間でノートブック情報600及びコード情報610を送受信し、拠点管理装置102に管理データ810を送信し、ノートブック情報600及びコード情報610を記憶部1002に送信する。
図11は、実施例1のデータ管理装置115の機能構成の一例を示す図である。
データ管理装置115の主記憶装置202は、データ管理部1100及び記憶部1101を実現するプログラムを格納する。なお、主記憶装置202には、オペレーティングシステム、ファイルシステム、デバイスドライバ、DBMS(DataBase Management System)等の他の機能を実現するプログラムが格納されているが、説明の簡単のために省略している。データ管理装置115は、前述の機能を用いて、テーブル及びファイルとしてデータを記憶する。
記憶部1101は、分析対象データ1110及びメタデータ1111を管理する。分析対象データ1110は、プログラムコードにしたがった処理に使用されるデータである。メタデータ1111は、分析対象データ1110を識別するためのデータである。メタデータ1111は、例えば、ファイル名、生成日、及びデータ数等である。分析対象データ1110が表形式のデータである場合、メタデータ1111にはカラム名及び行数等が含まれてもよい。
データ管理部1100は、メタデータ1111を生成し、記憶部1101に送信する。また、データ管理部1100は、分析対象データ1110の追加及び削除を行う。また、データ管理部1100は、実行装置114との間で、分析対象データ1110及びメタデータ1111を送受信する。
次に、計算機システム100において実行される処理について説明する。
図12は、実施例1の計算機システム100において実行されるノートブック生成処理の一例を説明するシーケンス図である。
クライアント端末111のノートブック入力表示部300は、ユーザからノートブック生成操作を受け付けた場合(ステップS100)、開発支援装置112のエディタサーバ500にノートブックの生成要求を送信する(ステップS101)。
開発支援装置112のエディタサーバ500は、ノートブック生成要求を受信した場合、新規のノートブック510を生成する(ステップS102)。具体的には、エディタサーバ500は、ノートブック情報600を生成し、生成されたノートブック情報600を含むノートブック510を生成する。また、エディタサーバ500は、記憶部501にノートブック510を送信する。
開発支援装置112の記憶部501は、主記憶装置202の記憶領域にノートブック510を格納する(ステップS103)。その後、記憶部501は、ノートブック510の保存が完了した旨を通知するメッセージをエディタサーバ500に送信する。
開発支援装置112のエディタサーバ500は、新規のノートブック510の生成が完了したことを示す画面を表示するための表示情報を生成し、クライアント端末111のノートブック入力表示部300に送信する(ステップS104)。
クライアント端末111のノートブック入力表示部300は、表示情報を受信した場合、表示情報に基づいて、新規のノートブック510の生成が完了したことを示す画面を表示する(ステップS105)。
図13は、実施例1の計算機システム100において実行されるノートブック削除処理の一例を説明するシーケンス図である。
ここでは、削除対象のノートブック510に含まれるプログラムコードが、拠点101(N)にて実行されたものとする。この場合、拠点101(N)の実行装置114は、削除対象のノートブック510の少なくとも一つのコード情報610を含む部分ノートブック1010を保持する。
クライアント端末111のノートブック入力表示部300は、ユーザからノートブック削除操作を受け付けた場合(ステップS200)、開発支援装置112のエディタサーバ500にノートブック削除要求を送信する(ステップS201)。ノートブック削除要求には、削除するノートブック510を特定するための情報としてノートブック情報600が含まれる。
開発支援装置112のエディタサーバ500は、ノートブック削除要求を受信した場合、クライアント端末111のノートブック入力表示部300に削除確認の問合せを送信する(ステップS202)。当該問合せは、ノートブック510が誤って削除されるのを防ぐために行われる。
クライアント端末111のノートブック入力表示部300は、削除確認の問合せを受信した場合、確認画面を表示する(ステップS203)。クライアント端末111のノートブック入力表示部300は、ユーザよりノートブックの削除許可を受け付けた場合、開発支援装置112のエディタサーバ500に削除許可を通知する(ステップS204)。なお、ステップS202からステップS204の処理は省略されてもよい。
開発支援装置112のエディタサーバ500は、記憶部501にノートブック削除要求を送信することによってノートブック510を削除する(ステップS205)。記憶部501は、ノートブック削除要求に含まれるノートブック情報600に対応するノートブック510を削除する。その後、記憶部501は、ノートブック510の削除が完了した旨を通知するメッセージをエディタサーバ500に送信する。
開発支援装置112のエディタサーバ500は、メッセージルータ113のメッセージ転送部700にノートブック削除要求を送信する(ステップS206)。
メッセージルータ113のメッセージ転送部700は、ノートブック削除要求を受信した場合、当該ノートブック削除要求の転送先となる実行装置114を特定する(ステップS207)。すなわち、削除対象のノートブック510の少なくとも一つのコード情報610を含む部分ノートブック1010を保持する実行装置114を含む拠点101が特定される。
例えば、メッセージ転送部700は、エディタサーバ500から削除対象のノートブック510を取得し、当該ノートブック510のコード情報610に含まれる実行拠点情報604を取得する。さらに、メッセージ転送部700は、実行装置管理情報710を参照して、拠点名801が実行拠点情報604に一致する管理データ810のIPアドレス802及びポート番号803の値を取得する。
また、他の方法としては、プログラムコードを実行した実行装置114のIPアドレス及びポート番号等の識別情報を、実行拠点情報604に含めておくことによって、ノートブック削除要求を送信する実行装置114を特定することができる。
メッセージルータ113のメッセージ転送部700は、特定された実行装置114のメッセージ転送部1001にノートブック削除要求を送信する(ステップS208)。
実行装置114のメッセージ転送部1001は、ノートブック削除要求を受信した場合、ノートブック削除要求を記憶部1002に送信することによって部分ノートブック1010を削除する(ステップS209)。記憶部1002は、主記憶装置202の記憶領域から、ノートブック削除要求に含まれるノートブック情報600に対応する部分ノートブック1010を削除する。その後、記憶部1002は、部分ノートブック1010の削除が完了した旨を通知するメッセージをメッセージ転送部1001に送信する。
実行装置114のメッセージ転送部1001は、メッセージルータ113のメッセージ転送部700に、部分ノートブック1010の削除が完了した旨を通知するメッセージ(完了通知)を送信する(ステップS210)。
メッセージルータ113のメッセージ転送部700は、完了通知を受信した場合、開発支援装置112のエディタサーバ500に完了通知を送信する(ステップS211)。
開発支援装置112のエディタサーバ500は、完了通知を受信した場合、ノートブック510の削除が完了したことを示す画面を表示するための表示情報を生成し、クライアント端末111のノートブック入力表示部300に送信する(ステップS212)。
クライアント端末111のノートブック入力表示部300は、表示情報を受信した場合、表示情報に基づいて、ノートブック510の削除が完了したことを示す画面を表示する(ステップS213)。
図14は、実施例1の計算機システム100において実行される拠点リスト表示処理の一例を説明するシーケンス図である。
図14では、画面400の拠点指定欄403に拠点101のリストを表示するための処理を説明する。なお、当該リストは画面400とは異なる画面に表示されてもよい。
クライアント端末111のノートブック入力表示部300は、ユーザからエディタサーバ500へアクセスするための操作を受け付けた場合(ステップS300)、ノートブック表示要求を開発支援装置112のエディタサーバ500に送信する(ステップS301)。ここでは、「エディタサーバ500へアクセスする」ことは画面400を表示することを表す。
開発支援装置112のエディタサーバ500は、ノートブック表示要求を受信した場合、画面400を表示するための表示情報を生成し(ステップS302)、クライアント端末111のノートブック入力表示部300に送信する(ステップS303)。また、開発支援装置112のエディタサーバ500は、メッセージルータ113のメッセージ転送部700に実行装置管理情報910の更新要求を送信する(ステップS305)。
クライアント端末111のノートブック入力表示部300は、表示情報を受信した場合、画面400を表示する(ステップS304)。なお、この時点では、画面400の拠点指定欄403には、拠点101のリストを表示できない旨が表示されてもよいし、又は、過去に受信した拠点101のリストを表示してもよい。
メッセージルータ113のメッセージ転送部700は、実行装置管理情報910の更新要求を受信した場合、当該要求を拠点管理装置102の拠点管理部900に送信する(ステップS306)。
拠点管理装置102の拠点管理部900は、実行装置管理情報910の更新要求を受信した場合、メッセージルータ113のメッセージ転送部700に実行装置管理情報910を送信する(ステップS307)。拠点管理部900は、記憶部901に実行装置管理情報910の取得要求を送信することによって実行装置管理情報910を取得する。
メッセージルータ113のメッセージ転送部700は、開発支援装置112のエディタサーバ500に実行装置管理情報910を送信し(ステップS308)、また、記憶部701に実行装置管理情報910を送信する(ステップS309)。記憶部701は、主記憶装置202の記憶領域に、受信した実行装置管理情報910を格納する。なお、記憶領域に実行装置管理情報710がすでに格納されている場合、記憶部701は、受信した実行装置管理情報910を上書きする。
開発支援装置112のエディタサーバ500は、実行装置管理情報910を受信した場合、実行装置管理情報910に基づいて拠点101のリストを生成し(ステップS310)、当該リストを表示するための表示情報を生成し、クライアント端末111のノートブック入力表示部300に送信する(ステップS311)。
クライアント端末111のノートブック入力表示部300は、表示情報を受信した場合、表示情報に基づいて、画面400の拠点指定欄403に拠点101のリストを表示する(ステップS312)。ユーザは当該リストを参照して、プログラムコードを実行する拠点101を選択できる。
次に、図15、図16、及び図17を用いて、画面400を介した操作を受け付けた場合に実行される処理について説明する。
図15は、実施例1の計算機システム100において実行されるプログラムコード入力処理の一例を説明するシーケンス図である。
クライアント端末111のノートブック入力表示部300は、ユーザから、ノートブック510へのプログラムコードの入力操作を受け付けた場合(ステップS400)、入力されたプログラムコードを開発支援装置112のエディタサーバ500に送信する(ステップS401)。
ここで、「プログラムコードの入力操作」には、コード入力欄402へのプログラムコードの入力と、入力完了リクエストの入力と、の二つの操作が含まれる。入力完了リクエストは、例えば、画面400のプログラムコードを入力したコード入力欄402が選択された状態で、ユーザがキーボードのEnterキーを押下することによって入力される。
開発支援装置112のエディタサーバ500は、プログラムコードを受信した場合、スペルミス等、受信したプログラムコードの構文エラーの有無を解析し(ステップS402)、クライアント端末111のノートブック入力表示部300に解析結果を送信する(ステップS403)。なお、特にエラーがない場合、エディタサーバ500は解析結果を送信しなくてもよい。
クライアント端末111のノートブック入力表示部300は、解析結果を受信した場合、画面400に解析結果を表示する(ステップS404)。ユーザは解析結果を参照して、プログラムコードの入力及び修正等を行う。
ステップS400からステップS404までの処理はループ処理L1として、構文エラーがなくなるまで繰り返し実行される。
開発支援装置112のエディタサーバ500は、プログラムコードに特にエラーが存在しない場合、ノートブック510を更新する(ステップS405)。
具体的には、エディタサーバ500は、プログラムコードのコードIDを生成し、コードID及びプログラムコードを含む、ノートブック510の更新要求を記憶部501に送信する。記憶部501は、ノートブック510にコード情報610を追加し、追加されたコード情報610のコードID601及びプログラムコード602に、受信したコードID及びプログラムコードを設定する。
図16は、実施例1の計算機システム100において実行される拠点選択処理の一例を説明するシーケンス図である。
クライアント端末111のノートブック入力表示部300は、ユーザが選択した拠点101の入力操作を受け付けた場合(ステップS500)、選択された拠点101の情報を開発支援装置112のエディタサーバ500に送信する(ステップS501)。ここでは、拠点101(N)が選択されたものとする。
ここで、「ユーザが選択した拠点101の入力操作」には、拠点指定欄403への拠点101の入力の操作が含まれる。
開発支援装置112のエディタサーバ500は、拠点101の情報を受信した場合、ノートブック510を更新する(ステップS502)。
具体的には、エディタサーバ500は、拠点101の情報を含むノートブック510の更新要求を記憶部501に送信する。記憶部501は、ノートブック510のコード情報610の実行拠点情報604に、受信した拠点101の情報を設定する。なお、ノートブック510に、コード情報610が生成されていない場合、エディタサーバ500は、プログラムコードのコードIDを生成し、コードID及び拠点101の情報を含むノートブック510の更新要求を記憶部501に送信する。
なお、プログラムコード入力処理及び拠点選択処理は、どちらが先に実行されてもよい。
図17は、実施例1の計算機システム100において実行されるプログラムコード実行処理の一例を説明するシーケンス図である。
図17では、プログラムコードの実行要求の送信から結果の表示までの一連の処理について説明する。
クライアント端末111のノートブック入力表示部300は、ユーザからプログラムコードの実行指示を受け付けた場合(ステップS600)、開発支援装置112のエディタサーバ500に実行要求を送信する(ステップS601)。実行要求には、ノートブック510の識別情報及び実行対象のプログラムコードが含まれる。
実行指示は、例えば、画面400の実行したいプログラムコードが入力されたコード入力欄402が選択された状態で、ユーザがキーボードのEnterキー及びShiftキーを同時に押下することによって入力される。
開発支援装置112のエディタサーバ500は、実行要求を受信した場合、ノートブック情報600及びコード情報610を含む実行要求をメッセージルータ113のメッセージ転送部700に送信する(ステップS602)。
具体的には、エディタサーバ500は、記憶部501から、実行要求に含まれる識別情報に対応するノートブック510を読み出し、また、当該ノートブック510からノートブック情報600と、実行対象のプログラムコードに対応するコード情報610とを取得する。
メッセージルータ113のメッセージ転送部700は、実行要求を受信した場合、実行要求を転送する実行装置114を決定する(ステップS603)。
具体的には、メッセージ転送部700は、実行要求に含まれるコード情報610の実行拠点情報604に基づいて、プログラムコードを実行させる拠点101を特定する。メッセージ転送部700は、実行装置管理情報710を参照して、拠点名801に特定された拠点101の名称が格納される管理データ810を検索する。メッセージ転送部700は、検索された管理データ810の中から少なくとも一つの管理データ810を選択する。メッセージ転送部700は、選択された管理データ810のIPアドレス802及びポート番号803の値を取得する。
メッセージルータ113のメッセージ転送部700は、決定された実行装置114のメッセージ転送部1001に、ノートブック情報600及びコード情報610を含む実行要求を送信する(ステップS604)。
実行装置114のメッセージ転送部1001は、実行要求を受信した場合、実行要求をプログラムコード実行部1000に送信することによって、実行対象のプログラムコードを実行する(ステップS605)。
具体的には、プログラムコード実行部1000は、受信した実行要求に含まれるコード情報610のプログラムコード602に格納されるプログラムコードを実行し、当該コード情報610の実行結果603に実行結果を設定する。プログラムコード実行部1000は、実行結果が設定されたコード情報610をメッセージ転送部1001に送信し、また、ノートブック情報600及び実行結果が設定されたコード情報610を記憶部1002に送信する。
実行装置114の記憶部1002は、ノートブック情報600及びコード情報610を受信した場合、受信したノートブック情報600に対応する部分ノートブック1010を更新する(ステップS606)。
具体的には、記憶部1002は、ノートブック情報600及びコード情報610を含む部分ノートブック1010を生成し、主記憶装置202の記憶領域に格納する。なお、受信した実行要求に含まれるノートブック情報600と同一のノートブック情報600を含む部分ノートブック1010が存在する場合、記憶部1002は、既存の部分ノートブック1010にコード情報610を追加する。
実行装置114のメッセージ転送部1001は、実行結果が設定されたコード情報610を受信した場合、メッセージルータ113のメッセージ転送部700に実行結果が格納されたコード情報610を送信する(ステップS607)。また、実行装置114のメッセージ転送部1001は、管理データ810を生成し、拠点管理装置102の拠点管理部900に送信する(ステップS608)。
拠点管理装置102の拠点管理部900は、管理データ810を受信した場合、記憶部901に管理データ810を送信することによって、実行装置管理情報910を更新する(ステップS609)。当該管理データ810は、図14のステップS309にてメッセージルータ113に反映される。これによって、拠点リストが更新される。
メッセージルータ113のメッセージ転送部700は、実行結果が格納されたコード情報610を受信した場合、当該コード情報610を開発支援装置112のエディタサーバ500に送信する(ステップS610)。
開発支援装置112のエディタサーバ500は、実行結果が格納されたコード情報610を受信した場合、結果表示欄404に実行結果を表示するための表示情報を生成し、クライアント端末111のノートブック入力表示部300に送信する(ステップS611)。また、エディタサーバ500は、記憶部501に、コード情報610を送信することによってノートブック510を更新する(ステップS612)。記憶部501は、受信したコード情報610に基づいて、ノートブック510の対応するコード情報610を更新する。
クライアント端末111のノートブック入力表示部300は、表示情報を受信した場合、表示情報に基づいて結果表示欄404に実行結果を表示する(ステップS613)。
実施例1によれば、ユーザは、プログラムコードを実行させる拠点101を指定し、指定した拠点101でプログラムコードを実行させることができる。ユーザは、画面400を参照しながら、プログラムコードの内容、プログラムコードを実行する拠点、及び分析対象のデータを修正できる。これによって、拠点101をまたいだ、試行錯誤的なアプリケーション開発が可能となる。また、関連のあるプログラムコード及び実行結果を一つのノートブック510としてまとめて管理し、表示することによって、ユーザ間でプログラムコード及び実行結果を共有することができる。
なお、クライアント端末111及び開発支援装置112によるノートブック510の編集及び管理は、エディタサーバ500をウェブサーバとして機能させ、ノートブック入力表示部300をウェブブラウザとして機能させるウェブアプリケーションとして実現してもよい。また、クライアント端末111及び開発支援装置112を一つのまとめたデスクトップアプリケーションとして実現してもよい。
なお、各装置が備える機能部は、複数の機能部を一つの機能部に集約してもよいし、一つの機能部を機能毎に複数の機能部に分けてもよい。また、各装置が備える機能部は、他の装置が備えるようにしてもよい。
なお、実施例1で説明した、装置構成、機能構成、データ構造、ユーザインタフェース、及びシーケンスは一例であって、これに限定されない。
実施例2では、プログラムコードの実行が推奨される拠点101がユーザに提示される。以下、実施例1との差異を中心に実施例2について説明する。
実施例2の計算機システム100の構成は実施例1と同一である。実施例2の計算機システム100を構成する各装置のハードウェア構成は実施例1と同一である。実施例2のクライアント端末111、開発支援装置112、及びデータ管理装置115の機能構成は実施例1と同一である。実施例2のノートブック510及び部分ノートブック1010のデータ構造は実施例1と同一である。実施例2の実行装置管理情報710、910のデータ構造は実施例1と同一である。
実施例2では、メッセージルータ113の機能構成が実施例1と一部異なる。図18は、実施例2のメッセージルータ113の機能構成の一例を示す図である。
実施例2のメッセージルータ113は、主記憶装置202に推奨拠点判定部702を実現するプログラムを格納する。その他の構成は実施例1と同一である。
推奨拠点判定部702は、メッセージ転送部700を介して拠点管理装置102から変数管理情報911(図19を参照)を取得し、また、エディタサーバ500からノートブック情報600及びコード情報610を取得して、コード情報610に含まれるプログラムコードの実行が推奨される拠点101を特定する。以下の説明では、プログラムコードの実行が推奨される拠点101を推奨拠点101とも記載する。
実施例2では、拠点管理装置102の機能構成が実施例1と一部異なる。図19は、実施例2の拠点管理装置102の機能構成の一例を示す図である。図20は、実施例2の変数管理情報911のデータ構造の一例を示す図である。
実施例2の拠点管理装置102は、記憶部901が変数管理情報911及びノートブック912を管理する。
ノートブック912のデータ構造はノートブック510と同一のものである。変数管理情報911は、プログラムコードに含まれる変数を管理するための情報である。ここで、図20を用いて、本実施例の変数管理情報911のデータ構造について説明する。
変数管理情報911は、ノートブック情報2001及び変数リスト2002が関連付けられた変数管理データ2000を含む。一つのノートブック510に対して一つの変数管理データ2000が生成される。
ノートブック情報2001は、ノートブック情報600と同一のものである。
変数リスト2002は、変数名2011、拠点名2012、関連データ2013、操作2014、及び備考2015から構成されるエントリを格納する。一つの変数に対して一つのエントリが存在する。
変数名2011は、ノートブック510において使用された変数の名称を格納するフィールドである。拠点名2012は、変数を含むプログラムコードが実行された拠点101の名称を格納するフィールドである。関連データ2013は、変数に格納したデータ、及び加工した別の変数等、変数に関連するデータ(関連データ)を格納するフィールドである。操作2014は、関連データに対して行われた操作に関する情報を格納するフィールドである。操作2014には、例えば、操作の種別を示す値が格納される。備考2015は、変数に関する備考を格納するフィールドである。
なお、変数リスト2002には、変数の他に、ライブラリ関数等が格納されてもよい。
以下の説明では、変数リスト2002に格納されているものをまとめて「変数」と記載する。
実施例2では、実行装置114の機能構成が実施例1と一部異なる。図21は、実施例2の実行装置114の機能構成の一例を示す図である。
実施例2の実行装置114は、記憶部1002が部分変数管理情報1011を管理する。部分変数管理情報1011は、実行装置114が含まれる拠点101において実行されたプログラムコードに含まれる変数を管理するための変数管理データ2000を格納する。
実施例2のノートブック生成処理、ノートブック削除処理、拠点リスト表示処理、プログラムコード入力処理、及び拠点選択処理は、実施例1とほぼ同一であるが、以下のように一部処理が異なる。
実施例2では、部分ノートブック1010の削除に伴って変数管理情報911が更新される。具体的には、ノートブック削除処理のステップS209において、削除された部分ノートブック1010に対応する変数管理データ2000が変数管理情報911から削除される。
実施例2では、部分ノートブック1010の更新に伴って部分変数管理情報1011が更新される。具体的には、プログラムコード実行処理のステップS606において部分変数管理情報1011の部分ノートブック1010に対応する変数管理データ2000が更新される。
実施例2のプログラムコード実行処理では、開発支援装置112がクライアント端末111から実行要求を受信した場合(ステップS601)、以下のような処理を実行する。図22は、実施例2の開発支援装置112が実行する拠点確認処理の一例を説明するフローチャートである。
開発支援装置112のエディタサーバ500は、記憶部501から、実行要求に含まれる識別情報に対応するノートブック510を読み出し、実行対象のプログラムコードに対応するコード情報610を取得する(ステップS700)。
エディタサーバ500は、選択された拠点101が推奨拠点101であるか否かを判定する(ステップS701)。
具体的には、エディタサーバ500は、メッセージルータ113から受信した推奨拠点101の情報と、コード情報610の実行拠点情報604とに基づいて、選択された拠点101が推奨拠点101であるか否かを判定する。推奨拠点101の情報の生成方法は図23を用いて説明する。
選択された拠点101が推奨拠点101である場合、エディタサーバ500は、拠点確認処理を終了する。その後、エディタサーバ500はステップS602の処理を開始する。
選択された拠点101が推奨拠点101ではない場合、エディタサーバ500は、選択された拠点101にてプログラムコードを実行するか否かを確認するための確認画面をクライアント端末111に表示する(ステップS702)。その後、エディタサーバ500はユーザからの入力を待つ。
具体的には、エディタサーバ500は、確認画面を表示するための表示情報を生成し、クライアント端末111のノートブック入力表示部300に送信する。
エディタサーバ500は、クライアント端末111のノートブック入力表示部300からユーザ入力を受信した場合、当該ユーザ入力が実行許可であるか否かを判定する(ステップS703)。
ユーザ入力が実行許可である場合、エディタサーバ500は、拠点確認処理を終了する。その後、エディタサーバ500はステップS602の処理を開始する。
ユーザ入力が実行許可でない場合、エディタサーバ500は、プログラムコード及び拠点101の修正を受け付ける状態(修正受付状態)に遷移し(ステップS704)、拠点確認処理を終了する。この場合、ステップS602の処理は実行されず、ユーザの入力に合わせて、プログラムコード入力処理(図15)及び拠点選択処理(図16)が実行される。
実施例2の拠点リスト表示処理では、ユーザは、メッセージルータ113によって特定された推奨拠点101の中からプログラムコードを実行させる拠点101を選択する。
実施例2では、部分変数管理情報1011に基づいて、変数管理情報911が更新される。具体的には、プログラムコード実行処理のステップS608において、管理データ810とともに変数管理データ2000が送信され、ステップS609において、変数管理情報911に変数管理データ2000が格納される。
図23は、実施例2の計算機システム100において実行される推奨拠点表示処理の一例を説明するシーケンス図である。
推奨拠点表示処理は、例えば、プログラムコード入力処理が実行された後に実行されるものとする。
開発支援装置112のエディタサーバ500は、推奨拠点表示要求をメッセージルータ113のメッセージ転送部700に送信する(ステップS800)。推奨拠点表示要求には、ステップS405において更新されたコード情報610、及び当該コード情報610を含むノートブック510のノートブック情報600が含まれる。
メッセージルータ113のメッセージ転送部700は、推奨拠点表示要求を受信した場合、推奨拠点判定部702にコード情報610及びノートブック情報600を送信し、また、拠点管理装置102の拠点管理部900に変数リスト取得要求を送信する(ステップS801)。変数リスト取得要求にはノートブック情報600が含まれる。
拠点管理装置102の拠点管理部900は、変数リスト取得要求を受信した場合、記憶部901を介して変数管理情報911から、ノートブック情報2001が変数リスト取得要求に含まれるノートブック情報600に一致する変数管理データ2000を取得し、メッセージルータ113のメッセージ転送部700に変数管理データ2000を送信する(ステップS802)。
メッセージルータ113のメッセージ転送部700は変数管理データ2000を推奨拠点判定部702に送信し、推奨拠点判定部702はコード情報610、ノートブック情報600、及び変数管理データ2000を受信した場合、推奨拠点特定処理を実行する(ステップS803)。推奨拠点特定処理の詳細は図24A、図24B、及び図24Cを用いて説明する。
メッセージルータ113の推奨拠点判定部702は推奨拠点特定処理によって特定された推奨拠点101の情報をメッセージ転送部700に送信し、メッセージ転送部700は、推奨拠点101の情報を受信した場合、開発支援装置112のエディタサーバ500に当該情報を送信する(ステップS804)。
開発支援装置112のエディタサーバ500は、推奨拠点101の情報を受信した場合、推奨拠点101を表示するための表示情報を生成し、クライアント端末111のノートブック入力表示部300に送信する(ステップS805)。
クライアント端末111のノートブック入力表示部300は、表示情報に基づいて推奨拠点101を表示する(ステップS806)。
例えば、拠点指定欄403に推奨拠点101を表示する方法、画面400とは異なる画面にて推奨拠点101を表示する方法等が考えられる。拠点101の名称とともに判定理由が表示されてもよい。
なお、推奨拠点101が二つ以上ある場合、推奨拠点判定部702は、ランダムに一つの推奨拠点101を選択し、クライアント端末111に通知してもよい。
なお、推奨拠点表示処理において、推奨拠点101を特定できない場合、推奨拠点判定部702は、推奨拠点101が特定できない旨をクライアント端末111に通知してもよい。
拠点選択処理では、ステップS500において、ユーザは推奨拠点101の情報に基づいてプログラムコードを実行する拠点を選択する。
図24A、図24B、及び図24Cは、実施例2の推奨拠点判定部702が実行する推奨拠点特定処理の一例を説明するフローチャートである。
推奨拠点判定部702は、推奨拠点表示要求に含まれるコード情報610のプログラムコード602からプログラムコードを取得する(ステップS900)。
推奨拠点判定部702は、プログラムコードの記述に用いられているプログラム言語の構文にしたがってプログラムコードを解析し、データの読み出し又は書き込み等、拠点101におけるデータファイル処理に関する処理文がプログラムコードに含まれるか否かを判定する(ステップS901)。例えば、loadやread、csv.read、write等が含まれるか否かが判定される。
拠点101におけるデータファイル処理に関する処理文がプログラムコードに含まれない場合、推奨拠点判定部702は、プログラムコードに変数が含まれるか否かを判定する(ステップS902)。
プログラムコードに変数が含まれない場合、推奨拠点判定部702は、受信したコード情報610を含むノートブック510に実行済みのプログラムコード(コード情報610)が存在するか否かを判定する(ステップS903)。具体的には、以下のような処理が実行される。
推奨拠点判定部702は、開発支援装置112のエディタサーバ500にコード情報取得要求を送信する。コード情報取得要求は、推奨拠点表示要求に含まれるコード情報610及びノートブック情報600を含む。
エディタサーバ500は、コード情報取得要求を受信した場合、記憶部501からノートブック情報600を含むノートブック510を取得し、当該ノートブック510に受信したコード情報610以外のコード情報610が含まれるか否かを判定する。ノートブック510に受信したコード情報610以外のコード情報610が含まれない場合、エディタサーバ500はエラーを推奨拠点判定部702に通知する。ノートブック510に受信したコード情報610以外のコード情報610が含まれる場合、エディタサーバ500は、直前に実行されたプログラムコードのコード情報610を推奨拠点判定部702に送信する。
推奨拠点判定部702は、エディタサーバ500からコード情報610を受信した場合、受信したコード情報610を含むノートブック510に実行済みのプログラムコード(コード情報610)が存在すると判定する。推奨拠点判定部702は、エディタサーバ500からエラーを受信した場合、受信したコード情報610を含むノートブック510に実行済みのプログラムコード(コード情報610)が存在しないと判定する。
なお、エディタサーバ500による直前に実行されたプログラムコードのコード情報610の送信は、ステップS800において実行されてもよい。
なお、メッセージルータ113が、各ノートブック510の最新の実行済みのコード情報610を保持するようにしてもよい。
なお、推奨拠点判定部702は、コード情報610を用いてプログラムコードの実行先として選択された拠点101の選択頻度を分析し、選択頻度が高い拠点101を選択してもよい。以上がステップS903の処理の説明である。
受信したコード情報610を含むノートブック510に実行済みのプログラムコード(コード情報610)が存在しない場合、推奨拠点判定部702は、開発支援装置112が所属する拠点101を推奨拠点101に決定し(ステップS904)、その後、推奨拠点特定処理を終了する。
ステップS901において、拠点101におけるデータファイル処理に関する処理文がプログラムコードに含まれる場合、推奨拠点判定部702は、プログラムコードに含まれるデータパスに基づいて、処理対象のデータを保持する拠点101を抽出する(ステップS910)。
本実施例では、プログラムコード入力処理(図15)において、拠点名を含むフルパスでデータパスを入力するように、エディタサーバ500が制御している。
推奨拠点判定部702は、抽出された拠点101が一つであるか否かを判定する(ステップS911)。
抽出された拠点101が一つである場合、推奨拠点判定部702は、当該拠点101を推奨拠点101に決定し(ステップS905)、その後、推奨拠点特定処理を終了する。
抽出された拠点101が一つでない場合、推奨拠点判定部702は、プログラムコードの修正を受け付ける状態(修正受付状態)への遷移をエディタサーバ500に指示し(ステップS912)、その後、推奨拠点特定処理を終了する。
エディタサーバ500は、当該指示を受け付けた場合、クライアント端末111のノートブック入力表示部300に、コード入力欄402のプログラムコードの修正又は変更を促す画面を表示するための表示情報を送信する。
ステップS902において、プログラムコードに変数が含まれる場合、推奨拠点判定部702は、同一の変数を含むプログラムコードが実行された拠点を抽出する(ステップS920)。具体的には、以下のような処理が実行される。
推奨拠点判定部702は、メッセージ転送部700を介して、拠点管理装置102の拠点管理部900に変数検索要求を送信する。変数検索要求はプログラムコードから抽出された変数を含む。
拠点管理部900は、変数検索要求を受信した場合、各変数管理データ2000の変数リスト2002を参照し、変数検索要求に含まれる変数を含むエントリを検索する。拠点管理部900は、検索されたエントリの拠点名2012の値を推奨拠点判定部702に送信する。
なお、複数の変数が抽出された場合、各変数について拠点が抽出されるものとする。以上がステップS920の処理の説明である。
推奨拠点判定部702は、抽出された拠点101が一つであるか否かを判定する(ステップS921)。
抽出された拠点101が一つである場合、推奨拠点判定部702は、当該拠点101を推奨拠点101に決定し(ステップS905)、その後、推奨拠点特定処理を終了する。なお、判定の根拠をユーザに示すため、変数リスト2002のエントリに含まれる関連データ2013、操作2014、及び備考2015等の値をユーザに提示するようにしてもよい。
抽出された拠点101が一つでない場合、推奨拠点判定部702は、プログラムコード及び拠点の修正を受け付ける状態(修正受付状態)への遷移をエディタサーバ500に指示し(ステップS922)、その後、拠点確認処理を実行する。
エディタサーバ500は、当該指示を受け付けた場合、クライアント端末111のノートブック入力表示部300に、抽出された拠点101を表示し、一つの拠点101を選択する必要があることを表示するための表示情報を送信する。
ステップS903において、受信したコード情報610を含むノートブック510に実行済みのプログラムコード(コード情報610)が存在する場合、推奨拠点判定部702は、エディタサーバ500から受信したコード情報610から拠点101の情報を抽出する(ステップS930)。
推奨拠点判定部702は、抽出された拠点101を推奨拠点101に決定し(ステップS905)、その後、推奨拠点特定処理を終了する。
実施例2によれば、計算機システム100は、プログラムコードの実行が推奨される推奨拠点101をユーザに提示することができる。これによって、ユーザの操作負担を低減できる。プログラムコードの処理対象のデータを保持する拠点101等が、自動的に推奨拠点101として提示されるため、拠点101において管理される分析対象データ1110等の秘匿情報が流出するリスクを低減できる。