JP2020170453A - Webアプリケーションの作成運用支援システム - Google Patents

Webアプリケーションの作成運用支援システム Download PDF

Info

Publication number
JP2020170453A
JP2020170453A JP2019072907A JP2019072907A JP2020170453A JP 2020170453 A JP2020170453 A JP 2020170453A JP 2019072907 A JP2019072907 A JP 2019072907A JP 2019072907 A JP2019072907 A JP 2019072907A JP 2020170453 A JP2020170453 A JP 2020170453A
Authority
JP
Japan
Prior art keywords
web application
source code
language
unit
support system
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.)
Granted
Application number
JP2019072907A
Other languages
English (en)
Other versions
JP7300303B2 (ja
Inventor
陽介 篠崎
Yosuke Shinozaki
陽介 篠崎
功 萩谷
Isao Hagiya
功 萩谷
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 JP2019072907A priority Critical patent/JP7300303B2/ja
Priority to PCT/JP2020/005330 priority patent/WO2020202816A1/ja
Priority to DE112020001057.0T priority patent/DE112020001057T5/de
Publication of JP2020170453A publication Critical patent/JP2020170453A/ja
Application granted granted Critical
Publication of JP7300303B2 publication Critical patent/JP7300303B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】2言語以上の複数言語で開発されたソースコードに対してWebアプリケーション開発を可能とする。【解決手段】ローカル環境で動くソフトウェアのソースコードをもとに、ソフトウェアをWebアプリケーション化するWebアプリケーションの作成運用支援システム1は、ソースコードの解析を行うソースコード解析部11と、ソースコード解析部が解析したソースコードに基づきWebアプリケーションのGUIの生成を行い、Webアプリケーションを生成するWebアプリケーション生成部12と、ルーティング処理を行うサーバ上公開処理部13と、生成したWebアプリケーションをアクセス可能な状態にし、運用支援を行うプラットフォーム部14と、を備える。ソースコード解析部は、ソースコードのプログラミング言語を判定する言語判定部31と、少なくとも2言語以上のプログラミング言語を解析する各言語対応解析部32と、を備える。【選択図】図1

Description

本発明は、Webアプリケーションの作成運用支援システムに関する。
本技術の背景技術として特開2016−66355号公報がある。本文献によれば「クライアントアプリケーションで処理を行うシステムを、Webアプリケーションからも処理を行えるようにするために、クライアントアプリケーションからWebアプリケーションを構築する場合、クライアントアプリケーションの処理をWebアプリケーション用に変換することなく、Webアプリケーションを生成する。」という目的に対して「Webアプリケーション生成装置は、クライアントアプリケーションの設計情報であるデータ構造情報を受信しデータモデル定義として保持し、データモデル定義と、提供されるWebサービスにより使用可能な既存の処理情報を処理可能にするための定義情報と、を用いることにより、Webアプリケーションを生成する」技術が公開されている。また、同様の技術として、特開2002−366352号公報がある。本文献によれば「マルチプラットフォームに適用する機能の開発や変更に柔軟な仕組みの開発、エンドユーザに易しいカスタマイズ方法の開発をそれぞれ実現することができ、WEBアプリケーションの開発の支援を容易に行うことができるようにする。」という目的に対して「ソースプログラムジェネレータにより、独自のフォーマットに従って記述されたXMLプログラムのファイルと、画面のデザインを司るプログラムのファイルとがまとめられることで、WEBサーバ上で実行できるソースプログラムが生成されるようにする。」技術が公開されている。
特開2016−066355号公報 特開2002−366352号公報
CUIを備えるまたはCUIから起動されるローカル環境で動くソフトウェアを複数個Webアプリケーション化し、Webアプリケーションを集約したプラットフォームとする場合、ソフトウェアのすべてが同一の言語で開発されているとは限らない。そのため、複数のソフトウェアをWebアプリケーション化しプラットフォームに集約する場合、Webアプリケーションを生成するシステムは複数の言語に対応している必要がある。しかし、先行技術(特許文献1、2)は、特定の1言語で開発されたソフトウェアのみでしか、Webアプリケーション開発に適用できないという課題がある。そこで本発明は少なくとも2言語以上の複数言語で開発されたソースコードに対してもWebアプリケーション開発が可能となるシステムを提供することを課題とする。
上記課題を解決するために、ローカル環境で動くソフトウェアのソースコードをもとに、そのソフトウェアをWebアプリケーション化するWebアプリケーションの作成運用支援システムにおいて、ソースコードの解析を行うソースコード解析部と、ソースコード解析部が解析したソースコードに基づきWebアプリケーションのGUIの生成を行い、Webアプリケーションを生成するWebアプリケーション生成部と、ルーティング処理を行うサーバ上公開処理部と、Webアプリケーション生成部が生成したWebアプリケーションをアクセス可能な状態にし、運用支援を行うプラットフォーム部と、を備え、ソースコード解析部は、ソースコードのプログラミング言語を判定する言語判定部と、少なくとも2言語以上のプログラミング言語を解析する各言語対応解析部と、を備えることを特徴とするWebアプリケーションの作成運用支援システムを提供する。
少なくとも2言語以上の言語で開発されたソフトウェアのソースコードに対して、Webアプリケーション開発の際に、追加のプログラミング作業を必要とせずにWebアプリケーションを開発することが可能となる。
Webアプリケーションの作成運用支援システムの一実施例を示す図である。 関数リストの一例(Pythonの場合)を示す図である。 関数リストの一例(R言語の場合)を示す図である。 入出力リストの一例を示す図である。 各言語対応解析部におけるデータのフローを示したデータフロー図である。 Webアプリケーション要素データベースの一例を示す図である。 Webアプリケーション要素生成部におけるデータのフローを示したデータフロー図である。 コンパイル言語により記述されたソースコードを処理する場合の、アセンブリ部におけるデータのフローを示したデータフロー図である。 インタプリタ言語により記述されたソースコードを処理する場合の、アセンブリ部におけるデータのフローを示したデータフロー図である。 図1のWebアプリケーションの作成運用支援システムによるWebアプリケーションの開発フローを示したフローチャート図である。 ソースコードアップロードページのユーザインターフェースの一例を示す図である。 プラットフォーム公開部の一例を示す図である。 ソースコードの一例(Pythonの場合)を示す図である。 ソースコードの一例(Rの場合)を示す図である。 図12のソースコードをWebアプリケーション化した際のユーザインターフェースの一例を示す図である。 Webアプリケーションの作成運用支援システムの一実施例の変形例を示す図表である。
<実施例1>
<<基本構成>>
以下、図面を参照して本発明の一実施形態によるWebアプリケーションの作成運用支援システム1について詳細に説明する。
図1は、本発明の一実施形態によるWebアプリケーションの作成運用支援システム1のシステム概要を示す概略図である。図1に示す通り、Webアプリケーションの作成運用支援システム1は、サーバ2上で動作するシステムであり、大きく分けてソースコード解析部11、Webアプリケーション生成部12、サーバ上公開処理部13、プラットフォーム部14の4要素から成るシステムである。
この4要素は、それぞれ更に細かい要素を含んでおり、ソースコード解析部11は、ソースコードアップロードページ30と言語判定部31と各言語対応解析部32(解析部[python]と解析部[R言語]と解析部[C言語]とを総称)により構成される。Webアプリケーション生成部12は、Webアプリケーション要素生成部41とWebアプリケーション要素データベース42とコンパイル部43とアセンブリ部44により構成される。サーバ上公開処理部13は、Webアプリケーション格納処理部51とルーティング処理部52とを備える。プラットフォーム部14は、プラットフォーム掲載処理部61とプラットフォーム公開部62とを備えている。
サーバ2内のWebアプリケーションの作成運用支援システム1には、開発者PC3、ユーザPC4からインターネット5を経由して接続できるように構成されている。なお、開発者PC3やユーザPC4とサーバ2を接続するのはインターネット5に限らず、社内ネットワークを含むイントラネットであってもよい。
<<<ハードウェア>>>
次に、Webアプリケーションの作成運用支援システム1と開発者PC3とユーザPC4とのハードウェア構成について説明する。
Webアプリケーションの作成運用支援システム1はサーバ2上で動作するシステムである。ここでいうサーバとは、入力装置(キーボードやマウスなど)、記憶装置(メモリやハードディスクなど)、制御装置(CPU(Central Processing Unit)など)、演算装置(CPUやGPU(Graphics Processing Unit)など)、出力装置(ディスプレイやプリンタなど)、通信装置(コミュニケーションインタフェースなど)と、を備えたシステムである。これらの装置は、内部バスや外部バス等を含むシステムバスといった伝送路を介して互いに接続されている。記憶装置の内、メインの内部バスに直接接続されているものを主記憶装置、外部バスに接続されているものを補助記憶装置という。主記憶装置にはMICROSOFT(登録商標)WINDOWS(登録商標)やLINUX(登録商標)などのオペレーティングシステムが常駐し、サーバ2全体を制御する。Webアプリケーションの作成運用支援システム1を構成するソフトウェアは、補助記憶装置に格納され、起動されると主記憶装置にロードされて後述するように機能する。Webアプリケーションの作成運用支援システム1は、生成したWebアプリケーションの動作に必要な処理をサーバ2の持つCPU(Central Processing Unit)、GPU(Graphics Processing Unit)、主記憶装置、補助記憶装置を活用し行うことにより運用支援する。また、開発者PC3/ユーザPC4は、パーソナルコンピュータであり、入力装置、記憶装置、制御装置、演算装置、出力装置、通信装置とを備えたシステムである。なお、本発明の実施において、上記サーバまたは上記PCに不要な装置が含まれていた場合、その装置はサーバもしくはPCに取り付けなくてもよい。
<<機能>>
次に、Webアプリケーションの作成運用支援システム1の構成要素の機能を説明する前に、Webアプリケーションの作成運用支援システム1を利用するのに用いる開発者PC3の説明を行う。図1に示すように、開発者PC3はブラウザ20を備える。ブラウザとはWebサイトを閲覧する機能や、Webアプリケーションを操作する機能を有するソフトウェアを指す。
ソースコード21の送信は、開発者PC3からブラウザ20を介して行う。なお、ソースコード21を送信することが別の手段で可能であれば必ずしもブラウザ20を備えている必要が無い。別の手段とは例えば、FTPまたはFTPSまたはSFTP等の、サーバ2に直接送信する手段を指す。
開発者PC3とブラウザ20とソースコード21は特定の開発者のパーソナルコンピュータ、ブラウザ、ソースコードを指しているのではなく、複数の開発者のパーソナルコンピュータ、ブラウザ、ソースコードを代表して図示している。
ソースコード21は、Webアプリケーションでなく、ローカル環境において動作し、さらにCUIを備えまたはCUIから起動される、文字の入出力や、ファイルの入出力を行うソフトウェアのソースコードである。なお、ソースコード21は本発明内で作成されるものではなく、あらかじめ作成されている。ファイルは、例えばテキストファイルや画像ファイルである。ローカル環境とは、開発者PC3だけでなく、インターネット5に繋がった他の資源、たとえばLANに接続されたライブラリサーバなども含む環境を言う。また、Webアプリケーションは、ブラウザをユーザインターフェースとしてHTMLを出力し、ブラウザとサーバ2との間はHTTP/HTTPSなどで通信を行う。
次に、Webアプリケーションの作成運用支援システム1の構成要素の機能を説明する。
ソースコード解析部11は、ソースコードアップロードページ30と言語判定部31と各言語対応解析部32とを備える。ソースコードアップロードページ30は、ソースコード21をアップロードするHTMLやCSS、javascriptにより記述されたWebページであり、開発者PC3からソースコード21を受け取り、言語判定部31へソースコード21を受け渡す機能を有する。
言語判定部31はソースコードアップロードページ30から受け渡されたソースコード21の拡張子から、ソースコード21の言語を判定する機能を有する。例えば、「test.py」というファイル名を持つソースコード21に対しては、プログラミング言語「python」により記述されているソースコードであると判定し、「test.c」というファイル名を持つソースコード21に対しては、プログラミング言語「C言語」により記述されているソースコードであると判定する。なお、言語の判定方法はこれに限定されず、たとえばソースコード21の内容や文法に基づき言語の特徴的な部分から言語の種類の判定を行ってもよい。さらに、言語判定部31での判定結果をもとにWebアプリケーションの生成に対応しているか、否かを言語判定部31において判定する。なお、Webアプリケーション生成の判定処理はWebアプリケーション化の可否が記述されたリストと照合することにより行う。本実施例では、判定のためのリストは予め、言語判定部31に格納しているが、判定のためのリストを外部ファイルから読み込む形で実装しても良い。
各言語対応解析部32は複数種類の言語に対応するため、各言語解析用の解析部を備え、解析対象の言語の数だけ、その言語に対応する解析部を備える。本実施例では、プログラミング言語であるpythonに対応するための解析部[python]32Aと、プログラミング言語であるR言語に対応するための解析部[R言語]32Bと、プログラミング言語であるC言語に対応するための解析部[C言語]32Cと、を各言語対応解析部32は備えている。さらに他の言語に対応する解析部を備えてもよい。各言語対応解析部[python]32Aや各言語対応解析部[R言語]32B、各言語対応解析部[C言語]32Cを総称して各言語対応解析部32と以下では呼称する。
各言語対応解析部32は、3つの機能を有する。第一にソースコードを解析する機能、第二に入出力リストを生成する機能、第三にソースコードを書き換える機能である。第一のソースコードを解析する機能は、ソースコード21を読み込み、文字列の入出力や、ファイルの入出力を行う関数の使用を検知する機能である。この関数の使用の検知は、各言語対応解析部32が予め保有する図2Aと図2Bに例として示す関数リスト34と照合することにより実施する。
関数リスト34は、文字列の入出力やファイルの入出力を行う、代表的な関数名とその処理の内容を記載したリストであり、プログラミング言語ごとに用意するリストである。図2Aに示すpython用の関数リスト34により、例えば、「print」という名称を持つ関数は「print」(表示)という機能を持つと関連付け、その機能に対し「processing_number」と呼ばれる番号を付ける(「print」の場合は「1」)。R言語では、「print」(表示)の機能を持つ関数は「cat」であるが、図2Bに示すR言語用の関数リスト34により、「processing_number」は「1」と割り振られるため、pythonにおける「print」と、R言語における「cat」が同様の機能を持つ関数であると判別でき、同一の処理することが可能となる。そのため、プログラミング言語の関数の処理内容とその処理内容に対して生成するWebアプリケーションの要素の対応関係を示す関数リスト34の存在により、言語により名称の異なる同一機能の関数に対して、後のWebアプリケーション要素生成部41の工程にて、言語に依らず同一のプログラムを用いた処理を行うことが可能となる。なお、本実施例では、関数リスト34は各言語対応解析部32が備えているが、関数リスト34は外部ファイルとして各言語対応解析部32が読み込む形式でも良い。
検知された関数のうち、ファイルの入出力に関連するものであって、引数にディレクトリ情報(ファイルパス)を持つものは、ディレクトリ情報も同時に検知し、認識する。
第二の入出力リストを生成する機能は、第一のソースコード解析機能により検知された関数の処理の内容をリストや配列として保持し、図3に示す入出力リスト33として生成する機能である。入出力リスト33においては、既に関数リスト34に基づき機能の判別が行われ、「processing_number」による関連付けが実施されているため言語の依存を除去することができている。各言語で関数名は異なるが、同じ機能を有する関数には同じ識別番号である「processing_number」を割り当てることで、複数言語で開発されたソフトウェアであっても追加のプログラミングを必要とせずWebアプリケーション化が可能となる。さらに入出力リスト33の「target_dir」列には、第一のソースコードを解析する機能において検知された、ディレクトリ情報を格納する。なお、格納されるディレクトリ情報が絶対パスの場合は、ルートディレクトリの階層をカレントディレクトリ「./」に書き換え処理を行う。書き換え処理により、Webアプリケーション実行する度に、カレントディレクトリを変更することにより、Webアプリケーション一実行ごとのデータを継続的に保持することが可能となる。ディレクトリ情報が相対パスの場合は、書き換え処理は実施せず、そのまま、入出力リスト33の「target_dir」列に格納される。なお、入出力リスト33をデータとして保持する替わりに、ファイルとして入出力リスト33を生成し、Webアプリケーション生成部12に渡してもよい。
第三のソースコードを書き換える機能は、ディレクトリ情報の書き換え処理をソースコード21に対しても実施する機能である。ディレクトリ情報が相対パスの場合は、書き換え処理は実施しない。なお、本実施例ではソースコード21に対して直接、ディレクトリの書き換え処理を実施するが、書き換え処理の前にソースコード21のコピーを作成し、保持してもよい。
各言語対応解析部32に関するデータのフローを示した図が図4である。各言語対応解析部32は、ソースコード21を入力として、書き換え済みのソースコード21と入出力リスト33を出力する。なお、関数リスト34は、各言語対応解析部32に内包されているため、図4では図示されない。
以上、ソースコード解析部11の機能の説明をしたが、ソースコード21が複数ファイルにより構成される場合は、ソースコード解析部11の処理は一ファイルずつ順に処理を行う。
Webアプリケーション生成部12は、Webアプリケーション要素生成部41、Webアプリケーション要素データベース42、コンパイル部43、アセンブリ部44と、を備える。
Webアプリケーション要素生成部41は、2つの機能を有する。第一に、Webアプリケーション要素を生成する機能、第二に、Webアプリケーション要素を組み合わせる機能である。
第一のWebアプリケーション要素を生成する機能とは、各言語対応解析部32により生成された入出力リスト33と、図5に示すWebアプリケーション要素データベース42とを照合し、Webアプリケーション要素を生成する機能である。なお、Webアプリケーション要素とはテキストボックスや、ファイル選択ボックス、URLリンク等のGUIの要素を指す。Webアプリケーション要素データベース42は、入出力リスト33の処理の内容とWebアプリケーション要素を関連付けるデータのデータベースである。Webアプリケーション要素データベース42において、入出力リスト33に記述されている機能に対して付けられる番号である「processing_number」と生成されるGUI要素である「object_name」は関連付られ、主にHTMLにより記述されたGUI要素のコード「code」を取り出すことが可能となる。なお、GUI要素のコードは、HTMLのみで記述されるのではなく、独自記法「{{ }}」を組み合わせたもので、独自記法の導入により、入出力リスト33の「target_dir」に相当する引数をGUI要素に組み込むことが可能となる。なお、独自記法は、「{{ }}」の形式に限らず、引数を取り込める形であればどのように記述しても良い。
第二のWebアプリケーション要素を組み合わせる機能とは、Webアプリケーション要素を組み合わせることにより、WebアプリケーションGUI47を生成する機能である。Webアプリケーション要素生成部41に関するデータのフローを示した図が図6である。Webアプリケーション要素生成部41は、入出力リスト33とWebアプリケーション要素データベース42を入力として、WebアプリケーションGUI47を出力する。
コンパイル部43はコンパイラを備え、コンパイル言語により記述されたソースコード21をコンパイラによりコンパイルし実行可能ファイル45を生成する機能を有する。ただし、コンパイル部43でコンパイルされるのは、コンパイル言語により記述されたソースコード21のみであり、インタプリタ言語により記述されたソースコード21はコンパイル部43を経由せず、ソースコード21に変更はない。コンパイル部43は、言語判定部31が判定可能なプログラミング言語のうち、一言語について複数の種類のコンパイラ、たとえば、異なるバージョンや異なる提供元のコンパイラを有することが好ましい。
アセンブリ部44では、コンパイル言語の場合、実行可能ファイル45とWebアプリケーションGUI47を具備したWebアプリケーション46を生成し、インタプリタ言語の場合、ソースコード21とWebアプリケーションGUI47を具備したWebアプリケーション46を生成する。アセンブリ部44に関するデータのフローを示した図が図7と図8である。図7がコンパイル言語の場合で、図8がインタプリタ言語の場合である。
サーバ上公開処理部13はWebアプリケーション格納処理部51とルーティング処理部52とを備える。
Webアプリケーション格納処理部51は、Webアプリケーション生成部12で生成されたWebアプリケーション46をWebアプリケーションの作成運用支援システム1が指定したサーバ2上の所定のディレクトリに配置する機能を有する。この所定のディレクトリは、生成されるWebアプリケーションごとに異なるディレクトリとなるように、Webアプリケーション格納処理部51が自動的に決定する。
ルーティング処理部52は、Webアプリケーション46を配置したディレクトリと、Webアプリケーション46をインターネットなどの上で公開する際のURLの関連付けを行う機能を有する。なお、上記インターネット5上で公開する際のURLは同じくルーティング処理部52により自動生成される。
プラットフォーム部14はプラットフォーム掲載処理部61とプラットフォーム公開部62とを備えている。プラットフォーム掲載処理部61は、プラットフォーム公開部62にWebアプリケーション46を掲載する処理を行う機能を有する。ここで、掲載する処理とは、プラットフォーム部14が予め保有しているプラットフォーム公開部62のソースコード(Webページ)を書き換え、ルーティング処理部52により生成したWebアプリケーション46へのURLを掲載することである。
プラットフォーム公開部62は生成したWebアプリケーション46へのURLリンクを掲載する機能を有する。プラットフォーム公開部62は、Webアプリケーションの作成運用支援システム1により生成されたWebアプリケーションへのURLリンクを永続的に掲載し、Webアプリケーションを集約する機能を持つ。なお、プラットフォーム公開部62は、Webアプリケーション46へのURLがクリックされたタイミングで、Webアプリケーション格納処理部51においてWebアプリケーション46を格納したディレクトリの階下に、新規ディレクトリを作成し、カレントディレクトリに設定し、Webアプリケーション46を実行する。なお、プラットフォーム公開部62はインタプリタ言語のソースコード21の実行のために、インタプリタを備える。プラットフォーム公開部62は、一言語について複数の種類の対応言語のインタプリタ、対応するインタプリタ言語の数以上の、たとえば、異なるバージョンや異なる提供元のインタプリタを有することが好ましい。
次に、Webアプリケーションの作成運用支援システム1において生成されたWebアプリケーション46を利用するのに用いるユーザPC4の説明を行う。
ユーザPC4はブラウザ71を備える。Webアプリケーションのユーザは、ブラウザ71、インターネット5を通して、プラットフォーム公開部62にアクセスし、Webアプリケーション46を利用する。
<<フロー>>
次に以上に説明したような、Webアプリケーションの作成運用支援システム1によるWebアプリケーション開発手順について説明する。
図9に示すように、はじめに、言語判定部31が開発者PC3よりアップロードされたソースコード21を受け取る(S501)。次に、同じく言語判定部31がソースコード21の拡張子をもとに記述されている言語の判定を行う(S502)。その判定された言語情報をもとに同じく言語判定部31がWebアプリケーション化可能か判断する(S503)。S503でWebアプリケーション化不可能と判定された場合は、Webアプリケーション化不可の表示がされ(S551)、処理は終了し、Webアプリケーション化されない。S503でWebアプリケーション化可能と判定された場合は、各言語対応解析部32がソースコードの解析を実施する(S504)。
次にS504における解析結果をもとに同じく各言語対応解析部32が入出力リスト33を生成する(S505)。次に同じく各言語対応解析部32がソースコード21の書き換えを実行する(S506)。次にS505において生成された入出力リスト33をもとにWebアプリケーション要素生成部41がWebアプリケーションの要素の生成を行う(S507)。S507において生成されたWebアプリケーションの要素を同じくWebアプリケーション要素生成部41が組み合わせることによりWebアプリケーションGUI47を生成する(S508)。
続いて、コンパイル部43がS502において判定された言語情報をもとにコンパイル言語か判定する(S509)。コンパイル可能である場合(コンパイル言語の場合)、同じくコンパイル部43の備えるコンパイラがコンパイルを実施し、実行可能ファイル45を生成する(S510)。コンパイラ言語でない(インタプリタ言語)場合、S510はスキップし、S511へと進む。アセンブリ部44が、コンパイル言語の場合、実行可能ファイル45とWebアプリケーションGUI47とを組み合わせて、インタプリタ言語の場合、ソースコード21とWebアプリケーションGUI47とを組み合わせてWebアプリケーション46を生成する(S511)。
次に、Webアプリケーション格納処理部51がS511で生成されたWebアプリケーション46を指定のディレクトリに格納する(S512)。次に、ルーティング処理部52がルーティング処理を行い、Webアプリケーション46へのURLを決定し(S513)、プラットフォーム掲載処理部61がプラットフォーム公開部62に掲載する処理を行う(S514)。以上で、WEBアプリケーション開発の一連の作業が終了する。
<<<ユーザインターフェース(UI)>>>
次にユーザインターフェースについて説明する。図10にソースコードアップロードページ30のユーザインターフェースを示す。ソースコードアップロードページ30は開発者PC3のブラウザ20からアクセスし、表示を行う。ソースコードアップロードページ30の存在の目的は、Webアプリケーションの作成運用支援システム1がソフトウェアの開発者からソースコードを受け取ることにある。ソースコードを受け取るため、開発者がソースコードを送信する手段をソースコードアップロードページ30は二種類用意している。
一つ目は、PC3の中のソースコード21を選択し、送信する方法である。ファイル選択ボタン81(select81)を押下することによりファイル選択画面が表示され、Webアプリケーション化したいソフトウェアのソースコードを選択することが可能になる。ソースコード選択後、パス表示ボックス82にソースコード21へのパスが表示されるが、この要素は必ずしも必要ではない。最後に、送信ボタン83(submit83)を押下することによりソースコード21はWebアプリケーションの作成運用支援システム1へ送信される。
二つ目は、PC3の中のソースコード21をドラッグアンドドロップし、送信する方法である。開発者はドラッグアンドドロップ領域84にソースコード21をドラッグアンドドロップすることにより自動的にWebアプリケーションの作成運用支援システム1へ送信される。なお、図8の中ではドラッグアンドドロップ領域84は黒線で囲まれた一部領域であるが、ソースコードアップロードページ30全域にまたがるように、ドラッグアンドドロップ領域84を設定してもよい。
図11にプラットフォーム公開部62を示す。プラットフォーム公開部62はユーザPC4のブラウザ71からアクセスし、表示を行う。プラットフォーム公開部62は、Webアプリケーションの作成運用支援システム1により生成されたWebアプリケーション46へのURLを掲載する。例としてWebアプリケーション46Aから46Fを掲載した様子を示している。Webアプリケーション46Aから46Fをクリックすることにより、クリックしたWebアプリケーションが利用可能な画面へと遷移する。
<<<効果>>>
Webアプリケーションの作成運用支援システム1がソースコード解析部11とWebアプリケーション生成部12を有することにより、ソースコード21の開発を行った開発者自身が、Webアプリケーション化をすることができる。すなわち、その開発者は、別途Webアプリケーション開発のために追加のプログラミング作業をせずに、Webアプリケーションでなく、ローカル環境において動作し、さらにCUIを備えまたはCUIから起動される、文字の入出力や、ファイルの入出力を行うプログラムをWebアプリケーション化することができる。プログラミング作業を必要としないことは、Webアプリケーション開発の工数を削減する効果を有する。
Webアプリケーションの作成運用支援システム1がサーバ上公開処理部13を有することにより、自動でWebアプリケーションの公開処理を実施することができる。これはWebアプリケーションの公開に際する、ネットワーク関連の処理の工数を削減することができることを意味する。なお、Webアプリケーション46AのユーザインターフェースがWebアプリケーションGUI47であるため、見た目は同一である。
<<<Webアプリケーションの作成運用支援システムの使用例>>>
最後にWebアプリケーションの作成運用支援システム1の使用例について説明する。図12Aにサンプルソースコード21Aを示す。サンプルソースコード21Aの機能はsin関数を描写し画像出力する。なお、サンプルソースコード21Aの実行中にコマンドライン入力にて振幅を指定する必要がある。
始めに、言語判定部31において図12Aに示すサンプルソースコード21Aのファイル名の拡張子「.py」からpythonにより記述されていると判別する。さらにpythonにより記述されたソースコードであるためWebアプリケーションとすることが可能であると判定される。次に、解析部[python]32Aがサンプルソースコード21Aを図2Aに示す関数リスト34を用いて解析し、Webアプリケーション化する関数91Aから95Aを検知した上で図3に示す入出力リスト33の形式でリストアップする。関数91Aは”print”、関数92Aは”print”、関数93Aは”input”、関数94Aは”savefig”、関数95Aは”print”である。これらそれぞれの「processing_number」は、図2Aに示すように、「1」、「1」、「2」、「3」、「1」である。その結果とWebアプリケーション要素データベース42を用いてWebアプリケーション要素生成部41がWebアプリケーションGUI47を生成する。pythonはインタプリタ言語であるのでコンパイル部43は通過し、アセンブリ部44においてWebアプリケーション46Aを生成する。Webアプリケーション46Aを図13に示す。Webアプリケーション要素91から95は関数91Aから95AをWebアプリケーション要素化したものである。
続いて、Webアプリケーション格納処理部51によって、特定のディレクトリにWebアプリケーション46Aを格納する。次に、ルーティング処理部52において、ディレクトリとURLを関連付け、Webアプリケーション46Aへのリンク「https://example.com/portal/app001.html」を生成する。最後に、プラットフォーム掲載処理部61において、プラットフォーム公開部62にWebアプリケーション46Aへのリンクを掲載する処理を行い、図11の46Aに示すように掲載を行う。以上でWebアプリケーションの生成と公開が終了する。公開が終了した後も、プラットフォーム公開部62への掲載は永続的に行われ、Webアプリケーションの作成運用支援システム1による運用支援が実施される。
また、図12Bにサンプルソースコード21Bを示す。サンプルソースコード21Bは、サンプルソースコード21Aと同じの機能を有しており、sin関数を描写し画像出力する。言語判定部31は、サンプルソースコード21Bのファイル名の拡張子「.R」からR言語により記述されていると判別する。さらにR言語により記述されたソースコードであるためWebアプリケーションとすることが可能であると判定される。解析部[R言語]32Bがサンプルソースコード21Bを図2Bに示す関数リスト34を用いて解析し、Webアプリケーション化する関数91Bから95Bを検知した上で図3に示す入出力リスト33の形式でリストアップする。関数91Bは”cat”、関数92Bは”cat”、関数93Bは”scan”、関数94Bは”png”、関数95Bは”cat”である。これらそれぞれの「processing_number」は、図2BAに示すように、「1」、「1」、「2」、「3」、「1」である。このように、複数のプログラミング言語において、各言語で関数名は異なるが、同じ機能を有する関数には同じ識別番号(「processing_number」)を割り当てることで、複数言語で開発されたソフトウェアであっても追加のプログラミングを必要とせずWebアプリケーション化が可能となる。
以上、本発明の一実施形態について詳細に説明したが、本発明は、前述した実施形態に制限されることなく、本発明の範囲内で自由に変更が可能である。例えば、本発明の各機能を分割し、それぞれ別のサーバに機能を実現させてもよい。また、本発明の各機能の一部または全てを個別にプロセッサ化、または集積回路化させてもよい。また、将来的に一部または全ての機能を実現できる技術が発明された場合はその技術を用いても良い。
<実施例2>
続いて第2の実施例の説明をする。第1の実施例と第2の実施例は、各言語対応解析部32を除きすべて共通であるため、各言語対応解析部32以外の説明は省略し、各言語対応解析部32の説明のみを行う。
第1の実施例では、各言語対応解析部32におけるソースコード21の解析は、関数リスト34とソースコード21において使用されている関数を照合する方法により実施した。本実施例では、実施例1の方法に加えて、ソースコード21において使用され、かつ関数リスト34にも登録されていない未知の関数である新出関数に対して、その新出関数の引数を取得し、ディレクトリのパスの形式であれば、新出関数の定義部分までさかのぼり、定義部に対して関数リスト34を用いた照合を実施し、使用されている関数のリストアップを行う。リストアップの結果を新出関数の処理として採用し、入出力リスト33に掲載する。このように、未知の関数であってもその定義部で照合を実施し、照合された既知の関数と同じ機能を有する関数には同じ識別番号(「processing_number」)を割り当てることで、複数言語で開発されたソフトウェアであっても追加のプログラミングを必要とせずWebアプリケーション化が可能となる。
以上、本発明の第二の実施形態について詳細に説明したが、本発明は、前述した実施形態に制限されることなく、本発明の範囲内で自由に変更が可能である。例えば、本発明の各機能を分割し、それぞれ別のサーバに機能を実現させてもよい。また、本発明の各機能の一部または全てを個別にプロセッサ化、または集積回路化させてもよい。また、将来的に一部または全ての機能を実現できる技術が発明された場合はその技術を用いても良い。
<実施例3>
続いて第3の実施例の説明をする。第3の実施例を図14に示す。第1の実施例と第3の実施例は、プラットフォーム部14の構成を除きすべて共通である。そのため、プラットフォーム部14以外の説明は省略し、プラットフォーム部14の説明のみを行う。
第3の実施例において、プラットフォーム部14はプラットフォーム掲載処理部61とプラットフォーム公開部62とデータ収集部63と実行結果データベース64とを備える。
プラットフォーム掲載処理部61とプラットフォーム公開部62の機能は実施例1と同じである。
データ収集部63は、ユーザPC4から指示が送られWebアプリケーション46が実行された結果、Webアプリケーション46が生成した文字列およびファイルなどの実行結果を収集し、実行結果データベース64に格納する機能を有する。実行結果データベース64は、リレーショナルデータベースであっても、NoSQLであっても、または他の形式であっても、実行結果を格納可能なものであれば、どのような形式でも良い。このように、Webアプリケーションの実行結果を収集しそのデータを格納しておくことで、後日実行結果を参照したり共有化することが可能になる。
以上、本発明の第三の実施形態について詳細に説明したが、本発明は、前述した実施形態に制限されることなく、本発明の範囲内で自由に変更が可能である。例えば、本発明の各機能を分割し、それぞれ別のサーバに機能を実現させてもよい。また、本発明の各機能の一部または全てを個別にプロセッサ化、または集積回路化させてもよい。また、将来的に一部または全ての機能を実現できる技術が発明された場合はその技術を用いても良い。
1 Webアプリケーションの作成および運用支援システム
2 サーバ
3 開発者PC
4 ユーザPC
5 インターネット
11 ソースコード解析部
12 Webアプリケーション生成部
13 サーバ上公開処理部
14 プラットフォーム部
20 ブラウザ
21 ソースコード
21A サンプルソースコード
21B サンプルソースコード
31 言語判定部
32 各言語対応解析部
32A 解析部[python]
32B 解析部[R言語]
32C 解析部[C言語]
33 入出力リスト
34 関数リスト
41 Webアプリケーション要素生成部
42 Webアプリケーション要素データベース
43 コンパイル部
44 アセンブリ部
45 実行可能ファイル
46 Webアプリケーション
47 WebアプリケーションGUI
51 Webアプリケーション格納処理部
52 ルーティング処理部
61 プラットフォーム掲載処理部
62 プラットフォーム公開部
63 データ収集部
64 実行結果データベース
71 ブラウザ
81 ファイル選択ボタン
82 パス表示ボックス
83 送信ボタン
84 ドラッグアンドドロップ領域
91A 関数
92A 関数
93A 関数
94A 関数
95A 関数
91B 関数
92B 関数
93B 関数
94B 関数
95B 関数
91 Webアプリケーション要素
92 Webアプリケーション要素
93 Webアプリケーション要素
94 Webアプリケーション要素
95 Webアプリケーション要素

Claims (12)

  1. ローカル環境で動くソフトウェアのソースコードをもとに、前記ソフトウェアをWebアプリケーション化するWebアプリケーションの作成運用支援システムにおいて、
    ソースコードの解析を行うソースコード解析部と、
    前記ソースコード解析部が解析したソースコードに基づきWebアプリケーションのGUIの生成を行い、Webアプリケーションを生成するWebアプリケーション生成部と、
    ルーティング処理を行うサーバ上公開処理部と、
    前記Webアプリケーション生成部が生成したWebアプリケーションをアクセス可能な状態にし、運用支援を行うプラットフォーム部と、
    を備え、
    前記ソースコード解析部は、ソースコードのプログラミング言語を判定する言語判定部と、
    少なくとも2言語以上のプログラミング言語を解析する各言語対応解析部と、
    を備えることを特徴とするWebアプリケーションの作成運用支援システム。
  2. 前記言語判定部は、ソースコードの拡張子をもとに、プログラミング言語を判定する、請求項1に記載のWebアプリケーションの作成運用支援システム。
  3. 前記各言語対応解析部は、少なくとも2言語以上のプログラミング言語に対し、使用されるWebアプリケーションのGUIの要素を生成する必要のある関数のリストとソースコード内で用いられている関数を照合することにより解析する、請求項1または2に記載のWebアプリケーションの作成運用支援システム。
  4. 前記各言語対応解析部は、解析対象の言語の数だけ、その言語に対応する解析部を備えている、請求項1乃至3のいずれか一項に記載のWebアプリケーションの作成運用支援システム。
  5. 前記各言語対応解析部は、ソースコード中の関数のファイルパスに関する引数を認識し、未知の関数を含むソースコードの解析を可能とする、請求項1乃至4のいずれか一項に記載のWebアプリケーションの作成運用支援システム。
  6. 前記Webアプリケーション生成部は、プログラミング言語の関数の処理内容と処理内容に対して生成するWebアプリケーションの要素の対応関係を示すリストをもとに、Webアプリケーションの要素を生成する請求項1乃至5のいずれか一項に記載のWebアプリケーションの作成運用支援システム。
  7. 前記Webアプリケーション生成部は、前記言語判定部が判定可能なプログラミング言語のうち、コンパイル言語の数以上の、該プログラミング言語に対応するコンパイラを備え、コンパイル言語により記述されたソースコードに対してはコンパイルを実施する、請求項1乃至6のいずれか一項に記載のWebアプリケーションの作成運用支援システム。
  8. 前記サーバ上公開処理部は、生成したWebアプリケーションを所定のディレクトリに格納し、アクセス可能な状態にする時のルーティング処理を実施する、請求項1乃至7のいずれか一項に記載のWebアプリケーションの作成運用支援システム。
  9. 前記プラットフォーム部は、あらかじめ保持しているアクセス可能なWebページにWebアプリケーションを掲載する、請求項1乃至8のいずれか一項に記載のWebアプリケーションの作成運用支援システム。
  10. 前記プラットフォーム部は、インタプリタ言語のソースコードをもとに生成したWebアプリケーションを実行するため、対応するインタプリタ言語の数以上の、対応言語のインタプリタを備える、請求項1乃至9のいずれか一項に記載のWebアプリケーションの作成運用支援システム。
  11. 前記プラットフォーム部は、Webアプリケーションの実行結果を収集するデータ収集部とその実行結果を格納する実行結果データベースとを備える、請求項1乃至10のいずれか一項に記載のWebアプリケーションの作成運用支援システム。
  12. 前記プラットフォーム部は、生成したWebアプリケーションの動作に必要な処理をサーバの持つCPU(Central Processing Unit)、GPU(Graphics Processing Unit)、主記憶装置、補助記憶装置を活用し行うことにより運用支援する、請求項1乃至11のいずれか一項に記載のWebアプリケーションの作成運用支援システム。
JP2019072907A 2019-04-05 2019-04-05 Webアプリケーションの作成運用支援システム Active JP7300303B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019072907A JP7300303B2 (ja) 2019-04-05 2019-04-05 Webアプリケーションの作成運用支援システム
PCT/JP2020/005330 WO2020202816A1 (ja) 2019-04-05 2020-02-12 Webアプリケーションの作成運用支援システム
DE112020001057.0T DE112020001057T5 (de) 2019-04-05 2020-02-12 Web-Anwendungs-Erzeugungs/Betriebs-Unterstützungssystem

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019072907A JP7300303B2 (ja) 2019-04-05 2019-04-05 Webアプリケーションの作成運用支援システム

Publications (2)

Publication Number Publication Date
JP2020170453A true JP2020170453A (ja) 2020-10-15
JP7300303B2 JP7300303B2 (ja) 2023-06-29

Family

ID=72668948

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019072907A Active JP7300303B2 (ja) 2019-04-05 2019-04-05 Webアプリケーションの作成運用支援システム

Country Status (3)

Country Link
JP (1) JP7300303B2 (ja)
DE (1) DE112020001057T5 (ja)
WO (1) WO2020202816A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0588876A (ja) * 1991-09-30 1993-04-09 Toshiba Corp 編集プログラム実行時における表示変更方法
JP2006277435A (ja) * 2005-03-30 2006-10-12 Hitachi Software Eng Co Ltd ソースファイルバージョン管理システム
US20090031228A1 (en) * 2007-07-24 2009-01-29 Francois Buchs Method and apparatus for general virtual application enabling of websites

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366352A (ja) 2001-06-11 2002-12-20 It Forest Corp Webアプリケーション開発支援装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0588876A (ja) * 1991-09-30 1993-04-09 Toshiba Corp 編集プログラム実行時における表示変更方法
JP2006277435A (ja) * 2005-03-30 2006-10-12 Hitachi Software Eng Co Ltd ソースファイルバージョン管理システム
US20090031228A1 (en) * 2007-07-24 2009-01-29 Francois Buchs Method and apparatus for general virtual application enabling of websites

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
臥待 天祐: "Visual Basicの資産をJavaで活用する VB Converter,Java Editio", 月刊C MAGAZINE 2003年9月号, vol. 第15巻 第9号, JPN6023001416, 1 September 2003 (2003-09-01), JP, pages 143 - 149, ISSN: 0004964760 *
豊福 剛: "mSQL用のJDBCアプレットの作成", 月刊ドクター・ドブズ・ジャーナル日本版 1998年2月号, vol. 第7巻 第2号, JPN6023001418, 1 February 1998 (1998-02-01), JP, pages 192 - 196, ISSN: 0004964761 *

Also Published As

Publication number Publication date
WO2020202816A1 (ja) 2020-10-08
JP7300303B2 (ja) 2023-06-29
DE112020001057T5 (de) 2022-01-27

Similar Documents

Publication Publication Date Title
US11789706B2 (en) Development system with improved methodology for creation and reuse of software assets
Kouzis-Loukas Learning scrapy
US9122762B2 (en) Method and system to maintain a web page
KR20060114871A (ko) 웹 프로그래밍 환경을 응용한 웹사이트 관리 시스템 및방법
Leonidis et al. Rapid prototyping of adaptable user interfaces
Tegeler et al. An introduction to graphical modeling of CI/CD workflows with rig
Gassner Flash Builder 4 and Flex 4 Bible
Mitchell Instant web scraping with Java
WO2020202816A1 (ja) Webアプリケーションの作成運用支援システム
O'hanlon Advanced TypeScript programming projects: build 9 different apps with TypeScript 3 and JavaScript frameworks such as Angular, React, and Vue
Johansson et al. Introduction to computing with python
Carter et al. A web-based toolkit for mathematical word processing applications with semantics
Olsson JavaScript Quick Syntax Reference
Manelli et al. Introducing JSP and Tomcat
Mallett et al. Writing YAML and Basic Playbooks
Yuxian PhoneGap and angularJS for cross-platform development
Wilkes et al. Prototyping and environments
Nurakhmet raj
Raghavendra Introduction to Streamlit
Reinefeld et al. GuiGen: A toolset for creating customized interfaces for grid user communities
Smeets et al. Introducing Google Web Toolkit (GWT)
Atanasova et al. IRIS STUDIO–Ide prototype for modeling adaptive user interfaces for business information systems
Himschoot et al. Your First Blazor Project
Nguyen How JavaScript ecosystem and open-source tooling enable a modern era of Single-Page Applications
Elrom Setting Up Our Technology Stack

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230215

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: 20230613

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230619

R150 Certificate of patent or registration of utility model

Ref document number: 7300303

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150