(57)【要約】【課題】複数のプログラム実行環境で動作可能なソフトウェアを直感的な操作で開発可能なソフトウェア開発システムを提供する。【解決手段】それぞれコンピュータで実行される処理に対応する複数の処理オブジェクトを画面上に表示し、当該複数の処理オブジェクトに対する開発者からの操作を受け付けることによって、開発者によるソフトウェアの作成を実現し、開発者が作成するソフトウェアを、互いに異なる複数種類のオペレーティングシステムのいずれでも実行可能な実行用コードとして出力し、出力された実行用コードを読み込んでソフトウェアを実行するソフトウェア開発システムである。【選択図】図１
2016153997.tif 000002
【特許請求の範囲】
【請求項１】
それぞれコンピュータで実行される処理に対応する複数の処理オブジェクトを画面上に表示し、当該複数の処理オブジェクトに対する開発者からの操作を受け付けることによって、開発者によるソフトウェアの作成を実現するソフトウェア作成手段と、
前記ソフトウェア作成手段により開発者が作成するソフトウェアを、互いに異なる複数種類のオペレーティングシステムのいずれでも実行可能な実行用コードとして出力するコード出力手段と、
前記実行用コードを読み込んで前記ソフトウェアを実行するソフトウェア実行手段と、
を含むことを特徴とするソフトウェア開発システム。
【請求項２】
請求項１に記載のソフトウェア開発システムにおいて、
前記複数の処理オブジェクトは、所定の処理を実行して実行結果の値を出力する処理に対応する値出力処理オブジェクト、及び、入力された値を用いて処理を実行する値入力処理オブジェクトを含み、
前記値入力処理オブジェクトは、値の入力を受け付けるための入力領域を備えており、
前記ソフトウェア作成手段が、前記値出力処理オブジェクトを操作対象として、前記値入力処理オブジェクトの入力領域を指定する操作を開発者から受け付けた場合、前記コード出力手段は、前記値出力処理オブジェクトに対応する処理の出力値を入力値として用いて、前記値入力処理オブジェクトに対応する処理を実行するという処理内容を、前記実行用コードに含める
ことを特徴とするソフトウェア開発システム。
【請求項３】
請求項２に記載のソフトウェア開発システムにおいて、
前期ソフトウェア作成手段は、
前記値出力処理オブジェクトを、当該値出力処理オブジェクトに対応する処理の出力値のデータ型を識別可能な態様で前記画面上に表示し、
前記値入力処理オブジェクトが備える入力領域を、当該値入力処理オブジェクトに対応する処理で利用可能な入力値のデータ型を識別可能な態様で、かつ、当該入力値のデータ型が前記出力値のデータ型と同じ場合には当該出力値のデータ型を表す態様と対応する態様で、前記画面上に表示する
ことを特徴とするソフトウェア開発システム。
【請求項４】
請求項３に記載のソフトウェア開発システムにおいて、
前期ソフトウェア作成手段は、前記値出力処理オブジェクトを、対応する処理の出力値のデータ型に関連づけられた色で表示するとともに、前記値入力処理オブジェクトの入力領域を、対応する処理で利用可能な入力値のデータ型に関連づけられた色で表示する
ことを特徴とするソフトウェア開発システム。
【請求項５】
請求項１から４のいずれか一項に記載のソフトウェア開発システムにおいて、
前記実行用コードはスクリプト言語によって記述される
ことを特徴とするソフトウェア開発システム。
【請求項６】
請求項５に記載のソフトウェア開発システムにおいて、
前記ソフトウェア実行手段は、一つのソースコードに基づいて、互いに異なるオペレーティングシステムで動作する複数種類のネイティブアプリケーションプログラムを生成可能な開発エンジンによって生成されるインタプリタである
ことを特徴とするソフトウェア開発システム。
【請求項７】
請求項１から６のいずれか一項に記載のソフトウェア開発システムにおいて、
前記ソフトウェア作成手段は、前記ソフトウェアの実行時に画面に表示すべきデフォルト画像のファイルを備えており、開発者が前記ソフトウェアを作成する際に当該デフォルト画像を表示するとともに、当該デフォルト画像のファイルに代えて代替画像のファイルを使用すべき旨を指示する操作を開発者から受け付ける
ことを特徴とするソフトウェア開発システム。
【請求項８】
請求項７に記載のソフトウェア開発システムにおいて、
前記コード出力手段は、前記ソフトウェア作成手段が前記代替画像の使用指示を開発者から受け付けた場合、当該代替画像のファイルを前記実行用コードとともに出力し、
前記ソフトウェア実行手段は、前記実行用コードとともに前記代替画像のファイルが出力されている場合、当該代替画像のファイルを読み込んで、前記ソフトウェアの実行時に画面上に表示する
ことを特徴とするソフトウェア開発システム。
【請求項９】
請求項８に記載のソフトウェア開発システムにおいて、
前記ソフトウェア実行手段は、前記デフォルト画像と対応する対応画像のファイルを備えており、
前記コード出力手段は、前記ソフトウェア作成手段が前記代替画像の使用指示を開発者から受け付けなかった場合、前記デフォルト画像のファイル自体は出力せずに、デフォルト画像を使用すべき旨を示す情報を前記実行用コードに含めて出力し、
前記ソフトウェア作成手段は、前記実行用コードにデフォルト画像を使用すべき旨を示す情報が含まれる場合、前記対応画像のファイルを読み込んで、前記ソフトウェアの実行時に画面上に表示する
ことを特徴とするソフトウェア開発システム。
【請求項１０】
請求項１から９のいずれか一項に記載のソフトウェア開発システムにおいて、
前記ソフトウェア作成手段は、
前記複数の処理オブジェクトのそれぞれに対応するデータ要素を生成し、
前記画面上に表示される第１の処理オブジェクトに第２の処理オブジェクトを連結させる連結操作を開発者から受け付けた場合、前記第１の処理オブジェクトに対応するデータ要素に前記第２の処理オブジェクトに対応するデータ要素を従属させ、
各処理オブジェクトを指定する移動操作を開発者から受け付けた場合、操作対象として指定された処理オブジェクト、及び当該処理オブジェクトに対応するデータ要素に従属するデータ要素に対応する処理オブジェクトを合わせて移動させる
ことを特徴とするソフトウェア開発システム。
【請求項１１】
請求項１０に記載のソフトウェア開発システムにおいて、
前記複数の処理オブジェクトは、入力された値を用いて処理を実行する値入力処理オブジェクトを含み、
前記値入力処理オブジェクトは、値の入力を受け付けるための入力領域を備えており、
前記ソフトウェア作成手段は、
前記複数の処理オブジェクトのそれぞれに対応づけて、第１のデータ要素、及び当該第１のデータ要素に従属する第２のデータ要素を生成し、
前期連結操作を受け付けた場合、前記第１の処理オブジェクトに対応する第１のデータ要素に前記第２の処理オブジェクトに対応する第１のデータ要素を従属させ、
前記移動操作を受け付けた場合、操作対象として指定された処理オブジェクトの前記第１のデータ要素に従属するデータ要素に対応する処理オブジェクトを合わせて移動させ、
一つの処理オブジェクトを操作対象として、前記値入力処理オブジェクトの入力領域を指定する操作を開発者から受け付けた場合、前記値入力処理オブジェクトの第２のデータ要素に当該一つの処理オブジェクトに対応する第１のデータ要素を従属させ、
前記コード出力手段は、値入力処理オブジェクトの第２のデータ要素に従属する第１のデータ要素に対応する処理オブジェクトに対応する処理の出力値を入力値として用いて当該値入力処理オブジェクトに対応する処理を実行するという処理内容を前記実行用コードに含めるとともに、前記連結操作によって連結された複数の処理オブジェクトに対応する複数の処理を順に実行するという処理内容を前記実行用コードに含める
ことを特徴とするソフトウェア開発システム。
【請求項１２】
請求項１から１１のいずれか一項に記載のソフトウェア開発システムにおいて、
複数の関数を含むライブラリを読み込む手段をさらに含み、
前記ソフトウェア作成手段は、前記複数の関数のそれぞれに対応する処理オブジェクトを生成して前記画面上に表示し、
前記ソフトウェア作成手段が、前記複数の関数のいずれかに対応する処理オブジェクトを選択する操作を開発者から受け付けた場合、前記コード出力手段は、当該選択された処理オブジェクトに対応する関数を呼び出すという処理内容を、前記実行用コードに含める
ことを特徴とするソフトウェア開発システム。
【請求項１３】
それぞれコンピュータで実行される処理に対応する複数の処理オブジェクトを画面上に表示し、当該複数の処理オブジェクトに対する開発者からの操作を受け付けることによって、開発者によるソフトウェアの作成を実現するソフトウェア作成手段と、
前記ソフトウェア作成手段により開発者が作成するソフトウェアを、互いに異なる複数種類のオペレーティングシステムのいずれでも実行可能な実行用コードとして出力するコード出力手段と、
ことを特徴とするソフトウェア開発装置。
【請求項１４】
それぞれコンピュータで実行される処理に対応する複数の処理オブジェクトを画面上に表示し、当該複数の処理オブジェクトに対する開発者からの操作を受け付けることによって、開発者によるソフトウェアの作成を実現するソフトウェア作成手段、及び、
前記ソフトウェア作成手段により開発者が作成するソフトウェアを、互いに異なる複数種類のオペレーティングシステムのいずれでも実行可能な実行用コードとして出力するコード出力手段、
としてソフトウェア開発用のコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの開発に用いられるソフトウェア開発システム、ソフトウェア開発装置、及びプログラムに関する。
【背景技術】
【０００２】
一般的に、コンピュータ上で動作するソフトウェアを新規に開発するためには、プログラミング言語を習得し、習得したプログラミング言語を用いてソフトウェアの処理内容を一から記述する必要がある。そのため、このようなソフトウェアの開発は誰でも気軽に行えるものではない。そこで、ビジュアルプログラミング言語などのように、専門的な知識なしで直感的にソフトウェアの開発を可能にする開発環境が提案されている。このようなビジュアルプログラミング言語の一例としては、文部科学省が開発した「プログラミン」などがあり、プログラミング教育などに利用されている。ビジュアルプログラミング言語を用いることで、ソフトウェアの開発者は、例えば予め用意されたオブジェクトを画面上に並べるなどの視覚的に分かり易い操作を中心にして、文字の記述を最小限に抑えながら新規ソフトウェアの開発を行うことができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
上記従来例における開発環境は、主としてプログラミング教育における利用が想定されたものであるという事情から、種々の制約がある。特に、上述したようなビジュアルプログラミング言語で開発されたソフトウェアは、その場で実行させることが想定されており、複数のプログラム実行環境で実行させることが難しかった。
【０００４】
本発明は上記実情を考慮してなされたもので、複数のプログラム実行環境で動作可能なソフトウェアを直感的な操作で開発可能なソフトウェア開発システム、ソフトウェア開発装置、及びプログラムを提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００５】
本発明に係るソフトウェア開発システムは、それぞれコンピュータで実行される処理に対応する複数の処理オブジェクトを画面上に表示し、当該複数の処理オブジェクトに対する開発者からの操作を受け付けることによって、開発者によるソフトウェアの作成を実現するソフトウェア作成手段と、前記ソフトウェア作成手段により開発者が作成するソフトウェアを、互いに異なる複数種類のオペレーティングシステムのいずれでも実行可能な実行用コードとして出力するコード出力手段と、前記実行用コードを読み込んで前記ソフトウェアを実行するソフトウェア実行手段と、を含むことを特徴とする。
【０００６】
また、本発明に係るソフトウェア開発装置は、それぞれコンピュータで実行される処理に対応する複数の処理オブジェクトを画面上に表示し、当該複数の処理オブジェクトに対する開発者からの操作を受け付けることによって、開発者によるソフトウェアの作成を実現するソフトウェア作成手段と、前記ソフトウェア作成手段により開発者が作成するソフトウェアを、互いに異なる複数種類のオペレーティングシステムのいずれでも実行可能な実行用コードとして出力するコード出力手段と、を含むことを特徴とする。
【０００７】
また、本発明に係るプログラムは、それぞれコンピュータで実行される処理に対応する複数の処理オブジェクトを画面上に表示し、当該複数の処理オブジェクトに対する開発者からの操作を受け付けることによって、開発者によるソフトウェアの作成を実現するソフトウェア作成手段、及び、前記ソフトウェア作成手段により開発者が作成するソフトウェアを、互いに異なる複数種類のオペレーティングシステムのいずれでも実行可能な実行用コードとして出力するコード出力手段、としてソフトウェア開発用のコンピュータを機能させるためのプログラムである。このプログラムは、コンピュータ読み取り可能な情報記憶媒体に格納されてよい。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態に係るソフトウェア開発システムの全体構成図である。
【図２】本発明の実施の形態に係るソフトウェア開発システムの機能を示す機能ブロック図である。
【図３】開発対象ソフトウェアの表示内容を編集するための開発画面の一例を示す図である。
【図４】開発対象ソフトウェアの処理内容を編集するための開発画面の一例を示す図である。
【図５】処理編集時の操作の具体例を説明するための図である。
【図６Ａ】連結操作が行われた状態の開発画面の表示例を示す図である。
【図６Ｂ】図６Ａの表示例に対応するデータ要素の階層構造を示す説明図である。
【図７Ａ】図６Ａの表示例からさらに連結操作が行われた状態の開発画面の表示例を示す図である。
【図７Ｂ】図７Ａの表示例に対応するデータ要素の階層構造を示す説明図である。
【図８Ａ】ライブラリの一例を示す図である。
【図８Ｂ】図８Ａのライブラリを読み込んで表示される処理オブジェクトの一例を示す図である。
【図９】本発明の第２の実施の形態に係るソフトウェア開発システムにおけるソフトウェア実行部の実現方法を説明するための図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００１０】
［第１実施形態］
本発明の第１の実施形態に係るソフトウェア開発システム１は、図１に示すように、開発者がソフトウェアの開発に使用するソフトウェア開発装置１０と、開発されたソフトウェアを動作させる端末装置２０と、を含んで構成される。以下では、ソフトウェア開発装置１０を用いて開発者が作成するソフトウェアを開発対象ソフトウェアという。
【００１１】
ソフトウェア開発装置１０は、パーソナルコンピュータ等の情報処理装置であって、制御部１１と、記憶部１２と、通信部１３と、を含んで構成されている。また、ソフトウェア開発装置１０は、操作デバイス１４及び表示デバイス１５と接続されている。
【００１２】
制御部１１は、ＣＰＵ等であって、記憶部１２に記憶されているプログラムに従って各種の情報処理を実行する。本実施形態において制御部１１が実行する処理の詳細については、後述する。記憶部１２は、ＲＡＭ等のメモリ素子を含んで構成され、制御部１１が実行するプログラム、及び当該プログラムが処理対象とする各種のデータを記憶する。通信部１３は、ＬＡＮカード等のデータ通信インタフェースであって、ソフトウェア開発装置１０は通信部１３を介してインターネット等の通信ネットワークと接続される。
【００１３】
操作デバイス１４は、例えばキーボードやマウス等であって、開発者から各種の操作入力を受け付ける。表示デバイス１５は、例えば液晶ディスプレイなどであって、制御部１１の制御に従って各種の情報を表示する。特に本実施形態では、操作デバイス１４は、表示デバイス１５の画面上の位置をユーザーが指示するためのポインティングデバイスを含む。このポインティングデバイスは、マウスやトラックボール、タッチパネルなどであってよい。開発者は、操作デバイス１４を介して表示デバイス１５の画面上に表示される各種のオブジェクトを操作して、ソフトウェアの開発作業を行う。操作デバイス１４及び表示デバイス１５は、ソフトウェア開発装置１０と別体の装置であってもよいし、ソフトウェア開発装置１０の筐体内に配置されてもよい。
【００１４】
端末装置２０は、開発対象ソフトウェアの利用者が使用する情報処理装置であって、パーソナルコンピュータやスマートフォン、タブレット等、プログラムを実行可能な各種のデバイスであってよい。端末装置２０は、通信ネットワークを介してソフトウェア開発装置１０と接続されており、ソフトウェア開発装置１０から開発対象ソフトウェアの実行用コードを受信する。なお、本実施形態では、互いに異なるオペレーティングシステムが動作する複数種類の端末装置２０がソフトウェア開発装置１０と接続されるものとする。
【００１５】
以下、本実施形態に係るソフトウェア開発システム１が実現する機能について、図２の機能ブロック図を用いて説明する。同図に示されるように、ソフトウェア開発システム１は、機能的に、ソフトウェア開発環境３１と、コード出力部３２と、ソフトウェア実行部３３と、を含んで構成される。これらの機能のうち、ソフトウェア開発環境３１、及びコード出力部３２は、ソフトウェア開発装置１０の制御部１１が記憶部１２に記憶された開発用プログラムを実行することによって実現される。また、ソフトウェア実行部３３は、各端末装置２０が所定のプログラムを実行することによって実現される。これらのプログラムは、光ディスクなどの各種のコンピュータ読み取り可能な情報記憶媒体に格納されてソフトウェア開発装置１０及び端末装置２０に提供されてもよいし、インターネット等の通信ネットワークを介して提供されてもよい。
【００１６】
ソフトウェア開発環境３１は、開発者によるソフトウェア開発を実現するための機能であって、開発作業用の画面（以下、開発画面という）を表示デバイス１５に表示するとともに、開発者が操作デバイス１４を操作して行った指示を受け付けて開発画面の表示内容を更新する。このソフトウェア開発環境３１を利用することによって、開発者は開発対象ソフトウェアが表示すべき内容や実行すべき処理の内容をソフトウェア開発装置１０に指示することができる。特に本実施形態では、ソフトウェア開発環境３１は、ビジュアルプログラミング言語によるソフトウェア開発に対応している。すなわち、ソフトウェア開発環境３１は、開発対象ソフトウェアを構成する部品となる各種のオブジェクトを開発画面内に表示し、開発者は開発画面内のオブジェクトを操作したり、オブジェクトに対して必要な情報を入力したりすることによって、ソフトウェアを作成していく。ソフトウェア開発環境３１がどのようにして開発者によるソフトウェア開発を実現するかについては、後に詳しく説明する。
【００１７】
コード出力部３２は、ソフトウェア開発環境３１により開発者が作成した開発対象ソフトウェアの実行用コードを出力する。本実施形態では、この実行用コードは、所定の言語で記述されており、互いに異なる複数種類のオペレーティングシステムのいずれでも実行可能な形式のデータとして出力されるものとする。このため、この実行用コードを様々なプログラム実行環境で実行させ、利用することが可能になっている。例えば実行用コードは、ＪａｖａＳｃｒｉｐｔ（登録商標）等のスクリプト言語で記述される。この場合、コード出力部３２は実行用コードをテキストファイル形式のデータとして出力する。また、コード出力部３２は、バイトコンパイル等の処理を実行して、中間言語で記述された実行用コードを出力してもよい。このように、コード出力部３２が所定の言語で記述された実行用コードをファイル形式のデータとして出力することで、この実行用コードを端末装置２０に送信し、端末装置２０上で実行させることができる。
【００１８】
なお、コード出力部３２が出力する実行用コードには、開発対象ソフトウェアの外観（表示内容）を記述するデータが含まれてもよい。このようなデータは、例えばＨＴＭＬ言語やＣＳＳ言語によって記述することができる。また、コード出力部３２は、開発対象ソフトウェアの表示内容を記述するデータを、所定の言語で記述された実行用コードとは別に出力してもよい。また、コード出力部３２は、実行用コード、及びその他のデータをまとめて、各種類のオペレーティングシステムに対応したデータ形式のパッケージファイルを生成し、出力してもよい。この場合、パッケージファイル自体は複数種類のオペレーティングシステムのそれぞれに合わせて互いに異なる内容のデータであってもよい。
【００１９】
ソフトウェア実行部３３は、コード出力部３２が出力した実行用コードを読み込んで開発対象ソフトウェアを実行する。ソフトウェア実行部３３は、各オペレーティングシステム上で動作し、実行用コードの記述に用いられた言語を解釈可能なプログラムによって実現される。具体的に、実行用コードがスクリプト言語で記述される場合、ソフトウェア実行部３３は当該スクリプト言語を解釈可能なインタプリタであってよい。特に実行用コードがＪａｖａＳｃｒｉｐｔで記述されている場合、ソフトウェア実行部３３はウェブビューなどを利用したウェブサイト表示用アプリケーションプログラムによって実現されてよい。多くのウェブサイト表示アプリケーションプログラムはＪａｖａＳｃｒｉｐｔに対応しているので、このようなアプリケーションプログラムによって実行用コードを解釈、実行することができる。また、実行用コードが中間言語で記述されている場合、ソフトウェア実行部３３はその中間言語を最終的な実行可能コードに変換して実行する機能を備える仮想マシン等のプログラムであってもよい。
【００２０】
以上説明したように、本実施形態では、コード出力部３２が複数のオペレーティングシステムで実行可能な形態で実行用コードを出力し、その実行用コードを各端末装置２０のソフトウェア実行部３３が実行する。これにより、互いに異なるオペレーティングシステムを実行する複数の端末装置２０で、開発対象ソフトウェアを利用することができる。
【００２１】
以下、ソフトウェア開発環境３１が表示する開発画面、及びその開発画面が表示された状態で開発者が実行可能な開発作業の具体例について、説明する。
【００２２】
図３は、開発者が開発対象ソフトウェアの表示内容を編集する際に使用される、表示編集用の開発画面の一例である。開発画面の左側には、開発対象ソフトウェアの実行時に表示される画面を模した画面レイアウトＬが表示されている。この例では、画面レイアウトＬはスマートフォンの画面を模した表示領域になっている。開発画面の右側には編集領域Ａ０が配置されている。この編集領域Ａ０内の表示内容は、開発者が領域上部のタブを選択することで切り替え可能になっており、図３はデザインタブＴ１が選択された状態の表示を示している。この状態において、編集領域Ａ０内の左側には部品オブジェクト領域Ａ１が、右側には特性情報領域Ａ２及び位置情報領域Ａ３が、それぞれ配置されている。デザインタブＴ１が選択された開発画面上で、開発者は開発対象ソフトウェアの実行時に画面に表示される表示内容を作成することができる。また、開発画面の右上に配置されている保存ボタンを開発者が選択すると、コード出力部３２がその時点の編集内容に基づいて実行用コードを生成し、出力する。
【００２３】
図３の部品オブジェクト領域Ａ１内には、画面レイアウトＬ内に配置される候補となる各種の部品オブジェクトＣが並んで表示されている。部品オブジェクトＣは、開発対象ソフトウェアの実行時に画面内に表示される表示要素Ｄに対応する。この部品オブジェクトＣは、開発者によるオブジェクト配置操作の対象となる。開発者は、部品オブジェクト領域Ａ１内の部品オブジェクトＣを配置対象として選択し、画面レイアウトＬ内の任意の位置を配置場所として指定するオブジェクト配置操作を実行することによって、選択した種類の部品オブジェクトＣに対応する部品（表示要素Ｄ）を画面レイアウトＬ内の指定した位置に配置することができる。図３では、ボタンを表す表示要素Ｄ１及びテキスト領域を表す表示要素Ｄ２がオブジェクト配置操作によって画面レイアウトＬ内に配置された様子が示されている。
【００２４】
ここで、開発者によるオブジェクト配置操作とは、開発画面内に表示されているいずれかのオブジェクトを配置対象として選択する操作と、そのオブジェクトの配置場所となる開発画面内の位置を指定する操作とによって実現される操作である。具体例として、操作デバイス１４がマウスを含む場合、オブジェクト配置操作は、配置対象のオブジェクトの位置を起点として開発画面内の配置場所の位置を終点とするドラッグアンドドロップ操作であってよい。また、操作デバイス１４がタッチパネルを含む場合などでは、オブジェクト配置操作は、配置対象のオブジェクトを開発者がタップして選択状態にし、その後続いて配置場所の位置をタップする２段階の選択操作であってもよい。
【００２５】
デザインタブＴ１が選択された状態で画面レイアウトＬ内に配置済みの表示要素Ｄを開発者が選択すると、その選択された表示要素Ｄの特性に関する情報が特性情報領域Ａ２内に表示される。また、選択された表示要素Ｄの画面レイアウトＬ内における位置及びサイズの情報が位置情報領域Ａ３に表示される。なお、この位置及びサイズの情報は、画面レイアウトＬ内のピクセルを単位として、画面レイアウトＬに対して設定された位置座標によって表現されている。開発者は、これらの領域に表示された情報を編集することによって、表示要素Ｄの外観や位置、サイズを変更できる。ここで、表示要素Ｄの特性は、主に当該表示要素Ｄの外観に関する各種の属性やパラメタなどであって、予め表示要素Ｄの種類ごとに設定可能な特性、及びそのデフォルト値が用意されているものとする。開発者は、特に必要がなければデフォルト値をそのまま使用することで各特性の入力を省略することができる。表示要素Ｄのサイズについても同様である。この開発画面上で、開発者は各種の表示要素Ｄを画面レイアウトＬ内に配置するとともに、配置された表示要素Ｄの特性やサイズを指定することで、開発対象ソフトウェアの実行時に表示される画面を作成することができる。
【００２６】
図４は、開発対象ソフトウェアが実行する処理の内容を開発者が編集する際に使用される、処理編集用の開発画面の一例を示している。開発者は、図３の開発画面が表示された状態でプログラムタブＴ２を選択することで、図４に例示するような処理編集用の開発画面を表示させることができる。この図４の例では、編集領域Ａ０内の左側に処理オブジェクト領域Ａ４が、右側に処理編集領域Ａ５が、それぞれ表示されている。
【００２７】
図４の処理オブジェクト領域Ａ４内には、複数の処理オブジェクトＰが表示されている。各処理オブジェクトＰは、開発対象ソフトウェアで実行可能な何らかの処理、又は処理に用いられるデータに対応しており、その内容によっていくつかのカテゴリに分類される。例えば、条件分岐や繰り返しなど処理の流れを制御するための処理オブジェクトＰや、演算処理に対応する処理オブジェクトＰ、非同期に発生するイベントを処理するための処理オブジェクトＰなどがある。開発者は、処理オブジェクト領域Ａ４の上方に配置されたボタンを操作することで、処理オブジェクト領域Ａ４内に表示される処理オブジェクトＰの種類を切り替えることができる。
【００２８】
開発者は、処理オブジェクト領域Ａ４内に表示されているいずれかの処理オブジェクトＰを配置対象として処理編集領域Ａ５内の位置を指定するオブジェクト配置操作を行うことによって、当該処理オブジェクトＰに対応する処理を開発対象ソフトウェアの実行用コードに含めることができる。開発対象ソフトウェアの実行用コードは、開発者が処理編集領域Ａ５内に配置した複数の処理オブジェクトＰに対応する処理を、配置位置に応じて決定される順序や組み合わせで実行するものになる。
【００２９】
処理編集用の開発画面が表示された状態で開発者が画面レイアウトＬ内の表示要素Ｄを選択する操作を行った場合、ソフトウェア開発環境３１は、その選択された表示要素Ｄを対象とする処理オブジェクトＰの一覧を処理オブジェクト領域Ａ４内に表示する。このとき表示される各処理オブジェクトＰには、選択された表示要素Ｄの外観を表す要素画像Ｉｅが含まれている。これにより、開発者は直感的に処理オブジェクトＰがどの表示要素Ｄを処理対象としているかを把握できる。なお、図４はボタンを表す表示要素Ｄ１が選択された状態を示しており、処理オブジェクト領域Ａ４内には、当該表示要素Ｄ１を対象とする処理に対応する処理オブジェクトＰが並んでいる。しかも、これらの処理オブジェクトＰは、それぞれ表示要素Ｄ１の外観を示す要素画像Ｉｅを含んでいる。
【００３０】
処理オブジェクトＰの中には、所定の処理を実行して実行結果の値を出力する処理に対応するものがある。以下ではこのような処理を値出力処理といい、このような処理オブジェクトＰを値出力処理オブジェクトという。また、値出力処理によって出力される値を出力値という。値出力処理の具体例としては、演算結果を戻り値として返す関数や、表示要素Ｄに設定された特性情報などを取得して出力する処理などが挙げられる。さらに、処理オブジェクトＰの中には、値の入力を受け付けて、入力された値を用いて処理を実行するものがある。以下ではこのような処理を値入力処理といい、このような処理オブジェクトＰを値入力処理オブジェクトという。また、値入力処理に入力される値を入力値という。値入力処理オブジェクトは、入力値を受け付けるための入力領域Ａｉを備えている。値入力処理の具体例としては、入力値を引数として利用する関数や、入力値を表示要素Ｄの特性情報として設定して画面表示を更新する処理などが挙げられる。なお、一つの処理オブジェクトＰは、値入力処理オブジェクトであり、かつ、値出力処理オブジェクトでもある場合がある。
【００３１】
開発者は、処理編集領域Ａ５内に配置された値入力処理オブジェクトの入力領域Ａｉに入力値を直接指定したり、変数に対応する処理オブジェクトＰを配置したりすることができる。あるいは、入力領域Ａｉに値出力処理オブジェクトを配置してもよい。以下、入力領域Ａｉに値出力処理オブジェクトを配置する操作について、図５を用いて説明する。図５は、処理編集用の開発画面の一部を拡大した様子を示している。なお、ここでは具体例として、値入力処理オブジェクトである第１オブジェクトＰ１の入力領域Ａｉに、値出力処理オブジェクトである第２オブジェクトＰ２を配置する場合について説明する。この場合まず開発者は、処理オブジェクト領域Ａ４内の第１オブジェクトＰ１を配置対象として処理編集領域Ａ５内の位置を配置場所とするオブジェクト配置操作を行って、第１オブジェクトＰ１を処理編集領域Ａ５内に配置する。その後、処理オブジェクト領域Ａ４内の第２オブジェクトＰ２を配置対象として第１オブジェクトＰ１が備える入力領域Ａｉを配置場所とするオブジェクト配置操作を実行する。図５内の矢印は、このオブジェクト配置操作の過程を示している。このようなオブジェクト配置操作を行うことによって、開発対象ソフトウェアの実行時に、第１オブジェクトＰ１に対応する値出力処理によって得られる出力値を入力値として用いて、第２オブジェクトＰ２に対応する値入力処理が実行されることになる。
【００３２】
一般に、値出力処理で出力される出力値や値入力処理で利用される入力値は、そのデータ型が決まっている。例えば、画面レイアウトＬ内に配置されたボタンの中に表示されている文字列を取得して出力する値出力処理の場合、出力値のデータ型はテキスト型になる。また、入力値をテキスト領域にセットする値入力処理の場合、入力値のデータ型はテキスト型になる。データ型は、テキスト型のほかにも、数値型、日時型、論理値型などがある。また、画像ファイルなどのデータファイル型や、画面レイアウトＬ内の表示色を表すカラー型などを含んでもよい。通常、第１オブジェクトＰ１を第２オブジェクトＰ２の入力領域Ａｉに配置する場合、第１オブジェクトＰ１に対応する処理で出力される出力値のデータ型と、第２オブジェクトＰ２に対応する処理で利用される入力値のデータ型とは、一致していなければならない。そのため開発者は、各処理における入力値や出力値のデータ型を意識して、データ型の不整合が発生しないよう注意しながら複数の処理オブジェクトＰを組み合わせなければならない。そこでソフトウェア開発環境３１は、開発者が入力値や出力値のデータ型を容易に把握し、データ型の不整合を引き起こさないようにすることのできるユーザーインタフェースを備えている。
【００３３】
具体的に、ソフトウェア開発環境３１は、各値出力処理オブジェクトを、対応する処理によって出力される出力値のデータ型を識別可能な態様で画面上に表示する。さらに、各値入力処理オブジェクトが備える入力領域Ａｉについても、対応する処理で利用可能な入力値のデータ型を識別可能な態様で表示する。しかも、この入力領域Ａｉの表示態様は、入力可能な入力値のデータ型と同じデータ型の出力値を出力する値出力処理オブジェクトの表示態様と対応する態様となっている。具体例として、第２オブジェクトＰ２に対応する処理で出力される出力値のデータ型と第１オブジェクトＰ１に対応する処理で利用可能な入力値のデータ型とが一致する場合、第２オブジェクトＰ２の表示態様と第１オブジェクトＰ１が備える入力領域Ａｉの表示態様とを互いに対応させる。これにより開発者は、データ型の一致／不一致をデータ型の名称を確認するまでもなく直感的に把握することができる。
【００３４】
図５は、具体的なデータ型の表示態様として値出力処理オブジェクト及び入力領域Ａｉの表示色を利用する場合の例について示している。すなわち、各値出力処理オブジェクトの全体を、対応する処理の出力値のデータ型に関連づけられた色で表示する。また、値入力処理オブジェクトが備える入力領域Ａｉの外周を、対応する処理で利用可能な入力値のデータ型に関連づけられた色で表示する。具体例として、テキスト型は紫、数値型は青、論理値型は赤などで表示すればよい。なお、図５では、データ型に対応する色の違いをハッチングの種類で表しているが、図４ではハッチングは省略されている。このようにデータ型に対応する色で値出力処理オブジェクトの全体や値入力処理オブジェクトの入力領域Ａｉを色分けしてあれば、値出力処理オブジェクトを値入力処理オブジェクトの入力領域Ａｉに配置する場合、開発者は単に配置対象の値出力処理オブジェクトの表示色と配置場所の入力領域Ａｉの外周の表示色とが一致するようにオブジェクト配置操作を行いさえすれば、データ型を一致させることができる。そのため、データ型の不整合の問題が生じにくくなる。
【００３５】
なお、ここでは色でデータ型を識別することとしたが、それ以外の方法でデータ型を識別可能に表示してもよい。例えば、入力領域Ａｉの形状、及び値出力処理オブジェクト全体の形状をデータ型に合わせて変化させてもよい。具体的には、テキスト型は矩形の領域、数値型は楕円形の領域などのように形状を変化させることで、形状が一致する入力領域Ａｉに値出力処理オブジェクトを配置すればデータ型が一致するように保証することができる。また、値出力処理オブジェクトだけでなく、変数などのデータそのものを表す処理オブジェクトＰについても、対応するデータのデータ型を識別可能な表示態様で表示してよい。
【００３６】
以上説明した本実施形態に係るソフトウェア開発システム１によれば、開発者は、主として部品オブジェクトＣや処理オブジェクトＰを対象としたオブジェクト配置操作を行うことによって、容易に開発対象ソフトウェアを開発できる。また、開発対象ソフトウェアをソフトウェア開発装置１０とは別の各種の端末装置２０で実行させることができる。
【００３７】
[処理オブジェクトの表示制御]
ここで、開発者が複数の処理オブジェクトＰをまとめて操作できるようにするためにソフトウェア開発環境３１が実行する制御の一例について、説明する。ここでは、開発画面に表示される各処理オブジェクトＰは、階層構造を持つデータ要素によって表現されるものとする。このような階層構造は、例えばＤＯＭ（Document Object Model）によって実現される。
【００３８】
以下では具体例として、開発画面に表示される処理オブジェクトＰは、ＨＴＭＬ言語におけるdivタグで記述されるブロック要素（div要素）によって表されるものとする。しかも、本実施形態では、各処理オブジェクトＰは親子関係が設定された少なくとも二つのデータ要素によって記述されることとする。ここでは具体例として、第１のdiv要素、及びその子要素である第２のdiv要素の二つのデータ要素によって１つの処理オブジェクトＰが表現されるものとする。この二つのdiv要素には、それぞれ異なる種類の属性が設定され、開発画面のインタフェース上においてそれぞれ異なる役割を持つ。以下では具体例として、第１のdiv要素には"component"という名前のclass属性が、第２のdiv要素には"component-body"という名前のclass属性が、それぞれ設定されるものとする。すなわち、１つの処理オブジェクトＰは、以下に例示するようなＨＴＭＬデータによって記述される。
<div class="component"><div class="component-body">処理Ａ</div></div>
ここで、処理オブジェクトＰの開発画面上における外観を規定する各種の属性は、第２のdiv要素に対して指定されるものとする。すなわち、"component-body"属性を持つブロック要素に対してＣＳＳなどで要素の表示に関する属性を指定することによって、処理オブジェクトＰの外観が決定される。
【００３９】
また、ある処理オブジェクトＰ（第１オブジェクトＰ１とする）が値入力処理オブジェクトであって、入力領域Ａｉに別の処理オブジェクトＰ（第２オブジェクトＰ２とする）が指定された場合、この第２処理オブジェクトＰは、内部的に第１オブジェクトＰ１を構成する第２のdiv要素の子要素として表現される。
【００４０】
さらに本実施形態では、開発者は、連続して実行されるべき二つの処理に対応する二つの処理オブジェクトＰを開発画面上において連結させる連結操作を実行できる。ここでは具体例として、第３オブジェクトＰ３を第１オブジェクトＰ１に連結させるものとする。この場合開発者は、第３オブジェクトＰ３を選択し、第１オブジェクトＰ１が表示されている領域、又はその下方の所定範囲内の領域を指定するオブジェクト配置操作（ドラッグアンドドロップ操作等）を連結操作として実行する。この連結操作に応じて、第３オブジェクトＰ３は第１オブジェクトＰ１の下方に連結されて表示される。図６Ａはこの状態における画面表示の例を示している。なお、ここでは第１オブジェクトＰ１の入力領域Ａｉに第２オブジェクトＰ２が指定されていることとしている。
【００４１】
このとき、内部的には第１オブジェクトＰ１の第１のdiv要素に対する子要素として第３オブジェクトＰ３が追加される。図６Ｂは、図６Ａの表示例に対応するデータ要素の階層構造（ＤＯＭツリー）を示している。ここで注目すべき点は、第２オブジェクトＰ２及び第３オブジェクトＰ３という二つの処理オブジェクトＰが第１オブジェクトＰ１の子要素となっているが、それぞれ互いに異なる親要素に従属していることである。つまり、第１オブジェクトＰ１に対する入力値として指定された第２オブジェクトＰ２は、第１オブジェクトＰ１の第２のdiv要素を親要素とし、第１オブジェクトＰ１に連結される第３オブジェクトＰ３は、第１オブジェクトＰ１の第１のdiv要素を親要素としている。このように、二種類のdiv要素のうちのどちらに従属するかによって、子要素である処理オブジェクトＰが親要素である処理オブジェクトＰとどのような関係なのかを判別できるようになっている。
【００４２】
この状態において、開発者はさらに別の処理オブジェクトＰ（ここでは第４オブジェクトＰ４とする）を第３オブジェクトＰ３に連結させることもできる。この場合、開発者は第１オブジェクトＰ１に第３オブジェクトＰ３を連結させたときと同様の連結操作を実行すればよい。図７Ａはこのような連結操作を行った後の表示例を示しており、図７Ｂはこの状態におけるデータ要素の階層構造を示している。図７Ｂに示すように、第４オブジェクトＰ４を構成するデータ要素は第３オブジェクトＰ３の第１のdiv要素を親要素としている。このようにして、開発者は複数の処理オブジェクトＰを順に連結させることができる。
【００４３】
この状態において、開発者は連結された処理オブジェクトＰの全体を移動させる移動操作を行うことができる。このとき開発者は、移動操作として、データ構造上最も上位の階層に位置する第１オブジェクトＰ１が占める領域を起点とするオブジェクト配置操作（ドラッグアンドドロップ操作等）を行う。これにより、連結された３つの処理オブジェクトＰを互いに連結させたまま別の場所に移動させることができる。また、開発者が２番目の第３オブジェクトＰ３が占める領域を起点とした移動操作を行った場合、第３オブジェクトＰ３、及びこれに連結されている第４オブジェクトＰ４がまとめて移動され、これに伴って第１オブジェクトＰ１と第３オブジェクトＰ３との連結は解除される。こうして、開発者は任意の処理オブジェクトＰを連結させたり分離させたりしながら、開発対象ソフトウェアの処理内容を編集することができる。
【００４４】
本実施形態では、これまで説明したように処理オブジェクトＰが階層構造のデータとして管理されているので、上述したような移動操作が行われるとき、ソフトウェア開発環境３１は、移動操作の対象となる処理オブジェクトＰをそのデータ構造から容易に特定することができる。具体的に、ソフトウェア開発環境３１は、移動操作の起点として指定された領域に対応するdiv要素（処理オブジェクトＰの第２のdiv要素）の親要素（同じ処理オブジェクトＰの第１のdiv要素）に直接的及び間接的に従属する全ての処理オブジェクトＰを移動操作の対象とする。例えば前述したように第１オブジェクトＰ１が選択された場合には、第２オブジェクトＰ２〜第４オブジェクトＰ４の全てが操作対象とされる。また、第３オブジェクトＰ３が選択された場合にはこれに従属する第４オブジェクトＰ４も移動操作の対象となり、第２オブジェクトＰ２又は第４オブジェクトＰ４が選択された場合にはこれらの処理オブジェクトＰ単体が移動操作の対象となる。さらにこのとき、選択された処理オブジェクトＰは親要素から分離される。このような制御によれば、ソフトウェア開発環境３１は、開発者が選択した処理オブジェクトＰに別の処理オブジェクトＰがいくつ連結されているか、あるいは連結されていないのか、また入力領域Ａｉ内に別の処理オブジェクトＰが指定されているのか、あるいは指定されていないのかなどを考慮する必要がなくなる。すなわち、ソフトウェア開発環境３１は単に選択された処理オブジェクトＰの第１のdiv要素に従属する全てのデータ要素を、その種類や従属関係にかかわらずまとめて移動対象にしさえすれば、そのデータ構造を保ったまま複数の処理オブジェクトＰを移動させることができる。つまり、各処理オブジェクトＰの第１のdiv要素は、当該処理オブジェクトＰが開発者に選択された際に、当該処理オブジェクトＰに付随して移動操作の対象にするべき処理オブジェクトＰを特定する役割を果たしていることになる。
【００４５】
前述したように、コード出力部３２は、開発者が処理編集領域Ａ５内に配置した複数の処理オブジェクトＰに対応する処理を含む実行用コードを出力する。この場合において、コード出力部３２は、処理オブジェクトＰの表示、編集用にソフトウェア開発環境３１が生成、更新したデータ要素の階層構造を参照して、実行用コードを出力する。具体的にコード出力部３２は、ある処理オブジェクトＰの第２のdiv要素に別の処理オブジェクトＰが子要素として従属している場合、子要素の処理オブジェクトＰの出力値を親要素の処理オブジェクトＰの入力値として利用する処理を実行用コードに含める。また、ある処理オブジェクトＰの第１のdiv要素に別の処理オブジェクトＰが子要素として従属している場合、親要素の処理オブジェクトＰに対応する処理、及び子要素の処理オブジェクトＰに対応する処理を順に実行するという処理内容の実行用コードを出力する。このように、ある処理オブジェクトＰに別の処理オブジェクトＰが子要素として従属する場合に、コード出力部３２は、その子要素が第１のdiv要素、及び第２のdiv要素のどちらに従属しているかに応じて出力される実行用コードの内容を変化させる。こうすれば、各データ要素の従属関係だけで実行用コードに含まれる処理の関係を特定することができる。
【００４６】
具体例として、開発者の操作によって図７Ｂに示すようなデータ要素の階層構造が生成された場合、これに対応する実行用コードは以下に例示するようなものになる。
button.setText(textarea.getText());
setValue("a","b");
textarea.setText("c");
【００４７】
[ライブラリの取り込み]
以上の説明では、開発者はソフトウェア開発環境３１において予め用意された処理オブジェクトＰを用いて開発対象ソフトウェアを開発することになる。そのため、ソフトウェア開発環境３１に用意されていない処理を含んだ開発対象ソフトウェアを作成することは困難である。そこでソフトウェア開発環境３１は、外部のライブラリを読み込んで、その中に含まれる処理に対応する処理オブジェクトＰを生成し、開発画面の処理オブジェクト領域Ａ４内に表示してもよい。このような機能によれば、事前にソフトウェア開発環境３１に用意されていない処理をソフトウェア開発環境３１内に取り込んで、開発者が利用できるようになる。
【００４８】
一般に、ライブラリは他の実行用コードから呼び出し可能な関数や参照可能な変数を複数含んで構成されている。そこでソフトウェア開発環境３１は、取り込み対象となるライブラリのコードデータを読み込んで、その中に含まれる関数や外部参照可能な変数を特定し、そのそれぞれに対応する処理オブジェクトＰを生成する。このとき、処理オブジェクトＰの名称（画面上に表示される文字列）は、関数や変数の名前そのものであってもよいし、これらの名前を所定のルールで変換したものであってもよい。この場合の所定のルールは、例えばアルファベットの小文字と大文字が連続する場合にその部分を単語の切れ目と判断し、その間にスペースを挿入するなどの変換ルールであってよい。また、ソフトウェア開発環境３１は関数や変数の名前を変換するための変換辞書を読み込んで、この変換辞書の記述に従って関数や変数の名前を対応する別の名前に置き換えて開発画面内に表示してもよい。このような制御によれば、例えば英語で記述された関数名などを日本語の文字列に置き換えて処理オブジェクトＰの名称として開発者に提示することができる。
【００４９】
また、前述したように関数の中には入力値（引数）のデータ型や出力値（戻り値）のデータ型が定められているものがある。このような関数を外部のライブラリから取り込む場合、指定されたデータ型に応じて、入力領域Ａｉや処理オブジェクトＰそのものの表示態様（色や形状など）を変化させてもよい。また、ライブラリに含まれる関数は、その言語仕様によっては、想定する引数や戻り値のデータ型が決まっているものの、そのデータ型がライブラリのコード内に明示されていない場合もある。この場合、そのままでは入力領域Ａｉや処理オブジェクトＰの表示態様をデータ型に合わせて変化させることは難しい。そこで、前述した変換辞書に関数名などとともに対応する引数のデータ型や戻り値のデータ型の情報を含むこととし、ソフトウェア開発環境３１はこの変換辞書を参照して入力領域Ａｉや処理オブジェクトＰの表示態様をデータ型に応じたものに変化させてもよい。また、データ型が特定できない場合には、デフォルトの表示態様で表示させてもよい。
【００５０】
図８Ａは、この例において取り込み対象となるライブラリの記述例を示している。この例では、ライブラリ内に"hello"及び"hello2"の二つの関数が含まれており、"hello"は一つ、"hello2"は二つの引数をとるものとする。このようなライブラリが読み込まれた場合、ソフトウェア開発環境３１は、図８Ｂに示すような二つの処理オブジェクトＰを生成し、開発画面の処理オブジェクト領域Ａ４内に表示する。
【００５１】
開発者は、予め用意された処理オブジェクトＰと同様に、ライブラリ内の関数に対応する処理オブジェクトＰを選択して処理編集領域Ａ５内に配置するオブジェクト配置操作を実行することで、この操作の対象となった処理オブジェクトＰに対応する関数を呼び出す処理を、実行用コードに含めることができる。また、ライブラリ内の変数に対応する処理オブジェクトＰを選択する操作を行った場合、この変数を参照する処理を実行用コードに含めることができる。具体例として、図８Ｂに示す二つの処理オブジェクトＰが配置され、かつ入力領域Ａｉ内に変数の値が指定された場合、以下に例示するような実行用コードが生成される。
hello("1");
hello2("10","5");
【００５２】
［第２実施形態］
以下、本発明の第２の実施形態に係るソフトウェア開発システム１について説明する。本実施形態におけるソフトウェア開発システム１のハードウェア構成、及び機能ブロックの概要は、図１に示す第１実施形態の構成と同様である。そのため、第１実施形態と共通する内容の説明は省略し、同一の構成要素については同一の参照符号を用いて参照する。
【００５３】
第１実施形態では、端末装置２０のソフトウェア実行部３３は、オペレーティングシステムごとに独立に用意されるものであって、かつ、ウェブビューなどの公知のプログラムを利用することもできるものとした。しかしながら本実施形態では、ソフトウェア実行部３３は、複数種類のオペレーティングシステムのそれぞれについて、独自に生成されたネイティブアプリケーションプログラムによって実現される。
【００５４】
本実施形態では、コード出力部３２が出力する実行用コードは、所定のスクリプト言語Ｌで記述されることとし、ソフトウェア実行部３３はこのスクリプト言語Ｌを解釈可能なインタプリタであるものとする。このスクリプト言語Ｌが公知のものと異なる特殊な仕様を持つ場合、既存のインタプリタではスクリプト言語Ｌで記述された実行用コードを実行することができない。そのため、開発対象ソフトウェアを実行させたい複数種類のオペレーティングシステムのそれぞれについて、スクリプト言語Ｌに対応したインタプリタを用意する必要がある。このようなインタプリタを個別に開発したり、またオペレーティングシステムの数だけ手作業で移植を繰り返したりするのは、手間がかかる。
【００５５】
そこで本実施形態では、一つのソースコードＳに基づいて互いに異なるオペレーティングシステムで動作する複数種類のネイティブアプリケーションプログラムを生成可能なプログラム開発エンジンＥを利用して、インタプリタを生成するものとする。図９は、本実施形態におけるソフトウェア実行部３３の実現方法を説明するための図である。ここでプログラム開発エンジンＥとしては、ゲーム開発に用いられるＵｎｉｔｙなどのゲームエンジンを利用することができる。このようなプログラム開発エンジンＥは、ゲーム機や携帯情報端末などの複数のプラットフォームに対応しており、一つのソースコードから複数種類のオペレーティングシステムのそれぞれで動作するネイティブアプリケーションプログラムを生成することができる。そのため、独自仕様のスクリプト言語Ｌに対応したインタプリタを用意したい場合、プログラム開発エンジンＥを利用すれば、一つのソースコードＳを作成するだけで、プログラム開発エンジンＥが対応する複数のプラットフォームのそれぞれで動作するインタプリタを生成することができる。
【００５６】
本実施形態では、独自仕様のインタプリタによってソフトウェア実行部３３を実現するので、ソフトウェア開発環境３１によって開発される開発対象ソフトウェアの仕様に合わせた動作をソフトウェア実行部３３に実行させることができる。具体例として、ソフトウェア実行部３３は、ソフトウェア開発環境３１によって生成可能な種類の処理だけを実行すればよいので、それ以外の処理にも対応する公知のインタプリタよりも小さな実行ファイルで実現することもできる。
【００５７】
また、ソフトウェア実行部３３は、開発対象ソフトウェアの実行時に表示する画像についても、ソフトウェア開発環境３１の仕様に対応した方法で処理することができる。例えば開発者は、ソフトウェア開発環境３１により開発対象ソフトウェアの表示内容を編集する際に、ボタンの背景画像として使用する画像など、各種の用途に使用する画像ファイルを自分で用意し、指定することができるものとする。この場合、コード出力部３２は、実行用コードのデータと併せて指定された画像ファイルを出力する。これによりソフトウェア実行部３３は、実行用コードに添付された画像ファイルを読み込んで、開発対象ソフトウェア実行時の画面に表示することができる。
【００５８】
さらに、ソフトウェア開発環境３１はデフォルト画像のファイルを予め用意してもよい。デフォルト画像のファイルは、ボタンの背景画像、表示画面全体の背景画像、画像領域内に表示されるサンプル画像など、用途に応じて複数種類用意されてもよい。以下では具体例として、ボタンの背景画像にデフォルト画像を使用する場合について、説明する。
【００５９】
まず、開発者がボタンの表示要素Ｄを画面レイアウトＬに最初に配置した段階では、ソフトウェア開発環境３１は、デフォルト画像のファイルを読み込んで、配置されたボタンの背景画像として表示する。開発者は、デフォルト画像に問題がなければ、自分で画像ファイルを用意することなく、そのまま実行用コードを出力させればよい。これに対して、デフォルト画像以外の画像を使用したい場合、開発者は使用したい画像（以下、代替画像という）のファイルを自分で用意し、表示要素Ｄの特性情報の一部としてこのファイルを指定することで、代替画像の使用を指示する。開発者が代替画像の使用を指示した場合、前述したようにコード出力部３２は実行用コードに代替画像のファイルを添付して出力する。一方、開発者が代替画像の使用を指示しなかった場合、コード出力部３２は、開発者が代替画像の使用を指示した場合と異なり、デフォルト画像が選択されたことを示す情報を対象の表示要素Ｄと関連づけて実行用コードに含めることとし、デフォルト画像のファイルそのものは出力しないこととする。
【００６０】
この場合、端末装置２０のソフトウェア実行部３３は、ソフトウェア開発環境３１が用意しているデフォルト画像と対応する対応画像のファイルを用意しておくこととする。この対応画像は、デフォルト画像と完全に同一の画像であってもよいし、デフォルト画像に対して縮小などの画像処理を施した画像であってもよい。そして、ソフトウェア実行部３３は、読み込んだ実行用コード内にデフォルト画像が選択されたことを示す情報が含まれる場合、対応画像のファイルを読み込んで、開発対象ソフトウェア実行時の画面内に表示する。このように、ソフトウェア開発環境３１とソフトウェア実行部３３が互いに対応する画像のファイルを用意しておくことによって、実行用コードにデフォルト画像のファイルを含める必要がなくなり、ソフトウェア開発装置１０から端末装置２０に送信するデータの量を少なくすることができる。
【００６１】
なお、このような画像の表示に関する処理は、第１実施形態に係るソフトウェア開発システム１にも適用可能である。第１実施形態では、開発者が代替画像の使用を指示した場合、上述したのと同様にして実行用コードに代替画像のファイルを添付する。一方、開発者が代替画像の使用を指示しなかった場合、代替画像と同様にデフォルト画像のファイルを添付してもよいが、インターネット等に公開されたデフォルト画像の取得先を示す情報を実行用コードに含めてもよい。こうすれば、ソフトウェア実行部３３は開発対象ソフトウェアの実行時に公開されたデフォルト画像を取得して表示することができる。
【００６２】
また、ソフトウェア実行部３３は、その実行環境に応じて、実行用コード内で指定されている表示要素Ｄの位置やサイズを調整してもよい。本実施形態では、様々なプログラム実行環境で開発対象ソフトウェアを動作させることを想定しているため、端末装置２０が備える表示画面のサイズや形状のバリエーションも多岐にわたることになる。一つのソースコードＳから生成されるインタプリタでこのような表示画面の違いに対応するため、本実施形態では、開発者がソフトウェア開発環境３１を用いて指定した表示要素Ｄの位置及びサイズを、統一したルールで各実行環境における画面サイズにマッチさせることとする。具体的に、コード出力部３２が出力する実行用コード内には、画面レイアウトＬ内に配置された各表示要素Ｄの配置位置及びサイズの情報（位置情報領域Ａ３に表示される情報）が含まれるものとする。この情報は、前述した通り、開発画面における画面レイアウトＬの大きさを基準として決定されている。これに対してソフトウェア実行部３３は、開発対象ソフトウェアを実行する際に、まずその実行結果を表示する画面上の表示領域（以下、実行時画面という）の縦横それぞれのサイズ（画素数）の情報を取得する。そして、実行用コードに含まれる各表示要素Ｄの位置及びサイズの数値を、取得した実行時画面のサイズと、画面レイアウトＬのサイズの比に応じて変換することによって、各表示要素Ｄを表示領域内のどの位置にどの程度のサイズで配置するか決定する。
【００６３】
具体的に、画面レイアウトＬの横幅がｗｌ、実行時画面の横幅がｗｄ、ある表示要素Ｄの横方向の配置位置がｘ、横幅がｗｃだった場合、ソフトウェア実行部３３は、その表示要素Ｄの横方向の配置位置をｘ・（ｗｄ／ｗｌ）、横幅をｗｃ・（ｗｄ／ｗｌ）に変換する。また、縦方向の配置位置及び縦幅についても同様の計算によって変換する。そして、変換された位置及びサイズで表示要素Ｄを表示領域内に表示する。こうすれば、画面レイアウトＬと実行時画面のサイズが一致しない場合であっても、開発者が画面レイアウトＬ内で確認した配置と同様に実行時画面内に各表示要素Ｄを配置することができる。
【００６４】
なお、本発明の実施の形態は、以上説明したものに限られない。例えば以上の説明では、コード出力部３２が出力した実行用コードは通信ネットワークを介して端末装置２０に送信されるものとしたが、これに限らず、実行用コードは光ディスクやＵＳＢメモリ等の情報記憶媒体に格納されて端末装置２０に提供されてもよい。
【符号の説明】
【００６５】
１  ソフトウェア開発システム、１０  ソフトウェア開発装置、１１  制御部、１２  記憶部、１３  通信部、１４  操作デバイス、１５  表示デバイス、２０  端末装置、３１  ソフトウェア開発環境、３２  コード出力部、３３  ソフトウェア実行部。
【図１】
2016153997.tif 000003
【図２】
2016153997.tif 000004
【図３】
2016153997.tif 000005
【図４】
2016153997.tif 000006
【図５】
2016153997.tif 000007
【図６Ａ】
2016153997.tif 000008
【図６Ｂ】
2016153997.tif 000009
【図７Ａ】
2016153997.tif 000010
【図７Ｂ】
2016153997.tif 000011
【図８Ａ】
2016153997.tif 000012
【図８Ｂ】
2016153997.tif 000013
【図９】
2016153997.tif 000014