JP7457588B2 - 計算機システム及びプログラムコードの実行制御方法 - Google Patents

計算機システム及びプログラムコードの実行制御方法 Download PDF

Info

Publication number
JP7457588B2
JP7457588B2 JP2020105597A JP2020105597A JP7457588B2 JP 7457588 B2 JP7457588 B2 JP 7457588B2 JP 2020105597 A JP2020105597 A JP 2020105597A JP 2020105597 A JP2020105597 A JP 2020105597A JP 7457588 B2 JP7457588 B2 JP 7457588B2
Authority
JP
Japan
Prior art keywords
program code
execution
base
data
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020105597A
Other languages
English (en)
Other versions
JP2021197103A (ja
Inventor
茉佑子 高井
侑 中田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2020105597A priority Critical patent/JP7457588B2/ja
Publication of JP2021197103A publication Critical patent/JP2021197103A/ja
Application granted granted Critical
Publication of JP7457588B2 publication Critical patent/JP7457588B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、アプリケーションを開発する環境を提供する計算機システム及びその処理に関する。
近年、IoT(Internet of Things)システムの普及に伴い、ネットワークに接続されるパーソナルコンピュータ、セル電話、スマートフォン、及び携帯情報端末等のエッジデバイスが急増している。これらのエッジデバイスはネットワークを介してクラウドシステム等と通信可能に接続される。
IoTシステムは、エッジデバイスからデータを収集、分析、可視化するデータ処理を実行し、既存作業の効率及び精度の向上等の新規サービスの創出につなげる働きを有する。複数の国及び地域等に存在する工場の機器を用いて作業を管理することによって製品の生産を効率化するサービス、顧客個人のデバイスから身体の測定データを収集し、分析結果を提供するヘルスケアサービス等、グローバルにIoTシステムを応用する方法が企業で検討又は実装されている。
一般的に、IoTシステムにおけるアプリケーション開発では、まず業務改善及び生産効率化等の実現したい目的が設定され、統計処理及びモデル構築等の専門知識を持ったデータアナリストがビッグデータを含む多数のデータの分析を担う。使用するデータ及び分析方法等の詳細が定まっていない段階において、データアナリストは、データの内容を理解し、また、使用するデータを選択するところから作業を開始する。データアナリストは、様々なデータを読み込み、簡単な統計計算を行い、グラフからデータの関連性、傾向、設定した目的に対する有用性を確認しながら分析対象のデータ及び分析方法を決定し、データ分析等のアプリケーションを開発する。
このように、アプリケーション開発の特に初期段階(データ内容の理解及び選択のフェーズ)では、試行錯誤的なプログラミングが行われるため、対話型プログラミング環境が有用である。
データアナリストがデータを分析するために使用するデファクトスタンダードとなっているツールの一つとして、例えば、Jupyter notebookがある。ユーザ(データアナリスト)は、Jupyter notebookを用いることによって、ノートブックと呼ばれる形式で生成したプログラムコード(ソースコード)を実行し、リアルタイムに実行結果を提示し、また、実行結果を記録できるツールである。Jupyter notebookは、試行錯誤的作業に適しているため、データ分析のデファクトスタンダードになっているツールの一つである。
近年、地域及び国は、個人情報の保護及び犯罪行為の抑止等を目的として、法令等によりデータの流通に関して制限を設けている。例えば、欧州のGDPR(General Data Protection Regulation)及び中国のサイバーセキュリティ法などが知られている。この制限は、データの保護に加えて、データの種類に応じて国外への送信を禁止する規定も設けられている。今後、様々な国及び地域で、データの流通に関する制限が設定されることが想定される。制限されるデータの種類については、明瞭な定義が難しく、地域及び国によって一様ではない。
以上のようなデータ流通の制限に関する規則に準拠しながら、グローバルにIoTシステムを応用したサービスを実現する仕組みとして、エッジコンピューティングが注目されている。
エッジコンピューティングは、データ及びユーザ端末が存在する拠点(エッジと呼ぶ)の近くにエッジサーバを配置し、エッジサーバがデータの分散処理を行うことによって通信の遅延を解消する技術である。エッジコンピューティングでは、エッジサーバからクラウドサーバ等の外部にデータを送信することなくエッジサーバ内で処理できるという特徴から、プライバシデータ等の秘匿情報の流出を防ぐことできる。そのため、データ流通の制限に対する対応策の一つとして有用である。
以下の説明において、「拠点」はデータを取り扱うシステムを意味する。例えば、国、州、及び会社(グループ会社を含む)を単位とする拠点、同一会社の工場、本社ビル等の建物、及び部署を単位とする拠点、又は、独自のデータの取扱いに関する規定を持つデータセンタ等を単位とする拠点ある。パーソナルコンピュータ、スマートフォン、及び携帯情報端末等、データの取得、分析、及び加工が可能なデバイスを単位とする拠点もある。
以下の説明において、「秘匿情報」は抽象化又は匿名化した上で外部に送信する必要がある情報を意味する。例えば、社外秘情報、並びに、年齢及び名前等の個人データが秘匿情報に該当する。
エッジコンピューティング技術を利用してアプリケーションを開発するためには、エッジ及びクラウドシステム、又は、複数の拠点にまたがってアプリケーションを構築する必要がある。この場合、各拠点にデータアナリスト及びプログラマを配置し、拠点のサーバに異なるアプリケーションをデプロイしてからインタフェースを通じて接続するなどの作業が必要になる。そのため、データ分析及びプログラミング技術のほかに通信の知識が必要となり、アプリケーション開発に要する作業が非常に煩雑となる。したがって、先に述べたような対話型プログラミング環境を用いてデータを変更しながら分析することが難しくなる。
非特許文献1にはJupyter notebookを用いて離れた拠点にあるサーバでプログラムコードを実行するシステムについて記載されている。非特許文献2にはJupyter notebookを用いて離れた拠点にある複数のサーバでプログラムコードを分散処理するシステムについて記載されている。
特許文献1には「被調整環境内でコーディネータを実装するシステムおよび方法が説明され、環境は、コーディネータによって管理される被調整デバイスのセットを含む。コーディネータは、タスクのセットがプロビジョニングされることができ、各々のタスクは、例えば、被調整デバイスを管理するようにコーディネータによって実行されることができるコードのセグメントに対応する。タスクの実行を支援するために、コーディネータは、個々のタスク実行に対応する実行環境を生成するリソースマネージャを含むことができ、環境は、他の実行環境から分離されてもよい。コーディネータはさらに、タスクを実行する呼び出しを取得し、待ち行列を実装するスケジューラを含むことができ、待ち行列から、実行のためのタスクを選択する。タスクを選択すると、スケジューラは、タスクについての実行環境を生成し、実行環境内でのタスクの実行を行わせるようにリソースマネージャと対話してもよい」ことが記載されている。
特表2020-501253号公報
Jupyter Kernel Gateway、[online]、[令和2年5月22日検索]、インターネット<URL:https://jupyter-kernel-gateway.readthedocs.io/en/latest/> Jupyter Enterprise Gateway、[online]、[令和2年5月22日検索]、インターネット<https://jupyter.org/enterprise_gateway/>
非特許文献1及び非特許文献2の技術では、複数拠点で使用されることを想定していないため、どこの拠点でプログラムコードを実行するかをユーザが指定することができないという課題がある。
特許文献1に記載のシステムでは、計算上の制約に基づいてのみコードが実行される仮想マシンインスタンスが選択されることが記載されているが、仮想マシンインスタンスの所属する拠点等、地理的な制約に基づく指定は開示されていない。したがって、どこの拠点でプログラムコードを実行するかをユーザが指定することができないという課題がある。
本発明は、アプリケーション開発において、ユーザがプログラムコードを実行する拠点を指定可能な対話型プログラミング環境を実現する計算機システム及びその実行方法を提供することを目的とする。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、複数の拠点及び複数の計算機を備える計算機システムであって、前記複数の計算機は、前記拠点に格納されるデータを用いた処理を実行するためのプログラムコードの入力を受け付けるエディタを有する計算機を少なくとも一つ含み、前記複数の拠点の各々は、前記プログラムコードに基づいて前記データを用いた処理を実行する実行部を有する計算機を少なくとも一つ含み、前記データを管理するデータ管理部を有する計算機を少なくとも一つ含み、前記エディタは、前記プログラムコード及び当該プログラムコードを実行する前記拠点の入力をユーザから受け付けるインタフェースを提供し、前記インタフェースを介して、前記プログラムコード及び前記拠点の入力を受け付けた場合、前記拠点の前記実行部に前記プログラムコードを含む実行要求を送信し、前記実行部から前記プログラムコードの実行結果を受信し、前記ユーザに前記実行結果を提示するための表示情報を生成する。
本発明によれば、ユーザがプログラムコードを実行する拠点を指定可能な対話型プログラミング環境を実現できる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
実施例1の計算機システムの構成の一例を示す図である。 実施例1の情報処理装置のハードウェア構成の一例を示す図である。 実施例1のクライアント端末の機能構成の一例を示す図である。 実施例1のクライアント端末が表示する画面の一例を示す図である。 実施例1の開発支援装置の機能構成の一例を示す図である。 実施例1のノートブックのデータ構造の一例を示す図である。 実施例1のメッセージルータの機能構成の一例を示す図である。 実施例1の実行装置管理情報のデータ構造の一例を示す図である。 実施例1の拠点管理装置の機能構成の一例を示す図である。 実施例1の実行装置の機能構成の一例を示す図である。 実施例1のデータ管理装置の機能構成の一例を示す図である。 実施例1の計算機システムにおいて実行されるノートブック生成処理の一例を説明するシーケンス図である。 実施例1の計算機システムにおいて実行されるノートブック削除処理の一例を説明するシーケンス図である。 実施例1の計算機システムにおいて実行される拠点リスト表示処理の一例を説明するシーケンス図である。 実施例1の計算機システムにおいて実行されるプログラムコード入力処理の一例を説明するシーケンス図である。 実施例1の計算機システムにおいて実行される拠点選択処理の一例を説明するシーケンス図である。 実施例1の計算機システムにおいて実行されるプログラムコード実行処理の一例を説明するシーケンス図である。 実施例2のメッセージルータの機能構成の一例を示す図である。 実施例2の拠点管理装置の機能構成の一例を示す図である。 実施例2の変数管理情報のデータ構造の一例を示す図である。 実施例2の実行装置の機能構成の一例を示す図である。 実施例2の開発支援装置が実行する拠点確認処理の一例を説明するフローチャートである。 実施例2の計算機システムにおいて実行される推奨拠点表示処理の一例を説明するシーケンス図である。 実施例2の推奨拠点判定部が実行する推奨拠点特定処理の一例を説明するフローチャートである。 実施例2の推奨拠点判定部が実行する推奨拠点特定処理の一例を説明するフローチャートである。 実施例2の推奨拠点判定部が実行する推奨拠点特定処理の一例を説明するフローチャートである。 実施例3のクライアント端末の機能構成の一例を示す図である。 実施例3のデータ管理装置の機能構成の一例を示す図である。 実施例3のデータ一覧表示部によって表示される画面の一例を示す図である。
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。本明細書等における「第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等の秘匿情報が流出するリスクを低減できる。
実施例3では、分析対象データ1110の選択を補助する情報を提供する。以下、実施例1との差異を中心に実施例3について説明する。
実施例3の計算機システム100の構成は実施例1と同一である。実施例3の計算機システム100を構成する各装置のハードウェア構成は実施例1と同一である。実施例3の開発支援装置112、メッセージルータ113、実行装置114、及び拠点管理装置102の構成は実施例1と同一である。実施例3のノートブック510及び部分ノートブック1010のデータ構造は実施例1と同一である。実施例3の実行装置管理情報710、910のデータ構造は実施例1と同一である。
実施例3では、クライアント端末111の機能構成が実施例1と一部異なる。図25は、実施例3のクライアント端末111の機能構成の一例を示す図である。
実施例3のクライアント端末111は、主記憶装置202にデータ一覧表示部301を実現するプログラムを格納する。その他の構成は実施例1と同一である。
データ一覧表示部301は、各拠点101のデータ管理装置115からメタデータ1111を取得し、分析対象データ1110の一覧をユーザに提示する。メタデータ1111の取得方法は、例えば、データ管理装置115から直接取得する方法、メッセージルータ113のメッセージ転送部700を介して取得する方法等が考えられる。本実施例では、データ一覧表示部301は、データ管理装置115から直接メタデータ1111を取得するものとする。
また、データ一覧表示部301は、ユーザから閲覧申請を受け付け、分析対象データ1110を保持するデータ管理装置115に閲覧申請を送信する。データ一覧表示部301は、データ管理装置115から分析対象データ1110に関する情報を受信し、ユーザに提示する。
実施例3では、データ管理装置115の機能構成が実施例1と一部異なる。図26は、実施例3のデータ管理装置115の機能構成の一例を示す図である。
実施例3のデータ管理装置115は、主記憶装置202にダミーデータ生成部1102及びデータ転送部1103を実現するプログラムを格納する。また、実施例3の記憶部1101は、ダミーデータ1112を保存する。その他の構成は実施例1と同一である。
ダミーデータ1112は、メタデータ1111に含まれる秘匿情報が加工されたデータである。ダミーデータ1112は、例えば、分析対象データ1110と同一又は異なるデータ型の定型データ、分析対象データ1110に対してマスキング及びk-匿名化等の匿名化処理を行ったデータ、シミュレーション及び機械学習によって生成された、分析対象データ1110と同じ傾向のデータである。
ダミーデータ生成部1102は、メタデータ1111に含まれる秘匿情報からダミーデータ1112を生成する。
データ転送部1103は、データ一覧表示部301に秘匿情報がダミーデータ1112に置き換えられたメタデータ1111を送信する。また、データ転送部1103は、データ一覧表示部301から閲覧要求を受信した場合、閲覧対象のデータに関する情報をデータ一覧表示部301に送信する。
なお、分析対象データ1110が開発支援装置112に送信されてもよい。この場合、分析対象データ1110に含まれる秘匿情報がダミーデータ1112に置き換えられる。
図27は、実施例3のデータ一覧表示部301によって表示される画面2700の一例を示す図である。
画面2700には、データ一覧表示部301がデータ管理装置115から受信したメタデータ1111に基づいて生成したデータ一覧2710が表示される。データ一覧2710の一つのエントリが一つのメタデータ1111に対応する。データ一覧2710のエントリは、データ名2711、生成日2712、拠点2713、保管場所2714、備考2715、及びダミー2716を含む。
データ名2711は、分析対象データ1110の名称を格納するフィールドである。生成日2712は、分析対象データ1110の生成日を格納するフィールドである。拠点2713は、分析対象データ1110が保管されている拠点101の名称を格納するフィールドである。保管場所2714は、拠点101内の分析対象データ1110の保管場所を示す情報を格納するフィールドである。
備考2715は、分析対象データ1110の概要等を格納するフィールドである。備考2715には、例えば、分析対象データ1110に秘匿情報が含まれるか否かを示す情報が格納される。
ダミー2716は、分析対象データ1110の少なくとも一部がダミーデータ1112に置き換えられているか否かを示すフラグを格納するフィールドである。分析対象データ1110の少なくとも一部がダミーデータ1112に置き換えられている場合、ダミー2716には「有」が格納され、分析対象データ1110の少なくとも一部がダミーデータ1112に置き換えられていない場合、ダミー2716には「無」が格納される。
ユーザは、内容を確認したい分析対象データ1110が存在する場合、データ一覧2710のエントリを選択し、閲覧を申請するための操作を行う。例えば、ユーザは、分析対象データ1110に対応するエントリをクリックすることによって、カーソル2720を移動させ、さらに、当該エントリをダブルクリックすることによって閲覧を申請する。
閲覧申請は、データ一覧表示部301によって、拠点2713に対応する拠点101に含まれるデータ管理装置115のデータ転送部1103に送信される。データ転送部1103は、分析対象データ1110又はメタデータ1111をデータ一覧表示部301に送信する。
実施例3によれば、ユーザに対して各拠点101が保持する分析対象データ1110を表示することによって、処理対象のデータの取捨選択が容易となる。したがって、効率的にアプリケーションを開発することができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Python、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
100 計算機システム
101 拠点
102 拠点管理装置
103 ネットワーク
111 クライアント端末
112 開発支援装置
113 メッセージルータ
114 実行装置
115 データ管理装置
200 情報処理装置
201 プロセッサ
202 主記憶装置
203 補助記憶装置
204 入力装置
205 出力装置
206 通信装置
300 ノートブック入力表示部
301 データ一覧表示部
500 エディタサーバ
501、701、901、1002、1101 記憶部
510、912 ノートブック
600、2001 ノートブック情報
610 コード情報
700、1001 メッセージ転送部
702 推奨拠点判定部
710、910 実行装置管理情報
900 拠点管理部
911 変数管理情報
1000 プログラムコード実行部
1010 部分ノートブック
1011 部分変数管理情報
1100 データ管理部
1102 ダミーデータ生成部
1103 データ転送部
1110 分析対象データ
1111 メタデータ
1112 ダミーデータ

Claims (15)

  1. 複数の拠点及び複数の計算機を備える計算機システムであって、
    前記複数の計算機は、前記拠点に格納されるデータを用いた処理を実行するためのプログラムコードの入力を受け付けるエディタを有する計算機を少なくとも一つ含み、
    前記複数の拠点の各々は、前記プログラムコードに基づいて前記データを用いた処理を実行する実行部を有する計算機を少なくとも一つ含み、前記データを管理するデータ管理部を有する計算機を少なくとも一つ含み、
    前記エディタは、
    前記プログラムコード及び当該プログラムコードを実行する前記拠点の入力をユーザから受け付けるインタフェースを提供し、
    前記インタフェースを介して、前記プログラムコード及び前記拠点の入力を受け付けた場合、前記拠点の前記実行部に前記プログラムコードを含む実行要求を送信し、
    前記実行部から前記プログラムコードの実行結果を受信し、
    前記ユーザに前記実行結果を提示するための表示情報を生成することを特徴とする計算機システム。
  2. 請求項1に記載の計算機システムであって、
    前記複数の計算機は、前記複数の拠点と前記エディタとの間のメッセージの送受信を制御するメッセージ転送部を有する計算機を少なくとも一つ含み、
    前記メッセージ転送部は、
    前記複数の拠点の中から、前記プログラムコードの実行を推奨する推奨拠点を特定し、
    前記推奨拠点の情報を前記エディタに送信し、
    前記エディタは、前記推奨拠点の情報に基づいて、前記ユーザに前記推奨拠点を提示するための表示情報を生成することを特徴とする計算機システム。
  3. 請求項2に記載の計算機システムであって、
    前記メッセージ転送部は、
    前記複数の拠点の各々の前記実行部の状態を管理する実行部管理情報にアクセス可能であって、
    前記エディタから前記実行要求を受信した場合、前記実行部管理情報を参照して、前記実行要求に含まれる前記拠点の前記実行部の中から、前記実行要求に含まれる前記プログラムコードを実行させる前記実行部を選択し、
    選択された前記実行部に前記実行要求を送信することを特徴とする計算機システム。
  4. 請求項2に記載の計算機システムであって、
    前記メッセージ転送部は、
    前記インタフェースを介して入力された前記プログラムコードを分析し、
    前記分析の結果に基づいて前記推奨拠点を特定することを特徴とする計算機システム。
  5. 請求項4に記載の計算機システムであって、
    前記メッセージ転送部は、前記プログラムコードに処理対象の前記データを特定するための情報が含まれる場合、当該情報に基づいて処理対象の前記データを格納する前記拠点を前記推奨拠点として特定することを特徴とする計算機システム。
  6. 請求項4に記載の計算機システムであって、
    前記メッセージ転送部は、
    過去に実行された前記プログラムコードに含まれる変数と当該プログラムコードを実行した前記拠点の関連付けを管理する変数管理情報にアクセス可能であって、
    前記インタフェースを介して入力された前記プログラムコードに含まれる変数を抽出し、
    前記変数管理情報を参照して、抽出された前記変数と関連付けられる前記拠点を前記推奨拠点として特定することを特徴とする計算機システム。
  7. 請求項2に記載の計算機システムであって、
    前記メッセージ転送部は、
    過去に実行された前記プログラムコードと当該プログラムコードを実行した前記拠点の関連付けを管理するプログラム開発情報にアクセス可能であって、
    前記プログラム開発情報を参照して、前記インタフェースを介して入力された前記プログラムコードと同一の前記プログラムコードに関連付けられる前記拠点を前記推奨拠点として特定することを特徴とする計算機システム。
  8. 請求項2に記載の計算機システムであって、
    前記エディタは、
    前記メッセージ転送部を介して、前記拠点に対してデータ閲覧要求を送信し、
    前記メッセージ転送部を介して、前記データ閲覧要求を送信した前記拠点の前記データ管理部から受信した応答に基づいて、前記データ閲覧要求を送信した前記拠点の前記データに関する情報を表示するための表示情報を生成し、
    前記データ管理部は、
    前記メッセージ転送部を介して、前記データ閲覧要求を受信した場合、前記データに含まれ、外部への提供が禁止されている項目から外部への提供が可能なダミーデータを生成し、
    前記メッセージ転送部を介して、前記エディタに、前記項目が前記ダミーデータに置き換えられた前記データを含む前記応答を送信することを特徴とする計算機システム。
  9. 複数の拠点及び複数の計算機を含む計算機システムにおけるプログラムコードの実行制御方法であって、
    前記複数の計算機は、前記拠点に格納されるデータを用いた処理を実行するためのプログラムコードの入力を受け付けるエディタを有する計算機を少なくとも一つ含み、
    前記複数の拠点の各々は、前記プログラムコードに基づいて前記データを用いた処理を実行する実行部を有する計算機を少なくとも一つ含み、前記データを管理するデータ管理部を有する計算機を少なくとも一つ含み、
    前記プログラムコードの実行制御方法は、
    前記エディタが、前記プログラムコード及び当該プログラムコードを実行する前記拠点の入力をユーザから受け付けるインタフェースを提供する第1のステップと、
    前記エディタが、前記インタフェースを介して、前記プログラムコード及び前記拠点の入力を受け付けた場合、前記拠点の前記実行部に前記プログラムコードを含む実行要求を送信する第2のステップと、
    前記エディタが、前記実行部から前記プログラムコードの実行結果を受信する第3のステップと、
    前記エディタが、前記ユーザに前記実行結果を提示するための表示情報を生成する第4のステップと、を含むことを特徴とするプログラムコードの実行制御方法。
  10. 請求項9に記載のプログラムコードの実行制御方法であって、
    前記複数の計算機は、前記複数の拠点と前記エディタとの間のメッセージの送受信を制御するメッセージ転送部を有する計算機を少なくとも一つ含み、
    前記プログラムコードの実行制御方法は、
    前記メッセージ転送部が、前記複数の拠点の中から、前記プログラムコードの実行を推奨する推奨拠点を特定する第5のステップと、
    前記メッセージ転送部が、前記推奨拠点の情報を前記エディタに送信する第6のステップと、を含み、
    前記第1のステップは、前記エディタが、前記推奨拠点の情報に基づいて、前記ユーザに前記推奨拠点を提示するための表示情報を生成するステップを含むことを特徴とするプログラムコードの実行制御方法。
  11. 請求項10に記載のプログラムコードの実行制御方法であって、
    前記メッセージ転送部は、前記複数の拠点の各々の前記実行部の状態を管理する実行部管理情報にアクセス可能であって、
    前記プログラムコードの実行制御方法は、
    前記メッセージ転送部が、前記エディタから前記実行要求を受信した場合、前記実行部管理情報を参照して、前記実行要求に含まれる前記拠点の前記実行部の中から、前記実行要求に含まれる前記プログラムコードを実行させる前記実行部を選択するステップと、
    前記メッセージ転送部が、選択された前記実行部に前記実行要求を送信するステップと、を含むことを特徴とするプログラムコードの実行制御方法。
  12. 請求項10に記載のプログラムコードの実行制御方法であって、
    前記第5のステップは、前記メッセージ転送部が、前記プログラムコードに処理対象の前記データを特定するための情報が含まれる場合、当該情報に基づいて処理対象の前記データを格納する前記拠点を前記推奨拠点として特定するステップを含むことを特徴とするプログラムコードの実行制御方法。
  13. 請求項10に記載のプログラムコードの実行制御方法であって、
    前記メッセージ転送部は、過去に実行された前記プログラムコードに含まれる変数と当該プログラムコードを実行した前記拠点の関連付けを管理する変数管理情報にアクセス可能であって、
    前記第5のステップは、
    前記メッセージ転送部が、前記インタフェースを介して入力された前記プログラムコードに含まれる変数を抽出するステップと、
    前記メッセージ転送部が、前記変数管理情報を参照して、抽出された前記変数と関連付けられる前記拠点を前記推奨拠点として特定するステップと、を含むことを特徴とするプログラムコードの実行制御方法。
  14. 請求項10に記載のプログラムコードの実行制御方法であって、
    前記メッセージ転送部は、過去に実行された前記プログラムコードと当該プログラムコードを実行した前記拠点の関連付けを管理するプログラム開発情報にアクセス可能であって、
    前記第5のステップは、前記メッセージ転送部が、前記プログラム開発情報を参照して、前記インタフェースを介して入力された前記プログラムコードと同一の前記プログラムコードに関連付けられる前記拠点を前記推奨拠点として特定するステップを含むことを特徴とするプログラムコードの実行制御方法。
  15. 請求項10に記載のプログラムコードの実行制御方法であって、
    前記エディタが、前記メッセージ転送部を介して、前記拠点に対してデータ閲覧要求を送信するステップと、
    前記データ管理部が、前記メッセージ転送部を介して、前記データ閲覧要求を受信した場合、前記データに含まれ、外部への提供が禁止されている項目から外部への提供が可能なダミーデータを生成するステップと、
    前記データ管理部が、前記メッセージ転送部を介して、前記エディタに、前記項目が前記ダミーデータに置き換えられた前記データを含む応答を送信するステップと、
    前記エディタが、前記メッセージ転送部を介して、前記応答を受信した場合、当該応答に基づいて、前記データ閲覧要求を送信した前記拠点の前記データに関する情報を表示するための表示情報を生成しするステップと、を含むプログラムコードの実行制御方法。
JP2020105597A 2020-06-18 2020-06-18 計算機システム及びプログラムコードの実行制御方法 Active JP7457588B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020105597A JP7457588B2 (ja) 2020-06-18 2020-06-18 計算機システム及びプログラムコードの実行制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020105597A JP7457588B2 (ja) 2020-06-18 2020-06-18 計算機システム及びプログラムコードの実行制御方法

Publications (2)

Publication Number Publication Date
JP2021197103A JP2021197103A (ja) 2021-12-27
JP7457588B2 true JP7457588B2 (ja) 2024-03-28

Family

ID=79195754

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020105597A Active JP7457588B2 (ja) 2020-06-18 2020-06-18 計算機システム及びプログラムコードの実行制御方法

Country Status (1)

Country Link
JP (1) JP7457588B2 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005092542A (ja) 2003-09-18 2005-04-07 Hitachi Ltd ジョブネット構成ファイルの生成装置および生成方法
JP2007304660A (ja) 2006-05-08 2007-11-22 Hitachi Information Systems Ltd コマンド実行結果記録システム及びコマンド実行結果記録方法
JP2015184889A (ja) 2014-03-24 2015-10-22 株式会社日立ソリューションズ システム操作装置およびシステム操作方法
JP2018067144A (ja) 2016-10-19 2018-04-26 株式会社リコー システム、情報処理方法、情報処理装置、プログラム
JP2019016241A (ja) 2017-07-07 2019-01-31 株式会社リコー 情報処理装置、情報処理システム及び情報処理プログラム
JP2019101829A (ja) 2017-12-05 2019-06-24 株式会社日立製作所 ソフトウェア部品管理システム、計算機および方法
JP2020068020A (ja) 2018-10-26 2020-04-30 富士ゼロックス株式会社 計算ノートブックインターフェースのためのシステム、方法、プログラム、及び装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005092542A (ja) 2003-09-18 2005-04-07 Hitachi Ltd ジョブネット構成ファイルの生成装置および生成方法
JP2007304660A (ja) 2006-05-08 2007-11-22 Hitachi Information Systems Ltd コマンド実行結果記録システム及びコマンド実行結果記録方法
JP2015184889A (ja) 2014-03-24 2015-10-22 株式会社日立ソリューションズ システム操作装置およびシステム操作方法
JP2018067144A (ja) 2016-10-19 2018-04-26 株式会社リコー システム、情報処理方法、情報処理装置、プログラム
JP2019016241A (ja) 2017-07-07 2019-01-31 株式会社リコー 情報処理装置、情報処理システム及び情報処理プログラム
JP2019101829A (ja) 2017-12-05 2019-06-24 株式会社日立製作所 ソフトウェア部品管理システム、計算機および方法
JP2020068020A (ja) 2018-10-26 2020-04-30 富士ゼロックス株式会社 計算ノートブックインターフェースのためのシステム、方法、プログラム、及び装置

Also Published As

Publication number Publication date
JP2021197103A (ja) 2021-12-27

Similar Documents

Publication Publication Date Title
US11176331B2 (en) Contextual communication and service interface
US20200380200A1 (en) Information processing apparatus and method and non-transitory computer readable medium
US11288319B1 (en) Generating trending natural language request recommendations
US11054972B2 (en) Context-based user assistance and service workspace
CA2901677C (en) Predictive storage service
US9098314B2 (en) Systems and methods for web based application modeling and generation
JP7361135B2 (ja) 管理対象ネットワークによって使用されるソフトウェアの決定及び調整
Myers et al. Towards sustainable curation and preservation: The sead project's data services approach
US11693710B1 (en) Workload pool hierarchy for a search and indexing system
US20220309105A1 (en) Apparatuses, methods, and computer program products for generating interaction vectors within a multi-component system
US20200074001A1 (en) User Interface for Contextual Search
JP2005242904A (ja) 文書群分析装置、文書群分析方法、文書群分析システム、プログラムおよび記録媒体
US10185747B2 (en) Presenting publisher data sets in context
JP7457588B2 (ja) 計算機システム及びプログラムコードの実行制御方法
US11625497B2 (en) File management system and non-transitory computer readable medium
US20170262439A1 (en) Information processing apparatus and non-transitory computer readable medium
JP2018169770A (ja) 情報管理システム、情報管理方法および情報管理プログラム
US20230281214A1 (en) Actor-based information system
WO2020162174A1 (ja) 解析装置、解析方法、および解析プログラム
KR102181579B1 (ko) 환자정보 스티커 서비스 제공방법 및 이를 위한 치과용 보험청구 시스템
JP7030197B2 (ja) ブラインド位置検索方法、システムおよび非一時的なコンピュータ読み取り可能な記録媒体
JP2010211373A (ja) 管理装置
JP2008287663A (ja) リソース管理装置
JP3852849B2 (ja) 統合業務ソフトウェアの導入運用支援システム
Ayob et al. Web-based tourism decision support system (WBTDSS): Architecture and application for Langkawi Island, Malaysia

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240315

R150 Certificate of patent or registration of utility model

Ref document number: 7457588

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150