JP7148804B2 - ソースファイル生成プログラム、ソースファイル生成方法、および情報処理装置 - Google Patents

ソースファイル生成プログラム、ソースファイル生成方法、および情報処理装置 Download PDF

Info

Publication number
JP7148804B2
JP7148804B2 JP2019025011A JP2019025011A JP7148804B2 JP 7148804 B2 JP7148804 B2 JP 7148804B2 JP 2019025011 A JP2019025011 A JP 2019025011A JP 2019025011 A JP2019025011 A JP 2019025011A JP 7148804 B2 JP7148804 B2 JP 7148804B2
Authority
JP
Japan
Prior art keywords
code
source file
source
item
conversion
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
JP2019025011A
Other languages
English (en)
Other versions
JP2020135159A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019025011A priority Critical patent/JP7148804B2/ja
Publication of JP2020135159A publication Critical patent/JP2020135159A/ja
Application granted granted Critical
Publication of JP7148804B2 publication Critical patent/JP7148804B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

本発明は、ソースファイル生成プログラム、ソースファイル生成方法、および情報処理装置に関する。
コンピュータシステムでは、ある言語で作成されたプログラムを、別の言語で作り直す場合がある。例えばサーバクライアントシステムで実行されていたプログラムを、Webベースのシステムにマイグレーションする場合、開発者が、そのプログラムをWeb開発用の言語で書き換える。
プログラムを書き換える場合、開発者は、例えばテキストエディタを用いて、移行先の言語によってプログラムをコーディングする。また開発者は、オーサリングツールを用いて、移行先の言語によるプログラムを生成することもできる。
プログラムを変換する技術としては、例えば非Webシステム用のプログラムを、Webシステム用のプログラムに自動的に変換する装置が提案されている。また、1以上のマークアップ言語により記述された文書を、生成、編集、表示、または保存のうち少なくとも1つのために適切に処理するデータ処理装置も提案されている。また、表形式のデータとマークアップ言語形式のデータとの間、あるいは、異なるマークアップ言語形式間でのデータ変換を容易に行うことを可能とする情報処理装置も提案されている。さらにレガシーアプリケーションからルールコンポーネントを取得し、次に、ルールコンポーネントのレガシールールから中間状態式を生成するための装置も提案されている。
国際公開第2009/157082号 特表2007-532987号公報 特開2005-352774号公報 特表2010-530575号公報
移行前のプログラムを実行した際に表示される画面は、ユーザが操作しやすいように画面フォームが工夫されていることがある。しかし従来のプログラムの自動変換技術では、元の画面フォームを崩さずにプログラムを変換することができない。
1つの側面では、本発明は、画面フォームを崩さずにプログラムを変換することを目的とする。
1つの案では、以下の処理をコンピュータに実行させるソースファイル生成プログラムが提供される。
コンピュータは、画面フォームを構成する要素の表示態様を第1プログラミング言語で規定する第1コードを含む第1ソースファイルに基づいて、第1コードから、要素の表示態様に関する項目の項目値を抽出する。次にコンピュータは、要素の表示態様を第2プログラミング言語で規定するコードの記述のうちの項目の項目値の設定領域に、項目に対応する変数名が設定された変換用コードに基づいて、変換用コードの変数名を第1ソースファイルから抽出された項目値に変換することで、要素の表示態様を第2プログラミング言語で規定した第2コードを生成する。そしてコンピュータは、生成した第2コードを第2ソースファイルに対して書き込む。
1態様によれば、画面フォームを崩さずにプログラムを変換することができる。
第1の実施の形態に係る情報処理装置の一例を示す図である。 ソースファイル生成方法の一例を示す図である。 第2の実施の形態に係るシステムの一例を示す図である。 本実施の形態に用いる端末装置のハードウェアの一構成例を示す図である。 端末装置のプログラム変換支援機能を示すブロック図である。 変換前のソースファイル群の一例を示す図である。 画面フォーム定義が記述されたソースファイルの一例を示す図である。 コントロール一覧の一例を示す図である。 スケルトンファイル群の一例を示す図である。 CSSのスケルトンファイルの一例を示す図である。 コンバートテーブルの一例を示す図である。 基礎情報を用いたソースコード追加のためのソースコード定義情報の一例を示す図である。 設計値を用いたソースコード追加のためのソースコード定義情報の一例を示す図である。 カラーテーブルの一例を示す図である。 基礎情報が設定された画面項目定義書の一例を示す図である。 設計値が設定された画面項目定義書の一例を示す図である。 変換後のソースファイル群の一例を示す図である。 CSSのソースファイルの一例を示す図である。 マイグレーション処理の手順の一例を示すフローチャートである。 基礎情報自動展開処理の手順の一例を示すフローチャートである。 基礎情報の自動展開の一例を示す図である。 画面フォームについてのソースファイルの生成例を示す図である。 ソースファイル自動生成処理の手順の一例を示すフローチャートである。 項目定義ソースコード生成処理の手順の詳細を示すフローチャートである。 スケルトンファイルへのソースコードの挿入位置とコンバートテーブルの処理名との対応関係を示す図である。 基礎情報が設定された画面項目定義書に基づくソースコードの自動編集例を示す図である。 設計値が設定された画面項目定義書に基づくソースコードの自動編集例を示す図である。 スケルトンファイルへのソースコードの挿入例を示す図である。 Webアプリの実装例を示す図である。 Webアプリ操作画面の一例を示す図である。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。なお、以下の説明では、プログラミング言語による処理を記述したソースコードを、単にコードと呼ぶ場合がある。
図1は、第1の実施の形態に係る情報処理装置の一例を示す図である。図1には、ソースファイル生成方法を実施する情報処理装置10の例を示している。情報処理装置10は、例えばソースファイル生成方法の処理手順が記述されたソースファイル生成プログラムを実行することにより、ソースファイル生成方法を実施することができる。
情報処理装置10は、ソースファイル生成方法を実施するために、記憶部11と処理部12とを有する。記憶部11は、例えば情報処理装置10が有するメモリ、またはストレージ装置である。処理部12は、例えば情報処理装置10が有するプロセッサ、または演算回路である。
記憶部11には、第1ソースファイル1、第2ソースファイル2、および変換用コード3を記憶する。第1ソースファイル1は、画面フォームを構成する要素の表示態様を第1プログラミング言語で規定する第1コードを含むファイルである。画面フォームを構成する要素は、フレーム、ボタン、テキストボックスなどである。
第2ソースファイル2は、画面フォームを構成する要素の表示態様を第2プログラミング言語で規定するコードを記述するためのファイルである。例えば第2ソースファイル2は、第2プログラミング言語で記述されたプログラムに共通に記載するコードが予め書き込まれたスケルトンファイルである。
変換用コード3には、画面フォームを構成する要素の表示態様を第2プログラミング言語で規定するコードが記述されており、そのコードにおける項目の項目値の設定領域に、項目に対応する変数の変数名が設定されている。図1の例では、星印に囲まれた文字列が変数名である。例えば項目「背景色」の変数名は「BackColor」であり、項目「説明文の表示位置」の変数名は「Alignment」である。なお変換用コード3に示されている変数名「ItemName」は、変換用コード3を適用する要素の要素名を示す変数の変数名である。
処理部12は、記憶部11に格納された情報に基づいて、第1ソースファイル1と同様の処理を第2プログラミング言語で記述したソースファイルを生成する。
図2は、ソースファイル生成方法の一例を示す図である。処理部12は、まず第1ソースファイル1に基づいて、第1コードから、画面フォームを構成する要素の表示態様に関する項目の項目値を抽出する。表示態様に関する項目は、背景色、説明文、説明文のフォント、説明文のフォントサイズ、前景色(説明文の色)、説明文の表示位置(左寄せ、中央寄せなど)、ボタンなどのオブジェクトのサイズ、オブジェクトの表示位置などである。
処理部12は、抽出した項目値を、例えば画面項目定義情報4に設定する。処理部12は、抽出した項目値を、第1プログラミング言語の定義に従った表記形式から第2プログラミング言語の定義に従った表記形式に変換することもできる。例えば背景色などの色の表記形式として、第1プログラミング言語では色の名前を文字列で指定し、第2プログラミング言語では、色に対応する数値で指定する場合がある。このような場合、処理部12は、第1ソースファイル1における色を示す名前(例えば「Silver」)を、該当する色に対応する数値(例えば「#C0C0C0」)に変換して、画面項目定義情報4に設定する。
なお第1ソースファイル1に示されている項目の項目名と該当項目に対応する変数名との対応関係は、予め処理部12に設定されている。例えば第1ソースファイル1に記載されている「TextAlign」が説明文の表示位置を規定する項目であり、対応する変数名が「Alignment」であることは、予め処理部12に設定されている。
画面項目定義情報4には、例えば画面フォームを構成する要素の要素名ごとに、該当要素の表示形態に関する項目の項目値が、該当項目の変数名に対応付けて設定される。例えば画面項目定義情報4には、要素名「BT_Btn01」の要素に対応づけて、項目「背景色」(変数名「BackColor」)の項目値「#C0C0C0」が設定されている。
処理部12は、変換用コード3に基づいて、変換用コードの変数名を、第1ソースファイル1から抽出された要素名または項目値に変換することで、要素の表示態様を第2プログラミング言語で規定した第2コード5を生成する。例えば変数名「ItemName」は要素に対応し、変換用コード3内の変数名「ItemName」と変数名の前後の星印が、画面項目定義情報4に示される要素の要素名「BT_Btn01」に変換される。また変数名「BackColor」は項目「BackColor」に対応し、その変数名「BackColor」と変数名の前後の星印が、第1ソースファイル1に示された項目の項目値「#C0C0C0」に変換される。変数名「Alignment」は項目「Alignment」に対応し、変換用コード3内の変数名「Alignment」と変数名の前後の星印が、第1ソースファイル1に示された項目の項目値「Center」に変換される。
そして処理部12は、生成した第2コード5を第2ソースファイル2に対して書き込む。これにより、第1ソースファイル1と同様の処理を第2プログラミング言語で記述した第2ソースファイル6が生成される。生成された第2ソースファイル6に基づいてプログラムを実行すると、第1ソースファイル1に基づいてプログラムを実行した場合と同様の画面フォームによって画面が表示される。
このように情報処理装置10は、第1ソースファイル1に基づいて、画面フォームを崩さずに第2ソースファイル6を生成することができる。その結果、例えば第1ソースファイルに基づくソフトウェアを、ソースコードを変換してマイグレーションによって他のサーバへ移動させる場合であっても、ユーザの端末装置に対して表示される画面フォームが変わらずにすむ。その結果、元のソフトウェアにおいてユーザが操作しやすいように考えて設計された画面フォームを維持でき、マイグレーションを行った後もユーザによるソフトウェアの使いやすさを維持できる。
なお、変換用コード3には、変換用コード3内に記述されたコードの、第2ソースファイル2への適用条件を定義しておくことができる。例えばコードごとに、そのコードの適用対象となる要素の種類(ボタン、テキストボックスなど)が、適用条件として変換用コード3に設定される。また変換用コード3内に、特定の要素に関する複数の項目それぞれの項目値を定義するためのコードがまとめて記載されている場合、そのコードの集合全体に対する適用条件を、変換用コード3に定義しておくこともできる。例えば変換用コード3に記述されたボタンの表示態様を定義するコードには、そのコードの適用条件として、要素の種類がボタンであることが設定される。
変換用コード3内にコードの適用条件が定義されている場合、処理部12は、各コードについて、適用条件を満たす場合に、そのコードの変数名の項目値への変換、および変換によって生成された第2コードの第2ソースファイル2への書き込みを実行する。このように、適用条件を設定しておくことで、第1ソースファイルにおける画面フォームを構成するさまざまな要素に対して、容易に対応可能となる。
処理部12は、項目値の抽出の際には、例えば画面フォームを構成する要素に対する命名規約に従った要素名を含む行を、第1ソースファイル1から検索する。例えば命名規約において、ボタンの要素には、「BT_」をプレフィックスとして付けた名前とすることが決まっているものとする。この場合、処理部12は、第1ソースファイル1から「BT_」と前方一致する文字列を検索する。そして処理部12は、要素名を含む行に続けて記述されている、表示態様を規定するコードを、要素の表示態様を規定する第1コードとして特定する。図2の例であれば、「BT_Btn01」の行に続けて記載されている「BackColor=Silver」や「TextAlign=Center」などのコードが、要素名「BT_Btn01」の要素の表示態様を規定する第1コードとして特定される。このように、第1ソースファイル1の要素に、命名規約に従った要素名を付けておくことで、第1ソースファイルからの要素の表示態様を規定する第1コードの特定が容易となる。その結果、第1ソースファイル1に定義されている画面フォームを構成する要素を、変換後の第2ソースファイル6に漏れなく反映させることができる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、クライアントサーバシステムで稼働しているソフトウェアを、Webアプリケーションソフトウェア(以下、Webアプリと呼ぶ)に変換するものである。
例えば、現在稼働しているVB.NET(商標)言語で構築されたソフトウェアを用いて運用されているクライアントサーバシステムを、Webシステムに移行する場合がある。この場合、Web開発用の言語を用いてソフトウェアを新規開発することとなる。
Web開発の言語としては、例えばHTML(HyperText Markup Language)を中心とする複数の言語を利用することができる。例えば開発者は、HTMLに、JavaScript(登録商標)やCSS(Cascading Style Sheets)を組み合わせて、Webアプリを生成する。一般的には、開発者は、テキストエディタでタグやスタイルを直接コーディングする。また開発者は、webオーサリングツール(Webを構成するHTML、CSSなどのファイルを編集するデザインツール)を利用して、コーディングの効率化を図ることもできる。
ただし開発者がコーディングを行う場合、開発者にWebアプリ開発スキルが要求される。また開発者の開発スキルの違いにより、開発されたWebアプリの品質のばらつきが発生し、画面開発品質を均一化できない。これによって、当初の見込み通りの効率化が図れない可能性がある。
そこで第2の実施の形態では、クライアントサーバシステムで稼働しているソフトウェアのWebアプリへの変換の自動化を支援する。
図3は、第2の実施の形態に係るシステムの一例を示す図である。ソフトウェアの移行元のサーバ31、ソフトウェアの移行先のサーバ32、および端末装置100が、ネットワーク20を介して接続されている。サーバ31は、クライアントサーバシステム用に開発されたソフトウェアによりサービスを提供しているコンピュータである。サーバ32は、Webシステムの運用に利用するコンピュータである。
端末装置100は、サーバ31に実装されているソフトウェアのソースファイルに基づいて、Webアプリ用のソースファイルを生成するコンピュータである。例えば端末装置100は、サーバ31からソースファイルを取得し、取得したソースファイルをWebアプリ用のソースファイルに変換する。そして端末装置100は、変換後のソースファイルをサーバ32に実装する。
図4は、本実施の形態に用いる端末装置のハードウェアの一構成例を示す図である。端末装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、端末装置100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、端末装置100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
端末装置100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。サーバ31,32も、図4に示した端末装置100と同様のハードウェアにより実現することができる。また第1の実施の形態に示した情報処理装置10も、図4に示した端末装置100と同様のハードウェアにより実現することができる。
端末装置100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。端末装置100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、端末装置100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また端末装置100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
次に、端末装置100におけるプログラム変換支援機能について具体的に説明する。
図5は、端末装置のプログラム変換支援機能を示すブロック図である。端末装置100は、記憶部110、ソースファイル取得部120、コントロール名リネイム部130、フォーム情報展開部140、設計値設定部150、ソースコード変換部160、およびデプロイ部170を有する。
記憶部110は、プログラムの変換に使用する情報を記憶する。例えば端末装置100のメモリ102またはストレージ装置103の記憶領域の一部が、記憶部110として使用される。例えば記憶部110は、変換前のソースファイル群111、コントロール一覧112、スケルトンファイル群113、コンバートテーブル114、カラーテーブル115、画面フォームの基礎情報が設定された画面項目定義書116、画面フォームの詳細設計値が設定された画面項目定義書117、および変換後のソースファイル群118を記憶する。
変換前のソースファイル群111は、移行対象のソフトウェアの生成元となったソースファイルの集合である。これらのソースファイルは、例えばHTMLなどのWeb用の言語とは異なる言語で記述されている。
コントロール一覧112は、移行対象のソフトウェアにおいて表示する画面のフォームやコントロールの定義情報の一覧である。コントロールとは、画面に配置され、何らかの機能と関連付けられたオブジェクトである。コントロールには、ボタン、テキストボックス、リストボックスなどがある。ボタンであれば、そのボタンが押されたときに実行する処理機能と関連付けられている。テキストボックスであれば、テキストボックスに入力された文字列を、所定の変数として記憶する機能と関連づけられている。
スケルトンファイル群113は、Webアプリを作成するためのプログラムの雛形(スケルトンファイル)の集合である。例えばスケルトンファイル群113には、CSS、HTML、JavaScript(登録商標)それぞれのスケルトンファイルが含まれる。
コンバートテーブル114は、スケルトンファイルに追加するソースコードの雛形である。コンバートテーブル114には、画面のフォームやコントロールそれぞれについての、変換先の言語によるソースコードの雛形が含まれる。なおコンバートテーブル114は、第1の実施の形態に示した変換用コード3の一例である。
カラーテーブル115は、変換元のソースコードにおける色の識別子と、変換先のソースコードにおける同じ色の識別子との対応関係を示すデータテーブルである。
画面項目定義書116は、変換前のソースファイルから抽出できる画面項目の基礎情報を示すデータテーブルである。画面項目の基礎情報は、表示位置、色、フォント、フォントサイズなどである。画面項目定義書116には、例えばボタンやテキストボックスなどのコントロールの画面内での位置を示す情報などが含まれる。
画面項目定義書117は、変換前のソースファイルから抽出困難な画面項目の設計値を示すデータテーブルである。画面項目定義書117には、例えば画面内に配置されるコントロールのタブ順、桁数、文字種などの設定値が含まれる。
変換後のソースファイル群118は、webアプリ用のソースファイルの集合である。これらのソースファイルは、例えばCSS、HTML、JavaScript(登録商標)などの言語で記述されている。
ソースファイル取得部120は、サーバ31から、移行対象のソフトウェアのソースファイルを取得する。なおソースファイル取得部120は、移行対象のソフトウェアが複数のソースファイルに基づいて生成されている場合、複数のソースファイルを取得する。ソースファイル取得部120は、取得したソースファイルを記憶部110に格納する。
コントロール名リネイム部130は、ソースファイルに含まれるコントロール名を、そのコントロール名に対応するコントロールの種別に応じた名前にリネイムする。例えばコントロール名リネイム部130は、ソースファイルの記述言語における統合開発環境を提供するソフトウェアである。コントロール名リネイム部130は、ソースファイルの構造を解析し、ソースファイル内に定義されているコントロールの種別を判別し、該当コントロールのコントロール名を表示する。開発者は、表示されたコントロール名に対して、所定の命名規約に従って、例えば対応するコントロールの種別に応じたプレフィックスを付加したコントロール名を入力する。コントロール名リネイム部130は、ソースファイル内の該当コントロールのコントロール名を、入力されたコントロール名にリネイムする。なおコントロール名リネイム部130は、コントロールの種別を判別したとき、所定の命名規約に従って、そのコントロールの名前を自動でリネイムしてもよい。
フォーム情報展開部140は、取得したソースファイルから画面フォームの基礎情報を抽出し、画面項目定義書116に出力する。例えばフォーム情報展開部140は、リネイムされたコントロール名に基づいて、ソースファイル内のコントロールに関するソースコードを判断し、該当ソースコードの定義内容を画面項目定義書116に出力する。
設計値設定部150は、例えば開発者からの入力に基づいて、画面内に配置されるコントロールのタブ順、桁数、文字種などの設定値を、画面項目定義書117に出力する。
ソースコード変換部160は、変換前のソースファイルのソースコードを、別の言語によるソースコードに変換し、変換後のソースファイルを生成する。例えばソースコード変換部160は、画面項目定義書116,117に基づいてコンバートテーブル114に示されるソースコードを変換し、変換したソースコードをスケルトンファイルのキーワードと置き換える。ソースコード変換部160は、ソースコードを変換することで生成されたソースファイルを、記憶部110に格納する。
デプロイ部170は、変換後のソースファイル群118に基づいてWebアプリを生成し、そのWebアプリをサーバ32に実装する。例えばデプロイ部170は、コンパイル可能なソースファイルをコンパイルして実行形式のファイルに変換後、ソースファイルまたは実行形式のファイルを含むWebアプリのファイル群を、サーバ32に送信する。
なお、図5に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図5に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次に図6~図18を参照して、記憶部110に格納される情報について詳細に説明する。
図6は、変換前のソースファイル群の一例を示す図である。変換前のソースファイル群111には、複数のソースファイル111a,111b,・・・が含まれる。複数のソースファイル111a,111b,・・・のうちの1つには、例えば画面フォーム定義が記述されている。
図7は、画面フォーム定義が記述されたソースファイルの一例を示す図である。図7には、VB.NET(商標)によって画面フォーム定義を記述したソースファイル111aの例が示されている。図7に示したソースファイル111aは、コントロール名をリネイム後のものである。例えばソースファイル111aでは、元のコントロール名「Btn01」が「BT_Btn01」にリネイムされている。「BT_Btn01」のうちの「BT_」が追加されたプレフィックスである。
各コントロールにどのようなプレフィックスを追加するのかは、コントロール一覧112に定義されている。
図8は、コントロール一覧の一例を示す図である。コントロール一覧112には、変換元コントロール種別、プレフィックス、変換先コントロール種別、および配置制限の欄が設けられている。変換元コントロール種別の欄には、変換元のソースコードに設定可能なコントロールの種別が示されている。プレフィックスの欄には、変換先のコントロール種別に応じたプレフィックスの文字列が示されている。変換先コントロール種別の欄には、変換元コントロール種別に対応する変換先のソースコードにおけるコントロール種別が設定されている。配置制限の欄には、画面内でのコントロールの配置についての制限事項が定義されている。
図8の例では、変換元のコントロール種別に対応する変換先のコントロール種別が複数存在することがある。例えば変換元コントロール種別「Panel」に対応する変換先コントロール種別には「FRAME」、「DIV」、「ボタングループ」などがある。
配置制限としては、例えば他のコントロールとの相対的位置関係が定義される。配置先コントロール種別「FRAME」のコントロールであれば、「Form」の一階層上にのみ配置可能であることが定義されている。
図9は、スケルトンファイル群の一例を示す図である。スケルトンファイル群113には、Webアプリを作成するのに使用する言語ごとのスケルトンファイル113a,113b,113cを記憶する。
図10は、CSSのスケルトンファイルの一例を示す図である。スケルトンファイル113aには、例えば、「CSS_01」と「$CSS_01」との間に処理の記述領域が設けられている。スケルトンファイル113a内において、所定の記号(二重鉤括弧、隅付き括弧など)で囲まれた部分に記載されているのは変数名である。生成されるスケルトンファイルでは、変数名は、対応する変数の値に置き換えられる。
例えばスケルトンファイル113aには、スケルトンファイル113aに基づいて生成するソースファイルのファイル名「WD『JAVAAPLID_Skeleton』.css」が設定されている。またスケルトンファイル113aにおける処理の記述領域内に、CSSのソースコード40が記述されている。ソースコード40内の隅付き括弧で囲まれた部分は、隅付き括弧内に示す項目定義名に対応するソースコードに置き換えられる。
図11は、コンバートテーブルの一例を示す図である。コンバートテーブル114には、項目定義の識別番号(No.)に対応付けて、項目定義を適用するスケルトンファイル内の処理、設定値の取得先、ソースコード、編集条件、およびソースコードの1行ごとの条件が設定されている。項目定義を適用するスケルトンファイル内の処理は、スケルトンファイル内の隅付き括弧内に示された変数名によって特定されている。設定値の取得先は、変換前のソースファイル群111のうちのどのソースファイルから設定値を取得するのかを示している。例えば取得先が「FrmInfo」であれば、基礎情報が設定された画面項目定義書116が、設定値の取得先となる。取得先が「PsiInfo」であれば、設計値が設定された画面項目定義書117が、設定値の取得先となる。
なお、ソースコード、編集条件、およびソースコードの1行ごとの条件が、スケルトンファイルに追加するソースコードの具体的な内容を定義したソースコード定義情報114a,114bである。
図12は、基礎情報を用いたソースコード追加のためのソースコード定義情報の一例を示す図である。図12には、処理「項目定義20」に対応するソースコード定義情報114aを示している。ソースコード定義情報114a内のソースコードには、星印で囲まれた部分に、該当箇所に設定する値の変数名が設定されている。またソースコード定義情報114aの先頭の行には、該当ソースコード定義情報114aの編集条件が設定されている。ソースコード定義情報114aを用いたスケルトンファイルへのソースコードの追加は、編集条件を満たすコントロールに対して適用される。またソースコードの各行には、対応する行のソースコードをスケルトンファイルに追加する条件が設定されている。
編集条件および行ごとの条件において、「=」は値が等しいこと(イコール)を示し、「<>」は値が異なること(ノットイコール)を示す。
例えば図12の例では、編集条件が「type;=;Label&&ItemType;=;BT,BL」である。これはtypeが「Label」であり、かつItemTypeが「BT」または「BL」のコントロールに対して、ソースコード定義情報114aに応じたソースコードの追加を行うことを示している。またソースコードの2行目の条件は、「Visible;<>;-」である。これはVisibleが「-」(値なし)以外の場合に、対応する行のソースコードを、スケルトンファイルに追加することを示している。
図13は、設計値を用いたソースコード追加のためのソースコード定義情報の一例を示す図である。図13には、処理「項目定義6」に対応するソースコード定義情報114bを示している。ソースコード定義情報114bのデータ構造は、図12に示したソースコード定義情報114aと同様である。
画面項目定義書116,117に設定された値を用いて、ソースコード定義情報114a,114bに示されるソースコードを修正し、スケルトンファイルに挿入することで、変換後のソースファイルを生成することができる。基礎情報が設定された画面項目定義書116は、ソースファイルから自動生成することができる。その際、色の指定方法などの属性値の指定方法が、変換前の言語に従った指定方法から変換後の言語に従った指定方法に変更される。変換前後の属性値の対応関係は、予めデータテーブルに設定されている。例えば色の対応関係は、カラーテーブル115に設定される。
図14は、カラーテーブルの一例を示す図である。カラーテーブル115には、色の設定対象を示す属性ごとに、変換前の言語による色の表記方法に対応する、変換後の色の表記方法が設定されている。属性としては、背景「BackColor」と前景「ForeColor」とがある。図14の例では、変換前の言語では、表示色が、その色の名称の文字列(「Silver」など)で指定される。それに対して、変換後の言語では、表示色が、その色を表す16進数の数値(「#C0C0C0」など)で指定される。
フォーム情報展開部140は、ソースファイルから画面項目定義書を自動展開する際に、カラーテーブル115を参照して、表示色の指定方法を変換する。
図15は、基礎情報が設定された画面項目定義書の一例を示す図である。基礎情報が設定された画面項目定義書116には、名称「FrmInfo」が付与されている。画面項目定義書116には、コントロールの名称(ItemName)に対応付けて、そのコントロールについての表示形態の基礎情報が、表示形態を規定する項目の変数名に対応付けて設定されている。表示形態の基礎情報としては、変換元コントロール種別(変数名:type)、背景色(変数名:BackColor)、説明文(変数名:Caption)、説明文の表示位置(変数名:Alignment)、コントロールを使用可能か否かの情報(変数名:Enabled)、説明文のフォント名(変数名:FontName)、説明文のフォントサイズ(変数名:FontSize)、前景色(変数名:ForeColor)、ボックスの重なり順(変数名:zIndex)などがある。なお説明文は、例えばコントロールがボタンであれば、そのボタンに表示される文字列である。前景色は、説明文の色である。各コントロールの項目ごとに変数名に対応付けて設定された値が、該当コントロールに関するコードを生成する際の、該当変数名に対応する変数値となる。
図16は、設計値が設定された画面項目定義書の一例を示す図である。設計値が設定された画面項目定義書117には、名称「PsiInfo」が付与されている。画面項目定義書117には、操作順を示す番号(BranchNumber)の順番で、コントロールの名称(ItemName)に対応付けて、そのコントロールについての設計値が設定されている。設計値としては、入力を受け付けるか否を示す情報(InputType)、文字か数値かを示すデータタイプ(DataType)、表示領域の幅(DisplayLength)、データの文字数(DataLength)などがある。
図17は、変換後のソースファイル群の一例を示す図である。変換後のソースファイル群118には、複数のソースファイル118a,118b,118cが含まれる。ソースファイル118aには、例えばCSSによって画面フォーム定義が記述されている。ソースファイル118bには、例えばHTMLによってWebアプリ全体の構造が定義されている。ソースファイル118cには、例えばJavaScript(登録商標)などのスクリプト言語によって、Webアプリにおいて実行する処理内容が記述されている。
図18は、CSSのソースファイルの一例を示す図である。CSSのソースファイル118aは、CSSのスケルトンファイル113aを、コンバートテーブル114、画面項目定義書116,117に基づいて自動編集することで生成される。
なお、画面フォームのコントロールの種類が増えた場合は、開発者は、コントロール一覧112、スケルトンファイル113a、コンバートテーブル114に、新たなコントロールに応じた情報を追記する。
端末装置100は、図6~図18に示した情報を利用して、ソフトウェアのマイグレーションを実施する。以下、ソフトウェアのマイグレーション処理について詳細に説明する。
図19は、マイグレーション処理の手順の一例を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。
[ステップS101]ソースファイル取得部120は、ソフトウェアの移行元のサーバ31から、該当ソフトウェアの1以上のソースファイルを取得する。ソースファイル取得部120は、取得したソースファイルを記憶部110に格納する。
[ステップS102]コントロ-ル名リネイム部130は、画面フォーム定義が記述されたソースファイル111aに示されるコントロール名を、対応するコントロールの種別に応じてリネイムする。例えばコントロ-ル名リネイム部130は、ソースファイル111aの構造を解析してコントロール名を抽出し、そのコントロール名を表示する。そしてコントロール名リネイム部130は、表示したコントロール名の変更入力を受け付ける。例えば開発者は、コントロールの種別に応じてプレフィックスをコントロール名の先頭に追加したコントロール名を入力する。コントロール名リネイム部130は、コントロール名をリネイムしたソースファイル111aを記憶部110に格納する。
その後、開発者は、端末装置100にソフトウェアの自動変換の実行を指示する入力を行う。すると端末装置100において、ステップS103の処理が行われる。
[ステップS103]フォーム情報展開部140は、開発環境を生成する。例えばフォーム情報展開部140は、ソースファイル変換用のフォルダを作成し、作成したフォルダにスケルトンファイル群113のコピーを格納する。
[ステップS104]フォーム情報展開部140は、ソースファイル群111に基づいて、画面フォームの基礎情報を、画面項目定義書116に自動展開する。基礎情報の自動展開処理の詳細は後述する(図20参照)。
[ステップS105]設計値設定部150は、開発者からの入力に基づいて、設計値が設定された画面項目定義書117を生成する。設計値設定部150は、生成した画面項目定義書を記憶部110に格納する。
[ステップS106]ソースコード変換部160は、スケルトンファイル群113を用いて、Webアプリ用のソースファイル群118を自動生成する。例えばソースコード変換部160は、コンバートテーブル114と画面項目定義書116,117とに示された情報に従ってスケルトンファイルを編集することで、CSSによるソースファイル118aを生成する。またソースコード変換部160は、ソフトウェアの全体の構造が定義されたソースファイルを、例えばHTMLによるソースファイル118bに変換する。さらにソースコード変換部160は、演算処理などの処理が定義されたソースファイルを、HTMLから呼び出し可能なスクリプト言語によるソースファイル118cに変換する。ソースファイル自動生成処理の詳細は後述する(図23参照)。
[ステップS107]デプロイ部170は、変換後のソースファイル群118を移行先のサーバ32にデプロイする。例えばデプロイ部170は、コンパイル可能な言語で作成されたソースファイルをコンパイルし、ソースコードまたはコンパイル後の実行形式のファイルをサーバ32に送信する。そしてデプロイ部170は、サーバ32に対して送信したファイルを用いたWebアプリの実行環境の構築操作を実施する。
このような手順でソフトウェアのマイグレーションが行われる。
次に基礎情報自動展開処理の手順について詳細に説明する。
図20は、基礎情報自動展開処理の手順の一例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。
[ステップS111]フォーム情報展開部140は、基礎情報を設定する画面項目定義書116を初期化する。例えばフォーム情報展開部140は、基礎情報の設定項目を各行のラベルに設定した表を作成する。
[ステップS112]フォーム情報展開部140は、画面フォーム定義が記述されたソースファイル111aから画面フォーム定義を1行分読み込む。
[ステップS113]フォーム情報展開部140は、読み込んだ画面フォーム定義が定義の終了を示すコード(EOF:End Of File)か否かを判断する。フォーム情報展開部140は、定義の終了を示すコードであれば、処理をステップS117に進める。またフォーム情報展開部140は、定義の終了を示すコードでなければ、処理をステップS114に進める。
[ステップS114]フォーム情報展開部140は、読み込んだ画面フォーム定義に示されるコメントが、プレフィックス付きのコントロール名か否かを判断する。例えばフォーム情報展開部140は、コメント内のコントロール名の先頭の文字列が、コントロール一覧112のプレフィックスに示される文字列のいずれかに該当する場合、該当コメントは、プレフィックス付きのコントロール名であると判断する。フォーム情報展開部140は、プレフィックス付きのコントロール名であれば、処理をステップS115に進める。またフォーム情報展開部140は、プレフィックス付きのコントロール名でなければ、処理をステップS112に進める。
[ステップS115]フォーム情報展開部140は、プレフィックス付きのコントロール名のコメント行に続けて記載されている、コントロールについての画面フォーム定義から、基礎情報を抽出する。
[ステップS116]フォーム情報展開部140は、抽出した基礎情報を画面項目定義書116に書き込む。その後、フォーム情報展開部140は処理をステップS112に進める。
[ステップS117]フォーム情報展開部140は、定義終了のコードを検出すると、生成した画面項目定義書116を、例えばメモリ102またはストレージ装置103に保存する。
図21は、基礎情報の自動展開の一例を示す図である。例えばフォーム情報展開部140は、ソースファイル111aの先頭の行から順番に読み込んでいきコメント「’BT_Btn01」に達したものとする。フォーム情報展開部140は、読み込んだコメントの先頭も文字列「BT_」を、コントロール一覧112のプレフィックスの欄から検索する。フォーム情報展開部140は、コントロール一覧112に対応するプレフィックスが登録されていることから、コメント「’BT_Btn01」がプレフィックス付きのコントロール名であると判断する。そこでフォーム情報展開部140は、画面項目定義書116に「ItemName」が「BT_Btn01」のレコードを追加する。
さらにフォーム情報展開部140は、プレフィックス付きのコントロール名のコメント「’BT_Btn01」以降に記載された画面フォームを定義する行を1行ずつ解析する。そしてフォーム情報展開部140は、各行に定義されいる項目についての値を、画面項目定義書116に設定する。その際、フォーム情報展開部140は、色に関する値は、カラーテーブル115に基づいて、CSSにおける色の値に変換する。
例えばフォーム情報展開部140は、「Me.BT_Btn01.BackColor=System.Drawing.Color.Silver」の行を解析し、背景色(BackColor)に「Silver」を設定する行であることを認識する。そこでフォーム情報展開部140は、画面項目定義書116の「BT_Btn01」のレコードの背景色(BackColor)の項目に「Silver」に対応する16進数の値を設定する。図14を参照すると「Silver」に対応する値は「#C0C0C0」である。そのためフォーム情報展開部140は、背景色(BackColor)の項目に「#C0C0C0」を設定する。同様にフォーム情報展開部140は、フォント名(FontName)、フォントサイズ(FontSize)、前景色(ForeColor)、説明文(Caption)、説明文の表示位置(Alignment)などを該当レコードに設定する。
なお画面フォームの基礎情報は、テキストボックスやボタンの配置など、コントロールの表示上の体裁に関する情報である。開発者は、ソフトウェアのマイグレーション後にコントロールを正しく動作させるために、設計値設定部150を用いて、設計値を画面項目定義書117に設定する。例えば開発者は、設計値設定部150に対して、入力値のデータ型(date、time、numberなど)や表示桁数などを、設計値として入力する。設計値設定部150は、入力された設計値を、画面項目定義書117に設定する。
2つの画面項目定義書116,117が用意できると、ソースコード変換部160が、スケルトンファイル群113を用いて、変換前のソースファイル群111と同じ処理を行うことができるWebアプリ用のソースファイル群118を生成する。例えばソースコード変換部160は、コンバートテーブル114に基づいて、変換前のソースファイル内の各コードをWebアプリ用のコードに変換する。そしてソースコード変換部160は、変換後のコードをスケルトンファイルに挿入することで、変換後のソースファイルを生成する。
なお、変換元のソースファイルにおける画面フォームに関する情報は、すでに画面項目定義書116,117に登録されている。そこで、ソースコード変換部160は、画面フォームについてのソースファイルの生成の際には、2つの画面項目定義書116,117を利用してソースファイルを生成する。
図22は、画面フォームについてのソースファイルの生成例を示す図である。例えばソースコード変換部160は、CSS用のスケルトンファイル113aを、コンバートテーブル114、画面項目定義書116,117を用いて自動編集し、CSSで記述されたソースファイル118aを生成する。
次に、ソースファイル自動生成処理の手順について、フローチャートを参照して詳細に説明する。
図23は、ソースファイル自動生成処理の手順の一例を示すフローチャートである。以下、図23に示す処理をステップ番号に沿って説明する。
[ステップS121]ソースコード変換部160は、画面項目定義書116,117の整合性をチェックする。例えばソースコード変換部160は、コントロールの説明文に数値以外の文字が設定されているにもかかわらず、そのコントロールのデータ型が数値の場合、整合性のチェックでエラーと判定する。
[ステップS122]ソースコード変換部160は、整合性のチェックにおいてエラーがあった否かを判断する。ソースコード変換部160は、エラーがあった場合、処理をステップS123に進める。またソースコード変換部160は、エラーがなければ、処理をステップS124に進める。
[ステップS123]ソースコード変換部160は、整合性のチェックで検出されたエラーの内容を出力し、処理を終了する。
[ステップS124]ソースコード変換部160は、未処理のスケルトンファイルを一つ読み込む。
[ステップS125]ソースコード変換部160は、読み込んだソースファイルに記述されたコードを上から順に1行ずつ選択する。
[ステップS126]ソースコード変換部160は、選択した行がスケルトンファイルの終了を示す文字列(星印に囲まれた「END」の文字列)か否かを判断する。ソースコード変換部160は、終了を示す文字列の場合、処理をステップS131に進める。またソースコード変換部160は、終了を示す文字列でなければ、処理をステップS127に進める。
[ステップS127]ソースコード変換部160は、選択した行に、置換対象位置を示す所定記号で囲まれた文字列があるか否かを判断する。所定記号は、例えば二重鉤括弧、隅付き括弧などである。ソースコード変換部160は、所定記号で囲まれた文字列がある場合、処理をステップS128に進める。またソースコード変換部160は、所定記号で囲まれた文字列がない場合、処理をステップS129に進める。
[ステップS128]ソースコード変換部160は、項目定義ソースコード生成処理を行う。この処理の詳細は後述する(図24参照)。その後、ソースコード変換部160は、処理をステップS125に進める。
[ステップS129]ソースコード変換部160は、所定記号で囲まれた文字列がない場合、選択した行が、変換後のソースファイルへの展開対象のコードか否かを判断する。例えば「$CSS_01」のような、ソースファイル自動生成処理の終了を示す制御コードは、ソースファイルの展開対象外となる。ソースコード変換部160は、展開対象コードであれば、処理をステップS130に進める。またソースコード変換部160は、展開対象コードでなければ、処理をステップS125に進める。
[ステップS130]ソースコード変換部160は、選択した行に示されるコードを、変換後のソースファイルに書き込む。その後、ソースコード変換部160は、処理をステップS125に進める。
[ステップS131]ソースコード変換部160は、未処理のスケルトンファイルがあるか否かを判断する。ソースコード変換部160は、未処理のスケルトンファイルがあれば、処理をステップS124に進める。またソースコード変換部160は、未処理のスケルトンファイルがなければ、処理をステップS132に進める。
[ステップS132]ソースコード変換部160は、スケルトンファイルに基づいて生成されたソースファイルを、記憶部110に保存する。その後、ソースコード変換部160はソースファイル自動生成処理を終了する。
次に、項目定義ソースコード生成処理の手順の詳細について説明する。
図24は、項目定義ソースコード生成処理の手順の詳細を示すフローチャートである。以下、図24に示す処理をステップ番号に沿って説明する。
[ステップS141]ソースコード変換部160は、コンバートテーブル114を読み込む。
[ステップS142]ソースコード変換部160は、コンバートテーブル114から、所定記号で囲まれた文字列に一致する処理名を検索する。
[ステップS143]ソースコード変換部160は、検索で一致した処理名に続くソースコードを、1行ずつ選択する。
[ステップS144]ソースコード変換部160は、選択した行が該当処理の記述の終了を示すコード「$(処理名)」か否かを判断する。ソースコード変換部160は、該当処理の記述の終了を示すコードであれば、項目定義ソースコード生成処理を終了する。またソースコード変換部160は、該当処理の記述の終了を示すコードでなければ、処理をステップS145に進める。
[ステップS145]ソースコード変換部160は、選択した行のコードが、検索で一致した処理名の処理全体の編集条件、および選択した行の条件を満たすか否かを判断する。ソースコード変換部160は、編集条件および行の条件が共に満たされていれば、処理をステップS146に進める。またソースコード変換部160は、編集条件および行の条件のいずれかが満たされていなければ、処理をステップS143に進める。
[ステップS146]ソースコード変換部160は、選択した行に、星印で囲まれた変数名があるか否かを判断する。ソースコード変換部160は、該当変数がある場合、処理をステップS147に進める。またソースコード変換部160は、該当変数がない場合、処理をステップS149に進める。
[ステップS147]ソースコード変換部160は、検索で一致した処理名に続けて記載されている取得先を参照し、取得先として指定されている画面項目定義書を読み込む。例えばソースコード変換部160は、取得先が「FrmInfo」であれば、基礎情報が設定された画面項目定義書116を読み込む。またソースコード変換部160は、取得先が「PsiInfo」であれば、設計値が設定された画面項目定義書117を読み込む。
[ステップS148]ソースコード変換部160は、読み込んだ画面項目定義書から、検索で一致した処理名に対応するコントロール名のレコード内の、星印で囲まれた変数名に対応する項目の値を、該当変数名の変数値として取得する。そしてソースコード変換部160は、星印で囲まれた変数名を取得した変数値で置き換える。
[ステップS149]ソースコード変換部160は、選択した行のコードをスケルトンファイルに書き込む。その後、ソースコード変換部160は処理をステップS143に進める。
なおソースコード変換部160は、図10のスケルトンファイル113aの例に示すような二重鉤括弧に囲まれた文字列がある場合、該当文字列に対応付けられたシステム内の設定値を取得し、取得した文字列に変換する。例えばソースコード変換部160は、二重鉤括弧で囲まれた『ツールバージョン』を、ソースファイル変換処理機能を実現するためのソフトウェアモジュール群のバージョン番号に変換する。
このようにして、スケルトンファイルにWebアプリ用の言語で記述されたコードを書き込んでいくことで、変換後のソースファイルを生成することができる。以下、図25~図28を参照して、画面フォームを定義するソースファイル118aの生成例について説明する。
図25は、スケルトンファイルへのソースコードの挿入位置とコンバートテーブルの処理名との対応関係を示す図である。例えばスケルトンファイル113aには、隅付き括弧に囲まれた「項目定義20」という文字列がある。ソースコード変換部160は、スケルトンファイル113aから文字列「項目定義20」を抽出し、該当文字列を検索キーワードとしてコンバートテーブル114の処理名を検索する。そしてソースコード変換部160は、処理名「項目定義20」以降に記載されているソースコード定義情報114a内のコードを、処理名「項目定義20」に対応する取得先「FrmInfo」で指定された画面項目定義書116に基づいて自動編集する。
またスケルトンファイル113aには、隅付き括弧に囲まれた「項目定義6」という文字列がある。ソースコード変換部160は、スケルトンファイル113aから文字列「項目定義6」を抽出し、該当文字列を検索キーワードとしてコンバートテーブル114の処理名を検索する。そしてソースコード変換部160は、処理名「項目定義6」以降に記載されているソースコード定義情報114b内のコードを、処理名「項目定義6」に対応する取得先「PsiInfo」で指定された画面項目定義書117に基づいて自動編集する。
図26は、基礎情報が設定された画面項目定義書に基づくソースコードの自動編集例を示す図である。例えば処理名「BT_Btn01」のソースコード定義情報114aの1行目には、星印に囲まれた文字列「ItemName」がある。ソースコード変換部160は、該当文字列と星印とを、画面項目定義書116におけるItemName「BT_Btn01」のレコードにおける項目「ItemName」の値「BT_Btn01」に変換する。
ソースコード定義情報114aの5行目には、星印に囲まれた文字列「BackColorNoDefault」がある。ソースコード変換部160は、該当文字列と星印とを、画面項目定義書116におけるItemName「BT_Btn01」のレコードにおける項目「BackColor」の値「#C0C0C0」に変換する。
ソースコード定義情報114aの6行目には、星印に囲まれた文字列「Alignment」がある。ソースコード変換部160は、該当文字列と星印とを、画面項目定義書116におけるItemName「BT_Btn01」のレコードにおける項目「Alignment」の値「center」に変換する。
ソースコード定義情報114aの10行目には、星印に囲まれた文字列「zIndex」がある。ソースコード変換部160は、該当文字列と星印とを、画面項目定義書116におけるItemName「BT_Btn01」のレコードにおける項目「zIndex」の値「887」に変換する。
ソースコード定義情報114aのその他の行は、条件を満たしていないものとする。その結果、ソースコード変換部160は、ソースコード定義情報114aに基づいて、変数名を変数値に置換した変換後コード51を生成することができる。
図27は、設計値が設定された画面項目定義書に基づくソースコードの自動編集例を示す図である。ソースコード変換部160は、処理名「項目定義6」に対応するソースコード定義情報114bにおける星印で囲まれた文字列を、設計値が設定された画面項目定義書117内の対応する値に変換し、変換後コード52を生成する。
ソースコード変換部160は、図26、図27に示した変換後コード51,52をスケルトンファイルに書き込むことで、変換後のソースファイルを生成する。
図28は、スケルトンファイルへのソースコードの挿入例を示す図である。ソースコード変換部160は、処理名「項目定義20」のソースコード定義情報114aを用いて生成した変換後コード51を、スケルトンファイル113aの隅付き括弧に囲まれた「項目定義20」の記載箇所に挿入する。またソースコード変換部160は、処理名「項目定義6」のソースコード定義情報114bを用いて生成した変換後コード52を、スケルトンファイル113aの隅付き括弧に囲まれた「項目定義6」の記載箇所に挿入する。このように、ソースコード変換部160は、スケルトンファイル113aの隅付き括弧に囲まれた文字列をソースコードに置き換えていくことで、ソースファイル118aを生成する。
図25~図28にはスケルトンファイル113aを用いたソースファイル118aの生成例を示したが、同様の処理により、他のスケルトンファイル113b,113cからもソースファイル118b,118cを生成することができる。
生成されたソースファイル群118に基づいて、デプロイ部170が、Webアプリをサーバ32にデプロイする。
図29は、Webアプリの実装例を示す図である。例えばソースファイル群118に基づいてサーバ32でデプロイされたWebアプリ60の処理機能には、業務処理と、サーバ32内のDB32aにアクセスするDBアクセス処理とが含まれる。例えばサーバ32は、Webアプリ60に含まれる業務処理用のプログラムに従って、業務処理を実行する。業務の過程でDB32a内のデータを利用する場合、サーバ32はWebアプリ60に含まれるDBアクセス処理のプログラムに従ってDB32aにアクセスする。
なお端末装置100は、Webアプリ60をサーバ32に実装する際に、表示データとDB32a内のデータとの紐づけを行うことができる。例えば端末装置100は、接続するDB32aを指定することにより、ファサードクラス(Facade Class)のスケルトンファイルを自動生成する。そして端末装置100は、生成したスケルトンファイルにDB32aへのアクセスに使用する情報を設定する。例えば開発者は、端末装置100を用いて、表示データとDB32a内のデータとの紐づけ用のスケルトンファイルを編集し、サーバ通信に必要なソースコードを挿入する。端末装置100は、このようにして生成されたソースコードをデプロイすることで、表示データとDB32a内のデータとを関連付けたWebアプリ60が、サーバ32で動作する。
例えば端末装置100によりサーバ32にアクセスしてWebアプリ60を使用する場合、端末装置100の画面には、移行元のサーバ31で業務処理が提供されていたときと同様の操作画面が表示される。
図30は、Webアプリ操作画面の一例を示す図である。Webアプリ操作画面70には、多数のボタン71が表示されている。またWebアプリ操作画面70内にフレーム72が表示され、そのフレーム72内にタブ73で切替可能なウィンドウ74が表示されている。ウィンドウ74内には複数のテキストボックスが表示されている。
第2の実施の形態に示したマイグレーション処理でソフトウェアのマイグレーションを行うことで、図30に示したWebアプリ操作画面70のような複雑な構造の操作画面であっても、移行前と同じ操作画面をWebアプリ60によって再現することができる。
すなわち、クライアントサーバシステムをWebシステムに置き換える場合、既存資産をそのまま利用するのは困難である。また新規開発としてゼロからWebアプリをプログラミングするのは、非常に手間と時間がかかる。第2の実施の形態に示す方法でソフトウェアのマイグレーションを行えば、既存資産であるソフトウェアのフォームのデザインファイルを有効に利用して、Webアプリ用のソースファイルを自動生成することができる。
また端末装置100は、スケルトンファイルとコンバートテーブルの組み合わせにより、Webアプリ用のソースファイルを生成しているため、開発者の開発スキルの違いによる品質のバラツキが発生せず、画面開発品質の均一化が可能となる。
端末装置100がスケルトンファイルとコンバートテーブルを用いてソースファイルを自動生成することは、ソースファイルの信頼性の向上にもつながる。生成されるソースファイルの信頼性が高いことで、テスト期間の短縮が可能となる。
〔その他の実施の形態〕
第2の実施の形態では、HTML、CSS、およびJavaScript(登録商標)により、Webアプリのソースファイルを記述しているが、他の言語への適用も可能である。
また第2の実施の形態に示した端末装置100の機能は、既存のソフトウェアのマイグレーションではなく、Webアプリの開発経験が乏しい開発者によるソフトウェアの新規開発においても有効に利用できる。例えばクライアントサーバシステム用のソフトウェアの統合開発環境を用いてソースファイルを新規に記述し、端末装置100を用いてそのソースファイルをWebアプリ用のソースファイルに変換することもできる。これにより、開発者は、使い慣れたある言語用の統合開発環境を用いて、他の言語のソースファイルを容易に作成することができる。
Webアプリの新規開発では、例えば基礎情報の画面項目定義書116を作っておけば、実際の画面のサンプルを確認することができる。その結果、開発の早い段階で画面フォームの確認が可能であり、手戻りの少ない要件定義が可能となる。
また端末装置100は、画面フォームをHTMLとは別の言語(CSS)で記述していることで、レスポンシブWebデザインへの対応も容易である。レスポンシブWebデザインとは、ユーザが閲覧する装置の画面サイズに応じて、画面のフォームを最適化して表示させる技術である。例えば端末装置100は、パーソナルコンピュータでアクセスされたとき用のCSS、タブレットでアクセスされたとき用のCSS、スマートフォンでアクセスされたとき用のCSSを含むソースファイルを生成する。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 第1ソースファイル
2 第2ソースファイル
3 変換用コード
10 情報処理装置
11 記憶部
12 処理部

Claims (6)

  1. 画面フォームを構成する要素の表示態様を第1プログラミング言語で規定する第1コードを含む第1ソースファイルに基づいて、前記第1コードから、前記要素の表示態様に関する項目の項目値を抽出し、
    前記要素の表示態様を第2プログラミング言語で規定するコードの記述のうちの前記項目の項目値の設定領域に、前記項目に対応する変数名が設定された変換用コードに基づいて、前記変換用コードの前記変数名を前記第1ソースファイルから抽出された前記項目値に変換することで、前記要素の表示態様を前記第2プログラミング言語で規定した第2コードを生成し、
    生成した前記第2コードを第2ソースファイルに対して書き込む、
    処理をコンピュータに実行させるソースファイル生成プログラム。
  2. 前記変換用コードには、前記変換用コードの適用条件が定義されており、
    前記適用条件を満たす場合に、前記変数名の前記項目値への変換、および前記第2コードの前記第2ソースファイルへの書き込みを実行する、
    請求項1記載のソースファイル生成プログラム。
  3. 前記コンピュータに、さらに、
    抽出した前記項目値を、前記第1プログラミング言語の定義に従った表記形式から前記第2プログラミング言語の定義に従った表記形式に変換する、
    処理を実行させる請求項1または2記載のソースファイル生成プログラム。
  4. 前記項目値の抽出では、画面フォームを構成する前記要素に対する命名規約に従った要素名を含む行を、前記第1ソースファイルから検索し、前記要素名を含む行に続けて記述されている、表示態様を規定するコードを、前記要素の表示態様を規定する前記第1コードとして特定する、
    請求項1ないし3のいずれかに記載のソースファイル生成プログラム。
  5. コンピュータが、
    画面フォームを構成する要素の表示態様を第1プログラミング言語で規定する第1コードを含む第1ソースファイルに基づいて、前記第1コードから、前記要素の表示態様に関する項目の項目値を抽出し、
    前記要素の表示態様を第2プログラミング言語で規定するコードの記述のうちの前記項目の項目値の設定領域に、前記項目に対応する変数名が設定された変換用コードに基づいて、前記変換用コードの前記変数名を前記第1ソースファイルから抽出された前記項目値に変換することで、前記要素の表示態様を前記第2プログラミング言語で規定した第2コードを生成し、
    生成した前記第2コードを第2ソースファイルに対して書き込む、
    ソースファイル生成方法。
  6. 画面フォームを構成する要素の表示態様を第1プログラミング言語で規定する第1コードを含む第1ソースファイルと、前記要素の表示態様を第2プログラミング言語で規定するコードの記述のうちの、前記要素の表示態様に関する項目の項目値設定領域に、前記項目に対応する変数名が設定された変換用コードとを記憶する記憶部と、
    前記第1ソースファイルに基づいて、前記第1コードから、前記要素の表示態様に関する前記項目の項目値を抽出し、前記変換用コードに基づいて、前記変換用コードの前記変数名を前記第1ソースファイルから抽出された前記項目値に変換することで、前記要素の表示態様を前記第2プログラミング言語で規定した第2コードを生成し、生成した前記第2コードを第2ソースファイルに対して書き込む処理部と、
    を有する情報処理装置。
JP2019025011A 2019-02-15 2019-02-15 ソースファイル生成プログラム、ソースファイル生成方法、および情報処理装置 Active JP7148804B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019025011A JP7148804B2 (ja) 2019-02-15 2019-02-15 ソースファイル生成プログラム、ソースファイル生成方法、および情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019025011A JP7148804B2 (ja) 2019-02-15 2019-02-15 ソースファイル生成プログラム、ソースファイル生成方法、および情報処理装置

Publications (2)

Publication Number Publication Date
JP2020135159A JP2020135159A (ja) 2020-08-31
JP7148804B2 true JP7148804B2 (ja) 2022-10-06

Family

ID=72278782

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019025011A Active JP7148804B2 (ja) 2019-02-15 2019-02-15 ソースファイル生成プログラム、ソースファイル生成方法、および情報処理装置

Country Status (1)

Country Link
JP (1) JP7148804B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4152114A4 (en) 2020-08-07 2024-01-31 Mitsubishi Heavy Industries, Ltd. DISPLAY DEVICE, DISPLAY METHOD AND PROGRAM

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002268882A (ja) 2001-03-07 2002-09-20 Fujitsu Ltd Webアプリケーションシステム、及びプログラム
JP2004005568A (ja) 2002-04-10 2004-01-08 Internatl Business Mach Corp <Ibm> レガシー・アプリケーションの高速gui体裁更新
JP2004362343A (ja) 2003-06-05 2004-12-24 Internatl Business Mach Corp <Ibm> ソースコード変換装置、ソースコード変換方法、およびプログラム
JP2014164309A (ja) 2013-02-21 2014-09-08 Nec Corp 画面プログラム生成装置及びその画面プログラム生成方法、情報処理装置、並びにコンピュータ・プログラム
US20180357055A1 (en) 2017-06-07 2018-12-13 Syntel, Inc. System and method for computer language migration

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002268882A (ja) 2001-03-07 2002-09-20 Fujitsu Ltd Webアプリケーションシステム、及びプログラム
JP2004005568A (ja) 2002-04-10 2004-01-08 Internatl Business Mach Corp <Ibm> レガシー・アプリケーションの高速gui体裁更新
JP2004362343A (ja) 2003-06-05 2004-12-24 Internatl Business Mach Corp <Ibm> ソースコード変換装置、ソースコード変換方法、およびプログラム
JP2014164309A (ja) 2013-02-21 2014-09-08 Nec Corp 画面プログラム生成装置及びその画面プログラム生成方法、情報処理装置、並びにコンピュータ・プログラム
US20180357055A1 (en) 2017-06-07 2018-12-13 Syntel, Inc. System and method for computer language migration

Also Published As

Publication number Publication date
JP2020135159A (ja) 2020-08-31

Similar Documents

Publication Publication Date Title
JP5139984B2 (ja) ユーザ・インターフェース向けマークアップ・ベースの拡張性
TWI394051B (zh) 網頁呈現優先次序機制
JP4869630B2 (ja) コンテンツを開始テンプレートとターゲットテンプレートとの間でマップするための方法およびシステム
Oney et al. Codelets: linking interactive documentation and example code in the editor
CN108762743B (zh) 一种数据表操作代码生成方法及装置
Spaanjaars Beginning asp. net 4: in c# and vb
JP5363355B2 (ja) スタイル要素を用いた画面表示の選択した表示領域をコピーアンドペーストする方法、システム及びプログラム
Freeman Pro Angular
JP2004005568A (ja) レガシー・アプリケーションの高速gui体裁更新
Purewal Learning Web App Development: Build Quickly with Proven JavaScript Techniques
KR101552914B1 (ko) 웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체
US9613089B2 (en) Form template refactoring
JP2009110391A (ja) 情報処理装置および制御方法および制御プログラム
JP7148804B2 (ja) ソースファイル生成プログラム、ソースファイル生成方法、および情報処理装置
JP5867540B2 (ja) プログラム生成装置、プログラム生成装置の制御方法、およびプログラム
Johnson Programming in HTML5 with JavaScript and CSS3
US10915599B2 (en) System and method for producing transferable, modular web pages
CN103713864B (zh) 帐票输出装置和帐票输出方法
Leeds Microsoft Expression Web 4 Step by Step
JP2001043076A (ja) Gui画面生成装置、gui画面生成方法及びgui画面生成プログラムを記録した記録媒体
JP2005190458A (ja) 機能付き電子ドキュメントの提供方法、そのプログラム、その装置及びシステム
AU2020200471A1 (en) Web Application Builder
Liberty et al. Programming ASP. NET 3.5: Building Web Applications
McFarland Dreamweaver CS5. 5: the missing manual
Libby Mastering PostCSS for Web Design

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20210825

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211109

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20211111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220819

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220905

R150 Certificate of patent or registration of utility model

Ref document number: 7148804

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150