WO2021090890A1 - ソフトウェア作成装置、ソフトウェア作成方法、およびプログラム - Google Patents

ソフトウェア作成装置、ソフトウェア作成方法、およびプログラム Download PDF

Info

Publication number
WO2021090890A1
WO2021090890A1 PCT/JP2020/041384 JP2020041384W WO2021090890A1 WO 2021090890 A1 WO2021090890 A1 WO 2021090890A1 JP 2020041384 W JP2020041384 W JP 2020041384W WO 2021090890 A1 WO2021090890 A1 WO 2021090890A1
Authority
WO
WIPO (PCT)
Prior art keywords
software
reinforcement learning
software creation
creation device
creating
Prior art date
Application number
PCT/JP2020/041384
Other languages
English (en)
French (fr)
Inventor
落合 俊彦
Original Assignee
大日本印刷株式会社
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 大日本印刷株式会社 filed Critical 大日本印刷株式会社
Priority to JP2021555108A priority Critical patent/JP7231056B2/ja
Priority to CN202080029735.0A priority patent/CN113767363B/zh
Priority to US17/608,694 priority patent/US11733976B2/en
Publication of WO2021090890A1 publication Critical patent/WO2021090890A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Definitions

  • the present invention relates to a software creation device for creating software, a software creation method, and a program thereof.
  • the ID photo machine outputs printed matter such as ID photo by a series of processes such as selection of photo type such as resume and passport, user's photography, adjustment of photographed image, billing, and printing (see, for example, Patent Document 1). ..
  • control device in the ID photo machine executes the software related to these series of processes to control the equipment of the ID photo machine.
  • this software is pre-created by a human programmer.
  • the present invention has been made in view of the above problems, and an object of the present invention is to provide a software creation device or the like that can save labor in software creation.
  • the first invention for solving the above-mentioned problems is a storage means for holding a plurality of basic modules that execute each of a plurality of processes, and the plurality of processes by performing reinforcement learning using the basic modules. It is a software creation device characterized by having a software creation means for creating software for continuously performing the above steps by combining the basic modules.
  • the software creation device of the present invention is AI (Artificial).
  • AI Artificial
  • reinforcement learning which is a method of Intelligence
  • the reinforcement learning used for creating the software is deep reinforcement learning.
  • deep reinforcement learning that uses deep learning techniques to express behavioral value functions in reinforcement learning, it is possible to efficiently create high-quality software from a large number of basic modules.
  • the software creation device further has an input receiving means for receiving input of the required specifications of the software when creating the software.
  • the requirement specification includes any of the inputs and outputs in the software, the device driver used in the software, and the arithmetic processing module used in the software. This makes it possible to create software according to the required specifications.
  • the required specifications are the above input and output, device driver, arithmetic processing module, etc., and software can be created according to these specifications.
  • the input receiving means accepts re-input of the required specifications when the software cannot be created. If the required specifications initially entered are insufficient, it may not be possible to create software in the direction of divergence of the learning results. In the present invention, the required specifications can be re-input in such a case, and the software can be created again.
  • the software creating means creates the software using the basic module corresponding to the set programming language or the development environment. It is also desirable to do. This makes it possible to create software according to the set programming language and development environment.
  • the software controls the device, for example, and operates a predetermined control program for the device in the device.
  • This makes it possible to create software for controlling devices such as ID photo machines, and it is possible to operate a device control program by the software to realize a predetermined function.
  • the control program is an existing one defined for the device, and the software creation device does not create the control program.
  • the software creation device may further have a basic module creating means for creating the basic module by a combination of the instructions by performing reinforcement learning using a plurality of instructions. It is desirable that the reinforcement learning used for creating the basic module is deep reinforcement learning.
  • the basic module used for creating software is, for example, created in advance by a programmer, but if it is simple, it can be created by combining instructions by reinforcement learning, and software creation can be further labor-saving. In this case as well, by using deep reinforcement learning, it is possible to efficiently create a high-quality basic module.
  • the reward in reinforcement learning includes the amount of code, processing time, or the number of bugs. This makes it possible to create software and basic modules with a small amount of code, processing time, number of bugs, etc.
  • the reward in reinforcement learning at the time of software creation includes an evaluation value based on the number of bugs and the importance of bugs when debugging the combination of the basic modules. This allows you to create software that is free of serious bugs. Also, in the past, people debug for bugs at the programming stage, but the time required for debugging can also be reduced.
  • a memory area for operating the combination of the basic modules is constructed on the virtual memory in order to obtain a reward in reinforcement learning, and the memory area is protected. As a result, even if the combination of basic modules malfunctions when calculating the reward, other memory areas related to software creation are not destroyed.
  • the storage means hold a plurality of basic modules that are written in different programming languages but become the same when converted to machine language. This makes it possible to make the software creation process compatible with various programming languages.
  • the software creation means create a source code in which the program of the software is described in a programming language. It is also desirable that the software creating means create a program of the software in machine language and the source code. By creating a source code written in a programming language that can be read by humans as a result of the software creation process, the contents of the software can be confirmed by humans, which is preferable from the viewpoint of security and reliability.
  • This source code is provided, for example, with an executable machine language program.
  • the second invention is software in which a computer having a storage means holding a plurality of basic modules that execute each of a plurality of processes continuously performs the plurality of processes by performing reinforcement learning using the basic modules.
  • a software creation method characterized in that is created by combining the basic modules.
  • the third invention is software that continuously performs the plurality of processes by performing reinforcement learning using the basic modules on a computer having a storage means holding a plurality of basic modules that execute each of the plurality of processes.
  • the device controlled by the software is an ID photo machine or a box-type photography device.
  • FIG. 1 is a diagram showing a hardware configuration of the software creation device 1 according to the embodiment of the present invention.
  • the software creation device 1 is for creating software, and is realized by a computer configured by connecting a control unit 11, a storage unit 12, an input unit 13, a display unit 14, and a communication control unit 15 by a bus 16. it can.
  • the software creation device 1 is not limited to this, and various configurations can be appropriately taken.
  • the control unit 11 is composed of a CPU, ROM, RAM, and the like.
  • the CPU calls and executes a program related to the processing of the software creation device 1 stored in the storage medium such as the storage unit 12 and the ROM in the work area on the RAM.
  • ROM is a non-volatile memory that permanently holds programs such as boot programs and BIOS, and data.
  • the RAM is a volatile memory, and includes a work area used by the control unit 11 to perform various processes while temporarily holding programs and data loaded from the storage unit 12, ROM, and the like.
  • the storage unit 12 is a hard disk drive, a solid state drive, a flash memory, etc., and stores a program executed by the control unit 11, data necessary for program execution, an OS, and the like. These programs and data are read out and executed by the control unit 11 as needed.
  • the input unit 13 inputs various settings to the software creation device 1.
  • the display unit 14 is, for example, a liquid crystal display or the like.
  • the communication control unit 15 is a communication interface that mediates communication via a network or the like.
  • the bus 16 is a path that mediates the transfer of control signals, data signals, and the like between each part of the software creation device 1.
  • FIG. 2 is a diagram showing a functional configuration of the software creation device 1.
  • the software creating device 1 includes a storage means 101, an input receiving means 102, a setting receiving means 103, a software creating means 104, a basic module creating means 105, and the like.
  • the storage means 101 corresponds to the storage unit 12 and holds a plurality of basic modules from which software is created as its own library.
  • the basic module will be described later.
  • the control unit 11 of the software creating device 1 receives an input by a user of the required specifications of the software when creating the software.
  • the software creation device 1 creates software using the input required specifications.
  • the input required specifications are insufficient and the software cannot be created, the re-entry of the required specifications is accepted.
  • the required specifications will be described later.
  • the control unit 11 of the software creation device 1 accepts the user's settings regarding the programming language and the development environment when creating the software.
  • the software creation device 1 creates software using a basic module corresponding to a set programming language and development environment.
  • the software creation means 104 creates software by the control unit 11 of the software creation device 1 performing reinforcement learning using the above-mentioned basic module.
  • deep reinforcement learning using a deep learning method is used to express an action value function or the like in reinforcement learning.
  • the basic module creating means 105 is created by the control unit 11 of the software creating device 1 by performing reinforcement learning on the basic module by using a plurality of instructions.
  • the above-mentioned deep reinforcement learning can be performed even when the basic module is created.
  • the software creation device 1 of the present embodiment creates software for controlling the device, and the storage unit 12 of the software creation device 1 executes each of a plurality of processes A to E in the device as shown in FIG. It is assumed that a plurality of basic modules to be used are stored in advance as a library. These plurality of processes A to E are continuously executed in the device, and an example of the device is an ID photo machine described later.
  • These basic modules are existing ones created by the programmer in advance in order to execute individual processes, and are stored in the storage unit 12 in association with the programming language used at the time of creation and the development environment.
  • the basic modules A1, A2, A3, A4, and A5 are multiple basic modules that realize the same processing called [Processing A], but depending on who created them, what programming language and development environment they used, etc. The content is different.
  • the method of inputting the basic module into the software creation device 1 is not particularly limited, and each basic module may be input individually, or the software that performs a series of processes A to E created by the programmer is input to the software creation device 1. You may input and the software creation apparatus 1 may extract the basic module which performs each process from the input software.
  • FIG. 4 is a flowchart showing a software creation method, and each step of FIG. 4 is executed by the control unit 11 of the software creation device 1.
  • the software creation device 1 first displays an input screen (not shown) on the display unit 14, and the user inputs the required specifications on the input screen.
  • the software creation device 1 accepts the input of the required specifications (S1).
  • the required specifications correspond to the software to be created, and include, for example, at least one of the input and output of the software, the device driver used by the software, and the arithmetic processing module used by the software. These are those that the software creation device 1 does not program by itself.
  • inputs and outputs are information regarding definitions of inputs and outputs in a series of processes performed by software.
  • the device driver is the driver software for the device in the device, and the device control program is executed by the driver software input as the required specifications in S1.
  • the software creation device 1 of the present embodiment does not create this control program, and the software operates a predetermined control program for the devices in the device.
  • the arithmetic processing module is a program module for arithmetic processing used by software. For example, an addition / subtraction / multiplication / division calculation program that outputs an area in millimeters when a length in inches in length and width is input, and two face images. Includes an image processing program that outputs the judgment result of whether or not they are the same person when inputting.
  • the arithmetic processing module is provided as a library such as DLL (Dynamic Link Library), SDK (Software Development Kit), or as a module as it is, and the specified arithmetic processing module is used as it is without being modified by software.
  • the arithmetic processing module and the setting file in which the input and output thereof are defined may be registered in advance, and the setting file may be specified.
  • the arithmetic processing module as shown in FIG. 5 may be specified.
  • the designation screen 100 may be displayed on the display unit 14, and the arithmetic processing module and its input and output may be specified in the module designation field 110, the input item designation field 120, and the output item designation field 130.
  • the registration button 140 is pressed.
  • the software creation device 1 displays a setting screen (not shown) on the display unit 14, and the user sets the programming language and the development environment on the setting screen.
  • the software creation device 1 accepts settings of a programming language and a development environment (S2).
  • the programming language is the programming language used in the basic modules used to create software.
  • the development environment is the development environment used when the basic module is created.
  • the development environment is software for inputting source code, debugging, processing such as a compiler, and is also called an IDE (Integrated Development Environment).
  • An example of a development environment is Visual Studio.
  • the software creation device 1 When these inputs and settings are made, the software creation device 1 performs reinforcement learning using the basic module held in the storage unit 12, and thereby performs the software for continuously performing the plurality of processes described above by combining the basic modules. Create (S3).
  • the software creation device 1 extracts a basic module corresponding to the programming language and development environment set in S2 from, for example, the basic module held in the storage unit 12, and enhances it by using the extracted basic module. Perform learning, especially deep reinforcement learning.
  • deep reinforcement learning a deep learning method is used to express behavioral value functions and the like in reinforcement learning.
  • Reinforcement learning and deep reinforcement learning are known methods, and thus description thereof will be omitted.
  • which basic module the software creation device 1 executes for each of the processes A to E and the processes A to E are used. Select the order in which to execute, and create a combination of basic modules that perform these series of processes.
  • FIG. 6 (a) shows an example in which a combination for executing the basic modules A5, B1, C1, D2, and E4 in this order is created
  • FIG. 6 (b) shows [Process D] in FIG. 6 (a).
  • This is an example in which a combination is created in which the basic modules A5, D2, B1, C1, and E4 are executed in this order, which is to be performed immediately after the process A].
  • the arithmetic processing module (arithmetic processing module A in the example of the figure) input as the required specification in S1 is operated after the processing C, and the device driver (driver A in the example of the figure) is [processed]. It is supposed to be operated at the end of a series of processes after [E], but it is not limited to this.
  • the software creation device 1 operates the combination of the basic modules created as described above, and obtains a reward in reinforcement learning (deep reinforcement learning) from the result or the like.
  • the reward shall include, but is not limited to, at least one of the code amount, processing time, and number of bugs of the created basic module combination. For example, whether the series of processes can be completed without any problem may be included in the reward.
  • the amount of code is, for example, the number of lines in the program, but is not limited to this.
  • the memory area for operating the combination of basic modules when seeking a reward is assumed to be built on the virtual memory managed by the software creation device 1, and the malfunction destroys other memory areas related to software creation. It is desirable to be protected so that it does not occur.
  • the requirement specifications input in S1 are used for setting various functions used in reinforcement learning (deep reinforcement learning), creating and executing combinations of basic modules, and the like. However, it is also possible that the input required specifications are insufficient and the learning result tends to diverge, making it impossible to create software. In such a case, the software creation device 1 displays a re-entry screen (not shown) of the required specifications, prompts the user to correct, expand, and maintain the required specifications, and accepts the re-entry of the required specifications. It may be. As a result, when the originally input required specifications are insufficient, the required specifications can be re-input and the software can be created again.
  • the software creation device 1 may create a basic module, which further saves labor in software creation.
  • the basic module can be created by reinforcement learning as described above, and for example, a combination of instructions that maximizes the reward can be output as the basic module by using a plurality of preset instructions.
  • the reinforcement learning deep reinforcement learning can be used as described above, and the reward can include at least one of the code amount, the processing time, and the number of bugs as described above.
  • the software creation device 1 holds the created basic modules together with the basic modules created by the programmer as a library in the storage unit 12, and can create software using these basic modules in S3. The above is the same for the above-mentioned arithmetic processing module, and the software creation device 1 can create the arithmetic processing module by itself, and can use the arithmetic processing module in the software.
  • FIG. 7 is a diagram showing an ID photo machine 2 which is an example of a device controlled by software created by the software creation device 1
  • FIG. 8 is a diagram showing a hardware configuration of the ID photo machine 2.
  • the ID photo machine 2 is, for example, a box-type photographing device installed on the street, which takes a picture of a user and prints the image as an ID photo.
  • the ID photo machine 2 includes a control device 20, a display unit 21, a billing unit 22, a photographing unit 23, a lighting 24, a printer 25, and the like.
  • the control device 20 is provided inside the ID photo machine 2, and by executing the software created by the software creation device 1, the process described later in the ID photo machine 2 is performed.
  • the control device 20 for example, a computer including a control unit, a storage unit, an input unit, a communication unit, and the like is used.
  • the display unit 21 is realized by a display with a touch panel or the like that also serves as an input unit of the ID photo machine 2.
  • the display unit 21 displays various screens related to the user's operation and selection, and accepts the user's instruction input and the like by the touch panel operation on the screen.
  • the billing unit 22 is provided with a coin / banknote slot, a change return slot, a receipt outlet, a receipt printer, etc. (not shown), and manages billing and issuance of receipts from users.
  • the shooting unit 23 is provided with a camera or the like inside the shooting window.
  • a camera or the like inside the shooting window.
  • a high-resolution digital camera is used as the camera, but the camera is not limited to this.
  • the lighting 24 is a lighting that illuminates the entire inside of the box of the ID photo machine 2.
  • the illumination 24 is, for example, a surface light source that irradiates white light, and is provided above the photographing unit 23, but is not limited to this.
  • a strobe light source is also provided in the box of the ID photo machine 2 for a flash at the time of shooting.
  • the printer 25 prints an image on paper and is provided inside the ID photo machine 2.
  • the printed matter on which the image is printed is discharged to the printed matter outlet (not shown).
  • the method of the printer 25 and the number of installed printers are not particularly limited.
  • FIG. 9 is a flowchart showing an outline of the processing of the ID photo machine 2. Each step in FIG. 9 is executed by the control device 20 controlling each part of the ID photo machine 2.
  • the ID photo machine 2 displays the photo type on the selection screen (not shown) displayed on the display unit 21 so that the photo type can be selected by the user. After accepting the selection of (S21), the user starts shooting (S22).
  • a photo type is a type of photo according to the purpose, such as a resume or a passport.
  • the ID photo machine 2 adjusts (image processing) the photographed image of the user according to the photo type selected in S1 (S23), and displays a billing screen for prompting the user to bill on the display unit 21.
  • the ID photo machine 2 accepts the user's charge by the charge unit 22 (S24), the ID photo machine 2 prints the adjusted image according to the photo type (S25).
  • the basic modules A1, A2, A3, A4, and A5 are partial programs for executing [A; selection of photo type], respectively.
  • a photo type selection screen is displayed on the display unit 21 of the certification camera 2. Is displayed, and the selection of the photo type is accepted according to the user's touch operation on the selection screen.
  • the basic modules B1, B2, B3, B4, and B5 are partial programs for executing [B; user's shooting], respectively. For example, a guidance screen for shooting is displayed on the display unit 21 of the ID photo machine 2. Then, the user takes a picture under the control of the shooting unit 23 and the lighting 24.
  • the basic modules C1, C2, C3, C4, and C5 are partial programs for executing [C; adjustment of captured image], respectively.
  • image processing on the captured image of the user depends on the selected photo type. Do. That is, the image size of the ID photo differs depending on the photo type such as resume and passport, and the basic modules C1, C2, C3, C4, and C5 perform image processing such as changing the image size according to the difference in these photo types. I do.
  • the basic modules D1, D2, D3, D4, and D5 are partial programs for executing [D; billing], respectively.
  • the display unit 21 of the certification camera 2 displays a billing screen for prompting billing. , Detects that billing has been performed correctly under the control of the billing unit 22.
  • the basic modules E1, E2, E3, E4, and E5 are partial programs for executing [E; print], respectively, for example, controlling the printer 25 of the certification photo booth 2 and following the selected photo type. By performing a printing operation on paper or a cutting operation of paper, a photographed image is printed and discharged as a printed matter.
  • Software for controlling the device of the ID photo machine 2 can be created using these basic modules as described in FIG. 4 and the like.
  • the software creation device 1 selects the basic modules for the processes A to E in FIG. 10, and rewards (evaluates) the combination of the selected basic modules. Ask as you did.
  • the reward is simple, for example, the above-mentioned code amount and the number of bugs, and the smaller the total code amount and the number of bugs, the higher the reward.
  • the software creation device 1 repeats the selection of the basic module and the calculation of the reward as described above while changing the basic module to be selected for each of the processes A to E (an example is shown by the chain line arrow in FIG. 10), and trial and error is performed.
  • the selection rule of the basic module that maximizes the reward by doing it (for example, selecting the basic module B2 after the basic module A1. Also called “policy" in the strengthening learning) is sought.
  • polyicy in the strengthening learning
  • By making a selection according to this selection rule it is possible to create software that continuously performs processes A to E.
  • the above method is known as reinforcement learning, including a method for creating a specific selection rule.
  • the input input as the required specification in S1
  • condition definitions such as "accept the selection of the photograph type” and “adjust the photographed image taken by the user”
  • the example of the output examples include definitions of the operation of the proof camera 2 such as "transferring an image to a printer for printing” and “collecting a fee”.
  • the input and output may be a program executed before and after the operation of the software.
  • the device driver input as the required specifications in S1 is, for example, driver software used in the display unit 21, the photographing unit 23, the printer 25, etc., and these are not only the end of the processing by the software but also the processing as described above. It is also used on the way.
  • the software creation device 1 of the present embodiment can create software that executes a series of processes by combining existing basic modules using reinforcement learning, which is a method of AI. This makes it possible to save labor in software creation and to create software of a certain quality. In this embodiment, particularly by using deep reinforcement learning, it is possible to efficiently create high-quality software from a large number of basic modules.
  • the required specifications are inputs and outputs in the software, device drivers used in the software, arithmetic processing modules, and the like, and in the present embodiment, software can be created according to these specifications.
  • the software can be created again by accepting the re-entry of the requirement specifications. ..
  • the software created in the present embodiment controls the device such as the ID photo machine 2, and it is possible to operate the control program of the device in the device to realize a predetermined function.
  • the control program is an existing one defined for the device, and the software creation device 1 does not create the control program. It is also possible to create software that does not control the device (for example, software that performs only calculations) by the method of this embodiment. In that case, the operation of the device control program is unnecessary and the software creation process is easier. Become.
  • the present invention is not limited to this.
  • the reward for reinforcement learning is not limited to the above, but when creating software, debugging is executed under various conditions using a predetermined evaluation program for the combination of basic modules, and the number of bugs detected at that time It is also possible to reward the evaluation value based on the severity (severity) of each bug.
  • the evaluation value can be obtained, for example, by adding the importance of each bug detected, but the evaluation value is not limited to this.
  • the importance of a bug should be determined based on the severity of the impact of the bug (for example, the bug makes it impossible to execute the process itself, the process can be processed, but the bug results in an incorrect process result, etc.) and the frequency of occurrence. This allows you to create software that is free of serious bugs. Also, in the past, people debug for bugs at the programming stage, but the time required for debugging can also be reduced.
  • the software creation device 1 converts the basic module described in the programming language set in S2 into machine language and executes it, and the software created in S3 is the program. May be written in machine language.
  • the software creation device 1 converts a basic module written in a certain programming language into a machine language, and by converting it back into various programming languages, it is written in a different programming language but is converted into a machine language. It is also possible to create multiple basic modules that are the same. By storing these as a library in the storage unit 12, the software creation process can be made compatible with various programming languages.
  • Software creation device 2 ID photo machine 101: Storage means 102: Input reception means 103: Setting reception means 104: Software creation means 105: Basic module creation means A1 to A5, B1 to B5, C1 to C5, D1 to D5 , E1-E5: Basic module

Landscapes

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

Abstract

本発明は、ソフトウェアの作成を省力化できるソフトウェア作成装置等を提供するものである。本発明に係るソフトウェア作成装置1は、証明写真機等の機器を制御するソフトウェアを作成する。ソフトウェア作成装置1は、複数の処理のそれぞれを実行する複数の基本モジュールを記憶する記憶手段101、基本モジュールを用いて深層強化学習を行うことで、証明写真機等の機器における複数の処理を続けて行うソフトウェアを基本モジュールの組合せにより作成するソフトウェア作成手段104等を有する。

Description

ソフトウェア作成装置、ソフトウェア作成方法、およびプログラム
 本発明は、ソフトウェアを作成するためのソフトウェア作成装置、ソフトウェア作成方法およびそのプログラムに関する。
 証明写真機では、履歴書やパスポートなどの写真種の選択、ユーザの撮影、撮影画像の調整、課金、プリントといった一連の処理により証明写真等のプリント物を出力する(例えば、特許文献1参照)。
 この際、証明写真機中の制御装置はこれら一連の処理に係るソフトウェアを実行し、証明写真機の機器制御を行う。通常、このソフトウェアは人であるプログラマーが予め作成している。
特開2019-008169号公報
 しかしながら、従来このようなソフトウェアの作成は人が行っていたので時間がかかっていた。また人によってどのようなプログラミングを行うかは異なるので、完成したソフトウェアの品質が異なってしまう場合もあった。
 本発明は上記の問題に鑑みてなされたものであり、ソフトウェアの作成を省力化できるソフトウェア作成装置等を提供することを目的とする。
 前述した課題を解決するための第1の発明は、複数の処理のそれぞれを実行する複数の基本モジュールを保持する記憶手段と、前記基本モジュールを用いて強化学習を行うことで、前記複数の処理を続けて行うソフトウェアを前記基本モジュールの組合せにより作成するソフトウェア作成手段と、を有することを特徴とするソフトウェア作成装置である。
 本発明のソフトウェア作成装置は、AI(Artificial
Intelligence)の一手法である強化学習を用い、既存の基本モジュールを組み合わせて一連の処理を実行するソフトウェアを作成することができる。これによりソフトウェア作成の省力化が可能になり、また一定の品質のソフトウェアを作成できる。
 前記ソフトウェアの作成に用いる強化学習は、深層強化学習であることが望ましい。
 強化学習における行動価値関数等の表現にディープラーニングの手法を利用した深層強化学習を用いることで、高い品質のソフトウェアを多数の基本モジュールから効率良く作成することが可能になる。
 前記ソフトウェア作成装置は、前記ソフトウェアの作成に際し前記ソフトウェアの要求仕様の入力を受け付ける入力受付手段を更に有することが望ましい。例えば、前記要求仕様は、前記ソフトウェアにおけるインプットおよびアウトプット、前記ソフトウェアにおいて使用されるデバイスドライバ、前記ソフトウェアにおいて使用される演算処理モジュールのいずれかを含む。
 これにより、要求仕様に従ったソフトウェアの作成が可能になる。要求仕様は上記のインプットおよびアウトプット、デバイスドライバ、演算処理モジュールなどであり、これらの指定に従ったソフトウェアを作成できる。
 前記入力受付手段は、前記ソフトウェアの作成を行うことができなかった場合に、前記要求仕様の再入力の受付を行うことも望ましい。
 当初入力した要求仕様が不十分であった場合、学習結果が発散方向に向かってソフトウェアの作成を行うことのできない場合がある。本発明ではそのようなケースで要求仕様の再入力を行い、改めてソフトウェアの作成を行うことができる。
 前記ソフトウェアの作成に際しプログラミング言語または開発環境の設定を受け付ける設定受付手段を更に有し、前記ソフトウェア作成手段は、設定された前記プログラミング言語または開発環境に対応する前記基本モジュールを用いて前記ソフトウェアの作成を行うことも望ましい。
 これにより、設定されたプログラミング言語や開発環境に従ったソフトウェアの作成を行うことができる。
 前記ソフトウェアは例えば機器制御を行うものであり、機器中のデバイスについて予め定められた制御プログラムを動作させる。
 これにより、証明写真機などの機器制御を行うソフトウェアの作成が可能になり、ソフトウェアによりデバイスの制御プログラムを動作させて所定の機能を実現することが可能になる。この場合、制御プログラムはそのデバイスについて定められた既存のものであり、ソフトウェア作成装置は制御プログラムの作成は行わない。
 前記ソフトウェア作成装置は、複数の命令を用いて強化学習を行うことで、前記基本モジュールを前記命令の組合せにより作成する基本モジュール作成手段を更に有してもよい。前記基本モジュールの作成に用いる強化学習は、深層強化学習であることが望ましい。
 ソフトウェアの作成に用いる基本モジュールは例えばプログラマーが予め作成したものであるが、簡単なものであれば強化学習により命令を組み合わせて作成することもでき、ソフトウェアの作成をさらに省力化できる。この場合も深層強化学習を用いることで、高い品質の基本モジュールを効率良く作成することが可能になる。
 強化学習における報酬が、コード量、処理時間、バグ数のいずれかを含むことが望ましい。
 これにより、コード量、処理時間、バグ数等の少ないソフトウェアや基本モジュールを作成できる。
 ソフトウェア作成時の強化学習における報酬が、前記基本モジュールの組合せに対してデバッグを行った際のバグ数とバグの重要度に基づく評価値を含むことも望ましい。
 これにより、重大なバグのないソフトウェアを作成できる。また従来はプログラミング段階でバグが無いかどうか人がデバッグを行うが、デバッグに必要な時間も削減できる。
 また、強化学習において報酬を求めるために前記基本モジュールの組合せを動作させるメモリ領域が仮想メモリ上に構築され、前記メモリ領域がプロテクトされることが望ましい。
 これにより、報酬算出時に基本モジュールの組合せが誤動作しても、ソフトウェアの作成に係る他のメモリ領域を壊すことが無くなる。
 前記記憶手段は、異なるプログラミング言語で記述されるが機械語に変換すると同一のものとなる複数の基本モジュールを保持することも望ましい。
 これにより、ソフトウェア作成処理を多様なプログラミング言語に対応させることができる。
 前記ソフトウェア作成手段は、前記ソフトウェアのプログラムをプログラミング言語で記述したソースコードを作成することも望ましい。また、前記ソフトウェア作成手段は、機械語による前記ソフトウェアのプログラムと、前記ソースコードとを作成することも望ましい。
 ソフトウェア作成処理の結果として、人が読めるプログラミング言語で記述したソースコードを作成することにより、ソフトウェアの内容を人が確認できるようになりセキュリティや信頼性の観点から好ましい。このソースコードは、例えば実行形式の機械語によるプログラムとともに提供される。
 第2の発明は、複数の処理のそれぞれを実行する複数の基本モジュールを保持する記憶手段を有するコンピュータが、前記基本モジュールを用いて強化学習を行うことで、前記複数の処理を続けて行うソフトウェアを前記基本モジュールの組合せにより作成することを特徴とするソフトウェア作成方法である。
 第3の発明は、複数の処理のそれぞれを実行する複数の基本モジュールを保持する記憶手段を有するコンピュータを、前記基本モジュールを用いて強化学習を行うことで、前記複数の処理を続けて行うソフトウェアを前記基本モジュールの組合せにより作成するソフトウェア作成手段を有するソフトウェア作成装置として機能させるためのプログラムである。
 また、第1~第3の発明において、前記ソフトウェアで制御する機器が、証明写真機又はボックス型の写真撮影装置であることが望ましい。
 本発明により、ソフトウェアの作成を省力化できるソフトウェア作成装置等を提供できる。
ソフトウェア作成装置1のハードウェア構成を示す図。 ソフトウェア作成装置1の機能構成を示す図。 基本モジュールについて示す図。 ソフトウェア作成方法を示すフローチャート。 演算処理モジュール指定画面100の例。 ソフトウェア作成方法について説明する図。 証明写真機2を示す図。 証明写真機2のハードウェア構成を示す図。 証明写真機2の処理を示すフローチャート。 基本モジュールについて示す図。
 以下、図面に基づいて本発明の好適な実施形態について詳細に説明する。
(1.ソフトウェア作成装置1)
 図1は本発明の実施形態に係るソフトウェア作成装置1のハードウェア構成を示す図である。ソフトウェア作成装置1は、ソフトウェアの作成を行うためのものであり、制御部11、記憶部12、入力部13、表示部14、通信制御部15をバス16により接続して構成されたコンピュータによって実現できる。但し、ソフトウェア作成装置1はこれに限ることなく適宜様々な構成をとることができる。
 制御部11はCPU、ROM、RAMなどから構成される。CPUは、記憶部12、ROMなどの記憶媒体に格納されたソフトウェア作成装置1の処理に係るプログラムをRAM上のワークエリアに呼び出して実行する。ROMは不揮発性メモリであり、ブートプログラムやBIOSなどのプログラム、データなどを恒久的に保持している。RAMは揮発性メモリであり、記憶部12、ROMなどからロードしたプログラムやデータを一時的に保持するとともに、制御部11が各種処理を行うために使用するワークエリアを備える。
 記憶部12はハードディスクドライブやソリッドステートドライブ、フラッシュメモリ等であり、制御部11が実行するプログラム、プログラム実行に必要なデータ、OSなどが格納される。これらのプログラムやデータは、制御部11により必要に応じて読み出され実行される。
 入力部13はソフトウェア作成装置1に各種の設定入力を行うものである。
 表示部14は例えば液晶ディスプレイ等である。
 通信制御部15はネットワーク等を介した通信を媒介する通信インタフェースである。
 バス16は、ソフトウェア作成装置1の各部間の制御信号、データ信号等の授受を媒介する経路である。
 図2はソフトウェア作成装置1の機能構成を示す図である。図2に示すように、ソフトウェア作成装置1は、記憶手段101、入力受付手段102、設定受付手段103、ソフトウェア作成手段104、基本モジュール作成手段105等を有する。
 記憶手段101は、前記の記憶部12に対応し、ソフトウェアを作成する元となる複数の基本モジュールを独自のライブラリとして保持する。基本モジュールについては後述する。
 入力受付手段102は、ソフトウェア作成装置1の制御部11が、ソフトウェアの作成に際しソフトウェアの要求仕様のユーザによる入力を受け付けるものである。ソフトウェア作成装置1は、入力された要求仕様を用いてソフトウェアの作成を行う。また、入力された要求仕様が不十分でソフトウェアの作成を行うことができなかった場合に、要求仕様の再入力の受付を行う。要求仕様については後述する。
 設定受付手段103は、ソフトウェア作成装置1の制御部11が、ソフトウェアの作成に際しプログラミング言語や開発環境についてのユーザによる設定を受け付けるものである。ソフトウェア作成装置1は、設定されたプログラミング言語や開発環境に対応する基本モジュールを用いてソフトウェアの作成を行う。
 ソフトウェア作成手段104は、ソフトウェア作成装置1の制御部11が、前記の基本モジュールを用いて強化学習を行うことでソフトウェアを作成するものである。本実施形態では特に、強化学習における行動価値関数等の表現にディープラーニングの手法を利用した深層強化学習を用いる。
 基本モジュール作成手段105は、ソフトウェア作成装置1の制御部11が、前記の基本モジュールを、複数の命令を用いて強化学習を行うことで自ら作成するものである。本実施形態では、基本モジュールの作成時にも上記の深層強化学習を行うことができる。
(2.基本モジュール)
 本実施形態のソフトウェア作成装置1は機器制御を行うソフトウェアを作成するものとし、ソフトウェア作成装置1の記憶部12には、図3に示すようにその機器における複数の処理A~Eのそれぞれを実行する複数の基本モジュールがライブラリとして予め保持されているものとする。これら複数の処理A~Eはその機器において続けて実行されるものであり、機器の一例として後述する証明写真機が挙げられる。
 これらの基本モジュールは、個々の処理を実行すべく事前にプログラマーが作成していた既存のものであり、作成時に使用したプログラミング言語と開発環境に紐付けて記憶部12に保持される。例えば基本モジュールA1、A2、A3、A4、A5は[処理A]という同じ処理を実現する複数の基本モジュールであるが、誰が作成したか、どのようなプログラミング言語や開発環境を用いたか、等によりその内容は異なっている。
 ソフトウェア作成装置1への基本モジュールの入力方法は特に限定されず、それぞれの基本モジュールを個別に入力してもよいし、プログラマーの作成した一連の処理A~Eを行うソフトウェアをソフトウェア作成装置1に入力し、ソフトウェア作成装置1が、入力されたソフトウェアからそれぞれの処理を行う基本モジュールを抽出してもよい。
(3.ソフトウェア作成方法)
 次に、ソフトウェア作成装置1が行うソフトウェア作成方法について図4等を参照して説明する。図4はソフトウェア作成方法を示すフローチャートであり、図4の各ステップはソフトウェア作成装置1の制御部11が実行する。
 本実施形態ではまずソフトウェア作成装置1が表示部14に入力画面(不図示)を表示し、ユーザは当該入力画面上で要求仕様を入力する。ソフトウェア作成装置1は、要求仕様の入力を受け付ける(S1)。
 要求仕様は作成するソフトウェアに応じたものであり、例えばソフトウェアのインプットおよびアウトプット、ソフトウェアで使用されるデバイスドライバ、ソフトウェアで使用される演算処理モジュールの少なくともいずれかの指定を含む。これらはソフトウェア作成装置1が自身でプログラミングを行わないものである。
 本実施形態において、インプットおよびアウトプットは、ソフトウェアが行う一連の処理における入力と出力の定義に関する情報である。
 デバイスドライバは、機器中のデバイスのドライバソフトであり、S1で要求仕様として入力されたドライバソフトによりデバイスの制御プログラムが実行される。本実施形態のソフトウェア作成装置1はこの制御プログラムの作成は行わず、ソフトウェアは機器中のデバイスについて予め定められた制御プログラムを動作させる。
 演算処理モジュールは、ソフトウェアが使用する演算処理用のプログラムモジュールであり、例えば縦横のインチ単位の長さを入力するとミリメートル単位の面積が出力されるような加減乗除の計算プログラムや、2つの顔画像を入力するとそれらが同一人物かどうかの判定結果を出力するような画像処理プログラムなどを含む。演算処理モジュールは、DLL(Dynamic Link Library)等のライブラリやSDK(Software Development Kit)として、またはそのままモジュールとして提供され、指定された演算処理モジュールはソフトウェアによりそのまま改変せずに使用される。
 演算処理モジュールの指定については、演算処理モジュールおよびその入力と出力を定義した設定ファイルを予め登録しておき、設定ファイルの指定を行うようにしてもよいし、例えば図5のような演算処理モジュール指定画面100を表示部14に表示し、モジュール指定欄110、入力項目指定欄120、出力項目指定欄130にて演算処理モジュールおよびその入力と出力を指定できるようにしてもよい。図5の例ではこれらの指定を行った後登録ボタン140を押下する。
 次に、ソフトウェア作成装置1は、表示部14に設定画面(不図示)を表示し、ユーザは当該設定画面上でプログラミング言語と開発環境の設定を行う。ソフトウェア作成装置1は、プログラミング言語と開発環境の設定を受け付ける(S2)。
 プログラミング言語は、ソフトウェアの作成に用いる基本モジュールで使用されるプログラミング言語である。開発環境は、当該基本モジュールの作成時に使用されている開発環境である。開発環境は、ソースコードの入力、デバッグ、コンパイラ等の処理を行うためのソフトウェアであり、IDE(Integrated Development Environment)などとも呼ばれる。開発環境の例として、例えばVisual Studio等がある。
 これらの入力および設定を行うと、ソフトウェア作成装置1は、記憶部12に保持された基本モジュールを用いて強化学習を行うことで、前記した複数の処理を続けて行うソフトウェアを基本モジュールの組合せにより作成する(S3)。
 S3において、ソフトウェア作成装置1は、例えば記憶部12に保持された基本モジュールの中から、S2で設定されたプログラミング言語と開発環境に対応する基本モジュールを抽出し、抽出した基本モジュールを用いて強化学習、特に深層強化学習を行う。深層強化学習では、強化学習における行動価値関数等の表現にディープラーニングの手法が用いられる。
 強化学習および深層強化学習は既知の手法であるので説明を省略するが、本実施形態では、例えばソフトウェア作成装置1が個々の処理A~Eについてどの基本モジュールを実行するかや、処理A~Eをどの順で実行するかについて選択を行い、これら一連の処理を行う基本モジュールの組合せを作成する。
 図6(a)は基本モジュールA5、B1、C1、D2、E4をこの順で実行する組合せが作成された例であり、図6(b)は図6(a)において[処理D]を[処理A]の直後に行うものとし、基本モジュールA5、D2、B1、C1、E4をこの順で実行する組合せが作成された例である。なお、図6の例ではS1で要求仕様として入力された演算処理モジュール(図の例では演算処理モジュールA)を処理Cの後で動作させ、デバイスドライバ(図の例ではドライバA)を[処理E]の後で一連の処理の最後に動作させるものとしているが、これに限ることはない。
 ソフトウェア作成装置1は、上記のように作成した基本モジュールの組合せを動作させ、その結果などから強化学習(深層強化学習)における報酬を求める。報酬は、作成した基本モジュールの組合せのコード量、処理時間、バグ数の少なくともいずれかを含むものとするが、これに限らない。例えば一連の処理が問題なく完了するか、等を報酬に含めてもよい。またコード量は例えばプログラムの行数とするが、これに限ることもない。
 なお、報酬を求める際に基本モジュールの組合せを動作させるメモリ領域は、ソフトウェア作成装置1が管理する仮想メモリ上に構築されるものとし、その誤動作によってソフトウェアの作成に係る他のメモリ領域が壊されることが無いようにプロテクトされることが望ましい。
 強化学習(深層強化学習)では、以上の試行を多数回繰り返し、報酬を最大化できる基本モジュールの選択ルールを作成・更新し、そのルールに従って報酬を最大化できるように基本モジュールを組合せ、ソフトウェアとして出力する。こうしてS3におけるソフトウェアの作成が行われる。
 S1で入力された要求仕様は、強化学習(深層強化学習)で使用する諸関数の設定、基本モジュールの組合せの作成や実行等に用いられる。ただし、入力された要求仕様が不十分で学習結果が発散方向に向かいソフトウェアが作成できないことも考えられる。ソフトウェア作成装置1は、このようなケースにおいて、要求仕様の再入力画面(不図示)を表示し、ユーザに要求仕様の訂正、拡充、整備を行うことを促して要求仕様の再入力を受付けるようにしてもよい。これにより、当初入力した要求仕様が不十分であった場合に、その再入力を行い、改めてソフトウェアの作成を行うことができる。
 また、簡単な処理であればソフトウェア作成装置1が基本モジュールを作成するようにしてもよく、ソフトウェアの作成をさらに省力化できる。この場合も前記と同様強化学習により基本モジュールを作成でき、例えば予め設定した複数の命令を用い、前記と同様の手順で報酬が最大となる命令の組合せを基本モジュールとして出力できる。強化学習としては前記と同様深層強化学習を用いることができ、報酬は前記と同様、コード量、処理時間、バグ数の少なくともいずれかを含むものとできる。ソフトウェア作成装置1は、作成した基本モジュールをプログラマーの作成した基本モジュールとともに記憶部12にライブラリとして保持し、S3においてこれらの基本モジュールを用いてソフトウェアの作成を行うことができる。以上は前記した演算処理モジュールにおいても同様であり、ソフトウェア作成装置1は自身で演算処理モジュールを作成することも可能であり、ソフトウェアの中で当該演算処理モジュールの使用を行うことも可能である。
(4.証明写真機2)
 図7は、ソフトウェア作成装置1で作成されたソフトウェアで制御する機器の一例である証明写真機2を示す図であり、図8は証明写真機2のハードウェア構成を示す図である。
 証明写真機2は例えば街頭に設置されたボックス型の写真撮影装置であり、ユーザを撮影してその画像を証明写真などとしてプリントする。証明写真機2は制御装置20、表示部21、課金部22、撮影部23、照明24、プリンタ25等を有する。
 制御装置20は証明写真機2の内部に設けられ、ソフトウェア作成装置1で作成したソフトウェアを実行することで、証明写真機2の後述する処理を行う。制御装置20としては例えば制御部、記憶部、入力部、通信部等を備えたコンピュータが用いられる。
 表示部21は、証明写真機2の入力部を兼ねたタッチパネル付ディスプレイ等により実現される。表示部21は、ユーザの操作、選択に係る各種の画面を表示し、画面上のタッチパネル操作によるユーザの指示入力等を受付ける。
 課金部22は、硬貨や紙幣の投入口、つり銭返却口、レシート取出口、レシートプリンタ等(不図示)を備え、ユーザからの課金やレシートの発行を管理する。
 撮影部23は、撮影窓の内側にカメラ等を設けたものである。カメラには例えば高解像度のデジタルカメラが用いられるが、これに限ることはない。
 照明24は、証明写真機2のボックス内の全体を照らす照明である。照明24は例えば白色の光を照射する面光源であり、撮影部23の上部に設けられるが、これに限ることはない。なお、証明写真機2のボックス内には撮影時のフラッシュ用にストロボ光源も設けられる。
 プリンタ25は、画像を用紙にプリントするものであり、証明写真機2の内部に設けられる。画像をプリントしたプリント物はプリント物取出口(不図示)に排出される。プリンタ25の方式や設置台数等は特に問わない。
 図9は証明写真機2の処理の概略を示すフローチャートである。図9の各ステップは制御装置20が証明写真機2の各部を制御して実行される。
 図9を参照して証明写真機2の処理について簡単に説明すると、証明写真機2は表示部21に表示される選択画面(不図示)で写真種を選択可能に表示し、ユーザによる写真種の選択を受付けた(S21)後、ユーザの撮影を開始する(S22)。写真種は用途に応じた写真の種類のことであり、例えば履歴書やパスポートなどである。
 証明写真機2は、ユーザの撮影画像をS1で選択された写真種に応じて調整(画像処理)し(S23)、ユーザに課金を促すための課金画面を表示部21に表示する。証明写真機2は、課金部22によりユーザの課金を受付ける(S24)と、調整後の画像を写真種に応じてプリントする(S25)。
 証明写真機2の機器制御を行うソフトウェアを作成する場合、記憶部12には、図10に示すように例えば[A;写真種の選択]、[B;ユーザの撮影]、[C:撮影画像の調整]、[D;課金]、[E;プリント]の複数の処理のそれぞれを実行する複数の基本モジュールが保持される。
 なお、基本モジュールA1、A2、A3、A4、A5はそれぞれ[A;写真種の選択]を実行するための部分的なプログラムであり、例えば証明写真機2の表示部21に写真種の選択画面を表示し、当該選択画面上でのユーザのタッチ操作等に応じて写真種の選択を受付ける。
 基本モジュールB1、B2、B3、B4、B5はそれぞれ[B;ユーザの撮影]を実行するための部分的なプログラムであり、例えば証明写真機2の表示部21に撮影のためのガイダンス画面を表示し、撮影部23や照明24の制御によりユーザの撮影を行う。
 基本モジュールC1、C2、C3、C4、C5はそれぞれ[C;撮影画像の調整]を実行するための部分的なプログラムであり、例えばユーザの撮影画像に対する画像処理を選択された写真種に応じて行う。すなわち、履歴書やパスポートなどの写真種に応じて証明写真の画像サイズ等は異なり、基本モジュールC1、C2、C3、C4、C5はこれら写真種の違いに応じて画像サイズの変更等の画像処理を行う。
 基本モジュールD1、D2、D3、D4、D5はそれぞれ[D;課金]を実行するための部分的なプログラムであり、例えば証明写真機2の表示部21に課金を促すための課金画面を表示させ、課金部22の制御により正しく課金が行われたことを検出する。
 基本モジュールE1、E2、E3、E4、E5はそれぞれ[E;プリント]を実行するための部分的なプログラムであり、例えば証明写真機2のプリンタ25を制御し、選択された写真種に従った用紙への印刷動作や用紙のカット動作を行うことで、撮影画像のプリントを行いプリント物として排出する。
 証明写真機2の機器制御を行うソフトウェアは、これらの基本モジュールを用いて図4等で説明したように作成できる。ここで、ソフトウェア作成装置1は、図10の実線矢印に例示するように、図10の処理A~Eについて基本モジュールの選択を行い、選択された基本モジュールの組み合わせについての報酬(評価)を前記したように求める。報酬はシンプルなもので例えば前記のコード量やバグ数であり、コード量の合計やバグ数が少ない方が高い報酬となる。ソフトウェア作成装置1は、上記のような基本モジュールの選択と報酬の算出を、例えば各処理A~Eについて選択する基本モジュールを変えながら繰り返し(一例を図10の鎖線矢印に示す)、試行錯誤を行うことで報酬が最大化される基本モジュールの選択ルール(例えば基本モジュールA1の後に基本モジュールB2を選択する等。強化学習では「政策」とも呼ばれる)を求める。この選択ルールに従って選択を行うことで、処理A~Eを続けて行うソフトウェアを作成することができる。以上の方法は、具体的な選択ルールの作成方法も含め強化学習として既知である。
 なおこの場合、S1で要求仕様として入力されるインプットの例としては「写真種の選択を受け付ける」、「ユーザを撮影した撮影画像を調整する」のような条件定義が挙げられ、アウトプットの例として「プリンタに画像を転送してプリントする」、「料金を徴収する」といった証明写真機2の動作についての定義が挙げられる。その他、インプットやアウトプットはソフトウェアの動作前後に実行されるプログラムなどであってもよい。
 また、S1で要求仕様として入力されるデバイスドライバは、例えば表示部21や撮影部23、プリンタ25等で使用されるドライバソフトとなり、これらは前記のようにソフトウェアによる処理の最後だけでなく処理の途中でも用いられる。
 以上説明したように、本実施形態のソフトウェア作成装置1は、AIの一手法である強化学習を用い、既存の基本モジュールを組み合わせて一連の処理を実行するソフトウェアを作成することができる。これによりソフトウェア作成の省力化が可能になり、また一定の品質のソフトウェアを作成できる。本実施形態では特に深層強化学習を用いることで、高い品質のソフトウェアを多数の基本モジュールから効率良く作成することが可能になる。
 また本実施形態では、S1で要求仕様の入力を行うことで、要求仕様に従ったソフトウェアの作成が可能になる。前記したように、要求仕様はソフトウェアにおけるインプットおよびアウトプット、ソフトウェアにおいて使用されるデバイスドライバ、演算処理モジュールなどであり、本実施形態ではこれらの指定に従ったソフトウェアを作成できる。また、当初入力した要求仕様が不十分であり、学習結果が発散方向に向かってソフトウェアの作成を行うことのできない場合、要求仕様の再入力を受付けることで、改めてソフトウェアの作成を行うことができる。
 本実施形態では、さらに、S2でプログラミング言語や開発環境の設定を行うことで、設定されたプログラミング言語や開発環境に従ったソフトウェアの作成を行うことができる。
 また本実施形態において作成されるソフトウェアは証明写真機2等の機器制御を行うものであり、機器中のデバイスの制御プログラムを動作させて所定の機能を実現することが可能になる。この場合、制御プログラムはデバイスについて定められた既存のものであり、ソフトウェア作成装置1はその制御プログラムの作成は行わない。なお、機器制御を行わないソフトウェア(例えば演算のみ行うソフトウェア)を本実施形態の手法で作成することも可能であり、その場合はデバイスの制御プログラムの動作も不要でソフトウェアの作成処理がより簡単になる。
 また本実施形態では、簡単な処理であれば強化学習により基本モジュールを作成することも可能であり、ソフトウェアの作成をさらに省力化できる。この場合も深層強化学習を用いることで、高い品質の基本モジュールを効率良く作成することが可能になる。
 ソフトウェアや基本モジュールの作成時には、強化学習における報酬としてコード量、処理時間、バグ数の少なさを考慮することで、コード量、処理時間、バグ数等の少ないソフトウェアや基本モジュールを作成できる。
 また、報酬を求める際に基本モジュールの組合せを動作させるメモリ領域を、仮想メモリ上に構築してプロテクトすることで、その誤動作によりソフトウェアの作成に係る他のメモリ領域が壊されることがない。
 しかしながら、本発明はこれに限らない。例えば強化学習における報酬は前記に限らず、ソフトウェアの作成時であれば、基本モジュールの組合せに対し所定の評価プログラムを用いて様々な条件下でデバッグを実行し、その際検出されたバグ数と個々のバグの重要度(深刻度)に基づく評価値を報酬とすることもできる。評価値は、例えば検出されたバグごとの重要度を加算することで得られるが、これに限ることはない。バグの重要度はバグの影響の深刻さの度合い(例えばバグにより処理の実行自体が不可能になる、処理はできるがバグにより誤った処理結果になる等)や発生頻度などに基づいて定めることができ、これにより重大なバグのないソフトウェアを作成できる。また従来はプログラミング段階でバグが無いかどうか人がデバッグを行うが、デバッグに必要な時間も削減できる。
 また、基本モジュールの組合せを動作させる際、ソフトウェア作成装置1はS2で設定されたプログラミング言語で記述されている基本モジュールを機械語に変換して実行し、S3で作成されるソフトウェアは、そのプログラムが機械語で記述されたものとなる可能性がある。この場合、その機械語をS2で設定されたプログラミング言語に逆変換し、人が読んで理解できるソースコードを作成することも可能であり、ソフトウェアの内容を人が確認できるようになりセキュリティや信頼性の観点から望ましい。また、実行形式の機械語によるソフトウェアのプログラムと、上記のソースコードとをS3において作成することも可能である。
 また、ソフトウェア作成装置1は、あるプログラミング言語で記述された基本モジュールを機械語に変換し、それを様々なプログラミング言語に逆変換することで、異なるプログラミング言語で記述されるが機械語に変換すると同一のものとなる複数の基本モジュールを作成することも可能である。これらをライブラリとして記憶部12に保持することで、ソフトウェア作成処理を多様なプログラミング言語に対応させることができる。
 以上、添付図面を参照して、本発明の好適な実施形態について説明したが、本発明は係る例に限定されない。当業者であれば、本願で開示した技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
1:ソフトウェア作成装置
2:証明写真機
101:記憶手段
102:入力受付手段
103:設定受付手段
104:ソフトウェア作成手段
105:基本モジュール作成手段
A1~A5、B1~B5、C1~C5、D1~D5、E1~E5:基本モジュール

Claims (20)

  1.  複数の処理のそれぞれを実行する複数の基本モジュールを保持する記憶手段と、
     前記基本モジュールを用いて強化学習を行うことで、前記複数の処理を続けて行うソフトウェアを前記基本モジュールの組合せにより作成するソフトウェア作成手段と、
     を有することを特徴とするソフトウェア作成装置。
  2.  前記ソフトウェアの作成に用いる強化学習は、深層強化学習であることを特徴とする請求項1記載のソフトウェア作成装置。
  3.  前記ソフトウェアの作成に際し前記ソフトウェアの要求仕様の入力を受け付ける入力受付手段を更に有することを特徴とする請求項1または請求項2記載のソフトウェア作成装置。
  4.  前記要求仕様は、前記ソフトウェアにおけるインプットおよびアウトプット、前記ソフトウェアにおいて使用されるデバイスドライバ、前記ソフトウェアにおいて使用される演算処理モジュールのいずれかを含むことを特徴とする請求項3記載のソフトウェア作成装置。
  5.  前記入力受付手段は、前記ソフトウェアの作成を行うことができなかった場合に、前記要求仕様の再入力の受付を行うことを特徴とする請求項3または請求項4記載のソフトウェア作成装置。
  6.  前記ソフトウェアの作成に際しプログラミング言語または開発環境の設定を受け付ける設定受付手段を更に有し、
     前記ソフトウェア作成手段は、設定された前記プログラミング言語または開発環境に対応する前記基本モジュールを用いて前記ソフトウェアの作成を行うことを特徴とする請求項1から請求項5のいずれかに記載のソフトウェア作成装置。
  7.  前記ソフトウェアは機器制御を行うものであり、機器中のデバイスについて予め定められた制御プログラムを動作させることを特徴とする請求項1から請求項6のいずれかに記載のソフトウェア作成装置。
  8.  複数の命令を用いて強化学習を行うことで、前記基本モジュールを前記命令の組合せにより作成する基本モジュール作成手段を更に有することを特徴とする請求項1から請求項7のいずれかに記載のソフトウェア作成装置。
  9.  前記基本モジュールの作成に用いる強化学習は、深層強化学習であることを特徴とする請求項8に記載のソフトウェア作成装置。
  10.  強化学習における報酬が、コード量、処理時間、バグ数のいずれかを含むことを特徴とする請求項1から請求項9のいずれかに記載のソフトウェア作成装置。
  11.  ソフトウェア作成時の強化学習における報酬が、前記基本モジュールの組合せに対してデバッグを行った際のバグ数とバグの重要度に基づく評価値を含むことを特徴とする請求項1から請求項10のいずれかに記載のソフトウェア作成装置。
  12.  強化学習において報酬を求めるために前記基本モジュールの組合せを動作させるメモリ領域が仮想メモリ上に構築され、前記メモリ領域がプロテクトされることを特徴とする請求項1から請求項11のいずれかに記載のソフトウェア作成装置。
  13.  前記記憶手段は、異なるプログラミング言語で記述されるが機械語に変換すると同一のものとなる複数の基本モジュールを保持することを特徴とする請求項1から請求項12のいずれかに記載のソフトウェア作成装置。
  14.  前記ソフトウェア作成手段は、前記ソフトウェアのプログラムをプログラミング言語で記述したソースコードを作成することを特徴とする請求項1から請求項13のいずれかに記載のソフトウェア作成装置。
  15.  前記ソフトウェア作成手段は、機械語による前記ソフトウェアのプログラムと、前記ソースコードとを作成することを特徴とする請求項14に記載のソフトウェア作成装置。
  16.  複数の処理のそれぞれを実行する複数の基本モジュールを保持する記憶手段を有するコンピュータが、
     前記基本モジュールを用いて強化学習を行うことで、前記複数の処理を続けて行うソフトウェアを前記基本モジュールの組合せにより作成することを特徴とするソフトウェア作成方法。
  17.  複数の処理のそれぞれを実行する複数の基本モジュールを保持する記憶手段を有するコンピュータを、
     前記基本モジュールを用いて強化学習を行うことで、前記複数の処理を続けて行うソフトウェアを前記基本モジュールの組合せにより作成するソフトウェア作成手段を有するソフトウェア作成装置として機能させるためのプログラム。
  18.  前記ソフトウェアで制御する機器が、証明写真機又はボックス型の写真撮影装置であることを特徴とする請求項1から請求項15のいずれかに記載のソフトウェア作成装置。
  19.  前記ソフトウェアで制御する機器が、証明写真機又はボックス型の写真撮影装置であることを特徴とする請求項16に記載のソフトウェア作成方法。
  20.  前記ソフトウェアで制御する機器が、証明写真機又はボックス型の写真撮影装置であることを特徴とする請求項17に記載のプログラム。
PCT/JP2020/041384 2019-11-08 2020-11-05 ソフトウェア作成装置、ソフトウェア作成方法、およびプログラム WO2021090890A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2021555108A JP7231056B2 (ja) 2019-11-08 2020-11-05 ソフトウェア作成装置、ソフトウェア作成方法、およびプログラム
CN202080029735.0A CN113767363B (zh) 2019-11-08 2020-11-05 软件生成装置、软件生成方法和程序产品
US17/608,694 US11733976B2 (en) 2019-11-08 2020-11-05 Software creation based on settable programming language

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019203353 2019-11-08
JP2019-203353 2019-11-08

Publications (1)

Publication Number Publication Date
WO2021090890A1 true WO2021090890A1 (ja) 2021-05-14

Family

ID=75848568

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/041384 WO2021090890A1 (ja) 2019-11-08 2020-11-05 ソフトウェア作成装置、ソフトウェア作成方法、およびプログラム

Country Status (4)

Country Link
US (1) US11733976B2 (ja)
JP (1) JP7231056B2 (ja)
CN (1) CN113767363B (ja)
WO (1) WO2021090890A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01298435A (ja) * 1988-05-27 1989-12-01 Mitsubishi Electric Corp 自動プログラミング装置
JP2019032659A (ja) * 2017-08-07 2019-02-28 株式会社東芝 運転計画システム、運転計画装置および運転計画方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5269014A (en) 1988-05-24 1993-12-07 Mitsubishi Denki Kabushiki Kaisha Automatic programming system with design review capabilities
DE112011105489T5 (de) * 2011-08-03 2014-04-24 Hitachi, Ltd. Bildverarbeitungssoftware-Entwicklungsverfahren, Bildverarbeitungssoftware-Entwicklungsvorrichtung und Bildverarbeitungssoftware-Entwicklungsprogramm
JP5867088B2 (ja) * 2012-01-05 2016-02-24 富士電機株式会社 組込み機器用ソフトウェア作成支援装置およびプログラム
US9141916B1 (en) * 2012-06-29 2015-09-22 Google Inc. Using embedding functions with a deep network
US9235978B1 (en) * 2013-01-16 2016-01-12 Domo, Inc. Automated suggested alerts based on natural language and user profile analysis
US10013639B1 (en) * 2013-12-16 2018-07-03 Amazon Technologies, Inc. Analyzing digital images based on criteria
US10621602B2 (en) * 2015-09-22 2020-04-14 Adobe Inc. Reinforcement machine learning for personalized intelligent alerting
US20170212829A1 (en) * 2016-01-21 2017-07-27 American Software Safety Reliability Company Deep Learning Source Code Analyzer and Repairer
US11775850B2 (en) * 2016-01-27 2023-10-03 Microsoft Technology Licensing, Llc Artificial intelligence engine having various algorithms to build different concepts contained within a same AI model
US10803401B2 (en) * 2016-01-27 2020-10-13 Microsoft Technology Licensing, Llc Artificial intelligence engine having multiple independent processes on a cloud based platform configured to scale
JP6433468B2 (ja) * 2016-09-28 2018-12-05 本田技研工業株式会社 プログラム作成支援方法
US10810492B2 (en) * 2017-01-27 2020-10-20 Hewlett Packard Enterprise Development Lp Memory side acceleration for deep learning parameter updates
JP2019008169A (ja) 2017-06-26 2019-01-17 大日本印刷株式会社 写真撮影装置システム、写真撮影装置、カッタ装置および写真印刷物
US10380650B2 (en) * 2017-07-26 2019-08-13 Jehan Hamedi Systems and methods for automating content design transformations based on user preference and activity data
US10628129B2 (en) * 2017-08-08 2020-04-21 Accenture Global Solutions Limited Intellectual automated security, performance and code generation framework
CN107563417A (zh) * 2017-08-18 2018-01-09 北京天元创新科技有限公司 一种深度学习人工智能模型建立方法及系统
US11018998B1 (en) * 2017-09-07 2021-05-25 Massachusetts Mutual Life Insurance Company Systems and methods for chat sessions involving multiple chatbots
CN107807814B (zh) * 2017-09-27 2021-10-26 百度在线网络技术(北京)有限公司 应用组件的构建方法、装置、设备及计算机可读存储介质
WO2019064461A1 (ja) * 2017-09-28 2019-04-04 良徳 若林 学習ネットワーク生成装置、及び学習ネットワーク生成プログラム
WO2019081783A1 (en) * 2017-10-27 2019-05-02 Deepmind Technologies Limited REINFORCING LEARNING USING DISTRIBUTED PRIORIZED READING
US10635409B2 (en) * 2018-01-15 2020-04-28 Cognizant Technology Solutions India Pvt. Ltd. System and method for improving software code quality using artificial intelligence techniques
US11720804B2 (en) * 2018-01-21 2023-08-08 Microsoft Technology Licensing, Llc. Data-driven automatic code review
US10884769B2 (en) * 2018-02-17 2021-01-05 Adobe Inc. Photo-editing application recommendations
CA3104243C (en) * 2018-06-18 2022-08-09 Unity IPR ApS Real-time animation generation using machine learning
US11610110B2 (en) * 2018-12-05 2023-03-21 Bank Of America Corporation De-conflicting data labeling in real time deep learning systems
CN110018820B (zh) * 2019-04-08 2022-08-23 浙江大学滨海产业技术研究院 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法
CN109992250B (zh) * 2019-04-15 2022-08-30 深圳怡化电脑股份有限公司 一种自动编程的方法、装置、服务器及存储介质
US11579868B1 (en) * 2020-12-10 2023-02-14 Amazon Technologies, Inc. Machine learning assisted source code refactoring to mitigate anti-patterns
US11883746B2 (en) * 2021-02-23 2024-01-30 Electronic Arts Inc. Adversarial reinforcement learning for procedural content generation and improved generalization
US11481553B1 (en) * 2022-03-17 2022-10-25 Mckinsey & Company, Inc. Intelligent knowledge management-driven decision making model

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01298435A (ja) * 1988-05-27 1989-12-01 Mitsubishi Electric Corp 自動プログラミング装置
JP2019032659A (ja) * 2017-08-07 2019-02-28 株式会社東芝 運転計画システム、運転計画装置および運転計画方法

Also Published As

Publication number Publication date
CN113767363B (zh) 2024-06-07
JP7231056B2 (ja) 2023-03-01
US11733976B2 (en) 2023-08-22
US20220236956A1 (en) 2022-07-28
CN113767363A (zh) 2021-12-07
JPWO2021090890A1 (ja) 2021-05-14

Similar Documents

Publication Publication Date Title
JP5164391B2 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
US7681148B2 (en) Method for enabling ease of use with page exception programming
WO2021090890A1 (ja) ソフトウェア作成装置、ソフトウェア作成方法、およびプログラム
JP2019215754A (ja) 情報処理装置とその制御方法、及びプログラム
JP2017024297A5 (ja)
CN104780286A (zh) 图像形成装置、信息终端装置、图像形成系统
JP2003266899A (ja) 画像形成装置
JP6643009B2 (ja) 印刷装置、印刷装置の制御方法、及びプログラム
JP2008296381A (ja) 印刷装置及び印刷システム
JP7336281B2 (ja) 画像形成装置、その制御方法、及びプログラム
JP2006289885A (ja) 画像形成装置、画像処理方法、コンピュータが読み取り可能なプログラムを格納した記憶媒体、プログラム
US10412251B2 (en) Image processing apparatus for debugging a hardware emulation process
RU2692282C1 (ru) Устройство формирования изображений и система формирования изображений, имеющие средство скрепления, допускающее выполнение скрепления, и способ управления для средства скрепления
JP6839895B2 (ja) 原稿読取装置、画像処理装置及び複合機並びに原稿読取方法
JP4305343B2 (ja) 画像処理装置
CN102789151B (zh) 图像形成装置和控制图像形成装置的方法
JP7129296B2 (ja) 画像処理装置、画像処理装置の制御方法
JP7035589B2 (ja) 写真撮影装置、画像プリントシステム
JP6921933B2 (ja) 印刷装置、印刷方法、及びプログラム
MXPA00007784A (es) Motor de impresion accionado por un sistema que varia dinamicamente.
JP2009128696A (ja) 情報処理装置及び画像形成装置
JP2018116640A (ja) 画像形成システム及び画像形成方法
US20190166268A1 (en) Image forming apparatus, method of controlling the same, and storage medium
JP6281390B2 (ja) 画像形成装置、画像形成システム、画像形成制御方法及び画像形成制御装置
JP2005178169A (ja) 印刷装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20884348

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021555108

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20884348

Country of ref document: EP

Kind code of ref document: A1