JP2023031251A - ソフトウェアのソースコード生成を支援するための装置、方法及びそのためのプログラム - Google Patents
ソフトウェアのソースコード生成を支援するための装置、方法及びそのためのプログラム Download PDFInfo
- Publication number
- JP2023031251A JP2023031251A JP2022112819A JP2022112819A JP2023031251A JP 2023031251 A JP2023031251 A JP 2023031251A JP 2022112819 A JP2022112819 A JP 2022112819A JP 2022112819 A JP2022112819 A JP 2022112819A JP 2023031251 A JP2023031251 A JP 2023031251A
- Authority
- JP
- Japan
- Prior art keywords
- definition
- user
- api
- source code
- software
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 92
- 230000009467 reduction Effects 0.000 claims description 39
- 238000013475 authorization Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 14
- 238000013461 design Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 239000000470 constituent Substances 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012946 outsourcing Methods 0.000 description 2
- 238000010079 rubber tapping Methods 0.000 description 2
- 235000019640 taste Nutrition 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012938 design process Methods 0.000 description 1
- 238000011143 downstream manufacturing Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】ソフトウェアのソースコード生成を支援するための方法であって、当該ソースコードのプログラミング工程の少なくとも一部を自動化する。【解決手段】装置100は、企業端末110に、テーブル定義入力画面表示情報を送信し(S301)、入力されたテーブル定義は装置100に対して送信される(S302乃至S305)。次いで、装置100は、企業端末110に、各テーブルについて1又は複数のAPIを定義するためのAPI定義入力画面表示情報を送信し(S306)、入力されたAPI定義は装置100に対して送信される(S307)。装置100は、ソースコード生成の要求を受信したことに応じて(S308)、予め作成された1又は複数のテンプレートを取得して、当該テーブル定義及びAPI定義に従ったソースコードを生成する(S309)。生成されたソースコードは、装置100から企業端末110に送信される(S310)。【選択図】図3
Description
本発明は、ソフトウェアのソースコード生成を支援するための装置、方法及びそのためのプログラムに関する。
ソフトウェア開発は、要件定義、設計、プログラミング、テスト等の工程に分けられる。開発したソフトウェアを使用する事業会社がソフトウェアエンジニアを社内に抱えることももちろんある一方、社外の開発会社に開発工程の全部又は一部が委託されることも少なくない。たとえば、要件定義及び設計を上流工程として自社で担い、プログラミング及びテストを下流工程として社外に委託するような例が挙げられる。
プログラミングが社外に委託される場合、プロジェクトの規模、委託先の稼働状況等に応じて、さらに再委託されることがある。また、比較的に安価な人件費で委託可能な海外企業に委託されることもあり、オフショア開発と呼ばれる。
いずれのかたちにしても、プログラミングの外部委託は、自社が有するソフトウェア開発のリソースを割くコストよりも外部委託に伴い発生するコストの方が小さい場合に広く採用されているところ、ソフトウェア開発のコストをさらに下げることのできる手法があれば、より望ましい。
本発明は、このような点に鑑みてなされたものであり、その課題は、ソフトウェアのソースコード生成を支援するための装置、方法及びそのためのプログラムであって、当該ソースコードのプログラミング工程の少なくとも一部を自動化することにある。
このような課題を解決するために、本発明の第1の態様は、ソフトウェアのソースコード生成を支援するための方法であって、装置が、端末から、複数のテーブルについてのテーブル定義及びAPI定義を受信するステップであって、前記テーブル定義は、前記ソフトウェアのユーザーの基本情報に関するユーザーテーブルを含むステップと、前記装置が、前記端末から、ソースコード生成の要求を受信するステップと、前記装置が、前記要求の受信に応じて、予め作成されたソースコードの1又は複数のテンプレートを取得して、前記テーブル定義及び前記API定義に従ったソースコードを前記1又は複数のテンプレートを用いて生成するステップと
を含む。
を含む。
また、本発明の第2の態様は、第1の態様の方法であって、前記テーブル定義は、前記ユーザーテーブルの各レコードに含まれるユーザー識別子により識別されるユーザーに対してユーザー認証を行うことの指定を含む。
また、本発明の第3の態様は、第1の態様の方法であって、前記テーブル定義は、前記ユーザーテーブルが有する複数のカラムのうちの前記ユーザー認証に用いるカラムの特定を含む。
また、本発明の第4の態様は、第3の態様の方法であって、前記特定されたカラムの値は、電話番号である。
また、本発明の第5の態様は、第2から第4のいずれかの態様の方法であって、前記1又は複数のテンプレートは、ユーザー認証のための第1のテンプレートを含む。
また、本発明の第6の態様は、第1の態様の方法であって、前記API定義は、各テーブルについて、レコードの表示、生成、更新及び削除のうちの少なくとも一部を実行するための1又は複数のAPIの作成の指定を含む。
また、本発明の第7の態様は、第6の態様の方法であって、前記API定義は、いずれかのAPIについて、前記ユーザー認証に成功していることを実行の認可の条件とする指定を含む。
また、本発明の第8の態様は、第6の態様の方法であって、前記API定義は、前記複数のテーブルのうちの前記ユーザーテーブル以外の他のテーブルのレコードの操作を実行するためのAPIを実行する認可条件として、前記APIを実行するユーザーのユーザー認証に成功していることの指定を含む。
また、本発明の第9の態様は、第8の態様の方法であって、前記API定義は、前記認可条件として、さらに、前記APIの実行対象のレコードを前記APIを実行するユーザー自身に関連するレコードに限定することの指定を含む。
また、本発明の第10の態様は、第7から第9のいずれかの態様の方法であって、前記1又は複数のテンプレートは、前記認可のための第2のテンプレートを含む。
また、本発明の第11の態様は、第1の態様の方法であって、前記装置が受信した前記テーブル定義の第2の部分は、前記端末から受信した前記テーブル定義の第1の部分に応じて、前記装置が生成して、前記端末に送信したものである。
また、本発明の第12の態様は、第11の態様の方法であって、前記第1の部分は、前記ソフトウェアの利用料金の支払いを可能とする指定を含み、前記第2の部分は、前記利用料金の支払いに関するペイメントテーブルが有する複数のカラムの定義、及び、前記ユーザーテーブルが有する前記ペイメントテーブルとのリレーションの定義を含む。
また、本発明の第13の態様は、第11の態様の方法であって、前記第1の部分は、前記ユーザーテーブル以外の他のテーブルが有する前記ユーザーテーブルとのリレーションの定義を含み、前記第2の部分は、前記他のテーブルが有する前記ユーザーテーブルに関連づけられたカラムの定義を含む。
また、本発明の第14の態様は、第1の態様の方法であって、前記装置が、前記端末に、前記1又は複数のテンプレートを用いることで自動化されたプログラミング工程に応じた作業量の削減量若しくは削減率又は前記削減量に応じた削減費用の額若しくは率を送信するステップをさらに含む。
また、本発明の第15の態様は、第14の態様の方法であって、前記作業量は、時間又は時間に係数を乗じた値である。
また、本発明の第16の態様は、第14の態様の方法であって、前記削減量又は前記削減率は、前記プログラミング工程の種類ごとに算出される。
また、本発明の第17の態様は、第14の態様の方法であって、前記ソースコードは、複数のコード部分を含み、前記複数のコード部分は、API定義に従ったAPIコードと、前記ソフトウェアのユーザーインターフェースに対する入力に応じて前記APIコードのうちの少なくとも一部を呼び出すためのコードを含むユーザーインターフェースコードとを含み、前記削減量又は前記削減率は、前記複数の部分のそれぞれについて算出される。
また、本発明の第18の態様は、第1の態様の方法であって、前記装置は、インターネット上のサーバである。
また、本発明の第19の態様は、装置に、ソフトウェアのソースコード生成を支援するための方法を実行させるためのプログラムであって、前記方法は、前記装置が、端末から、複数のテーブルについてのテーブル定義及びAPI定義を受信するステップであって、前記テーブル定義は、前記ソフトウェアのユーザーの基本情報に関するユーザーテーブルを含むステップと、前記装置が、前記端末から、ソースコード生成の要求を受信するステップと、前記装置が、前記要求の受信に応じて、予め作成されたソースコードの1又は複数のテンプレートを取得して、前記テーブル定義及び前記API定義に従ったソースコードを前記1又は複数のテンプレートを用いて生成するステップとを含む。
また、本発明の第20の態様は、ソフトウェアのソースコード生成を支援するための装置であって、端末から、複数のテーブルについてのテーブル定義及びAPI定義を受信し、前記端末から、ソースコード生成の要求を受信し、前記要求の受信に応じて、予め作成されたソースコードの1又は複数のテンプレートを取得して、前記テーブル定義及び前記API定義に従ったソースコードを前記1又は複数のテンプレートを用いて生成する。
本発明の一態様によれば、複数のテーブルについてのテーブル定義及びAPI定義を受信して、予め作成された1又は複数のテンプレートを取得し、当該テーブル定義及び当該API定義に従ったソースコードを当該1又は複数のテンプレートを用いて生成することによって、ソフトウェアのソースコード生成を支援することが可能となる。
以下、本発明の実施形態を詳細に説明する。
(第1の実施形態)
図1に、本発明の第1の実施形態にかかる装置を示す。装置100は、装置100により提供されるサービスのユーザーである企業が用いる企業端末110とインターネット等のIPネットワークを介して通信して、データベース設計に関する入力を受信し、当該入力に基づいて、ソフトウェアのためのソースコードを生成する。主に、装置100はインターネット上のサーバであることを考えるが、社内ネットワーク上のサーバとし、当該社内ネットワーク上の端末からアクセスするものとすることも考えられる。
図1に、本発明の第1の実施形態にかかる装置を示す。装置100は、装置100により提供されるサービスのユーザーである企業が用いる企業端末110とインターネット等のIPネットワークを介して通信して、データベース設計に関する入力を受信し、当該入力に基づいて、ソフトウェアのためのソースコードを生成する。主に、装置100はインターネット上のサーバであることを考えるが、社内ネットワーク上のサーバとし、当該社内ネットワーク上の端末からアクセスするものとすることも考えられる。
装置100は、通信インターフェースなどの通信部101と、プロセッサ、CPU等の処理部102と、メモリ、ハードディスク等の記憶装置又は記憶媒体を含む記憶部103とを備え、各処理を行うためのプログラムを実行することによって構成することができる。装置100は、1又は複数の装置、コンピュータないしサーバを含むことがある。また、当該プログラムは、1又は複数のプログラムを含むことがあり、また、コンピュータ読み取り可能な記憶媒体に記録して非一過性のプログラムプロダクトとすることができる。当該プログラムは、記憶部103又は装置100からIPネットワークを介してアクセス可能な記憶装置104に記憶しておき、処理部102において実行することができる。以下で記憶部103に記憶されるものとして記述されるデータは記憶装置104に記憶してもよく、またその逆も同様である。
図2に、データベース設計の一例を示す。本明細書では、図2に示すマッチングサービスのためのデータベース設計を例にソースコードの少なくとも一部を自動的に生成することを説明するが、図2に示すようなリレーショナルデータベースのほかに、階層型データベース、ネットワーク型データベースなどのさまざまなデータベース設計に対して本発明は適用可能である。
図2に示すデータベース設計は、好みの人と出会うためのマッチングサービスに必要な複数のテーブルの少なくとも一部を含み、各テーブルは、少なくとも1つの他のテーブルと関連づけられている。本明細書では「テーブル」という用語を用いるが、これは、データベースに含まれる、1又は複数のカラム及び1又は複数のレコードを有するデータ単位であって、少なくとも1つの他のデータ単位と関連づけられるデータ単位を包含する。
具体的には、図2には、マッチングサービスの各ユーザーの基本情報に関するユーザーテーブル「Users」、各ユーザーが他のどのユーザーが好みで、他のどのユーザーから好まれているかに関するライクテーブル「Likes」、ユーザー間で互いの好みが合致した一組のユーザーに関するマッチテーブル「Matches」、及び、好みが合致した一組のユーザー間のメッセージに関するメッセージテーブル「Messages」が含まれる。
また、図2には、各ユーザーの支払履歴に関するペイメントテーブル「Payments」が含まれ、必要に応じてさらに、各ユーザーの加入状況に関するサブスクリプションテーブル「Subscriptions」及び各プランに関するプランテーブル「Plans」を含んでもよい。
図3に、本発明の第1の実施形態にかかるソフトウェアのソースコード生成を支援するための方法を示す。まず、装置100は、企業端末110に、テーブル定義入力画面表示情報を送信する(S301)。企業端末110の表示画面に、当該テーブル定義入力画面表示情報に基づくテーブル定義入力画面が表示され、企業端末110を用いる入力者による入力が行われる。
入力者による入力は、テーブル定義入力画面表示情報を、たとえばHTML形式のファイルとして送信して、企業端末110の表示画面にウェブブラウザ上で表示される入力画面から行ったり、企業端末110にインストールされたアプリケーション(以下「アプリ」とも呼ぶ。)を動作させ、当該アプリケーション上で表示される入力画面から行ったりすることができる。なお、「テーブル定義入力画面」とは、ウェブブラウザ上で表示される場合にはウェブページ、モーダルウィンドウ、ポップアップウィンドウ等のさまざまな形式を採用することができ、アプリ上で表示される場合にはアプリの一画面とすることができる。いずれにおいても、テーブル定義を入力するための入力欄を有する領域を含む画面であれば、テーブル定義入力画面に該当する。
図4Aに、本発明の第1の実施形態にかかるテーブル定義入力画面の一部を示す。テーブル定義入力画面400は、テーブル追加ボタン401を有し、これをクリック又はタップにより選択することで、テーブルを追加することができる。各テーブルについて、テーブル定義入力画面400は、テーブル名入力領域410、リレーション定義入力領域420及びカラム定義入力領域430を有し、さらに追加機能指定領域440を有することができる。
図4Aは、マッチングサービスのユーザーの基本情報に関するユーザーテーブル「Users」のための入力を行う例であるが、ユーザーテーブル「Users」に限らず、リレーション定義入力領域420において、表示されているテーブルと他のテーブルとの間のリレーション(relation)を指定することができる。たとえば、ライクテーブル「Likes」を追加して、ライクテーブル「Likes」に対して、ユーザーテーブル「Users」との間のリレーションを指定することが考えられる。
図4Bに、本発明の第1の実施形態にかかるテーブル定義入力画面の一部を示す。これは、図4Aに示したテーブル定義入力画面400を下にスクロールして、カラム定義領域430を表示した状態である。カラム定義入力領域430は、カラム追加ボタン431を有し、これをクリック又はタップにより選択することで、テーブルを追加することができる。企業端末110を用いる入力者は、図2に示したデータベース設計に従って、各テーブルに対して、必要なカラムを定義していけばよい。
図4Aに戻ると、この例では、追加機能指定領域440において、ユーザーテーブル「Users」の各レコードに含まれるユーザー識別子により識別されるユーザーに対してユーザー認証(user authentication)を行うことを指定した場合、後述するソースコード生成時に、ユーザー認証を行うためのテンプレートを用いて、ユーザー認証のためのソースコードが生成されることとなる。ユーザー認証が行われる場合には、ユーザーテーブル「Users」のカラム定義において、複数のカラムのうちのユーザー認証に用いるカラムの特定をテーブル定義に含んでもよい。図4Bでは、電話番号を値として保持することになるカラムの型が認証用のキーを表す「auth_key」となっている。各カラムは、名称及び型を含み、オプション及びデフォルト値の少なくとも一方をさらに含んでもよい。支払い(payment)を許可することを指定した場合については、追って説明する。
この例では、ユーザーテーブル「Users」のためのテーブル定義入力画面400に追加機能指定領域440を含んでいるものの、他のテーブルのためのテーブル定義入力画面400に含んでもよい。たとえば、病院向けのソフトウェアである場合、医師ユーザー及び患者ユーザーが使用し、共にユーザー認証を行う必要があれば、例として、各医師の基本情報に関するドクターテーブル「Doctors」及び各患者の基本情報に関するペイシェントテーブル「Patients」を追加し、これらのテーブルに対してそれぞれ、ユーザー認証を行う指定がなされることになる。本明細書では「ユーザー」という用語を用いるが、自然人に限らず、法人も含み、たとえば、ユーザー企業を包含するものとして用いる。
企業端末110を用いる入力者による入力されたテーブル定義は、定期的又は断続的に装置100に対して送信される(S302)。そして、装置100では、受信したテーブル定義を記憶部103に記憶し、当該テーブル定義(「第1の部分」に相当。)が所定の内容を含む場合に、当該所定の内容に応じて変更(「第2の部分」に相当。)を加えた変更テーブル定義を含む新たなテーブル定義入力画面表示情報を生成し(S303)、企業端末110に送信する(S304)。
一例として、図5に示すように、企業端末110にて、ライクテーブル「Likes」に対して、ユーザーテーブル「Users」との間の第1のリレーション及び第2のリレーションを指定することができる。このようなリレーション定義が入力されたことに応じて、装置100が、ライクテーブル「Likes」に対して、第1のリレーション及び第2のリレーションによってユーザーテーブル「Users」に関連づけられた第1及び第2のカラムの定義をテーブル定義に加えることができる。
図4A及び図5に示すリレーション定義入力領域420には、リレーションの種類として、「has many」、「has one」、「belongs to」及び「has many through」がある。本実施形態にかかるデータベースにおいて、一方のテーブルの各レコードを識別するidが他方のテーブルにカラムとして格納される場合に、前者を親、後者を子と呼ぶことがある。リレーション「has many」は、親のテーブルのレコードからみて他のテーブルの複数のレコードとの間に関連づけがなされ得て、リレーション「has one」は、親のテーブルのレコードからみて他のテーブルの単一のレコードとの間に関連づけがなされ得ることを意味する。リレーション「belongs to」は、子のテーブルのレコードからみて他のテーブルのレコードと1又は複数の関連づけがなされ得ることを意味し、図5では、ライクテーブル「Likes」の1つのレコードに対して、ユーザーテーブル「Users」の各レコードを識別するidを「liking_user_id」として格納させる第1のリレーション、及び、当該idを「liked_user_id」として格納させる第2のリレーションが指定されている。リレーション「has many through」は、第1のテーブルのレコードからみて第3のテーブルの複数のレコードと、第1のテーブルの子であり、第3のテーブルの親である第2のテーブルを介して、関連づけがなされ得ることを意味する。
また、別の例として、ユーザーテーブル「Users」に対して、利用料金の支払いを可能とする指定がなされたことに応じて、装置100が、利用料金の支払履歴を関するペイメントテーブル「Payments」が有する複数のカラムの定義をテーブル定義に加えることができる。装置100は、さらに、利用料金の支払いを可能とする指定がなされたことに応じて、ユーザーテーブル「Users」のリレーション定義に、ペイメントテーブル「Payments」とのリレーション「has many」を加えることができ、ペイメントテーブル「Payments」のリレーション定義に、ユーザーテーブル「Users」とのリレーション「belongs to」を加えることができる。
このように、装置100において、入力者が入力したテーブル定義に応じて、適宜自動的に必要な定義が追加され、入力者は、その他の個別に必要な入力を行う(S305)。ここまでの処理で、データベース設計に対応するテーブル定義に関するデータが記憶部103に記憶される。
次いで、装置100は、企業端末110に、各テーブルについて、レコードの操作を実行するための1又は複数のAPIを定義するためのAPI定義入力画面表示情報を送信する(S306)。企業端末110の表示画面に、当該API定義入力画面表示情報に基づくAPI定義入力画面が表示され、企業端末110を用いる入力者による入力が行われる。API定義入力画面表示情報の実装には、テーブル定義入力画面表示情報と同様の手法を採用すればよい。
図6に、本発明の第1の実施形態にかかるAPI定義入力画面の一部を示す。API定義入力画面600では、テーブル定義に含まれる複数のテーブルのうちの少なくとも一部のテーブルについて、レコードの操作を実行するための1又は複数のAPIの作成を指定することができる。図6では、ライクテーブル「Likes」について、レコードの一覧表示(list)、詳細表示(detail)、生成(create)、更新(update)及び削除(delete)のうちの少なくとも一部を実行するための1又は複数のAPIの作成をONにすることができる。それぞれの操作に対応する第1のAPI定義入力領域611から第5のAPI定義入力領域615が与えられている。
レコードの生成に関する第3のAPI定義入力領域613は、APIの作成を指定するための第1の入力欄613-1がONにされており、さらに、当該APIについて、ユーザー認証に成功していることを当該APIの実行の認可(authorization)の条件として指定するための第2の入力欄613-2、及び、当該APIの実行対象のレコードを当該APIを実行するユーザー自身に関連するレコードに限定した認可を指定するための第3の入力欄613-3がONにされている。また、APIを呼び出すときに入力すべきパラメータを指定するための第4の入力欄613-4にライクテーブル「Likes」のカラム「liked_user_id」が指定されている。ここで、パラメータは、プルダウンメニューからテーブル名及びカラム名を選択可能としてもよい。
マッチングサービスを例に考えると、たとえば、一覧表示に関する第1のAPI定義入力領域611において、第2の入力欄613-2に対応する入力欄がONとされることで、生成されたソースコードを用いて動作するソフトウェアでは、サインイン等によってユーザー認証に成功しているユーザーのみが、マッチングサービスを利用する他のユーザーの一覧表示が可能となる。また、更新に関する第4のAPI定義入力領域614において、第3の入力欄613-3に対応する入力欄がONとされることで、生成されたソースコードを用いて動作するソフトウェアでは、サインイン等によってユーザー認証に成功しているユーザー自身が行った好みの意思表示等の行動を表すレコードを更新可能となる。
企業端末110を用いる入力者により入力されたAPI定義は、定期的又は断続的に装置100に対して送信される(S307)。そして、テーブル定義及びAPI定義の入力後、装置100は、企業端末110から、ソースコード生成の要求を受信したことに応じて(S308)、記憶部103に記憶された、予め作成されたソースコードの1又は複数のテンプレートを取得して、当該テーブル定義及びAPI定義に従ったソースコードを当該1又は複数のテンプレートを用いて生成する(S309)。生成されたソースコードは、装置100から企業端末110に自動的に送信されるか、必要に応じて企業端末110からの取得要求を受けて送信される(S310)。
ソースコード生成の詳細
図7に、本発明の第1の実施形態にかかるソースコード生成の流れを示す。まず、装置100は、テーブル定義を取得する(S701)。当該テーブル定義にユーザー認証を行うことの指定が含まれていれば(S702)、装置100は、予め作成されたソースコードの1又は複数のテンプレートのうちのユーザー認証のための第1のテンプレートを取得して、ユーザー認証のためのコードを生成する(S703)。
図7に、本発明の第1の実施形態にかかるソースコード生成の流れを示す。まず、装置100は、テーブル定義を取得する(S701)。当該テーブル定義にユーザー認証を行うことの指定が含まれていれば(S702)、装置100は、予め作成されたソースコードの1又は複数のテンプレートのうちのユーザー認証のための第1のテンプレートを取得して、ユーザー認証のためのコードを生成する(S703)。
ユーザー認証のためのコードの生成後、又は、テーブル定義にユーザー認証を行うことの指定が含まれない場合、装置100は、API定義を取得する(S704)。当該API定義に、いずれかのAPIについて、ユーザー認証に成功していることを実行の認可の条件とする指定が含まれていれば(S705)、装置100は、当該認可のための追加コードを生成する(S706)。
追加コードの生成後、又は、API定義に認可を行うことの指定が含まれない場合、装置100は、予め作成されたソースコードの1又は複数のテンプレートのうちの当該認可のための第2のテンプレートを取得して、各APIのためのコードを生成する(S707)。API定義の取得をテーブル定義におけるユーザー認証指定の有無の判定後に行うものとして、記述したが、API定義を先に取得してもよい。
このように、ユーザー認証及び当該ユーザー認証を用いた認可を、入力者にチェックボックスのクリック又はタップによる選択によって指定させることで、各APIについて、適宜必要な権限設定がなされたソースコードを簡便に生成することが可能になる。
認可のための追加コードは、第2の入力欄613-2がONに指定されている場合と、第3の入力欄613-3がONに指定されている場合とで異なる。
第2の入力欄613-2がONの場合、装置100は、第2のテンプレートに含まれる以下のようなコードから、
<%- if @table_definition.apis.auth_actions.present? -%>
before_action :authenticate_identical!, only: %w[<%= @table_definition.apis.auth_actions.join(' ') %>]
<%- end -%>
次のようなAPI定義に従ったソースコードを生成する。
before_action :authenticate_identical!, only: %w[index create]
ライクテーブル「Likes」に対して、第1のAPI定義入力領域611及び第3のAPI定義入力領域613において「Auth」がONにされている場合に、第1のAPI定義入力領域611に関連づけられた一覧表示の操作及び第3のAPI定義入力領域613に関連づけられた生成の操作を実行する前にユーザー認証に成功しているか否かを判定する。ここで、図6において「list」と表示されている操作はソースコードにおいては「index」と呼称している。
<%- if @table_definition.apis.auth_actions.present? -%>
before_action :authenticate_identical!, only: %w[<%= @table_definition.apis.auth_actions.join(' ') %>]
<%- end -%>
次のようなAPI定義に従ったソースコードを生成する。
before_action :authenticate_identical!, only: %w[index create]
ライクテーブル「Likes」に対して、第1のAPI定義入力領域611及び第3のAPI定義入力領域613において「Auth」がONにされている場合に、第1のAPI定義入力領域611に関連づけられた一覧表示の操作及び第3のAPI定義入力領域613に関連づけられた生成の操作を実行する前にユーザー認証に成功しているか否かを判定する。ここで、図6において「list」と表示されている操作はソースコードにおいては「index」と呼称している。
第3の入力欄613-3がONの場合、装置100は、第2のテンプレートに含まれる以下のようなコードから、
<%- if @table_definition.apis.index_api.present? -%>
def index
<%- if @table_definition.apis.index_api.use_authed_record -%>
@<%= @table_definition.name %> = @current_user.<%= @table_definition.name %> <%- else -%>
@<%= @table_definition.name %> = <%= @table_definition.klass %>
<%- end -%>
render json: {
<%= @table_definition.name %>: serialize(@<%= @table_definition.name %>),
success: true
}
end
<%- end -%>
次のようなAPI定義に従ったソースコードを生成する。
def index
@likes = @current_user.likes
render json: {
likes: serialize(@likes),
success: true
}
end
「@current_user」が、当該APIの実行対象のレコードを当該APIを実行するユーザー自身に関連するレコードに限定することを表している。
<%- if @table_definition.apis.index_api.present? -%>
def index
<%- if @table_definition.apis.index_api.use_authed_record -%>
@<%= @table_definition.name %> = @current_user.<%= @table_definition.name %> <%- else -%>
@<%= @table_definition.name %> = <%= @table_definition.klass %>
<%- end -%>
render json: {
<%= @table_definition.name %>: serialize(@<%= @table_definition.name %>),
success: true
}
end
<%- end -%>
次のようなAPI定義に従ったソースコードを生成する。
def index
@likes = @current_user.likes
render json: {
likes: serialize(@likes),
success: true
}
end
「@current_user」が、当該APIの実行対象のレコードを当該APIを実行するユーザー自身に関連するレコードに限定することを表している。
(第2の実施形態)
本発明の第2の実施形態では、第1の実施形態にかかるプログラミング工程の少なくとも一部の自動化を可視化する。具体的には、装置100は、企業端末110に、予め作成された1又は複数のテンプレートを用いることで自動化されたプログラミング工程に応じた作業量の削減量又は削減率を送信する。ここで「作業量」は、時間又は時間に係数を乗じた値とすることができ、削減された作業量に応じた削減費用の額又は率を追加的又は代替的に表示されるようにしてもよい。また、ソフトウェアエンジニアの生産性は、ばらつきが大きいことから、当該値は、ソフトウェアエンジニアごとに定めることが好ましい。
本発明の第2の実施形態では、第1の実施形態にかかるプログラミング工程の少なくとも一部の自動化を可視化する。具体的には、装置100は、企業端末110に、予め作成された1又は複数のテンプレートを用いることで自動化されたプログラミング工程に応じた作業量の削減量又は削減率を送信する。ここで「作業量」は、時間又は時間に係数を乗じた値とすることができ、削減された作業量に応じた削減費用の額又は率を追加的又は代替的に表示されるようにしてもよい。また、ソフトウェアエンジニアの生産性は、ばらつきが大きいことから、当該値は、ソフトウェアエンジニアごとに定めることが好ましい。
図8に、本発明の第2の実施形態にかかる削減量表示画面の一例を示す。削減量表示画面800は、自動化されたプログラミング工程の種類ごとの開発時間の削減量を表示しており、さらに、合計の削減量を自動化スコア801として表示している。テーブルに関する削減量802は、テーブル定義の入力の自動化による作業量削減を表している。テーブル定義の入力は、設計工程を位置づけることも考えられるが、ここでは、プログラミング工程の一部として説明している。APIに関する削減量803は、予め作成された1又は複数のテンプレートを用いたコーディングの自動化による作業量削減を表している。モジュールに関する削減量804は、テーブル定義及びAPI定義に加えて、ユーザーに使用したいモジュールの指定を入力させ、指定されたモジュールに対応づけて記憶部103に記憶されたソースコードテンプレートを用いてソースコードが生成される際の作業量削減を表している。モジュールにより実現される機能の例としては、メールアドレスログイン、決済等が挙げられる。
フロントエンドに関する削減量805は、テーブル定義及びAPI定義に加えて、ユーザーにソフトウェアのユーザーインターフェース(UI)定義を入力させ、当該UI定義に従ったソースコードが生成される際の作業量削減を表している。一例として、UIに対してなされた入力に応じて装置100が所定の処理を実行する場合に、当該入力に対応するAPIコードが呼び出されるようにすることができ、このようにAPIコードをUIに対する入力に応じて呼び出すためのコードをフロントエンドに関する削減量805に含めて算出及び表示するようにしてもよい。フロントエンドには、ソフトウェアのユーザーが用いるUI及び当該ソフトウェアの管理者が用いるUIがある。
このように、生成されたソースコードに含まれる複数のコード部分のそれぞれについて、プログラミング工程がどの程度自動化されたかを可視化することで、装置100により提供されるサービスのユーザーに対し、ソフトウェア開発のコスト削減への貢献を客観的に伝えることが可能となる。加えて、テーブル定義の入力工程がどの程度自動化されたかを可視化することで、ソフトウェア開発のコスト削減への貢献を伝えることも可能となる。
なお、上述の実施形態において、「××のみに基づいて」、「××のみに応じて」、「××のみの場合」というように「のみ」との記載がなければ、本明細書においては、付加的な情報も考慮し得ることが想定されていることに留意されたい。また、一例として、「aの場合にbする」という記載は、明示した場合を除き、「aの場合に常にbする」こと、「aの直後にbする」ことを必ずしも意味しないことに留意されたい。また、「Aを構成する各a」という記載は、必ずしもAが複数の構成要素によって構成されることを意味するものではなく、構成要素が単数であることを含む。
また、念のため、なんらかの方法、プログラム、端末、装置、サーバ又はシステム(以下「方法等」)において、本明細書で記述された動作と異なる動作を行う側面があるとしても、本発明の各態様は、本明細書で記述された動作のいずれかと同一の動作を対象とするものであり、本明細書で記述された動作と異なる動作が存在することは、当該方法等を本発明の各態様の範囲外とするものではないことを付言する。
また、図7において示される「開始」及び「終了」は、一例を示すものに過ぎず、本実施形態にかかる方法がS701によって必ず開始され、S707によって必ず終了することを意味するものではない。
また、装置100がソースコード生成の要求を受信した以降の処理の少なくとも一部について、テーブル定義及びAPI定義の受信までの処理を行うサーバとは別のサーバに担わせることで、負荷を分散するようにしてもよい。
100 装置
101 通信部
102 処理部
103 記憶部
104 記憶装置
400 テーブル定義入力画面
401 テーブル追加ボタン
410 テーブル名入力領域
420 リレーション定義入力領域
430 カラム定義入力領域
431 カラム追加ボタン
440 追加機能指定領域
600 API定義入力画面
611 第1のAPI定義入力領域
612 第2のAPI定義入力領域
613 第3のAPI定義入力領域
613-1 第1の入力欄
613-2 第2の入力欄
613-3 第3の入力欄
613-4 第4の入力欄
613-5 第5の入力欄
614 第4のAPI定義入力領域
615 第5のAPI定義入力領域
800 削減工数表示画面
801 自動化スコア
802 テーブルに関する削減量
803 APIに関する削減量
804 モジュールに関する削減量
805 フロントエンドに関する削減量
101 通信部
102 処理部
103 記憶部
104 記憶装置
400 テーブル定義入力画面
401 テーブル追加ボタン
410 テーブル名入力領域
420 リレーション定義入力領域
430 カラム定義入力領域
431 カラム追加ボタン
440 追加機能指定領域
600 API定義入力画面
611 第1のAPI定義入力領域
612 第2のAPI定義入力領域
613 第3のAPI定義入力領域
613-1 第1の入力欄
613-2 第2の入力欄
613-3 第3の入力欄
613-4 第4の入力欄
613-5 第5の入力欄
614 第4のAPI定義入力領域
615 第5のAPI定義入力領域
800 削減工数表示画面
801 自動化スコア
802 テーブルに関する削減量
803 APIに関する削減量
804 モジュールに関する削減量
805 フロントエンドに関する削減量
Claims (20)
- ソフトウェアのソースコード生成を支援するための方法であって、
装置が、端末から、複数のテーブルについてのテーブル定義及びAPI定義を受信するステップであって、前記テーブル定義は、前記ソフトウェアのユーザーの基本情報に関するユーザーテーブルを含むステップと、
前記装置が、前記端末から、ソースコード生成の要求を受信するステップと、
前記装置が、前記要求の受信に応じて、予め作成されたソースコードの1又は複数のテンプレートを取得して、前記テーブル定義及び前記API定義に従ったソースコードを前記1又は複数のテンプレートを用いて生成するステップと
を含む。 - 請求項1に記載の方法であって、
前記テーブル定義は、前記ユーザーテーブルの各レコードに含まれるユーザー識別子により識別されるユーザーに対してユーザー認証を行うことの指定を含む。 - 請求項1に記載の方法であって、
前記テーブル定義は、前記ユーザーテーブルが有する複数のカラムのうちの前記ユーザー認証に用いるカラムの特定を含む。 - 請求項3に記載の方法であって、
前記特定されたカラムの値は、電話番号である。 - 請求項2から4のいずれかに記載の方法であって、
前記1又は複数のテンプレートは、ユーザー認証のための第1のテンプレートを含む。 - 請求項1に記載の方法であって、
前記API定義は、各テーブルについて、レコードの表示、生成、更新及び削除のうちの少なくとも一部を実行するための1又は複数のAPIの作成の指定を含む。 - 請求項6に記載の方法であって、
前記API定義は、いずれかのAPIについて、前記ユーザー認証に成功していることを実行の認可の条件とする指定を含む。 - 請求項6に記載の方法であって、
前記API定義は、前記複数のテーブルのうちの前記ユーザーテーブル以外の他のテーブルのレコードの操作を実行するためのAPIを実行する認可条件として、前記APIを実行するユーザーのユーザー認証に成功していることの指定を含む。 - 請求項8に記載の方法であって、
前記API定義は、前記認可条件として、さらに、前記APIの実行対象のレコードを前記APIを実行するユーザー自身に関連するレコードに限定することの指定を含む。 - 請求項7から9のいずれかに記載の方法であって、
前記1又は複数のテンプレートは、前記認可のための第2のテンプレートを含む。 - 請求項1に記載の方法であって、
前記装置が受信した前記テーブル定義の第2の部分は、前記端末から受信した前記テーブル定義の第1の部分に応じて、前記装置が生成して、前記端末に送信したものである。 - 請求項11に記載の方法であって、
前記第1の部分は、前記ソフトウェアの利用料金の支払いを可能とする指定を含み、
前記第2の部分は、前記利用料金の支払いに関するペイメントテーブルが有する複数のカラムの定義、及び、前記ユーザーテーブルが有する前記ペイメントテーブルとのリレーションの定義を含む。 - 請求項11に記載の方法であって、
前記第1の部分は、前記ユーザーテーブル以外の他のテーブルが有する前記ユーザーテーブルとのリレーションの定義を含み、
前記第2の部分は、前記他のテーブルが有する前記ユーザーテーブルに関連づけられたカラムの定義を含む。 - 請求項1に記載の方法であって、
前記装置が、前記端末に、前記1又は複数のテンプレートを用いることで自動化されたプログラミング工程に応じた作業量の削減量若しくは削減率又は前記削減量に応じた削減費用の額若しくは率を送信するステップをさらに含む。 - 請求項14に記載の方法であって、
前記作業量は、時間又は時間に係数を乗じた値である。 - 請求項14に記載の方法であって、
前記削減量又は前記削減率は、前記プログラミング工程の種類ごとに算出される。 - 請求項14に記載の方法であって、
前記ソースコードは、複数のコード部分を含み、
前記複数のコード部分は、API定義に従ったAPIコードと、前記ソフトウェアのユーザーインターフェースに対する入力に応じて前記APIコードのうちの少なくとも一部を呼び出すためのコードを含むユーザーインターフェースコードとを含み、
前記削減量又は前記削減率は、前記複数の部分のそれぞれについて算出される。 - 請求項1に記載の方法であって、
前記装置は、インターネット上のサーバである。 - 装置に、ソフトウェアのソースコード生成を支援するための方法を実行させるためのプログラムであって、前記方法は、
前記装置が、端末から、複数のテーブルについてのテーブル定義及びAPI定義を受信するステップであって、前記テーブル定義は、前記ソフトウェアのユーザーの基本情報に関するユーザーテーブルを含むステップと、
前記装置が、前記端末から、ソースコード生成の要求を受信するステップと、
前記装置が、前記要求の受信に応じて、予め作成されたソースコードの1又は複数のテンプレートを取得して、前記テーブル定義及び前記API定義に従ったソースコードを前記1又は複数のテンプレートを用いて生成するステップと
を含む。 - ソフトウェアのソースコード生成を支援するための装置であって、
端末から、複数のテーブルについてのテーブル定義であって、前記ソフトウェアのユーザーの基本情報に関するユーザーテーブルを含むテーブル定義及びAPI定義を受信し、
前記端末から、ソースコード生成の要求を受信し、
前記要求の受信に応じて、予め作成されたソースコードの1又は複数のテンプレートを取得して、前記テーブル定義及び前記API定義に従ったソースコードを前記1又は複数のテンプレートを用いて生成する。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2022/031853 WO2023027101A1 (ja) | 2021-08-24 | 2022-08-24 | ソフトウェアのソースコード生成を支援するための装置、方法及びそのためのプログラム |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021136003 | 2021-08-24 | ||
JP2021136003 | 2021-08-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023031251A true JP2023031251A (ja) | 2023-03-08 |
Family
ID=85414011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022112819A Pending JP2023031251A (ja) | 2021-08-24 | 2022-07-14 | ソフトウェアのソースコード生成を支援するための装置、方法及びそのためのプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023031251A (ja) |
-
2022
- 2022-07-14 JP JP2022112819A patent/JP2023031251A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9807044B2 (en) | Selective communication of messages | |
CN109032663A (zh) | 接口文档的生成方法、装置、计算机设备及存储介质 | |
JP2014513826A (ja) | コンピュータシステム、データベース及びそれらの使用 | |
US20170295217A1 (en) | Method and system of application development for multiple device client platforms | |
CN108038665B (zh) | 业务规则管理方法、装置、设备及计算机可读存储介质 | |
US8768949B2 (en) | Document management user interface with user customized application functionalities | |
EP3497640A1 (en) | Contract management system, apparatus, and method | |
JP6428330B2 (ja) | 申請管理装置、申請管理システム、及びプログラム | |
JP5050371B2 (ja) | 操作記録再現装置およびプログラム | |
JP2024504131A (ja) | 非同期分散モジュラ関数呼び出し | |
JP7129578B1 (ja) | ソフトウェアのソースコード生成を支援するための装置、方法及びそのためのプログラム | |
CN102004729A (zh) | 一种网站网页的展现方法、系统及网站服务器 | |
US10432700B2 (en) | Conversation connected visualization of items based on a user created list | |
WO2023027101A1 (ja) | ソフトウェアのソースコード生成を支援するための装置、方法及びそのためのプログラム | |
JP2023031251A (ja) | ソフトウェアのソースコード生成を支援するための装置、方法及びそのためのプログラム | |
JP2023162073A (ja) | 企業における複数のアプリケーションの利用を管理するための装置、方法及びそのためのプログラム | |
CN114385158A (zh) | 一种数据交互系统构建方法、装置及设备 | |
JP2002230148A (ja) | トラブル情報管理プログラム及びトラブル情報管理方法 | |
CN113379375A (zh) | 一种以聊天形式引导签约的方法、装置及电子设备 | |
JP5651873B2 (ja) | 操作支援方法及び計算機 | |
JP2012128533A (ja) | 情報処理システム、情報処理装置、その制御方法及びプログラム | |
JP2001005748A (ja) | 共用のデータ表示装置及び記憶媒体 | |
JP2001134681A (ja) | 電子帳票の処理方法、定義方法、電子帳票の処理プログラムを格納した記憶媒体、電子帳票の定義プログラムを格納した記憶媒体、及び電子帳票システム | |
JP2020009169A (ja) | 注釈の付与を支援するための情報処理システム及びプログラム | |
JP2001318888A (ja) | 計算システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AA64 | Notification of invalidation of claim of internal priority (with term) |
Free format text: JAPANESE INTERMEDIATE CODE: A241764 Effective date: 20220805 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220812 |