WO2021192318A1 - 検証装置、検証システム、検証方法及びコンピュータ可読媒体 - Google Patents

検証装置、検証システム、検証方法及びコンピュータ可読媒体 Download PDF

Info

Publication number
WO2021192318A1
WO2021192318A1 PCT/JP2020/014410 JP2020014410W WO2021192318A1 WO 2021192318 A1 WO2021192318 A1 WO 2021192318A1 JP 2020014410 W JP2020014410 W JP 2020014410W WO 2021192318 A1 WO2021192318 A1 WO 2021192318A1
Authority
WO
WIPO (PCT)
Prior art keywords
verification
environment
installation
distribution package
terminal device
Prior art date
Application number
PCT/JP2020/014410
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 PCT/JP2020/014410 priority Critical patent/WO2021192318A1/ja
Priority to JP2022509215A priority patent/JP7343041B2/ja
Priority to US17/907,802 priority patent/US20230101077A1/en
Publication of WO2021192318A1 publication Critical patent/WO2021192318A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics

Definitions

  • This disclosure relates to a verification device, a verification system, a verification method and a program.
  • OSS Open Source Software
  • Python Python
  • Node.js Python
  • packages are published as OSS on the Web. Developers install these packages as needed and use them for development.
  • some OSSs include programs that perform operations that are harmful to the developer's computer. Some are malicious, such as making the package name look like a well-known one and allowing the developer to install it incorrectly due to a typo, or even contaminating other healthy packages.
  • Patent Document 1 discloses a system for confirming the influence of a change in a data value in a sandbox.
  • Patent Document 2 discloses a device that detects a malicious message and instructs a security component to take measures against the message as a DoS countermeasure against CDS.
  • a detection system that monitors mail on a mail server and detects harmful mail is also known.
  • the present invention has been made to solve such a problem, and an object of the present invention is to provide a verification device, a verification system, a verification method, and a program capable of safely verifying a package while suppressing the load on the developer side. ..
  • the verification device is a receiving means for receiving the installation request of the distribution package transmitted from the terminal device and the receiving means between the distribution server for distributing the distribution package for software development and the terminal device.
  • An acquisition means for acquiring the distribution package requested by the installation request from the distribution server, a construction means for constructing a verification environment according to the development environment of the terminal device based on the received installation request, and the constructed verification. It is provided with a verification means for executing installation verification of the acquired distribution package using an environment, and a transmission means for transmitting the acquired distribution package to the terminal device based on the verification result of the installation verification. be.
  • the verification system includes a distribution server that distributes a distribution package for software development, a terminal device that installs the distribution package, and a verification device.
  • the verification device includes the distribution server and the terminal device.
  • a receiving means for receiving the installation request of the distribution package transmitted from the terminal device
  • an acquisition means for acquiring the distribution package requested by the received installation request from the distribution server
  • the received installation Based on the request, a construction means for constructing a verification environment according to the development environment of the terminal device, a verification means for executing the installation verification of the acquired distribution package using the constructed verification environment, and the installation verification. It is provided with a transmission means for transmitting the acquired distribution package to the terminal device based on the verification result of the above.
  • the distribution server that distributes the distribution package for software development and the terminal device receive the installation request of the distribution package transmitted from the terminal device, and the received installation request is received.
  • the requested distribution package is acquired from the distribution server, a verification environment corresponding to the development environment of the terminal device is constructed based on the received installation request, and the acquired distribution is used using the constructed verification environment.
  • the installation verification of the package is executed, and the acquired distribution package is transmitted to the terminal device based on the verification result of the installation verification.
  • the program according to the present disclosure receives an installation request for the distribution package transmitted from the terminal device between the distribution server that distributes the distribution package for software development and the terminal device, and the received installation request is requested.
  • the distribution package to be acquired is acquired from the distribution server, a verification environment corresponding to the development environment of the terminal device is constructed based on the received installation request, and the acquired distribution package is used using the constructed verification environment.
  • the installation verification of the above is executed, and based on the verification result of the installation verification, the acquired distribution package is transmitted to the terminal device, and the computer is made to execute the verification method.
  • the verification device 100 includes a reception unit 1, an acquisition unit 2, a construction unit 3, a verification unit 4, and a transmission unit 5.
  • the receiving unit 1 receives the installation request of the distribution package transmitted from the terminal device between the distribution server that distributes the distribution package for software development and the terminal device.
  • the acquisition unit 2 acquires the distribution package requested by the received installation request from the distribution server.
  • the construction unit 3 constructs a verification environment according to the development environment of the terminal device based on the received installation request.
  • the verification unit 4 executes the installation verification of the acquired distribution package using the constructed verification environment.
  • the transmission unit 5 transmits the acquired distribution package to the terminal device based on the verification result of the installation verification.
  • the load on the developer side can be suppressed and the package can be safely verified.
  • the verification system 200 including the verification device 101 according to the embodiment of the present invention will be described.
  • the user who requests the installation of the package is simply referred to as a user, and the package requested by the user is referred to as a request package.
  • the verification system 200 includes a distribution server 91, a user terminal 71, and a verification device 101.
  • the distribution server 91 distributes a package for software development.
  • the user terminal 71 is a terminal used by a user who is a developer.
  • the verification device 101 relays the package installation request between the distribution server 91 and the user terminal 71 via the network 90.
  • the verification device 101 is a mirror server of the distribution server 91, and can be realized by, for example, a proxy server.
  • the network 90 is, for example, the Internet.
  • the user terminal 71 includes an environment registration unit 72, an installation execution unit 73, and a display unit 74.
  • the environment registration unit 72 registers the environment information of the user terminal 71 in the user list 21.
  • the installation execution unit 73 makes a package installation request, installs and executes the script in the package.
  • the display unit 74 displays an error message or the like.
  • the display unit 74 is, for example, a display.
  • the verification device 101 includes a user list storage unit 20, a result list storage unit 10, a request processing unit 30, a verification execution unit 40, an environment list storage unit 50, a verification environment storage unit 61, a package storage unit 56, and a package generation unit 55. ..
  • a user may participate in multiple projects at the same time for development.
  • the verification device 101 will be provided for each project. For example, as shown in FIG. 3, it is assumed that user A participates in three projects on the same machine. User A accesses the verification devices 101a, 101b and 101c for each project. User B participating in a single project accesses only the verification device 101d.
  • the information obtained in each verification device 101 by the process described later can be aggregated and stored in a database (DB) connected to the verification device 101, for example, as shown in FIG. As a result, information can be utilized between the verification devices 101 to perform efficient operation verification.
  • DB database
  • the verification device 101 is provided for each project, as shown in FIG. 4, a plurality of users may access one verification device 101.
  • the user is identified by the ID or IP address, and the environment information is stored for each user.
  • the users A, B, and C participate in the same project, they access the same verification device 101, but the information of each user is identified by the user ID and IP address.
  • a verification environment 60 corresponding to the development environment of each user is constructed.
  • the verification environment 60 is constructed such that the user A is the verification environment 60A, the user B is the verification environment 60B, and the user C is the verification environment 60C.
  • the user list storage unit 20 acquires the user's environment information and stores it as the user list 21.
  • the user list storage unit 20 stores, for example, a user name, a user's IP address, and a user's environment information in association with each other.
  • Environment information is information that indicates the installation status of packages in the user's development environment.
  • a package is a combination of multiple modules that can be used in system development. Packages include, for example, numpy, tensorflow, keras, etc.
  • the environment information is not limited to packages, but may be related to scripts and libraries.
  • the user environment information registered in the user list 21 can be stored for each package installed by the user, for example, as shown in FIG.
  • the plurality of packages may be stored together as shown in FIG.
  • information on the OS (Operating System) and the system library may be included.
  • the project ID and hardware information such as CPU may be included.
  • FIGS. 5 to 7 are examples, and the user list 21 can be appropriately set according to the particle size of the environmental information to be grasped.
  • the above figure shows information on the version of each package, it may be omitted if it is not necessary to grasp it.
  • the user's IP address in the user list 21 even if the user is developing using a plurality of IP addresses, they can be treated as different machines.
  • the user list storage unit 20 As a method for the user list storage unit 20 to acquire the user's environment information, for example, there are a method for the user to register his / her own environment information and a method for storing and holding the payout information when the virtual environment is provided. The details will be described below.
  • the user When the user registers his / her own environment information, the user registers the information of the OS and the already installed package from the environment registration unit 72 to the user list storage unit 20.
  • the information of the OS and the already installed package For example, in the case of Linux (registered trademark), information such as / sbin / ldconfig-p, in the case of Windows (registered trademark), the information specified in the PATH, the information displayed in the list of applications, and under AppData. Register dll information etc. For Python, you can include pyd files and so on.
  • the user can register only the information of packages such as Python, Node.js, and Ruby.
  • packages such as Python, Node.js, and Ruby.
  • the user can grasp the package information from the pip freeze command or site-packages and below. Alternatively, it may be distinguished at the OS / CPU Architecture level.
  • FIG. 8 shows the process performed by the verification system 200 when the user himself / herself registers the initial environment information.
  • the project manager registers the project in the user list 21 (step S41). For example, the project manager registers the project ID and the project name using a terminal for project management (not shown).
  • the user who participates in the registered project uploads the environmental information from the environment registration unit 72 and registers the user (step S43).
  • the user list storage unit 20 stores the user's environmental information according to the required particle size. When the identification by the IP address is not performed, the user list storage unit 20 returns the user ID to the user (step S45). The user then requests the installation of the package as needed (step S47).
  • a user ID is set, the user makes a package installation request including the user ID. For example, suppose 1234 is returned as the user ID.
  • FIG. 9 shows the processing performed by the verification system 200 in this case. Similar to the above example, the project is first registered in the user list 21 by the project administrator (step S51). The user participating in the project registers as a user (step S53). The verification device 101 pays out the development environment to the user (step S55). The user list storage unit 20 stores the payout information at this time in the user list 21 according to the required particle size. After that, the user makes a package installation request in the issued development environment as needed (step S57).
  • the user environment information stored in the user list 21 by the above processing is updated by the verification execution unit 40 at the timing when the OS and the system package are updated.
  • the result list storage unit 10 associates the user's environmental information with the verification result of the operation of the package installed in the development environment, and stores it as the result list 11.
  • result list 11 An example of the result list 11 is shown in FIG.
  • the result list 11 for example, the user name, the IP address, the environment information, the package to be verified, and the verification result are stored in association with each other.
  • the request processing unit 30 acquires the package distributed by the distribution server 91 and stores it in the package storage unit 56. Further, the request processing unit 30 receives a package installation request from the user. The request processing unit 30 delivers the request package to the user when the verification execution unit 40 permits the installation of the user's request package.
  • the request processing unit 30 corresponds to the receiving unit 1, the acquiring unit 2, and the transmitting unit 5 in the first embodiment.
  • the verification execution unit 40 determines whether or not the request package may be installed by the user. Specifically, the verification execution unit 40 acquires the user's environment information from the user list 21 and confirms the information in the result list 11. When the operation of the request package in the user's environment information has been verified in the result list 11, the verification execution unit 40 determines whether or not to allow the user to install the request package based on the verification result. Therefore, if the verification result already exists, the verification execution unit 40 does not perform a new operation verification.
  • the verification execution unit 40 corresponds to the construction unit 3 and the verification unit 4 in the first embodiment.
  • the verification execution unit 40 may be provided outside the verification device 101.
  • the verification execution unit 40 newly constructs the verification environment 60.
  • the verification execution unit 40 installs the request package acquired from the distribution server 91 on the constructed environment, and verifies the operation with the installation verification tool.
  • the installation verification tool is, for example, a system that learns the behavior at the time of installing a package and detects an abnormality.
  • the verification execution unit 40 can prepare a verification environment 60 for each project and each PC.
  • the verification execution unit 40 updates the verification environment 60 every time a package is installed in the verification environment 60.
  • the verification execution unit 40 passes the request package to the user when the installation is permitted, and passes the error display package generated by the package generation unit 55 to the user when the installation is not permitted. Further, the verification execution unit 40 discards the verification environment 60 at a predetermined timing.
  • the verification execution unit 40 uses the verification result when the verification result already exists for the request package.
  • packages In system development, there is a tendency for packages to be installed depending on the type of user who is the developer. For example, in the case of Web development, flask, in the case of deep learning, tensorflow, and so on, the packages required by users are common depending on the development field. Therefore, for example, the package for which the user A has requested the installation may be requested to be installed by the user B who is the same type as the user A. In such a case, since the verification result of the user A is used, the verification of the user B can be omitted.
  • the environment list storage unit 50 lists the constructed verification environment 60 and stores it as an environment list 51.
  • FIG. 11 shows an example of the environment list 51.
  • an environment ID, a user name, a user's IP address, and a user's environment information are stored in association with each other.
  • the verification environment storage unit 61 stores the verification environment 60.
  • FIG. 2 shows five verification environments 60 from 60 (a) to 60 (e).
  • Each verification environment 60 is, for example, a virtual machine (VM) that can operate simultaneously or in parallel in the verification device 101 as if each were using a dedicated physical computer environment.
  • the verification environment 60 may be, for example, a container type or a virtual environment that can be shared with other users on the Web.
  • the package storage unit 56 stores the package acquired from the distribution server 91.
  • the package generation unit 55 creates a package for displaying an error to be delivered to the user when the operation verification of the requested package is abnormal. For example, a script as shown in FIG. 12 is described in the error display package. By executing this script, an error message is displayed on the display unit 74. The contents displayed on the display unit 74 will be described in detail below as compared with the normal display contents.
  • FIG. 16 is a flowchart showing an outline of processing performed by the verification system 200 when the verification result is normal.
  • the verification execution unit 40 installs the request package in the verification environment 60 (step S503) and verifies the operation (step S505). Since the verification result is normal, the request processing unit 30 sends the request package to the installation execution unit 73.
  • the installation execution unit 73 receives the request package and deploys it (step S507).
  • the installation execution unit 73 installs and executes the script in the request package (step S509). At this time, the content as shown in FIG. 13 is displayed on the display unit 74.
  • FIGS. 17 and 18 are flowcharts showing an outline of the processing performed by the verification system 200 when the verification result is abnormal.
  • FIG. 17 shows a process when the user is not notified of the information regarding the verification result
  • FIG. 18 shows a process when the user is notified.
  • step S601 When the user requests the package from the request processing unit 30 (step S601), the verification execution unit 40 installs the request package in the verification environment 60 (step S603) and verifies the operation (step S605). Since the verification result is abnormal, the verification execution unit 40 does not allow the user to install the request package. The process ends due to a timeout error, and the user cannot install the requested package (step S607). At this time, as shown in FIG. 14, the display unit 74 displays the content indicating the time-out.
  • step S701 When the user requests the package from the request processing unit 30 (step S701), the verification execution unit 40 installs the request package in the verification environment 60 (step S703) and verifies the operation (step S705). Since the verification result is abnormal, the verification execution unit 40 does not allow the user to install the request package.
  • the package generation unit 55 creates a replacement package that displays the error content instead of the request package (step S707).
  • the verification execution unit 40 transmits the replacement package to the user terminal 71.
  • the installation execution unit 73 receives the replacement package and deploys it (step S709).
  • the installation execution unit 73 installs and executes the script in the replacement package (step S711).
  • an error message as shown in FIG. 15 is displayed on the display unit 74 (step S713). If the verification result of the request package in the user's environment already exists in the result list 11, the processes of steps S703 and S705 are not performed, but the processes after step S707 are the same.
  • the fact that the verification result was abnormal and the URL where the details of the abnormality can be confirmed are described. This allows the user to know if the installation of the request package was not allowed and why it was not allowed.
  • the user can be notified to that effect as shown in FIG. 15 (b). This may allow the user to install the required functionality by installing another version of the package, even if the requested package itself could not be installed.
  • the user requests the request processing unit 30 to install the package by the installation execution unit 73 (step S101).
  • the request processing unit 30 receives the user's installation request (step S103).
  • the verification execution unit 40 acquires the user's environment information from the user list 21 based on the user ID and IP address (step S105). When the user's environment information is not registered in the user list 21, the verification execution unit 40 assigns a base environment common to other users as the user's environment information.
  • the verification execution unit 40 confirms whether or not the required package has been verified in the user's environment from the result list 11 (step S107). For example, as in the example shown in FIG. 10, numpy (1.16) and tensorflow (1.14) are installed in the user's environment, and the user requests the installation of keras (2.3.0). In this example, it can be confirmed that the above verification is completed in the result ID 101.
  • the verification execution unit 40 acquires the verification result (step S117). The verification execution unit 40 confirms whether the acquired verification result is normal or abnormal (step S113). If the verification result is normal (YES in step S113), the request processing unit 30 delivers the request package to the user (step S115).
  • the package generation unit 55 If the verification result is abnormal (NO in step S113), the package generation unit 55 generates a package of a package for displaying an error (step S119). The verification execution unit 40 distributes the error display package to the user (step S121).
  • step S107 If it cannot be confirmed in step S107 that the package has been verified (NO in step S107), the request processing unit 30 requests the distribution server 91 to install the package via the network 90 and acquires the package. (Step S109).
  • the verification execution unit 40 builds the verification environment 60 based on the user's environment information.
  • the verification execution unit 40 verifies the operation of the required package in the constructed verification environment 60 (step S111).
  • the verification execution unit 40 confirms whether the acquired verification result is normal or abnormal (step S113). Subsequent processing is the same as in the above case and will be omitted.
  • the verification device 101 relays to the user after confirming that the requested package is not harmful, it is possible to prevent the package that is harmful to the user's environment from being installed.
  • a proxy or the like is usually required in the user's environment, but these hinder the operation verification of the package.
  • operation verification can be performed in an environment in which these are removed, so that the reliability of the verification results and the like can be improved.
  • the verification device 101 relays the package installation request between the distribution server 91 and the user terminal 71, so that the load on the user side is suppressed. , You can safely verify the package.
  • the distribution server that distributes the distribution package for software development and the terminal device receive the installation request of the distribution package transmitted from the terminal device.
  • the distribution package requested by the received installation request is acquired from the distribution server, a verification environment corresponding to the development environment of the terminal device is constructed based on the received installation request, and the constructed verification environment is used.
  • the installation verification of the acquired distribution package is executed, and the acquired distribution package is transmitted to the terminal device based on the verification result of the installation verification. Therefore, the load on the developer side is suppressed and the package can be safely installed. Can be verified.
  • the operation verification result of the package is stored as a tree structure.
  • the verification result and the verification environment 60 can be visually grasped. Therefore, there is an advantage that management becomes easy for these administrators.
  • the package verification result is stored as the result list 11 together with the environmental information used for the verification.
  • the result list 11 may show the complexity of the verification package and the number of times (frequency) that the verification result is used, as shown in FIG. 20, for example.
  • FIG. 21 shows the result list 11 shown in FIG. 20 represented by a tree structure.
  • installed packages are represented as nodes on the tree. Also, the packages are recorded in the order in which they were installed. Therefore, every time a package is installed, the nodes are connected and the tree grows.
  • the tree also shows the verification environment 60 up to that point.
  • the processing performed by the verification system 200 will be described with reference to the tree diagram shown in FIG. Initially, user A is in the initial state with no packages installed (s50). When the user A requests the installation of numpy (a51), the verification execution unit 40 confirms the operation verification result of numpy with respect to the initial state (s50) in the result list 11. If there is no verification result, the request processing unit 30 acquires the request package numpy from the distribution server 91 and stores it in the package storage unit 56.
  • the verification execution unit 40 constructs the verification environment 60 of the initial state (s50) of the user A, installs the numpy stored in the package storage unit 56 on the verification environment 60, and performs operation verification. If the verification result is normal, the request processing unit 30 passes the numpy package to the user A. User A installs numpy (a51). The verification execution unit 40 holds the constructed numpy verification environment 60.
  • the verification execution unit 40 does not verify the numpy (a51) that has already been verified.
  • the verification execution unit 40 verifies the operation of pandas using the latest verification environment 60, that is, the verification environment 60 in which numpy is installed. If the verification result of pandas is normal, user A installs pandas (a52). If the verification result of pandas is abnormal, the verification execution unit 40 discards the constructed verification environment 60 and distributes an error display package to user A.
  • the verification execution unit 40 performs verification in each step and holds the verification environment 60 in each step.
  • the verification execution unit 40 sends user B without verifying numpy. Allow numpy installation.
  • the verification execution unit 40 executes scikit-learn verification using the verification environment 60 for which numpy has been verified (b1).
  • the verification result and the verification environment 60 can be efficiently managed by expressing the verification result in a tree structure.
  • the number of packages to be released is enormous.
  • the increase in the verification environment 60 puts pressure on the resources of the machine.
  • the verification execution unit 40 uses the verification result of scikit-learn within a certain number of hops on the tree. Specifically, the verification execution unit 40 sets a threshold value for the number of hops that allows the use of the verification result, and if there is a scikit-learn verification result within the threshold value, uses it, otherwise. Perform a new verification.
  • the verification execution unit 40 uses the result of b1 to allow the user A to request the installation of scikit-learn (a3) without performing new verification.
  • the verification execution unit 40 does not verify the installation request of user A, but updates the verification environment 60.
  • the threshold value is set with the number of hops being 4, but the threshold value is not limited to this and can be freely set. If the threshold value is increased, the number of verifications can be reduced, and if the threshold value is decreased, only the verification results in the closer verification environment can be used.
  • the threshold value may be set in consideration of the complexity of the package located in the middle.
  • the complexity of the package is calculated from, for example, the number of processes, the number of files, the number of directories, etc. related at the time of installation, and is stored in the result list 11.
  • the complexity of tensorflow (a1) and keras (a2) between numpy (s1) and scikit-learn (a3) is considered.
  • one tenth of the complexity of the package is added to the distance between the nodes.
  • the complexity of numpy is 3, so when numpy is in the middle of the tree, the number of hops plus 0.3 is used for comparison with the threshold value.
  • verification can be efficiently performed by using the verification results within a predetermined range in the tree such as the verification results.
  • the verification execution unit 40 detects a branch to which the verification package belongs and another branch in which only the order of the nodes is different, starting from one node, the verification execution unit 40 uses the verification result of the other branch.
  • numpy which is the node immediately before branching
  • the branch on the user A side to which the verification package (a13) belongs and the branch on the user B side have only the order of the packages. It's different.
  • the verification execution unit 40 uses the verification result of user B and permits the installation request of user A without verifying scikit-learn (a13) for user A. Therefore, no node is added in the tree, and the tree is represented as shown in FIG. Although verification is not performed, the verification execution unit 40 updates the verification environment 60.
  • the branch to which the request package belongs and the other branches differ only in order starting from the node immediately before the branch has been described, but it is not limited to this.
  • another node may be included in the middle, and there may be different elements other than the order.
  • it may be necessary to set a certain standard and to have the same order to some extent.
  • the verification system 200 when there are branches of the verification result that differ only in the order from the node that is the starting point in the verification result tree, the efficiency is improved by using this. Verification can be performed.
  • the verification execution unit 40 detects another branch in which a package common to the branch to which the verification package belongs is installed at a predetermined ratio or more, starting from one node, the verification execution unit 40 uses the verification result of the other branch.
  • the predetermined ratio is, for example, 50%.
  • numpy a21, c22
  • tensorflow a22, c24
  • the verification execution unit 40 calculates the ratio of these common packages to the installed packages of each user. In the above example, user A is two-thirds and user B is two-quarters. Therefore, 50% or more of the packages are common to the branch of user A and the branch of user B. Therefore, the verification execution unit 40 does not verify keras for the installation request of user B, but uses the verification result of user A to allow user B to install keras. Although verification is not performed, the verification environment 60 is updated.
  • the predetermined ratio was set to 50%, but it is not limited to this. If the ratio is set high, the installation environment of each branch will be closer, and the verification accuracy will be improved. Further, for example, in combination with the fifth embodiment, when the ratio of common packages is low, installation may be permitted if the order is the same.
  • the verification system 200 when the number of packages common to other branches is equal to or more than a predetermined ratio in the tree of verification results, the verification results of other branches are used. However, verification can be performed efficiently.
  • the verification environment 60 is also managed using the tree structure already described. As shown in FIG. 26, in the verification result tree, each node holds information on the number of times the verification result is used.
  • the verification execution unit 40 stores the information on the number of times used in the result list 11 with the first verification being performed as the first time.
  • the verification execution unit 40 adds 1 each time the verification result is used, and updates the result list 11.
  • the result list 11 is provided with a frequency column as shown in FIG. 20, for example, so that the number of times of use can be grasped. For example, after the first verification is performed, if the verification result is used once, the frequency becomes 2, and if it is never used, it remains 1. When the verification result is used, the verification execution unit 40 adds 1 to all the higher-level nodes.
  • the verification execution unit 40 deletes the corresponding verification environment 60 at a predetermined timing based on the above frequency.
  • the predetermined timing is, for example, when the number of verification environments 60 reaches a preset upper limit.
  • the verification execution unit 40 deletes the verification environment 60 corresponding to the verification result having a frequency of 2 or less, for example.
  • FIG. 27 shows an example of the tree after the verification environment 60 is deleted. It is the verification environment 60 that is deleted, and the verification result and the number of times information are retained without being deleted. Therefore, even infrequent verification results can be used in the future.
  • infrequent nodes are deleted and shown, but as shown in FIG. 28, the tree may be updated in a state where traces of deletion can be grasped on the tree. This allows the administrator to grasp the situation in more detail.
  • the verification environment 60 can be efficiently managed.
  • FIG. 29 is a block diagram showing a hardware configuration example for realizing the verification process.
  • the hardware configuration includes a processor 301 and a memory 302.
  • the processor 301 reads a computer program (verification program) from the memory 302 and executes it to perform the processing of the verification device described using the flowchart in the above-described embodiment.
  • the verification program receives the installation request of the distribution package transmitted from the terminal device between the distribution server that distributes the distribution package for software development and the terminal device, and the received installation request is requested.
  • the distribution package to be acquired is acquired from the distribution server, a verification environment corresponding to the development environment of the terminal device is constructed based on the received installation request, and the acquired distribution package is used using the constructed verification environment. Is executed, and based on the verification result of the installation verification, the computer is made to execute the process of transmitting the acquired distribution package to the terminal device.
  • the processor 301 may be, for example, a microprocessor, an MPU (Micro Processing Unit), or a CPU (Central Processing Unit). Processor 301 may include a plurality of processors.
  • the memory 302 is composed of a combination of a volatile memory and a non-volatile memory.
  • the memory 302 may include storage located away from the processor 301.
  • the processor 301 may access the memory 302 via an I / O interface (not shown).
  • the memory 302 is used to store the software module group.
  • the processor 301 can perform the processing of the verification device 100 described in the above-described embodiment by reading these software modules from the memory 302 and executing the software modules.
  • Non-temporary computer-readable media include various types of tangible storage mediums. Examples of non-temporary computer-readable media are magnetic recording media (eg flexible disks, magnetic tapes, hard disk drives), magneto-optical recording media (eg magneto-optical disks), CompactDisc ReadOnlyMemory (CD-ROM), CD- Includes R, CD-R / W, and semiconductor memory (eg, mask ROM, Programmable ROM (PROM), Erasable PROM (EPROM), flash ROM, Random Access Memory (RAM)).
  • magnetic recording media eg flexible disks, magnetic tapes, hard disk drives
  • magneto-optical recording media eg magneto-optical disks
  • CD-ROM CompactDisc ReadOnlyMemory
  • CD- Includes R CD-R / W
  • semiconductor memory eg, mask ROM, Programmable ROM (PROM), Erasable PROM (EPROM), flash ROM, Random Access Memory (RAM)
  • the program may also be supplied to the computer by various types of temporary computer readable medium.
  • temporary computer-readable media include electrical, optical, and electromagnetic waves.
  • the temporary computer-readable medium can supply the program to the computer via a wired communication path such as an electric wire and an optical fiber, or a wireless communication path.
  • the present invention is not limited to the above embodiment, and can be appropriately modified without departing from the spirit.
  • the verification device 101 is used for each project, but the present invention is not limited to this.
  • the information of a plurality of projects may be collected in one verification device 101 by identifying the project by the project ID.
  • the tree structure such as the verification result is not limited to the above-mentioned one, and for example, the tree may be divided for each package such as Python and Node.js.
  • the verification environment 60 is deleted based on the frequency of use of the verification result, but the present invention is not limited to this.
  • the similarity of the environmental information may be calculated, the verification environment 60 having a high degree of similarity may be integrated, and unnecessary information may be deleted.
  • the verification environment 60 may be deleted based on the date and time when the verification result or the like is used. Specifically, the verification execution unit 40 stores the date and time when the verification result was used in the result list 11. The result list 11 may retain a certain number as a history, or may be updated each time so that only the last use date and time remains. For example, the verification execution unit 40 sets a predetermined period and deletes the verification environment 60 after that period. For example, when the predetermined period is set to one year, the verification execution unit 40 deletes the verification environment 60 in which one year has passed since the last verification result was used.
  • (Appendix 1) A receiving means for receiving the installation request of the distribution package transmitted from the terminal device between the distribution server and the terminal device for distributing the distribution package for software development.
  • An acquisition means for acquiring the distribution package requested by the received installation request from the distribution server, and Based on the received installation request, a construction means for constructing a verification environment according to the development environment of the terminal device, and Using the constructed verification environment, the verification means for executing the installation verification of the acquired distribution package and A transmission means for transmitting the acquired distribution package to the terminal device based on the verification result of the installation verification, and A verification device.
  • the receiving means receives the installation request requesting the distribution server to acquire the distribution package from the terminal device.
  • the verification device according to Appendix 1. (Appendix 3)
  • the receiving means receives the installation request from the terminal device requesting the verification device to acquire the distribution package.
  • the verification device according to Appendix 1. (Appendix 4)
  • a storage means for storing an environment list in which the identification information of the terminal device and the development environment information of the development environment are associated with each other is provided.
  • the construction means specifies the development environment information corresponding to the identification information of the terminal device included in the installation request based on the environment list, and constructs the verification environment based on the specified development environment information.
  • the verification device according to any one of Supplementary note 1 to 3.
  • a storage means for storing an environment list in which the identification information of the user who uses the terminal device and the development environment information of the development environment are associated with each other is provided.
  • the construction means identifies the development environment information corresponding to the user identification information included in the installation request based on the environment list, and constructs the verification environment based on the specified development environment information.
  • the verification device according to any one of Supplementary note 1 to 3.
  • a storage means for storing an environment list in which the identification information of the development project using the terminal device and the development environment information of the development environment are associated with each other is provided.
  • the construction means specifies the identification information development environment information of the development project included in the installation request based on the environment list, and constructs the verification environment based on the specified development environment information.
  • the verification device according to any one of Supplementary note 1 to 3.
  • the construction means acquires the development environment information from the terminal device and registers the acquired development environment information in the environment list.
  • the verification device according to any one of Appendix 4 to 6.
  • the construction means registers the development environment information of the development environment provided to the terminal device in the environment list.
  • the verification device according to any one of Appendix 4 to 6.
  • the construction means updates the development environment information in the environment list based on the verification result.
  • the verification device according to any one of Appendix 4 to 8.
  • a verification environment holding means for holding the verification environment used for the installation verification is provided.
  • the verification environment holding means holds a plurality of verification environments used for the installation verification in association with the installation history of the distribution package.
  • the verification means executes the installation verification using the corresponding verification environment.
  • the verification device according to Appendix 10. (Appendix 12)
  • the verification environment holding means holds a plurality of verification environments used for the installation verification in a tree-like manner in the order of installation of the distribution package.
  • the verification means executes the installation verification using the corresponding verification environment.
  • the verification device according to Appendix 11. When the difference between the installation history of the distribution package in the verification environment according to the development environment of the terminal device and the installation history of the distribution package in the corresponding verification environment is within a predetermined range, the verification means responds. Perform the installation verification using the verification environment The verification device according to Appendix 11 or 12. (Appendix 14) In the verification means, the difference between the complexity of installing the distribution package in the verification environment according to the development environment of the terminal device and the complexity of installing the distribution package in the corresponding verification environment is within a predetermined range.
  • the verification device deletes the held verification environment when a predetermined condition is satisfied.
  • the verification device according to any one of Appendix 10 to 14.
  • the verification environment holding means holds the verification environment in association with the number of times it is reused for the installation verification, and deletes the held verification environment based on the number of times it is reused.
  • the verification device according to Appendix 15.
  • the verification environment holding means holds the verification environment in association with the time reused for the installation verification, and deletes the held verification environment based on the reused time.
  • the verification device according to Appendix 15 or 16.
  • a verification result holding means for holding the verification result of the installation verification in association with the verification environment is provided.
  • the transmission means transmits the distribution package based on the verification result of the corresponding verification environment.
  • the verification device according to any one of Appendix 1 to 17.
  • the verification result holding means holds a plurality of verification environments used for the installation verification in association with the installation history of the distribution package together with the verification result.
  • the transmission means delivers the distribution package based on the verification result of the corresponding verification environment. Send, The verification device according to Appendix 18.
  • the verification result holding means associates a plurality of verification environments used for the installation verification in a tree shape in the order of installation of the distribution package, and holds the verification results together with the verification results.
  • the transmission means is based on the verification result of the corresponding verification environment.
  • Send the distribution package The verification device according to Appendix 19.
  • the transmission means responds. Send the distribution package based on the verification result of the verification environment.
  • the verification device according to Appendix 19 or 20.
  • Appendix 22 In the verification means, the difference between the complexity of installing the distribution package in the verification environment according to the development environment of the terminal device and the complexity of installing the distribution package in the corresponding verification environment is within a predetermined range. In the case, the distribution package is transmitted based on the verification result of the corresponding verification environment.
  • the verification device according to Appendix 21.
  • Appendix 23 When the verification result is normal, the transmitting means transmits the acquired distribution package to the terminal device, and when the verification result is abnormal, an error package indicating an abnormality such as the verification result instead of the distribution package. To the transmitting terminal, The verification device according to any one of Appendix 1 to 22.
  • the distribution package contains a given script for performing the installation.
  • the error package includes, as the predetermined script, a dummy script including an instruction for outputting an abnormality such as the verification result.
  • the verification device according to Appendix 23. (Appendix 25)
  • the dummy script includes an instruction to output information indicating details of the abnormality such as the verification result, or information of another distribution package related to the distribution package whose verification result is abnormal.
  • the verification device according to Appendix 24. It is equipped with a distribution server that distributes a distribution package for software development, a terminal device that installs the distribution package, and a verification device.
  • the verification device is A receiving means for receiving an installation request for the distribution package transmitted from the terminal device between the distribution server and the terminal device.
  • the distribution server that distributes the distribution package for software development and the terminal device receive the installation request of the distribution package sent from the terminal device, and receive the installation request. Obtain the distribution package requested by the received installation request from the distribution server, and obtain the distribution package. Based on the received installation request, a verification environment corresponding to the development environment of the terminal device is constructed.
  • the distribution server that distributes the distribution package for software development and the terminal device receive the installation request of the distribution package sent from the terminal device, and receive the installation request. Obtain the distribution package requested by the received installation request from the distribution server, and obtain the distribution package. Based on the received installation request, a verification environment corresponding to the development environment of the terminal device is constructed. Using the constructed verification environment, execute the installation verification of the acquired distribution package and perform the installation verification. Based on the verification result of the installation verification, the acquired distribution package is transmitted to the terminal device.
  • a non-transitory computer-readable medium that contains a verification program that allows a computer to perform processing.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)

Abstract

開発者側の負荷を抑え、安全にパッケージを検証できる検証装置を提供することを目的とする。本開示にかかる検証装置(100)は、ソフトウェア開発用の配布パッケージを配布する配布サーバと端末装置との間で、端末装置から送信された配布パッケージのインストール要求を受信する受信手段(1)と、受信したインストール要求が要求する配布パッケージを配布サーバから取得する取得手段(2)と、受信したインストール要求に基づいて、端末装置の開発環境に応じた検証環境を構築する構築手段(3)と、構築した検証環境を用いて、取得した配布パッケージのインストール検証を実行する検証手段(4)と、インストール検証の検証結果に基づいて、取得した配布パッケージを端末装置へ送信する送信手段(5)と、を備える。

Description

検証装置、検証システム、検証方法及びコンピュータ可読媒体
 本開示は、検証装置、検証システム、検証方法及びプログラムに関する。
 近年、システム開発において、開発者がWeb上に公開されたOSS(Open Source Software)を利用して開発を行うことが一般的になっている。例えば、Python、Node.jsなどのスクリプト系言語では、Web上にOSSとして多くのパッケージが公開されている。開発者は、必要に応じてこれらのパッケージをインストールし、開発のために利用する。
 しかし、OSSの中には、開発者のコンピュータにとって有害な動作を行うプログラムが含まれるものが存在する。中には、パッケージ名を有名なものに似せ、開発者がタイプミスにより誤ってインストールすることを狙ったものや、他の正常なパッケージまで汚染するなどの悪質なものがある。
 そこで、これらのOSSが安全なものか否かを検証する技術が知られている。例えば、特許文献1には、サンドボックスの中でデータ値の変更が与える影響を確認するシステムが開示されている。特許文献1において開示されたシステムでは、シナリオ管理を行うために、案件ごとにサンドボックスを作成し、その中で動作検証を行う必要がある。
 また、特許文献2には、CDSへのDoS対策として、悪意のあるメッセージを検出し、当該メッセージに対する対策をセキュリティコンポーネントに対して命令する装置が開示されている。
 他には、メールサーバ上でメールを監視し、有害なメールを検出する検出するシステムも知られている。
特表2018-533090号公報 特表2005-535021号公報
 公開されたパッケージの動作検証を開発者自身が行う場合、開発者はインストールの都度、自身の開発環境で検証プログラムを実行しなければならない。開発者はインストールのタイミングで検証を行うため、マシンに高い負荷がかかり、開発者の利便性が損なわれる。上記のようなパッケージを使用することが開発者にとって通常であることも考慮すると、開発者に検証作業を委ねた場合に、その実行を徹底することは困難である。
 特許文献1又は2に開示の技術では、上記の問題について考慮されていない。
 本発明はこのような課題を解決するためになされたものであり、開発者側の負荷を抑え、安全にパッケージを検証できる検証装置、検証システム、検証方法及びプログラムを提供することを目的とする。
 本開示にかかる検証装置は、ソフトウェア開発用の配布パッケージを配布する配布サーバと端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信する受信手段と、前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得する取得手段と、前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築する構築手段と、前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行する検証手段と、前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信する送信手段と、を備えるものである。
 本開示にかかる検証システムは、ソフトウェア開発用の配布パッケージを配布する配布サーバと、前記配布パッケージをインストールする端末装置と、検証装置とを備え、前記検証装置は、前記配布サーバと前記端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信する受信手段と、前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得する取得手段と、前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築する構築手段と、前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行する検証手段と、前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信する送信手段と、を備えるものである。
 本開示にかかる検証方法は、ソフトウェア開発用の配布パッケージを配布する配布サーバと端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信し、前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得し、前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築し、前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行し、前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信するものである。
 本開示にかかるプログラムは、ソフトウェア開発用の配布パッケージを配布する配布サーバと端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信し、前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得し、前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築し、前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行し、前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信する、検証方法をコンピュータに実行させるものである。
 本開示により、開発者側の負荷を抑え、安全にパッケージを検証できる検証装置、検証システム、検証方法及びプログラムを提供することができる。
本発明にかかる検証装置の構成を示すブロック図である。 本発明にかかる検証システムの構成を示すブロック図である。 本発明にかかる検証システムの説明図である。 本発明にかかる検証システムの説明図である。 本発明にかかる検証システムにおけるユーザリストの一例である。 本発明にかかる検証システムにおけるユーザリストの一例である。 本発明にかかる検証システムにおけるユーザリストの一例である。 本発明にかかる検証システムの説明図である。 本発明にかかる検証システムの説明図である。 本発明にかかる検証システムにおける結果リストの一例である。 本発明にかかる検証システムにおける環境リストの一例である。 本発明にかかる検証システムにおけるエラーメッセージ用のスクリプトの一例である。 本発明にかかる検証システムにおける表示画面の一例である。 本発明にかかる検証システムにおける表示画面の一例である。 本発明にかかる検証システムにおける表示画面の一例である。 本発明にかかる検証システムの処理を示すフローチャートである。 本発明にかかる検証システムの処理を示すフローチャートである。 本発明にかかる検証システムの処理を示すフローチャートである。 本発明にかかる検証システムの処理を示すフローチャートである。 本発明にかかる検証システムにおける結果リストの一例である。 本発明にかかる検証システムにおける検証結果等のツリーを示す図である。 本発明にかかる検証システムにおける検証結果等のツリーを示す図である。 本発明にかかる検証システムにおける検証結果等のツリーを示す図である。 本発明にかかる検証システムにおける検証結果等のツリーを示す図である。 本発明にかかる検証システムにおける検証結果等のツリーを示す図である。 本発明にかかる検証システムにおける検証結果等のツリーを示す図である。 本発明にかかる検証システムにおける検証結果等のツリーを示す図である。 本発明にかかる検証システムにおける検証結果等のツリーを示す図である。 本発明にかかる検証システムのハードウェア構成例を示す図である。
 背景技術において説明した問題について、以下のような問題もある。
 初めに述べたように、現在では多くのパッケージがOSSとしてWeb上に公開されている。これらのパッケージは日々更新されており、パッケージのバージョンやプラットフォームの違い及びパッケージの依存関係まで考慮すると、その数は膨大である。そのため、開発者がインストールしようとするパッケージの検証結果を全てリスト化し、検証結果と共に管理することは煩雑である。
 また、パッケージの不正な動作が開発環境に依存する場合には、全ての開発者に対し、一律で検証を行うことは困難である。
 したがって、開発環境が日々更新される中で、上記のような問題を解決し、タイムリーな検証が可能な仕組みを構築することが必要である。
<実施の形態1>
 以下、図1を参照して本発明の実施の形態にかかる検証装置100を説明する。
 検証装置100は、受信部1、取得部2、構築部3、検証部4、送信部5を備える。
 受信部1は、ソフトウェア開発用の配布パッケージを配布する配布サーバと端末装置との間で、端末装置から送信された前記配布パッケージのインストール要求を受信する。
 取得部2は、受信したインストール要求が要求する配布パッケージを配布サーバから取得する。
 構築部3は、受信したインストール要求に基づいて、端末装置の開発環境に応じた検証環境を構築する。
 検証部4は、構築した検証環境を用いて、取得した配布パッケージのインストール検証を実行する。
 送信部5は、インストール検証の検証結果に基づいて、取得した配布パッケージを端末装置へ送信する。
 以上説明したように、本実施の形態1にかかる検証装置によれば、開発者側の負荷を抑え、安全にパッケージを検証することができる。
<実施の形態2>
 続いて、図2を用いて、本発明の実施の形態にかかる検証装置101を含む検証システム200を説明する。以下の説明では、パッケージのインストール要求をするユーザを単にユーザといい、ユーザが要求したパッケージを要求パッケージという。
 検証システム200は、配布サーバ91、ユーザ端末71、検証装置101を備える。
 配布サーバ91は、ソフトウェア開発用のパッケージを配布する。
 ユーザ端末71は、開発者であるユーザが使用する端末である。
 検証装置101は、ネットワーク90を介して、配布サーバ91とユーザ端末71との間で、パッケージのインストール要求の中継を行う。検証装置101は、配布サーバ91のミラーサーバであり、例えば、プロキシサーバにより実現することができる。
 ネットワーク90は、例えばインターネットである。
 ユーザ端末71は、環境登録部72、インストール実行部73、表示部74を備える。
 環境登録部72は、ユーザ端末71の環境情報をユーザリスト21に登録する。
 インストール実行部73は、パッケージのインストール要求を行い、パッケージ内のスクリプトをインストールして実行する。
 表示部74は、エラーメッセージの表示等を行う。表示部74は、例えばディスプレイである。
 検証装置101は、ユーザリスト記憶部20、結果リスト記憶部10、要求処理部30、検証実行部40、環境リスト記憶部50、検証環境記憶部61、パッケージ記憶部56、パッケージ生成部55を備える。
 システム開発において、ユーザは同時に複数のプロジェクトに参加して開発を行うことがある。本実施の形態においては、プロジェクトごとに検証装置101を設けることとする。
 例えば図3に示すように、ユーザAが同一のマシンで3つのプロジェクトに参加しているとする。ユーザAはプロジェクト別に検証装置101a、101b及び101cにアクセスする。単独のプロジェクトに参加しているユーザBは、検証装置101dのみにアクセスする。
 後述する処理によりそれぞれの検証装置101において得られた情報は、例えば図3に示すように、検証装置101に接続されるデータベース(DB)に集約して記憶することができる。これにより、検証装置101間で情報を活用し、効率的な動作検証を行うことができる。
 また、検証装置101はプロジェクトごとに設けられているため、図4に示すように、1つの検証装置101に対し、複数のユーザがアクセスしてもよい。本実施の形態では、ユーザをIDやIPアドレスにより識別し、ユーザごとに環境情報を記憶する。例えば、図4に示す例では、ユーザA、B、Cは同じプロジェクトに参加しているため、同じ検証装置101にアクセスするが、ユーザIDやIPアドレスにより、各ユーザの情報は識別される。また、後述する処理において、それぞれのユーザの開発環境に対応した検証環境60が構築される。例えば、ユーザAは検証環境60A、ユーザBは検証環境60B、ユーザCは検証環境60Cというように検証環境60が構築される。
 ユーザリスト記憶部20は、ユーザの環境情報を取得し、ユーザリスト21として記憶する。ユーザリスト記憶部20は、例えばユーザ名とユーザのIPアドレスと、ユーザの環境情報とを関連付けて記憶する。
 環境情報とは、ユーザの開発環境におけるパッケージのインストール状況を示す情報である。パッケージとは、システム開発で利用可能な複数のモジュールを組み合わせたものである。パッケージには、例えばnumpy、tensorflow、keras等がある。環境情報は、パッケージに限らず、スクリプトやライブラリに関するものでもよい。
 ユーザリスト21の一例を図5から図7に示す。ユーザリスト21に登録されるユーザの環境情報は、例えば図5に示すように、ユーザがインストールしているパッケージごとに記憶することができる。ユーザが複数のパッケージをインストールしている場合には、図6に示すように複数のパッケージをまとめて記憶してもよい。また、図7に示すように、それらに加えてOS(Operating System)やシステムライブラリの情報まで含めてもよい。さらに、プロジェクトIDや、CPU等のハードウェアの情報を含めてもよい。
 図5から図7に示した図は一例であり、ユーザリスト21は、把握しようとする環境情報の粒度に応じて適宜設定することができる。また、上記の図には各パッケージのバージョンの情報が示されているが、把握する必要がなければ省略してもよい。なお、ユーザリスト21にユーザのIPアドレスを含めることで、ユーザが複数のIPアドレスを用いて開発を行っている場合にも、それぞれ別のマシンとして扱うことができる。
 ユーザリスト記憶部20がユーザの環境情報を取得する方法としては、例えば、ユーザが自身の環境情報を登録する方法や、仮想環境を提供した際の払い出し情報を記憶し、保持する方法がある。以下にその詳細を述べる。
 ユーザが自身の環境情報を登録する場合は、ユーザがOSや既にインストールされているパッケージの情報を環境登録部72からユーザリスト記憶部20に登録する。例えば、Linux(登録商標)であれば、/sbin/ldconfig -p 等の情報、Windows(登録商標)であれば、PATHで指定された情報、アプリケーションの一覧により表示される情報、AppData以下にあるdll情報等を登録する。Pythonの場合は、pydファイルなどを含めることができる。
 また、ユーザは、例えば、Python、Node.js、Rubyといったパッケージの情報のみを登録することもできる。ユーザは、パッケージの情報をpip freezeコマンド又はsite-packages以下から把握することができる。又は、OS/CPU Architectureレベルで区別する程度でもよい。
 初期の環境情報をユーザ自身が登録する場合に検証システム200が行う処理を図8に示す。初めに、プロジェクト管理者により、ユーザリスト21にプロジェクトが登録される(ステップS41)。例えば、プロジェクト管理者は、プロジェクト管理用の端末(不図示)を用いてプロジェクトIDやプロジェクト名を登録する。登録されたプロジェクトに参加するユーザは、環境登録部72より環境情報をアップロードし、ユーザ登録を行う(ステップS43)。
 ユーザリスト記憶部20は、必要な粒度に応じてユーザの環境情報を記憶する。IPアドレスによる識別を行わない場合、ユーザリスト記憶部20はユーザに対しユーザIDを返す(ステップS45)。その後、ユーザは必要に応じてパッケージのインストールを要求する(ステップS47)。ユーザIDが設定された場合、ユーザはユーザIDを含んだ形でパッケージのインストール要求を行う。例えば、ユーザIDとして1234が返されたとする。URLにユーザIDが埋め込まれる場合、ユーザは、http://1234.mirror.net/reqのようにインストール要求を行う。ユーザIDがURLでなくパラメータで指定される場合、ユーザは、http://mirror.net/req?user=1234のようにインストール要求を行う。
 また、仮想機械によりユーザに初期環境を提供する場合には、ユーザリスト記憶部20が払い出し情報を保持することでユーザの初期の環境情報を把握することができる。この場合に検証システム200が行う処理を図9に示す。
 上記の例と同様、初めに、プロジェクト管理者によってユーザリスト21にプロジェクトが登録される(ステップS51)。プロジェクトに参加するユーザはユーザ登録を行う(ステップS53)。検証装置101は、ユーザに対し開発環境の払い出しを行う(ステップS55)。ユーザリスト記憶部20は、このときの払い出し情報を必要な粒度に応じてユーザリスト21に記憶する。その後、ユーザは必要に応じて、払い出された開発環境においてパッケージのインストール要求を行う(ステップS57)。
 上述の処理によりユーザリスト21に記憶されたユーザの環境情報は、OSやシステムパッケージが更新されたタイミングにおいて、検証実行部40により更新される。
 結果リスト記憶部10は、ユーザの環境情報と、その開発環境においてインストールしたパッケージの動作の検証結果とを関連付け、結果リスト11として記憶する。
 結果リスト11の一例を図10に示す。結果リスト11には、例えば、ユーザ名、IPアドレス、環境情報、検証対象のパッケージ、検証結果が関連付けて記憶される。
 要求処理部30は、配布サーバ91が配布するパッケージを取得し、パッケージ記憶部56に記憶する。また、要求処理部30は、ユーザからパッケージのインストール要求を受信する。要求処理部30は、検証実行部40によりユーザの要求パッケージのインストールが許可された場合、ユーザに対し要求パッケージを配信する。なお、要求処理部30は、実施の形態1における受信部1、取得部2及び送信部5に対応する。
 検証実行部40は、要求パッケージをユーザにインストールさせてよいか否かを判断する。具体的には、検証実行部40は、ユーザの環境情報をユーザリスト21から取得し、結果リスト11の情報を確認する。検証実行部40は、結果リスト11においてユーザの環境情報における要求パッケージの動作が検証済みである場合、その検証結果に基づいて、ユーザに要求パッケージのインストールを許可するか否かを判断する。したがって、既に検証結果が存在する場合、検証実行部40は新たな動作検証を行わない。なお、検証実行部40は、実施の形態1における構築部3及び検証部4に対応する。検証実行部40は、検証装置101の外部に備えられてもよい。
 検証実行部40は、結果リスト11においてユーザの環境情報における要求パッケージの動作が検証済みでない場合、新たに検証環境60を構築する。検証実行部40は、構築した環境上で、配布サーバ91から取得した要求パッケージをインストールし、インストール検証ツールにより動作検証を行う。インストール検証ツールは、例えば、パッケージのインストール時の振る舞いを学習し、異常を検知するシステムである。
 検証実行部40は、プロジェクト単位、PC単位それぞれにおける検証環境60を用意することができる。検証実行部40は、検証環境60にパッケージがインストールされる度に、検証環境60を更新する。
 検証実行部40は、インストールを許可する場合には要求パッケージをユーザに渡し、許可しない場合にはパッケージ生成部55により生成されたエラー表示用のパッケージをユーザに渡す。
 また、検証実行部40は、所定のタイミングにより検証環境60を破棄する。
 上記で述べたように、検証実行部40は、要求パッケージについて既に検証結果が存在する場合、その検証結果を利用する。システム開発において、開発者であるユーザのタイプによって、インストールしようとするパッケージには傾向がある。例えばWeb開発の場合はflask、深層学習の場合はtensorflow、というように、開発分野によってユーザが求めるパッケージは共通する。したがって、例えばユーザAがインストール要求をしたパッケージを、ユーザAと同じタイプであるユーザBもインストール要求することがある。このような場合、ユーザAの検証結果を利用するため、ユーザBについて検証を省略することができる。
 環境リスト記憶部50は、構築された検証環境60をリスト化し、環境リスト51として記憶する。
 図11に環境リスト51の一例を示す。環境リスト51には、例えば環境ID、ユーザ名、ユーザのIPアドレス、ユーザの環境情報が関連付けて記憶される。
 検証環境記憶部61は、検証環境60を記憶する。一例として、図2には60(a)から60(e)の5つの検証環境60を示している。それぞれの検証環境60は、例えば、検証装置101において、それぞれが専用の物理コンピュータ環境を使用しているかのように同時に又は並行して動作することができる仮想機械(VM)である。検証環境60は、例えばコンテナ型でもよいし、Web上で他のユーザと共有可能な仮想環境でもよい。
 パッケージ記憶部56は、配布サーバ91から取得したパッケージを記憶する。
 パッケージ生成部55は、要求パッケージの動作検証が異常である場合にユーザに配信するためのエラー表示用のパッケージを作成する。エラー表示用のパッケージには、例えば図12に示すようなスクリプトを記述する。このスクリプトを実行することにより、表示部74にエラーメッセージが表示される。表示部74に表示される内容について、通常の表示内容と比較して下記に詳細を述べる。
 図16から図18に示すフローチャートを用いて、パッケージ生成部55が行う処理を説明する。
 まず、図16は、検証結果が正常であった場合に検証システム200が行う処理の概要を示したフローチャートである。ユーザがパッケージを要求する(ステップS501)と、検証実行部40は検証環境60に要求パッケージをインストールし、(ステップS503)、動作検証を行う(ステップS505)。検証結果が正常であるので、要求処理部30は要求パッケージをインストール実行部73に送信する。インストール実行部73は要求パッケージを受信し、展開する(ステップS507)。インストール実行部73は、要求パッケージ内のスクリプトをインストールして実行する(ステップS509)。このとき表示部74に、図13に示すような内容が表示される。
 これに対して、図17及び図18は、検証結果が異常であった場合に検証システム200が行う処理の概要を示したフローチャートである。図17は検証結果に関する情報をユーザに通知しない場合、図18はユーザに通知する場合の処理を示している。
 図17における検証システム200の処理について説明する。ユーザが要求処理部30にパッケージを要求する(ステップS601)と、検証実行部40は検証環境60に要求パッケージをインストールし、(ステップS603)、動作検証を行う(ステップS605)。検証結果が異常であるので、検証実行部40はユーザに対して要求パッケージのインストールを許可しない。タイムアウトエラーにより処理は終了し、ユーザは要求パッケージのインストールをすることができない(ステップS607)。このとき表示部74に、図14に示すように、タイムアウトを示す内容が表示される。
 次に、図18における検証システム200の処理について説明する。ユーザが要求処理部30にパッケージを要求する(ステップS701)と、検証実行部40は検証環境60に要求パッケージをインストールし、(ステップS703)、動作検証を行う(ステップS705)。検証結果が異常であるので、検証実行部40はユーザに対して要求パッケージのインストールを許可しない。
 パッケージ生成部55は、要求パッケージの代わりに、エラー内容を表示する差替パッケージを作成する(ステップS707)。検証実行部40は、差替パッケージをユーザ端末71に送信する。インストール実行部73は、差替パッケージを受信し、展開する(ステップS709)。インストール実行部73は、差替パッケージ内のスクリプトをインストールして実行する(ステップS711)。このとき表示部74に、図15に示すようなエラーメッセージが表示される(ステップS713)。なお、ユーザの環境における要求パッケージの検証結果が既に結果リスト11に存在する場合はステップS703、S705の処理は行われないが、ステップS707以降の処理は同様である。
 差替パッケージにより表示されるエラーメッセージには、例えば図15の(a)に示すように、検証結果が異常であった旨と、異常についての詳細が確認できるURLが記載されている。これにより、ユーザは、要求パッケージのインストールが許可されなかったことと、許可されなかった原因を知ることができる。
 また、ユーザがインストールを要求したものと同名で異なるバージョンの要求パッケージがインストール可能である場合、図15の(b)に示すようにその旨をユーザに通知することができる。これにより、ユーザは要求パッケージそのもののインストールができなかった場合であっても、別のバージョンのパッケージをインストールすることにより必要な機能をインストールできる可能性がある。
 上記のように、インストール要求が許可されなかった場合に代わりのパッケージをユーザに配信し、通知することで、追加の構成を必要とすることなく、ユーザにとって有益なエラーメッセージを配信することができる。
 続いて、図19に示すフローチャートを用いて、検証システム200が実行する処理について説明する。
 初めに、ユーザはインストール実行部73により、要求処理部30に対してパッケージのインストールを要求する(ステップS101)。要求処理部30は、ユーザのインストール要求を受信する(ステップS103)。
 検証実行部40は、ユーザの環境情報をユーザIDやIPアドレスを基にユーザリスト21から取得する(ステップS105)。ユーザの環境情報がユーザリスト21に登録されていない場合、検証実行部40は他のユーザと共通のベース環境をユーザの環境情報として割り当てる。
 検証実行部40は、ユーザの環境において要求パッケージの検証が済んでいるか否かを結果リスト11により確認する(ステップS107)。例えば、図10に示した例のように、ユーザの環境にnumpy(1.16)及びtensorflow(1.14)がインストールされており、ユーザがkeras(2.3.0)のインストールを要求したとする。この例では、結果IDの101において上記の検証は完了していることが確認できる。
 検証実行部40は、ユーザの環境における要求パッケージの検証が済んでいることが確認できた場合(ステップS107のYES)、その検証結果を取得する(ステップS117)。検証実行部40は、取得した検証結果が正常であったか異常であったかを確認する(ステップS113)。検証結果が正常であった場合(ステップS113のYES)、要求処理部30が要求パッケージをユーザに配信する(ステップS115)。
 検証結果が異常であった場合(ステップS113のNO)、パッケージ生成部55がエラー表示用のパッケージのパッケージを生成する(ステップS119)。検証実行部40はエラー表示用のパッケージをユーザに配信する(ステップS121)。
 ステップS107において、パッケージの検証が済んでいることを確認できなかった場合(ステップS107のNO)、要求処理部30は、ネットワーク90を介して配布サーバ91にパッケージのインストール要求を行い、パッケージを取得する(ステップS109)。検証実行部40は、ユーザの環境情報に基づいて検証環境60を構築する。検証実行部40は、構築した検証環境60において、要求パッケージの動作検証を行う(ステップS111)。
 検証実行部40は、取得した検証結果が正常であったか異常であったかを確認する(ステップS113)。以降の処理は上述の場合と同様であるので省略する。
 このように、検証装置101は、要求パッケージが有害でないことを確認してからユーザへの中継を行うため、ユーザの環境に有害なパッケージがインストールされることを防ぐことができる。
 また、ユーザの環境では通常、プロキシ等が必須となるが、これらはパッケージの動作検証の妨げになる。検証装置101においてはこれらを外した環境により動作検証を行えるため、検証結果等の信頼性を高めることができる。
 以上説明したように、本実施の形態にかかる検証システム200によれば、検証装置101が配布サーバ91とユーザ端末71との間でパッケージのインストール要求の中継を行うため、ユーザ側の負荷を抑え、安全にパッケージを検証することができる。
 また、本実施の形態にかかる検証方法によれば、ソフトウェア開発用の配布パッケージを配布する配布サーバと端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信し、前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得し、前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築し、前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行し、前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信するので、開発者側の負荷を抑え、安全にパッケージを検証することができる。
<実施の形態3>
 ユーザからインストール要求がある度に一から検証環境60を構築していく場合、既にインストールされたパッケージが多いほど検証環境60の構築に時間が掛かる。そのため、本実施の形態では、検証環境60の構築に掛かる時間を削減する方法を説明する。なお、本実施の形態にかかる検証システム200の構成については実施の形態2と同様であるので説明を省略する。
 本実施の形態では、パッケージの動作検証結果をツリー構造として記憶する。ツリー構造により記憶することで、検証結果や検証環境60を視覚的に把握することができる。そのためこれらの管理者にとって管理が容易になるという利点がある。
 初めに、本実施の形態におけるツリーの構造について説明する。
 既に図10を用いて説明したように、パッケージの検証結果は、検証に用いられた環境情報と共に結果リスト11として記憶される。結果リスト11は、例えば図20に示したように、検証パッケージの複雑度や、検証結果が利用された回数(頻度)を示したものでもよい。
 図20に示した結果リスト11をツリー構造により表したものを図21に示す。図21に示すように、インストールしたパッケージはツリー上のノードとして表される。また、パッケージはインストールされた順に記録される。したがってパッケージがインストールされる度にノードが繋がり、ツリーが成長していく。
 パッケージの検証結果が異常である場合にはノードを増やさないため、各ノードはそのパッケージについて動作検証がなされ、結果が正常であったことを意味する。またツリーはその時点に至るまでの検証環境60を示している。
 図21に示したツリー図を用いて、検証システム200が行う処理を説明する。
 初めに、ユーザAはパッケージが何もインストールされていない初期状態にある(s50)。ユーザAがnumpy(a51)のインストール要求をすると、検証実行部40は、結果リスト11において、初期状態(s50)に対するnumpyの動作検証結果を確認する。検証結果がない場合、要求処理部30は、配布サーバ91から要求パッケージであるnumpyを取得し、パッケージ記憶部56に記憶する。
 検証実行部40は、ユーザAの初期状態(s50)の検証環境60を構築し、検証環境60上で、パッケージ記憶部56に記憶されたnumpyをインストールし、動作検証を行う。検証結果が正常であった場合、要求処理部30はユーザAにnumpyのパッケージを渡す。ユーザAはnumpyをインストールする(a51)。検証実行部40は、構築したnumpyの検証環境60を保持する。
 その後、ユーザAがpandasのインストール要求をしたとする。検証実行部40は、既に検証済みであるnumpy(a51)の検証は行わない。検証実行部40は、直近の検証環境60、すなわちnumpyがインストールされた検証環境60を用いて、pandasの動作検証を行う。pandasの検証結果が正常であった場合、ユーザAはpandasをインストールする(a52)。仮に、pandasの検証結果が異常であった場合は、検証実行部40は構築した検証環境60を破棄し、ユーザAに対しエラー表示用のパッケージを配信する。
 ユーザBが初期状態(s50)からflask(b51)をインストールする場合は、要求パッケージが異なるため、ユーザAの検証結果を用いることはできない。そのため、ツリー上は別のノードとなり、flask(b51)についてもnumpy(a51)の場合と同様に検証を行う必要がある。
 また、図22に示したツリーにおいて、同一のパッケージを別のユーザがインストールした場合を説明する。
 図22において、ユーザAがnumpy、tensorflow、kerasの順にインストールしたとする(s1、a1、a2)。検証実行部40は各ステップにおいて検証を行い、各ステップにおける検証環境60を保持する。
 次にユーザBが、numpy、scikit-learnの順にインストール要求をした場合(s1、b1)、numpyは既にユーザAにおいて検証済みのため、検証実行部40はnumpyの検証を行わずにユーザBにnumpyのインストールを許可する。検証実行部40は、numpyが検証済みの検証環境60を用いてscikit-learnの検証を実行する(b1)。
 ここで、ユーザAがさらにscikit-learnのインストール要求をしたとする(a3)。ユーザBによりscikit-learnは検証されているが(b1)、検証環境60が異なるため、検証実行部40はa2の検証環境60を用いて、改めてscikit-learnの検証を行う。このように、検証環境60が異なる場合には、要求パッケージが同一であっても異なるノードとして管理する。
 以上説明したように、本実施の形態にかかる検証システム200によれば、検証結果をツリー構造により表すことで、検証結果及び検証環境60を効率的に管理することができる。
<実施の形態4>
 既に述べたように、公開されるパッケージの数は膨大である。検証結果を利用するにあたり、環境情報が完全に一致した結果のみを利用し、少しでも異なれば新たな検証を行おうとすると、検証環境60の増加によりマシンのリソースを圧迫する。
 上記問題の対応策として、本実施の形態では、効率的に検証結果を利用する方法を説明する。なお、本実施の形態にかかる検証システム200の構成については実施の形態2と同様であるので説明を省略する。
 実施の形態3において説明した図22のツリーを用いて、本実施の形態において検証システム200が実行する処理を説明する。ユーザA及びBは、ツリーに示されるようにs1、a1、a2、b1のパッケージをインストールしており、ユーザAがscikit-learn(a3)のインストール要求をしているとする。
 ここで、検証実行部40は、ツリー上の一定のホップ数の範囲内にあるscikit-learnの検証結果を利用する。具体的には、検証実行部40は、検証結果の利用を許容するホップ数の閾値を設定し、閾値以内の範囲内にscikit-learnの検証結果があればそれを利用し、そうでなければ新たに検証を行う。
 例えば、閾値を4に設定したとする。図22において、ユーザBのscikit-learnのノード(b1)はユーザAがインストール要求しているノード(a3)から4ホップ以内に存在する。したがって検証実行部40は、b1の結果を利用し、新たな検証を行わずにユーザAのscikit-learn(a3)のインストール要求を許可する。
 なお、上記の場合、検証実行部40はユーザAのインストール要求に対する検証は行わないが、検証環境60の更新は行う。また、上記の例ではホップ数を4として閾値を設定したが、閾値はこれに限られず、自由に設定することができる。閾値を大きくすれば検証の回数をより少なくすることができ、閾値を小さくすれば、より近い検証環境における検証結果のみを利用することができる。
 また、中間に位置するパッケージの複雑さを考慮して閾値を設定してもよい。パッケージの複雑度は、例えばインストール時に関係するプロセス、ファイル数、ディレクトリ数等から算出し、結果リスト11に記憶する。
 例えば、上記の例ではnumpy(s1)とscikit-learn(a3)との間にあるtensorflow(a1)及びkeras(a2)の複雑さを考慮する。例えばノード間のホップ数を求める際に、ノード間の距離に加えて、パッケージの複雑度の10分の1を加算する。例えば図20に示した例ではnumpyの複雑度が3であるので、numpyがツリーの中間にある場合には、ホップ数に0.3を加えたものを閾値との比較に用いる。
 以上説明したように、本実施の形態にかかる検証システム200によれば、検証結果等のツリーにおける所定の範囲内の検証結果を利用して、効率的に検証を行うことができる。
<実施の形態5>
 次に、図23及び図24に示したツリー図を用いて、本実施の形態を説明する。本実施の形態では、パッケージのインストール順のみが異なる場合の検証の効率化について説明する。なお、本実施の形態にかかる検証システム200の構成については実施の形態2と同様であるので説明を省略する。
 図23に示すように、ユーザAがnumpy、tensorflow、keras(s11、a11、a12)を、ユーザBがnumpy、scikit-learn、tensorflow、keras(s11、b11~b13)をインストールしているとする。各ステップにおいては検証実行部40により動作検証が完了している。
 ここで、ユーザAがscikit-learnのインストールを要求したとする(a13)。検証実行部40は、1つのノードを起点として、検証パッケージが属する枝とノードの順番のみが異なる他の枝を検出した場合に、他の枝の検証結果を利用する。図23に示した例では、分岐する直前のノードであるnumpy(s11)を起点として、検証パッケージ(a13)が属するユーザA側の枝と、ユーザB側の枝とでは、パッケージの順番のみが異なっている。
 したがって、検証実行部40はユーザBにおける検証結果を使用し、ユーザAに対するscikit-learn(a13)の検証は行わずに、ユーザAのインストール要求を許可する。そのためツリーにおいてノードは追加されず、ツリーは図24のように表される。なお、検証は行わないが、検証実行部40は検証環境60の更新を行う。
 上記の例では、要求パッケージの属する枝と他の枝が、分岐の直前のノードを起点として順番のみ異なる場合を説明したが、これに限られない。例えば、中間に別のノードが含まれており、順番以外に異なる要素があってもよい。また、一定の基準を設け、順番がある程度同一であることを必要としてもよい。
 以上説明したように、本実施の形態にかかる検証システム200によれば、検証結果のツリーにおいて、起点となるノードから順番のみ異なる検証結果の枝が存在する場合に、これを利用して、効率的に検証を行うことができる。
<実施の形態6>
 次に、図25を用いて本実施の形態を説明する。本実施の形態では、検証結果のツリーにおいて、他の枝と共通するパッケージの割合に基づいて検証を効率化する方法について説明する。なお、本実施の形態にかかる検証システム200の構成については実施の形態2と同様であるので説明を省略する。
 図25において、ユーザAが初期状態からnumpy、tensorflow、kerasをインストールしたとする(s21、a21~a23)。また、ユーザBが初期状態からdocker-compose、numpy、ryd、tensorflowをインストールしたとする(s21、c21~c24)。
 ここで、ユーザBがkerasのインストールを要求したとする(c25)。検証実行部40は、1つのノードを起点として、検証パッケージが属する枝と共通するパッケージが所定の割合以上でインストールされた他の枝を検出した場合に、他の枝の検証結果を利用する。
所定の割合は、例えば5割である。
 図25に示した例では、初期状態(s21)を起点として、ユーザA側の枝には3つ、ユーザB側の枝には4つのパッケージがインストールされている。ユーザA、Bのインストール済みパッケージを比較すると、numpy(a21、c22)及びtensorflow(a22、c24)の2つが共通している。
 検証実行部40は、これらの共通するパッケージが各ユーザのインストール済みのパッケージのうちに占める割合を算出する。上記の例では、ユーザAについては3分の2、ユーザBについては4分の2となる。したがって、ユーザAの枝とユーザBの枝とでは、5割以上のパッケージが共通していることとなる。したがって、検証実行部40は、ユーザBのインストール要求に対するkerasの検証は行わずユーザAの検証結果を利用し、ユーザBのkerasのインストールを許可する。なお、検証は行わないが検証環境60の更新は行う。
 上記の説明では所定の割合を5割として説明したが、これに限られない。割合を高く設定すれば各枝のインストール環境が近くなり、検証精度を高められると考えられる。また、例えば実施の形態5などと組み合わせて、共通するパッケージの割合が低い場合には、順番が一致していればインストールを許可するなどとしてもよい。
 以上説明したように、本実施の形態にかかる検証システム200によれば、検証結果等のツリーにおいて、他の枝と共通するパッケージが所定の割合以上の場合に、他の枝の検証結果を利用し、効率的に検証を行うことができる。
<実施の形態7>
 実施の形態4から6では、検証済みの結果を効率的に利用する方法を説明してきた。しかし、公開されるパッケージの数と共にユーザからの要求パターンは増加し、既存の検証結果が利用できない場合には新たに検証環境60を構築せざるを得ない。一度構築した検証環境60を全て維持すると、検証を行うマシンのリソースを圧迫することとなる。
 そこで、本実施の形態では、検証のために構築された検証環境60を効率的に管理する方法を説明する。
 本実施の形態では、既に述べてきたツリー構造を用いて検証環境60についても管理を行う。図26に示すように、検証結果のツリーにおいて、各ノードは検証結果が利用された回数情報を保持する。
 具体的には、検証実行部40は、最初の検証が行われたときを1回目として、利用された回数情報を結果リスト11に記憶する。検証実行部40は、検証結果が利用される度に1を加算し、結果リスト11を更新する。結果リスト11は、例えば図20に示すように頻度欄を設け、利用回数が把握できるようにする。例えば最初の検証が行われた後、検証結果を1回利用されれば頻度は2となり、一度も利用されない場合は1のままである。検証結果が利用された場合、検証実行部40は上位にある全てのノードについても1を加算する。
 検証実行部40は、所定のタイミングにおいて、上記の頻度に基づいて、対応する検証環境60を削除する。所定のタイミングとは、例えば、検証環境60の数が予め設定した上限に達したとき等である。検証実行部40は、例えば頻度が2以下の検証結果に対応する検証環境60を削除する。検証環境60を削除した後のツリーの例を図27に示す。なお、削除するのは検証環境60であり、検証結果や回数情報は削除せずに保持しておく。よって、頻度の低い検証結果であっても、将来的に利用することができる。
 図27では、頻度の低いノードを削除して示したが、図28に示すように、ツリー上で削除の痕跡が把握できる状態によりツリーを更新してもよい。これにより、管理者はより詳細に状況を把握することができる。
 以上説明したように、本実施の形態にかかる検証システム200によれば、検証環境60を効率的に管理することができる。
<ハードウェアの構成例>
 図29は、検証処理を実現するためのハードウェア構成例を示すブロック図である。当該ハードウェア構成は、プロセッサ301とメモリ302を備えている。
 プロセッサ301は、メモリ302からコンピュータプログラム(検証プログラム)を読み出して実行することで、上述の実施形態においてフローチャートを用いて説明された検証装置の処理を行う。ここで、検証プログラムは、ソフトウェア開発用の配布パッケージを配布する配布サーバと端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信し、前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得し、前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築し、前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行し、前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信する処理をコンピュータに実行させるものである。
 プロセッサ301は、例えば、マイクロプロセッサ、MPU(Micro Processing Unit)、又はCPU(Central Processing Unit)であってもよい。プロセッサ301は、複数のプロセッサを含んでもよい。
 メモリ302は、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ302は、プロセッサ301から離れて配置されたストレージを含んでもよい。この場合、プロセッサ301は、図示されていないI/Oインタフェースを介してメモリ302にアクセスしてもよい。
 図6の例では、メモリ302は、ソフトウェアモジュール群を格納するために使用される。プロセッサ301は、これらのソフトウェアモジュール群をメモリ302から読み出して実行することで、上述の実施形態において説明された検証装置100の処理を行うことができる。
 プロセッサの各々は、図面を用いて説明されたアルゴリズムをコンピュータに行わせるための命令群を含む1又は複数のプログラムを実行する。このプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、Compact Disc Read Only Memory(CD-ROM)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、Programmable ROM(PROM)、Erasable PROM(EPROM)、フラッシュROM、Random Access Memory(RAM))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
 なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
 例えば、上述の説明では、プロジェクトごとに検証装置101を用いたが、これに限られない。例えば、プロジェクトをプロジェクトIDにより識別するなどして、1つの検証装置101内に複数のプロジェクトの情報をまとめてもよい。
 また、検証結果等のツリー構造は上述したものに限られず、例えば、Python、Node.js等のパッケージ単位でツリーを分けてもよい。
 また、上述の例では、検証環境60を検証結果の利用頻度に基づいて削除したが、これに限られない。例えば、環境情報の類似度を算出し、類似度の高い検証環境60を統合し、不要なものを削除してもよい。
 また、例えば、検証結果等が利用された日時に基づいて検証環境60を削除してもよい。具体的には、検証実行部40は、検証結果が利用された日時を結果リスト11に記憶する。結果リスト11はその一定数を履歴として保持してもよいし、その都度更新されて最終利用日時のみが残るようにしてもよい。例えば、検証実行部40は、所定の期間を定めて、その期間が経過した検証環境60を削除する。例えば、所定の期間を1年と定めた場合、検証実行部40は、最後に検証結果が利用されてから1年が経過した検証環境60を削除する。
 上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
 (付記1)
 ソフトウェア開発用の配布パッケージを配布する配布サーバと端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信する受信手段と、
 前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得する取得手段と、
 前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築する構築手段と、
 前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行する検証手段と、
 前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信する送信手段と、
 を備える、検証装置。
 (付記2)
 前記受信手段は、前記端末装置から前記配布サーバに対し前記配布パッケージの取得を要求する前記インストール要求を受信する、
 付記1に記載の検証装置。
 (付記3)
 前記受信手段は、前記端末装置から前記検証装置に対し前記配布パッケージの取得を要求する前記インストール要求を受信する、
 付記1に記載の検証装置。
 (付記4)
 前記端末装置の識別情報と前記開発環境の開発環境情報とを関連付けた環境リストを記憶する記憶手段を備え、
 前記構築手段は、前記環境リストに基づいて、前記インストール要求に含まれる前記端末装置の識別情報に対応する開発環境情報を特定し、前記特定した開発環境情報に基づいて前記検証環境を構築する、
 付記1乃至3のいずれか一項に記載の検証装置。
 (付記5)
 前記端末装置を使用するユーザの識別情報と前記開発環境の開発環境情報とを関連付けた環境リストを記憶する記憶手段を備え、
 前記構築手段は、前記環境リストに基づいて、前記インストール要求に含まれる前記ユーザの識別情報に対応する開発環境情報を特定し、前記特定した開発環境情報に基づいて前記検証環境を構築する、
 付記1乃至3のいずれか一項に記載の検証装置。
 (付記6)
 前記端末装置を使用する開発プロジェクトの識別情報と前記開発環境の開発環境情報とを関連付けた環境リストを記憶する記憶手段を備え、
 前記構築手段は、前記環境リストに基づいて、前記インストール要求に含まれる前記開発プロジェクトの識別情報開発環境情報を特定し、前記特定した開発環境情報に基づいて前記検証環境を構築する、
 付記1乃至3のいずれか一項に記載の検証装置。
 (付記7)
 前記構築手段は、前記端末装置から前記開発環境情報を取得し、前記取得した開発環境情報を前記環境リストに登録する、
 付記4乃至6のいずれか一項に記載の検証装置。
 (付記8)
 前記構築手段は、前記端末装置に提供される開発環境の開発環境情報を前記環境リストに登録する、
 付記4乃至6のいずれか一項に記載の検証装置。
 (付記9)
 前記構築手段は、前記検証結果に基づいて、前記環境リストの開発環境情報を更新する、
 付記4乃至8のいずれか一項に記載の検証装置。
 (付記10)
 前記インストール検証に用いた検証環境を保持する検証環境保持手段を備え、
 前記検証手段は、前記端末装置の開発環境に応じた検証環境が前記保持された検証環境に対応する場合、前記対応する検証環境を用いて前記インストール検証を実行する、
 付記1乃至9のいずれか一項に記載の検証装置。
 (付記11)
 前記検証環境保持手段は、前記インストール検証に用いた複数の検証環境を前記配布パッケージのインストール履歴に関連付けて保持し、
 前記検証手段は、前記端末装置の開発環境に応じた検証環境が、前記関連付けられた複数の検証環境のいずれかに対応する場合、前記対応する検証環境を用いて前記インストール検証を実行する、
 付記10に記載の検証装置。
 (付記12)
 前記検証環境保持手段は、前記インストール検証に用いた複数の検証環境を前記配布パッケージのインストール順にツリー状に関連付けて保持し、
 前記検証手段は、前記端末装置の開発環境に応じた検証環境が、前記ツリー状に関連付けられた複数の検証環境のいずれかに対応する場合、前記対応する検証環境を用いて前記インストール検証を実行する、
 付記11に記載の検証装置。
 (付記13)
 前記検証手段は、前記端末装置の開発環境に応じた検証環境の前記配布パッケージのインストール履歴と、前記対応する検証環境の前記配布パッケージのインストール履歴との差が所定の範囲内の場合、前記対応する検証環境を用いて前記インストール検証を実行する、
 付記11又は12に記載の検証装置。
 (付記14)
 前記検証手段は、前記端末装置の開発環境に応じた検証環境の前記配布パッケージのインストールの複雑度と、前記対応する検証環境の前記配布パッケージのインストールの複雑度との差が所定の範囲内の場合、前記対応する検証環境を用いて前記インストール検証を実行する、
 付記13に記載の検証装置。
 (付記15)
 前記検証環境保持手段は、所定の条件を満たす場合、前記保持された検証環境を削除する、
 付記10乃至14のいずれか一項に記載の検証装置。
 (付記16)
 前記検証環境保持手段は、前記検証環境と前記インストール検証に再利用された回数とを関連付けて保持し、前記再利用された回数に基づいて、前記保持された検証環境を削除する、
 付記15に記載の検証装置。
 (付記17)
 前記検証環境保持手段は、前記検証環境と前記インストール検証に再利用された時間とを関連付けて保持し、前記再利用された時間に基づいて、前記保持された検証環境を削除する、
 付記15又は16に記載の検証装置。
 (付記18)
 前記インストール検証の検証結果を検証環境に関連付けて保持する検証結果保持手段を備え、
 前記送信手段は、前記端末装置の開発環境に応じた検証環境が前記保持された検証環境に対応する場合、前記対応する検証環境の検証結果に基づいて、前記配布パッケージを送信する、
 付記1乃至17のいずれか一項に記載の検証装置。
 (付記19)
 前記検証結果保持手段は、前記インストール検証に用いた複数の検証環境を前記配布パッケージのインストール履歴に関連付けて検証結果とともに保持し、
 前記送信手段は、前記端末装置の開発環境に応じた検証環境が、前記関連付けられた複数の検証環境のいずれかに対応する場合、前記対応する検証環境の検証結果に基づいて、前記配布パッケージを送信する、
 付記18に記載の検証装置。
 (付記20)
 前記検証結果保持手段は、前記インストール検証に用いた複数の検証環境を前記配布パッケージのインストール順にツリー状に関連付けて検証結果とともに保持し、
 前記送信手段は、前記端末装置の開発環境に応じた検証環境が、前記ツリー状に関連付けられた複数の検証環境のいずれかに対応する場合、前記対応する検証環境の検証結果に基づいて、前記配布パッケージを送信する、
 付記19に記載の検証装置。
 (付記21)
 前記送信手段は、前記端末装置の開発環境に応じた検証環境の前記配布パッケージのインストール履歴と、前記対応する検証環境の前記配布パッケージのインストール履歴との差が所定の範囲内の場合、前記対応する検証環境の検証結果に基づいて、前記配布パッケージを送信する、
 付記19又は20に記載の検証装置。
 (付記22)
 前記検証手段は、前記端末装置の開発環境に応じた検証環境の前記配布パッケージのインストールの複雑度と、前記対応する検証環境の前記配布パッケージのインストールの複雑度との差が所定の範囲内の場合、前記対応する検証環境の検証結果に基づいて、前記配布パッケージを送信する、
 付記21に記載の検証装置。
 (付記23)
 前記送信手段は、前記検証結果が正常の場合、前記取得した配布パッケージを前記端末装置へ送信し、前記検証結果が異常の場合、前記配布パッケージの代わりに前記検証結果等の異常を示すエラーパッケージを前記送信端末へ送信する、
 付記1乃至22のいずれか一項に記載の検証装置。
 (付記24)
 前記配布パッケージは、インストール実行用の所定のスクリプトを含み、
 前記エラーパッケージは、前記所定のスクリプトとして、前記検証結果等の異常を出力する命令を含むダミーのスクリプトを含む、
 付記23に記載の検証装置。
 (付記25)
 前記ダミーのスクリプトは、前記検証結果等の異常の詳細を示す情報、又は、前記検証結果が異常である配布パッケージに関連する他の配布パッケージの情報を出力する命令を含む、
 付記24に記載の検証装置。
 (付記26)
 ソフトウェア開発用の配布パッケージを配布する配布サーバと、前記配布パッケージをインストールする端末装置と、検証装置とを備え、
 前記検証装置は、
  前記配布サーバと前記端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信する受信手段と、
  前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得する取得手段と、
  前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築する構築手段と、
  前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行する検証手段と、
  前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信する送信手段と、
 を備える、検証システム。
 (付記27)
 ソフトウェア開発用の配布パッケージを配布する配布サーバと端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信し、
 前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得し、
 前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築し、
 前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行し、
 前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信する、
 検証方法。
 (付記28)
 ソフトウェア開発用の配布パッケージを配布する配布サーバと端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信し、
 前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得し、
 前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築し、
 前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行し、
 前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信する、
 処理をコンピュータに実行させるための検証プログラムが格納された非一時的なコンピュータ可読媒体。
 1 受信部
 2 取得部
 3 構築部
 4 検証部
 5 送信部
 10 結果リスト記憶部
 11 結果リスト
 20 ユーザリスト記憶部
 21 ユーザリスト
 30 要求処理部
 40 検証実行部
 50 環境リスト記憶部
 51 環境リスト
 55 パッケージ生成部
 56 パッケージ記憶部
 60 検証環境
 61 検証環境記憶部
 71 ユーザ端末
 72 環境登録部
 73 インストール実行部
 74 表示部
 90 ネットワーク
 91 配布サーバ
 100、101 検証装置
 200 検証システム

Claims (28)

  1.  ソフトウェア開発用の配布パッケージを配布する配布サーバと端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信する受信手段と、
     前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得する取得手段と、
     前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築する構築手段と、
     前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行する検証手段と、
     前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信する送信手段と、
     を備える、検証装置。
  2.  前記受信手段は、前記端末装置から前記配布サーバに対し前記配布パッケージの取得を要求する前記インストール要求を受信する、
     請求項1に記載の検証装置。
  3.  前記受信手段は、前記端末装置から前記検証装置に対し前記配布パッケージの取得を要求する前記インストール要求を受信する、
     請求項1に記載の検証装置。
  4.  前記端末装置の識別情報と前記開発環境の開発環境情報とを関連付けた環境リストを記憶する記憶手段を備え、
     前記構築手段は、前記環境リストに基づいて、前記インストール要求に含まれる前記端末装置の識別情報に対応する開発環境情報を特定し、前記特定した開発環境情報に基づいて前記検証環境を構築する、
     請求項1乃至3のいずれか一項に記載の検証装置。
  5.  前記端末装置を使用するユーザの識別情報と前記開発環境の開発環境情報とを関連付けた環境リストを記憶する記憶手段を備え、
     前記構築手段は、前記環境リストに基づいて、前記インストール要求に含まれる前記ユーザの識別情報に対応する開発環境情報を特定し、前記特定した開発環境情報に基づいて前記検証環境を構築する、
     請求項1乃至3のいずれか一項に記載の検証装置。
  6.  前記端末装置を使用する開発プロジェクトの識別情報と前記開発環境の開発環境情報とを関連付けた環境リストを記憶する記憶手段を備え、
     前記構築手段は、前記環境リストに基づいて、前記インストール要求に含まれる前記開発プロジェクトの識別情報開発環境情報を特定し、前記特定した開発環境情報に基づいて前記検証環境を構築する、
     請求項1乃至3のいずれか一項に記載の検証装置。
  7.  前記構築手段は、前記端末装置から前記開発環境情報を取得し、前記取得した開発環境情報を前記環境リストに登録する、
     請求項4乃至6のいずれか一項に記載の検証装置。
  8.  前記構築手段は、前記端末装置に提供される開発環境の開発環境情報を前記環境リストに登録する、
     請求項4乃至6のいずれか一項に記載の検証装置。
  9.  前記構築手段は、前記検証結果に基づいて、前記環境リストの開発環境情報を更新する、
     請求項4乃至8のいずれか一項に記載の検証装置。
  10.  前記インストール検証に用いた検証環境を保持する検証環境保持手段を備え、
     前記検証手段は、前記端末装置の開発環境に応じた検証環境が前記保持された検証環境に対応する場合、前記対応する検証環境を用いて前記インストール検証を実行する、
     請求項1乃至9のいずれか一項に記載の検証装置。
  11.  前記検証環境保持手段は、前記インストール検証に用いた複数の検証環境を前記配布パッケージのインストール履歴に関連付けて保持し、
     前記検証手段は、前記端末装置の開発環境に応じた検証環境が、前記関連付けられた複数の検証環境のいずれかに対応する場合、前記対応する検証環境を用いて前記インストール検証を実行する、
     請求項10に記載の検証装置。
  12.  前記検証環境保持手段は、前記インストール検証に用いた複数の検証環境を前記配布パッケージのインストール順にツリー状に関連付けて保持し、
     前記検証手段は、前記端末装置の開発環境に応じた検証環境が、前記ツリー状に関連付けられた複数の検証環境のいずれかに対応する場合、前記対応する検証環境を用いて前記インストール検証を実行する、
     請求項11に記載の検証装置。
  13.  前記検証手段は、前記端末装置の開発環境に応じた検証環境の前記配布パッケージのインストール履歴と、前記対応する検証環境の前記配布パッケージのインストール履歴との差が所定の範囲内の場合、前記対応する検証環境を用いて前記インストール検証を実行する、
     請求項11又は12に記載の検証装置。
  14.  前記検証手段は、前記端末装置の開発環境に応じた検証環境の前記配布パッケージのインストールの複雑度と、前記対応する検証環境の前記配布パッケージのインストールの複雑度との差が所定の範囲内の場合、前記対応する検証環境を用いて前記インストール検証を実行する、
     請求項13に記載の検証装置。
  15.  前記検証環境保持手段は、所定の条件を満たす場合、前記保持された検証環境を削除する、
     請求項10乃至14のいずれか一項に記載の検証装置。
  16.  前記検証環境保持手段は、前記検証環境と前記インストール検証に再利用された回数とを関連付けて保持し、前記再利用された回数に基づいて、前記保持された検証環境を削除する、
     請求項15に記載の検証装置。
  17.  前記検証環境保持手段は、前記検証環境と前記インストール検証に再利用された時間とを関連付けて保持し、前記再利用された時間に基づいて、前記保持された検証環境を削除する、
     請求項15又は16に記載の検証装置。
  18.  前記インストール検証の検証結果を検証環境に関連付けて保持する検証結果保持手段を備え、
     前記送信手段は、前記端末装置の開発環境に応じた検証環境が前記保持された検証環境に対応する場合、前記対応する検証環境の検証結果に基づいて、前記配布パッケージを送信する、
     請求項1乃至17のいずれか一項に記載の検証装置。
  19.  前記検証結果保持手段は、前記インストール検証に用いた複数の検証環境を前記配布パッケージのインストール履歴に関連付けて検証結果とともに保持し、
     前記送信手段は、前記端末装置の開発環境に応じた検証環境が、前記関連付けられた複数の検証環境のいずれかに対応する場合、前記対応する検証環境の検証結果に基づいて、前記配布パッケージを送信する、
     請求項18に記載の検証装置。
  20.  前記検証結果保持手段は、前記インストール検証に用いた複数の検証環境を前記配布パッケージのインストール順にツリー状に関連付けて検証結果とともに保持し、
     前記送信手段は、前記端末装置の開発環境に応じた検証環境が、前記ツリー状に関連付けられた複数の検証環境のいずれかに対応する場合、前記対応する検証環境の検証結果に基づいて、前記配布パッケージを送信する、
     請求項19に記載の検証装置。
  21.  前記送信手段は、前記端末装置の開発環境に応じた検証環境の前記配布パッケージのインストール履歴と、前記対応する検証環境の前記配布パッケージのインストール履歴との差が所定の範囲内の場合、前記対応する検証環境の検証結果に基づいて、前記配布パッケージを送信する、
     請求項19又は20に記載の検証装置。
  22.  前記検証手段は、前記端末装置の開発環境に応じた検証環境の前記配布パッケージのインストールの複雑度と、前記対応する検証環境の前記配布パッケージのインストールの複雑度との差が所定の範囲内の場合、前記対応する検証環境の検証結果に基づいて、前記配布パッケージを送信する、
     請求項21に記載の検証装置。
  23.  前記送信手段は、前記検証結果が正常の場合、前記取得した配布パッケージを前記端末装置へ送信し、前記検証結果が異常の場合、前記配布パッケージの代わりに前記検証結果等の異常を示すエラーパッケージを前記送信端末へ送信する、
     請求項1乃至22のいずれか一項に記載の検証装置。
  24.  前記配布パッケージは、インストール実行用の所定のスクリプトを含み、
     前記エラーパッケージは、前記所定のスクリプトとして、前記検証結果等の異常を出力する命令を含むダミーのスクリプトを含む、
     請求項23に記載の検証装置。
  25.  前記ダミーのスクリプトは、前記検証結果等の異常の詳細を示す情報、又は、前記検証結果が異常である配布パッケージに関連する他の配布パッケージの情報を出力する命令を含む、
     請求項24に記載の検証装置。
  26.  ソフトウェア開発用の配布パッケージを配布する配布サーバと、前記配布パッケージをインストールする端末装置と、検証装置とを備え、
     前記検証装置は、
      前記配布サーバと前記端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信する受信手段と、
      前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得する取得手段と、
      前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築する構築手段と、
      前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行する検証手段と、
      前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信する送信手段と、
     を備える、検証システム。
  27.  ソフトウェア開発用の配布パッケージを配布する配布サーバと端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信し、
     前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得し、
     前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築し、
     前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行し、
     前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信する、
     検証方法。
  28.  ソフトウェア開発用の配布パッケージを配布する配布サーバと端末装置との間で、前記端末装置から送信された前記配布パッケージのインストール要求を受信し、
     前記受信したインストール要求が要求する前記配布パッケージを前記配布サーバから取得し、
     前記受信したインストール要求に基づいて、前記端末装置の開発環境に応じた検証環境を構築し、
     前記構築した検証環境を用いて、前記取得した配布パッケージのインストール検証を実行し、
     前記インストール検証の検証結果に基づいて、前記取得した配布パッケージを前記端末装置へ送信する、
     処理をコンピュータに実行させるための検証プログラムが格納された非一時的なコンピュータ可読媒体。
PCT/JP2020/014410 2020-03-27 2020-03-27 検証装置、検証システム、検証方法及びコンピュータ可読媒体 WO2021192318A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2020/014410 WO2021192318A1 (ja) 2020-03-27 2020-03-27 検証装置、検証システム、検証方法及びコンピュータ可読媒体
JP2022509215A JP7343041B2 (ja) 2020-03-27 2020-03-27 検証装置、検証システム、検証方法及び検証プログラム
US17/907,802 US20230101077A1 (en) 2020-03-27 2020-03-27 Verification device, verification system, verification method, and computer readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/014410 WO2021192318A1 (ja) 2020-03-27 2020-03-27 検証装置、検証システム、検証方法及びコンピュータ可読媒体

Publications (1)

Publication Number Publication Date
WO2021192318A1 true WO2021192318A1 (ja) 2021-09-30

Family

ID=77891547

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/014410 WO2021192318A1 (ja) 2020-03-27 2020-03-27 検証装置、検証システム、検証方法及びコンピュータ可読媒体

Country Status (3)

Country Link
US (1) US20230101077A1 (ja)
JP (1) JP7343041B2 (ja)
WO (1) WO2021192318A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117493162B (zh) * 2023-12-19 2024-06-21 易方达基金管理有限公司 一种接口测试的数据校验方法、系统、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002091772A (ja) * 2000-09-13 2002-03-29 Nec Corp ソフトウェア更新装置、ソフトウェア更新システム、その更新方法、及び更新プログラムを記録した記録媒体
JP2004102951A (ja) * 2002-09-13 2004-04-02 Hitachi Ltd ネットワークシステム
JP2010039548A (ja) * 2008-07-31 2010-02-18 Fujitsu Ltd 情報処理装置、装置管理システム、装置管理方法及び、プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002091772A (ja) * 2000-09-13 2002-03-29 Nec Corp ソフトウェア更新装置、ソフトウェア更新システム、その更新方法、及び更新プログラムを記録した記録媒体
JP2004102951A (ja) * 2002-09-13 2004-04-02 Hitachi Ltd ネットワークシステム
JP2010039548A (ja) * 2008-07-31 2010-02-18 Fujitsu Ltd 情報処理装置、装置管理システム、装置管理方法及び、プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FUJI SOFT INCORPORATED, ROBOT BUSINESS PROMOTION DEPARTMENT: ""First PALRO"", ROBOCON MAGAZIN, no. 74, 1 March 2011 (2011-03-01), pages 36 - 40, ISSN: 1883-7832 *
MITSUIWA, YUKIO: "Linux power -up course", THE 69TH GCC EMBEDDED PROGRAMMING, 18 August 2005 (2005-08-18), pages 174 - 181, ISSN: 0916-6297 *

Also Published As

Publication number Publication date
US20230101077A1 (en) 2023-03-30
JPWO2021192318A1 (ja) 2021-09-30
JP7343041B2 (ja) 2023-09-12

Similar Documents

Publication Publication Date Title
US10521284B2 (en) System and method for management of deployed services and applications
EP3511820A1 (en) Cloud based artifact lifecycle management system and method thereof
US20180365686A1 (en) Smart contract lifecycle management
EP2989543B1 (en) Method and device for updating client
US20190394113A1 (en) Systems and methods to automatically evaluate blockchain-based solution performance
CN109656538A (zh) 应用程序的生成方法、装置、系统、设备和介质
CN109687987A (zh) 一种云平台部署方法、装置、电子设备及可读存储介质
US10402216B1 (en) Live support integration in a virtual machine based development environment
CN110096424B (zh) 测试的处理方法、装置、电子设备及存储介质
CN109995523B (zh) 激活码管理方法及装置、激活码生成方法及装置
CN109495532A (zh) 客户端更新方法和装置
US20050223101A1 (en) Computer-implemented method, system and program product for resolving prerequisites for native applications utilizing an open service gateway initiative ( OSGi) framework
CA2988434C (en) Automatic recharging system, method and server
US8108864B2 (en) Method and system for dynamically tracking arbitrary task dependencies on computers in a grid environment
US7716663B2 (en) Method, system and program product for controlling native applications using open service gateway initiative (OSGi) bundles
CN111104139A (zh) 一种固件升级方法、装置、设备及存储介质
CN113330419A (zh) 一种设备应用安装方法和装置
US9134983B2 (en) Uniquely identifying a machine
US9349012B2 (en) Distributed processing system, distributed processing method and computer-readable recording medium
CN108228197B (zh) 一种在集群中安装软件的方法和装置
WO2021192318A1 (ja) 検証装置、検証システム、検証方法及びコンピュータ可読媒体
US11068487B2 (en) Event-stream searching using compiled rule patterns
US20200326952A1 (en) Modification procedure generation device, modification procedure generation method and storage medium for storing modification procedure generation program
CN113254158B (zh) 一种深度学习系统的部署方法和装置
CN109814911A (zh) 用于管理脚本程序的方法、装置、计算机设备及存储介质

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022509215

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

Country of ref document: EP

Kind code of ref document: A1