(57)【要約】【課題】  より品質の高いソースコードの作成を行うことを可能にすることを目的とする。【解決手段】  開発ターゲットとなる機器を指定する機器指定手段と、機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、ソースコードを編集するソースコード編集手段と、ソースコード編集手段で入力されたプログラムコードがライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、入力されたソースコードがライブラリ実装情報に実装されていないと記録されていたときにエラー表示を行うエラー表示手段と、を有することによって上記課題を解決する。【選択図】  図２
2006338399.tif 000002
【特許請求の範囲】
【請求項１】
開発ターゲットとなる機器を指定する機器指定手段と、
機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、
前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、
ソースコードを編集するソースコード編集手段と、
前記ソースコード編集手段で入力されたプログラムコードが前記ライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、
入力されたソースコードが前記ライブラリ実装情報に実装されていないと記録されていたときにエラー表示を行うエラー表示手段と、
を有することを特徴とするプログラム開発装置。
【請求項２】
開発ターゲットとなる機器を指定する機器指定手段と、
機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、
前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、
ソースコードを編集するソースコード編集手段と、
前記ソースコード編集手段で入力されたプログラムコードが前記ライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、
入力されたソースコードが前記ライブラリ実装情報で実装されていないと記録されていたときに前記入力されたプログラムコードをソフトウェアが実行される機器により実行するか否かの制御を行う条件分岐コードをソースコードに追加する実行制御ブロック追加手段と、
条件分岐コードをソースコードに追加する指示をうける機種ブロック追加指示手段と、
を有することを特徴とするプログラム開発装置。
【請求項３】
開発ターゲットとなる機器を指定する機器指定手段と、
機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、
前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、
ソースコードを編集するソースコード編集手段と、
前記ソースコード編集手段で入力されたソースコードから予測される補完候補のうち前記ライブラリ実装情報で実装されていると記録されている候補のリストを作成する補完候補リスト作成手段と、
補完候補を表示する補完候補表示手段と
補完候補を選択する補完候補選択手段と、
ソースコードに補完文字列を挿入する補完挿入手段と、
を有することを特徴とするプログラム開発装置。
【請求項４】
コンピュータを、
開発ターゲットとなる機器を指定する機器指定手段と、
機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、
前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、
ソースコードを編集するソースコード編集手段と、
前記ソースコード編集手段で入力されたプログラムコードが前記ライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、
入力されたソースコードが前記ライブラリ実装情報に実装されていないと記録されていたときにエラー表示を行うエラー表示手段と、
して実行させることを特徴とするプログラム開発ソフトウェア。
【請求項５】
コンピュータを、
開発ターゲットとなる機器を指定する機器指定手段と、
機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、
前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、
ソースコードを編集するソースコード編集手段と、
前記ソースコード編集手段で入力されたプログラムコードが前記ライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、
入力されたソースコードが前記ライブラリ実装情報で実装されていないと記録されていたときに前記入力されたプログラムコードをソフトウェアが実行される機器により実行するか否かの制御を行う条件分岐コードをソースコードに追加する実行制御ブロック追加手段と、
条件分岐コードをソースコードに追加する指示をうける機種ブロック追加指示手段と、して実行させることを特徴とするプログラム開発ソフトウェア。
【請求項６】
コンピュータを、
開発ターゲットとなる機器を指定する機器指定手段と、
機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、
前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、
ソースコードを編集するソースコード編集手段と、
前記ソースコード編集手段で入力されたソースコードから予測される補完候補のうち前記ライブラリ実装情報で実装されていると記録されている候補のリストを作成する補完候補リスト作成手段と、
補完候補を表示する補完候補表示手段と、
補完候補を選択する補完候補選択手段と、
ソースコードに補完文字列を挿入する補完挿入手段と、
として実行させることを特徴とするプログラム開発ソフトウェア。
【請求項７】
請求項４乃至６何れか１項記載のプログラム開発ソフトウェアを記憶するコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体に関する。
【背景技術】
【０００２】
（ソフトウェア追加可能な組込み機器の増加）
従来の複合複写機やプリンタといった組込み機器のソフトウェアは、製造時に組込み機器にインストールされ、固定されたソフトウェアであり、個々のユーザがユーザの業務に合わせて後からソフトウェアを追加するということはできなかった。しかし、近年、複合複写機やプリンタにＪａｖａ（登録商標）言語等を搭載し、それらソフトウェアプラットフォーム上で動作するソフトウェアをユーザの用途に応じてインストールし、使用するといったことが可能になっている。代表的なものとしてＣａｎｏｎ（登録商標）のＭＥＡＰ（登録商標）が挙げられる。
【０００３】
（ソフトウェア開発環境）
現在、ソフトウェアの開発は統合開発環境（ＩＤＥ）と呼ばれるツール上で行われることが多くなっている。ＩＤＥはソースコードを作成するエディタ、コンパイラ、デバッガ、ＧＵＩの設計をおこなうＧＵＩエディタなどから構成され、一つのＩＤＥ上でソースコードの編集、コンパイル、デバッグを統一的に行うことが可能である。
【０００４】
さらに、ＩＤＥを構成するエディタの中にはソースコードの補完機能を持つものもある。
補完機能とはユーザが途中まで入力した文字列にマッチするクラス、メソッド（関数）、変数、定数をクラスライブラリから探し出し自動的に入力したり、入力候補をユーザに提示したりする機能である。
【０００５】
さらに、補完機能の一つとしてユーザによって記述されたメソッドが例外を発生するものである場合、例外処理ブロックを付加したり、制御構造を入力する場合に括弧の対応を自動的にとったりする機能を持つエディタもある。
【０００６】
そういった補完機能をもつエディタを含むＩＤＥとしてＥｃｌｉｐｓｅ（ｅｃｌｉｐｓｅ．ｏｒｇで開発されているオープンソースの統合開発環境）などが上げられる。
【０００７】
さらに複数の機器向けのソフトウェア開発を支援する従来技術として、特許文献１及び特許文献２がある。特許文献１及び特許文献２の技術は、コードの骨組みとデータベース等に補完されたコード断片からソースコードを自動生成するものである。また、ソースコードのチェックに関する従来技術として、特許文献３がある。
【０００８】
【特許文献１】特開平５−１５８６７３号公報
【特許文献２】特開平９−２０４３０２号公報
【特許文献３】特開平１１−２５９２８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
組込み機器のソフトウェア開発において、同一の開発環境上で同時に複数の異なった機器向けのソフトウェアを開発することは多い、その一方、組込み機器では機器ごとのライブラリは、図１にようにＡＰＩで定義されているクラスや、定数、メソッドを実際には実装していないことがある。
【００１０】
ライブラリαは機器ｉＲ  ＸＸＸＸ、機器ｉＲ  ＹＹＹＹ、機器ｉＲ  ＺＺＺＺに共通に提供されているライブラリである、ライブラリのＡＰＩ部分は共通であるが、機器の機能の差などのため実装部分は異なり、機器によっては実際には実装されていない部分があることを図１は示している。
【００１１】
そのため、従来のＩＤＥを使用してソフトウェアの開発を行うと、コンパイル時にはエラーをださずにコンパイル可能であったソフトウェアが、ＡＰＩでは定義されているが実際には実装されていない定数やメソッドを使用していた場合、実際に機器で動作させた時にソフトウェアは正常に動作しない問題があった。
【００１２】
そのため、開発者はライブラリがどこまで実装されているかを機器ごとに把握してプログラムを作成しなくてはならず、同一の開発環境上で同時に複数の異なった機器向けのソフトウェアを開発することが困難であった。また、ソフトウェアのテストにおいてもライブラリがどこまで実装されているかを考えてテスト項目を構成する必要があり、テスト工数を増大させる原因になっていた。したがって、品質の高いソースコード（又はプログラム）の作成を行うが困難な問題があった。
【００１３】
本発明は上記の点に鑑みなされたもので、より品質の高いソースコードの作成を行うことを可能にすることを目的とする。
【課題を解決するための手段】
【００１４】
そこで、上記問題を解決するため、本発明は、開発ターゲットとなる機器を指定する機器指定手段と、機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、ソースコードを編集するソースコード編集手段と、前記ソースコード編集手段で入力されたプログラムコードが前記ライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、入力されたソースコードが前記ライブラリ実装情報に実装されていないと記録されていたときにエラー表示を行うエラー表示手段と、を有することを特徴とするプログラム開発装置等、を提供する。
【００１５】
本発明によれば、開発ターゲットとなる機器を指定する機器指定手段と、機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、ソースコードを編集するソースコード編集手段と、前記ソースコード編集手段で入力されたプログラムコードが前記ライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、入力されたソースコードが前記ライブラリ実装情報に実装されていないと記録されていたときにエラー表示を行うエラー表示手段と、を有することにより、例えばターゲットとなる機器で実装されていなクラスや変数、定数、メソッドをユーザが入力した場合、エラーを通知したり、実行時に機器ごとの切り分けを行う制御構造をソースコードに追加したり、入力補完のときに補完候補としてターゲットとなる機器で実装されているクラスや変数、定数、メソッドのみをあげることにより、ターゲットとなる機種で使用できないクラスや変数、定数、メソッドをプログラムで使用しないことや、機器によって実行時に使用するクラスや変数、定数、メソッドを制御することが可能になるので、より品質の高いソースコードの作成を行うことを可能にすることができる。
【発明の効果】
【００１６】
本発明によれば、より品質の高いソースコードの作成を行うことを可能にすることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態について図面に基づいて説明する。
【実施例１】
【００１８】
本発明の第１の実施例のＩＤＥは図２のように、ターゲットとなる機器を指定する機器指定部（１０１）、ライブラリ実装情報を記憶しているライブラリ実装情報記憶部（１０２）、機器指定部（１０１）で指定された機器用のライブラリ実装情報を読み込む実装情報読込み部（１０３）、ソースコードの編集を行うコード編集部（１０４）、ユーザによって入力されたコードがライブラリ実装情報に合致しているかを評価するコード評価部（１０５）、ユーザによって入力されたコードがライブラリ実装情報に合致していない場合にエラー表示をおこなうエラー表示部（１０６）から構成される。
【００１９】
以後、開発言語がＪａｖａ（登録商標）言語であるとして実施例を記述する。但しこのことは、本発明の実施を制限するものではない。
【００２０】
まずライブラリ実証情報について説明する。ライブラリ実装情報記憶部（１０２）にはライブラリＡＰＩで定義されたクラスや、変数、定数、メソッドがどこまで実装されているかを示すライブラリ実装情報が機器ごとに記憶されている。
【００２１】
ライブラリ実装情報は図３のような、ＡＰＩで定義されたクラスや、定数、メソッド一つ一つに対して実装されているかどうかを記述したテーブルである。
【００２２】
図３では機器ｉＲ  ＸＸＸＸ用ライブラリαではクラスＡが実装されており、さらにクラスＡでは定数ＣＯＮＳＴ＿Ａ、定数ＣＯＮＳＴ＿Ｂ、メソッドｍｅｔｈｏｄ＿Ａ、メソッドｍｅｔｈｏｄ＿Ｃは実装されているが、定数ＣＯＮＳＴ＿Ｃ、メソッドｍｅｔｈｏｄ＿Ｂは実装されておらず、クラスＢは実装されていないことを示し、機器ｉＲ  ＹＹＹＹ用ライブラリαではクラスＡが実装されており、さらにクラスＡでは定数ＣＯＮＳＴ＿Ａ、定数ＣＯＮＳＴ＿Ｃ、メソッドｍｅｔｈｏｄ＿Ａ、メソッドｍｅｔｈｏｄ＿Ｂ、メソッドｍｅｔｈｏｄ＿Ｃは実装されているが、定数ＣＯＮＳＴ＿Ｂは実装されておらず、クラスＢが実装されており、さらにクラスＢでは定数ＣＯＮＳＴ＿ＢＡ、メソッドｍｅｔｈｏｄ＿ＢＡが実装されていることを示し、機器ｉＲ  ＺＺＺＺ用ライブラリαではクラスＡが実装されており、さらにクラスＡでは定数ＣＯＮＳＴ＿Ａ、メソッドｍｅｔｈｏｄ＿Ａは実装されているが、定数ＣＯＮＳＴ＿Ｂ、定数ＣＯＮＳＴ＿Ｃ、メソッドｍｅｔｈｏｄ＿Ｂ、メソッドｍｅｔｈｏｄ＿Ｃは実装されておらず、クラスＢは実装されていないことを示している。
【００２３】
ライブラリ実装情報の読込み処理について図４を使って説明する。ＩＤＥが起動されると、実装情報読込み部（１０３）はライブラリ実装情報記憶部（１０２）を検索しライブラリ実装情報の提供されている機器のリストを作成し（ステップ４０１）、ユーザによって開発ターゲットとなる機器が指定されるのを待つ。
【００２４】
ユーザによって開発ターゲットとなる機器が指定される（ステップ４０２）と、実装情報読込み部（１０３）はライブラリ実装情報記憶部（１０２）から指定された機器のライブラリ実装情報の読み込み（ステップ４０３）処理を終了する。
【００２５】
ユーザによってコード編集部（１０４）でソースコードが入力されるとコード評価部（１０５）では図５のようなフローチャートに従い処理が実行される。
【００２６】
まず、ＩＤＥはステップ６０１でユーザによってコード編集部（１０４）でソースコードが入力されるのを待っている（ステップ６０１）。ユーザによってコードが入力されるとコード評価部（１０５）は、入力行が「ａａａ．ｂｂｂ」か「ｃｃｃ」であるか、つまり「クラス（オブジェクト）．メソッド（定数）」か「クラス（オブジェクト）」という形式になっているか、を調べるためコードのパースを行う（ステップ６０２）。
【００２７】
コード評価部（１０５）は、入力行が「ａａａ．ｂｂｂ」の形式であればステップ６１３に、「ｃｃｃ」の形式であればステップ６０４へ遷移する（ステップ６０３）。
【００２８】
コード評価部（１０５）は、ステップ６０３で「ｃｃｃ」の形式であれば、クラスライブラリの中に「ｃｃｃ」というクラスが存在するかを検索する（ステップ６０４）。コード評価部（１０５）は、ライブラリに「ｃｃｃ」というクラスがあればステップ６０９に、なければステップ６０６に遷移する（ステップ６０５）。
【００２９】
コード評価部（１０５）は、ステップ６０５でライブラリに「ｃｃｃ」というクラスが存在しなければ、「ｃｃｃ」が編集中のソースコードのクラスで定義している変数もしくは定数であるかを調べ、変数もしくは定数であればステップ６０７に、変数でも定数でもなければステップ６２８に遷移する（ステップ６０６）。
【００３０】
コード評価部（１０５）は、ステップ６０６で「ｃｃｃ」が編集中のソースコードのクラスで定義している変数もしくは定数であった場合はその変数、定数のクラスを取得し、取得したクラスがクラスライブラリの中に存在するかを検索する（ステップ６０７）。
【００３１】
コード評価部（１０５）は、取得したクラスがクラスライブラリのなかに存在すればステップ６０９に遷移し、存在しなければステップ６２８に遷移する（ステップ６０８）。
【００３２】
コード評価部（１０５）は、ステップ６０４、６０７で決定したクラスをキーにターゲットとなる機器の実装情報を検索する（ステップ６０９）。
【００３３】
コード評価部（１０５）は、実装情報が存在しなければステップ６３０に遷移しユーザの次の入力を待つ、存在すればステップ６１１に遷移する（ステップ６１０）。
【００３４】
コード評価部（１０５）は、ステップ６１０で実装情報が存在したら、実証情報の内容を調べ実装されていたらステップ６３０に遷移しユーザの次の入力を待つ、実装されていなかったらステップ６１２に遷移する（ステップ６１１）。
【００３５】
ステップ６１１でクラスが実装されていないとコード評価部（１０５）が判断した場合、そのクラスはターゲットとなる機器のライブラリでは実装されていないので、エラー表示部（１０６）は図６のようにユーザに対して未実装であるとエラー表示を行い（ステップ６１２）、ステップ６３０に遷移しユーザの次の入力を待つ。
【００３６】
コード評価部（１０５）は、ステップ６０６で「ｃｃｃ」が変数でないと判断した、もしくはステップ６０８でライブラリに該当するクラスが無かった場合、「ｃｃｃ」が編集中のソースコードで定義されるクラスまたはそのクラスで定義されるメソッドや内部クラスの型の変数・定数であるかを調べ（ステップ６２８）、そうであればステップ６３０に遷移しユーザの次の入力を待つ、そうでなければ定義されていないクラス、定義されていないクラスのメソッド、変数、定数であるとエラー表示部（１０６）にエラー表示を行わせ（ステップ６２９）、ステップ６３０に遷移しユーザの次の入力を待つ。
【００３７】
コード評価部（１０５）は、ステップ６０３で入力行が「ａａａ．ｂｂｂ」の形式であると判断すると、入力行の「ａａａ」の部分をクラスであると仮定し、クラスライブラリの中に「ａａａ」というクラスが存在するかを検索する（ステップ６１３）。コード評価部（１０５）は、ライブラリに「ａａａ」というクラスがあればステップ６１７に、なければステップ６３１に遷移する（ステップ６１４）。
【００３８】
コード評価部（１０５）は、ステップ６１４でライブラリに「ａａａ」というクラスが存在しなければ、「ａａａ」が編集中のソースコードのクラスで定義しているメソッド、変数もしくは定数であるかを調べ、そうであればステップ６１５に、そうでなければステップ６３２に遷移する（ステップ６３１）。
【００３９】
コード評価部（１０５）は、ステップ６３１で「ａａａ」が編集中のソースコードのクラスで定義しているメソッド、変数もしくは定数であった場合はそのメソッド、変数、定数の定義されているクラスを取得し、取得したクラスがクラスライブラリの中に存在するかを検索する（ステップ６１５）。
【００４０】
コード評価部（１０５）は、取得したクラスがクラスライブラリのなかに存在すればステップ６１７に遷移し、存在しなければステップ６３２に遷移する（ステップ６１６）。
【００４１】
コード評価部（１０５）は、ステップ６３１で「ａａａ」が変数でないと判断した、もしくはステップ６１６でライブラリに該当するクラスが無かった場合、「ａａａ」が編集中のソースコードで定義されるクラスまたはそのクラスで定義されるメソッドや内部クラスの型の変数・定数であるかを調べ（ステップ６３２）、そうであればステップ６３０に遷移しユーザの次の入力を待つ、そうでなければ定義されていないクラス、定義されていないクラスのメソッド、変数、定数であるとエラー表示部（１０６）にエラー表示を行わせ（ステップ６２７）、ステップ６３０に遷移しユーザの次の入力を待つ。
【００４２】
コード評価部（１０５）は、ステップ６１３、６１５で決定したクラスをキーに、ターゲットとなる機器の実装情報のクラスを検索する（ステップ６１７）。
【００４３】
コード評価部（１０５）は、実装情報が存在しなければステップ６３０に遷移しユーザの次の入力を待つ、存在すればステップ６１９に遷移する（ステップ６１８）。
【００４４】
コード評価部（１０５）は、ステップ６１８で実装情報が存在したら、実証情報の内容を調べ実装されていたらステップ６２０に遷移する、実装されていなかったらステップ６２５に遷移する（ステップ６１９）。
【００４５】
コード評価部（１０５）は、ステップ６２０では「ｂｂｂ」がステップ６１３、６１５で決定したクラスで定義されている定数、変数、メソッドであるかを調べる（ステップ６２０）。
【００４６】
コード評価部（１０５）は、そうであればステップ６２２に遷移する、そうでなければステップ６２６に遷移し定義されない定数、変数、メソッドであるとエラー表示部（１０６）にエラー表示を行わせ（ステップ６２６）、ステップ６３０に遷移しユーザの次の入力を待つ。
【００４７】
コード評価部（１０５）は、ステップ６２２では「ｂｂｂ」をキーに実装情報を検索する（ステップ６２２）。コード評価部（１０５）は、「ｂｂｂ」が検索情報に存在しなければステップ６３０に遷移しユーザの次の入力を待ち、存在すればステップ６２４に遷移する（ステップ６２３）。
【００４８】
コード評価部（１０５）は、ステップ６２４では実証情報の内容を調べ実装されていたらステップ６３０に遷移しユーザの次の入力を待つ、実装されていなかったらステップ６２５に遷移する（ステップ６１１）。
【００４９】
ステップ６２５ではエラー表示部（１０６）が、図６のようにターゲットとなる機器用ライブラリでは実装されていないクラス、定数、変数、メソッドであるとの表示をおこない（ステップ６２５）、ステップ６３０に遷移しユーザの次の入力をまつ。
【００５０】
以上のフローチャートの処理を実行することにより、ユーザの入力したコードをリアルタイムにターゲットとなる機器用のライブラリで実際に実装されているかどうかのチェックを行うことを可能にし、より品質の高いソースコードの作成を行うことが可能になる。
【実施例２】
【００５１】
本発明の第２の実施例のＩＤＥは図７のように、ターゲットとなる機器を指定する機器指定部（１０１）、ライブラリ実装情報を記憶しているライブラリ実装情報記憶部（１０２）、機器指定部（１０１）で指定された機器用のライブラリ実装情報を読み込む実装情報読込み部（１０３）、ソースコードの編集を行うコード編集部（１０４）、ユーザによって入力されたコードがライブラリ実装情報に合致しているかを評価するコード評価部（１０５）、ユーザによって入力されたコードがライブラリ実装情報に合致していない場合にエラー表示をおこなうエラー表示部（１０６）、実行制御ブロックをソースコードに追加する指示を受ける実行制御ブロック追加指示部（１２０１）、ユーザの指示により実行制御ブロックをソースコードに追加する実行制御ブロック部（１２０２）から構成される。
【００５２】
以後、開発言語がＪａｖａ（登録商標）言語であるとして実施例を記述する。但しこのことは、本発明の実施を制限するものではない。なお、ライブラリ実証情報の説明、及びライブラリ実装情報の読込み処理の説明は実施例１と同じなので省略する。
【００５３】
ユーザによってコード編集部（１０４）でソースコードが入力されるとコード評価部（１０５）では図８のようなフローチャートに従い処理が実行される。
【００５４】
まず、ＩＤＥはステップ７０１でユーザによってコード編集部（１０４）でソースコードが入力されるのを待っている（ステップ７０１）。ユーザによってコードが入力されるとコード評価部（１０５）は、入力行が「ａａａ．ｂｂｂ」か「ｃｃｃ」であるか、つまり「クラス（オブジェクト）．メソッド（定数）」か「クラス（オブジェクト）」という形式になっているか、を調べるためコードのパースを行う（ステップ７０２）。
【００５５】
コード評価部（１０５）は、入力行が「ａａａ．ｂｂｂ」の形式であればステップ７１７に、「ｃｃｃ」の形式であればステップ７０４へ遷移する（ステップ７０３）。
【００５６】
コード評価部（１０５）は、ステップ７０３で「ｃｃｃ」の形式であれば、クラスライブラリの中に「ｃｃｃ」というクラスが存在するかを検索する（ステップ７０４）。コード評価部（１０５）は、ライブラリに「ｃｃｃ」というクラスがあればステップ７０９に、なければステップ７０６に遷移する（ステップ７０５）。
【００５７】
コード評価部（１０５）は、ステップ７０５でライブラリに「ｃｃｃ」というクラスが存在しなければ、「ｃｃｃ」が編集中のソースコードのクラスで定義している変数もしくは定数であるかを調べ、変数もしくは定数であればステップ７０７に、変数でも定数でもなければステップ７３６に遷移する（ステップ７０６）。
【００５８】
コード評価部（１０５）は、ステップ７０６で「ｃｃｃ」が編集中のソースコードのクラスで定義している変数もしくは定数であった場合はその変数、定数のクラスを取得し、取得したクラスがクラスライブラリの中に存在するかを検索する（ステップ７０７）。
【００５９】
コード評価部（１０５）は、取得したクラスがクラスライブラリのなかに存在すればステップ７０９に遷移し、存在しなければステップ７３６に遷移する（ステップ７０８）。
【００６０】
コード評価部（１０５）は、ステップ７０４、７０７で決定したクラスをキーに、ターゲットとなる機器の実装情報を検索する（ステップ７０９）。
【００６１】
コード評価部（１０５）は、実装情報が存在しなければステップ７３８に遷移しユーザの次の入力を待つ、存在すればステップ７１１に遷移する（ステップ７１０）。
【００６２】
コード評価部（１０５）は、ステップ７１０で実装情報が存在したら、実証情報の内容を調べ実装されていたらステップ７３８に遷移しユーザの次の入力を待つ、実装されていなかったらステップ７１２に遷移する（ステップ７１１）。
【００６３】
ステップ７１１でコード評価部（１０５）が、クラスは実装されていないと判断すると、エラー表示部（１０６）は図９のようにそのクラスはターゲットとなる機器のライブラリでは実装されていないというエラー表示、およびユーザに対してターゲットである機種では入力行のコードが実施されないようにする実行制御ブロック追加メニューの表示を行い（ステップ７１２）、実行制御ブロック追加指示部（１２０１）はユーザの入力を待つ（ステップ７１３）。
【００６４】
実行制御ブロック追加指示部（１２０１）はユーザの入力が実行制御ブロックの追加指示であるかを判断し（ステップ７１４）、追加指示でなければエラー表示部（１０６）は、クラスはターゲットとなる機器のライブラリでは実装されていないというエラー表示を行い（ステップ７１６）、ステップ７３８に遷移しユーザの次の入力を待つ。ユーザによって実行制御ブロックの追加指示があった場合は、実行制御ブロック追加部（１２０２）は図１０のようにソースコードに実行制御を追加して（ステップ７１５）、ステップ７３８に遷移しユーザの次の入力を待つ。
【００６５】
コード評価部（１０５）は、ステップ７０６で「ｃｃｃ」が変数でないと判断した、もしくはステップ７０８でライブラリに該当するクラスが無かった場合、「ｃｃｃ」が編集中のソースコードで定義されるクラスまたはそのクラスで定義されるメソッドや内部クラスの型の変数・定数であるかを調べ（ステップ７３６）、そうであればステップ７３８に遷移しユーザの次の入力を待つ、そうでなければ定義されていないクラス、定義されていないクラスのメソッド、変数、定数であるとエラー表示部（１０６）にエラー表示を行わせ（ステップ７３７）、ステップ７３８に遷移しユーザの次の入力を待つ。
【００６６】
コード評価部（１０５）は、ステップ７０３で入力行が「ａａａ．ｂｂｂ」の形式であると判断すると、入力行の「ａａａ」の部分をクラスであると仮定し、クラスライブラリの中に「ａａａ」というクラスが存在するかを検索する（ステップ７１７）。コード評価部（１０５）は、ライブラリに「ａａａ」というクラスがあればステップ７２１に、なければステップ７３９に遷移する（ステップ７１８）。
【００６７】
コード評価部（１０５）は、ステップ７１８でライブラリに「ａａａ」というクラスが存在しなければ、「ａａａ」が編集中のソースコードのクラスで定義しているメソッド、変数もしくは定数であるかを調べ、そうであればステップ７１９に、そうでなければステップ７４０に遷移する（ステップ７３９）。
【００６８】
コード評価部（１０５）は、ステップ７３９で「ａａａ」が編集中のソースコードのクラスで定義している変数もしくは定数であった場合はその変数、定数のクラスを取得し、取得したクラスがクラスライブラリの中に存在するかを検索する（ステップ７１９）。
【００６９】
コード評価部（１０５）は、取得したクラスがクラスライブラリのなかに存在すればステップ７２１に遷移し、存在しなければステップ７４０に遷移する（ステップ７２０）。
【００７０】
コード評価部（１０５）は、ステップ７３９で「ａａａ」が変数でないと判断した、もしくはステップ７２０でライブラリに該当するクラスが無かった場合、「ａａａ」が編集中のソースコードで定義されるクラスまたはそのクラスで定義されるメソッドや内部クラスの型の変数・定数であるかを調べ（ステップ７４０）、そうであればステップ７３８に遷移しユーザの次の入力を待つ、そうでなければ定義されていないクラス、定義されていないクラスのメソッド、変数、定数であるとエラー表示部（１０６）にエラー表示を行わせ（ステップ７３５）、ステップ７３８に遷移しユーザの次の入力を待つ。
【００７１】
コード評価部（１０５）は、ステップ７１８、７１９で決定したクラスをキーとしてターゲットとなる機器の実装情報を検索する（ステップ７２１）。
【００７２】
コード評価部（１０５）は、実装情報が存在しなければステップ７３８に遷移しユーザの次の入力を待つ、存在すればステップ７２３に遷移する（ステップ７２２）。
【００７３】
コード評価部（１０５）は、ステップ７２２で実装情報が存在したら、実証情報の内容を調べ実装されていたらステップ７２４に遷移する、実装されていなかったらステップ７２９に遷移する（ステップ７２３）。
【００７４】
コード評価部（１０５）は、ステップ７２４では「ｂｂｂ」がステップ７１７、７１９で決定したクラスで定義された定数、変数、メソッドであるかを調べる（ステップ７２５）。
【００７５】
コード評価部（１０５）は、そうであればステップ７２６に遷移する、そうでなければステップ７３３に遷移し定義されない定数、変数、メソッドであるとエラー表示部（１０６）にエラー表示を行わせ（ステップ７３３）、ステップ７３８に遷移しユーザの次の入力をまつ。
【００７６】
コード評価部（１０５）は、ステップ７２６では「ｂｂｂ」をキーにターゲットとなる機器の実装情報を検索する（ステップ７２６）。コード評価部（１０５）は、「ｂｂｂ」が検索情報に存在しなければステップ７３８に遷移しユーザの次の入力を待ち、存在すればステップ７２８に遷移する（ステップ７２７）。
【００７７】
コード評価部（１０５）は、ステップ７２８では実証情報の内容を調べ実装されていたらステップ７３８に遷移しユーザの次の入力を待つ、実装されていなかったらステップ７２９に遷移する（ステップ７２８）。
【００７８】
ステップ７２９ではエラー表示部（１０６）は図９のようにそのクラスはターゲットとなる機器のライブラリでは実装されていないというエラー表示、およびユーザに対してターゲットである機種では入力行のコードが実施されないようにする実行制御ブロック追加メニューの表示を行い（ステップ７２９）、実行制御ブロック追加指示部（１２０１）はユーザの入力を待つ（ステップ７３０）。
【００７９】
実行制御ブロック追加指示部（１２０１）はユーザの入力が実行制御ブロックの追加指示であるかを判断し（ステップ７３１）、追加指示でなければエラー表示部（１０６）は、クラスはターゲットとなる機器のライブラリでは実装されていないというエラー表示を行い（ステップ７３４）、ステップ７３８に遷移しユーザの次の入力を待つ。ユーザによって実行制御ブロックの追加指示があった場合は、実行制御ブロック追加部（１２０２）は図１０のようにソースコードに実行制御を追加して（ステップ７３２）、ステップ７３８に遷移しユーザの次の入力を待つ。
【００８０】
以上のフローチャートの処理を実行することにより、ユーザの入力したコードがターゲットとなる機器用のライブラリで実際に実装されているかどうかのチェックを行い、ターゲットの機器用ライブラリでは実装されていないＡＰＩを使用したときは、ターゲットの機器で実行時は該当コードの部分を実行しないようにする実行制御ブロックを簡単に挿入することを可能にしてより品質の高いソースコードの作成を行うことが可能になる。
【実施例３】
【００８１】
本発明の第３の実施例のＩＤＥは図１１のように、ターゲットとなる機器を指定する機器指定部（１０１）、ライブラリ実装情報を記憶しているライブラリ実装情報記憶部（１０２）、機器指定部（１０１）で指定された機器用のライブラリ実装情報を読み込む実装情報読込み部（１０３）、ソースコードの編集を行うコード編集部（１０４）、ユーザによって入力されたコードがライブラリ実装情報に合致する補完候補リストを生成する補完候補生成部（１３０１）、補完候補生成部で生成された補完候補を表示する補完候補表示部（１３０２）とユーザの指示により補完候補を選択する補完候補選択部（１３０３）補完候補リストから選択されたコードの補完を行うコード補完部（１３０４）から構成される。
【００８２】
以後、開発言語がＪａｖａ（登録商標）言語であるとして実施例を記述する。但しこのことは、本発明の実施を制限するものではない。なお、ライブラリ実証情報の説明、及びライブラリ実装情報の読込み処理の説明は実施例１と同じなので省略する。
【００８３】
ユーザによってコード編集部（１０４）でソースコードが入力されると補完候補生成部（１３０１）では、図１２のようなフローチャートに従い処理が実行される。
【００８４】
まず、ＩＤＥはステップ８０１でユーザによってコード編集部（１０４）でソースコードが入力されるのを待っている（ステップ８０１）。ユーザによってコードが入力されると補完候補生成部（１３０１）は、入力行が「ａａａ．ｂｂｂ」か「ｃｃｃ」であるか、つまり「クラス（オブジェクト）．メソッド（定数）」か「クラス（オブジェクト）」という形式になっているか、を調べるためコードのパースを行う（ステップ８０２）。
【００８５】
補完候補生成部（１３０１）は、入力行が「ａａａ．ｂｂｂ」の形式であればステップ８０４に、「ｃｃｃ」の形式であればステップ８０７へ遷移する（ステップ８０３）。
【００８６】
補完候補生成部（１３０１）は、ステップ８０３で入力行が「ａａａ．ｂｂｂ」の形式であると判断すると、入力行の「ａａａ」の部分をクラスであると仮定し、クラスライブラリの中に「ａａａ」というクラスが存在するかを検索する（ステップ８０４）。補完候補生成部（１３０１）は、ライブラリに「ａａａ」というクラスがあればステップ８０９に、なければステップ８０６に遷移する（ステップ８０５）。
【００８７】
補完候補生成部（１３０１）は、ステップ８０６では「ａａａ」が、ユーザが編集中のソースコードで定義されているクラスの変数であるかを調べ、そうであればステップ８０７に遷移する、そうでなければステップ８０１に遷移しユーザの入力を待つ（ステップ８０６）。
【００８８】
補完候補生成部（１３０１）は、「ａａａ」が、ユーザが編集中のソースコードで定義されているクラスの変数であれば、変数のクラスを取得し、取得したクラスでクラスライブラリの検索を行う（ステップ８０７）。
【００８９】
補完候補生成部（１３０１）は、クラスライブラリを検索した結果、クラスがあればステップ８０９に遷移する、なければステップ８０１に遷移しユーザの入力を待つ（ステップ８０８）。
【００９０】
候補リストは図１３で示されているように「候補文字列（１４０１）」、「種別（１４０２）」、「クラス情報（１４０３）」から構成されるリストである。
【００９１】
「候補文字列（１４０１）」にはソースコードを補完する候補文字列が記憶される。「種別（１４０２）」には候補文字列がクラスであるか、編集中のソースコードで定義されるクラスで定義されるメソッドであるか、ライブラリに含まれるクラスで定義されている変数・定数・メソッドであるかを区別する識別子が記憶される。「クラス情報（１４０３）」には「種別（１４０２）」がライブラリに含まれるクラスで定義されている変数・定数・メソッドであった場合にそれらを定義しているクラス名が記憶される。
【００９２】
補完候補生成部（１３０１）は、ステップ８０９ではステップ８０４、８０７で決定したクラスに「ｂｂｂ」で始まるメソッド、変数、定数が定義されているかを検索する（ステップ８０９）。
【００９３】
補完候補生成部（１３０１）は、メソッド、変数、定数が定義されているかを調べ（ステップ８１０）、定義されていれば、候補文字列としてメソッド、変数、定数の文字列（１４０７）と種別情報として「メソッド、変数、定数」（１４０８）、クラス情報として「ａａａ」のクラス名またはステップ７０７で取得したクラス名（１４０９）を候補リストに追加してステップ８１２に遷移する（ステップ８１１）。このとき候補として追加する「ｂｂｂ」で始まるメソッド、変数、定数は複数であっても良い。補完候補生成部（１３０１）は、定義されていなければステップ８１２に遷移する。
【００９４】
補完候補生成部（１３０１）は、ステップ８１２では候補リストが空であるかを調べ空ならステップ８０１に遷移しユーザの入力を待ち、空でなければステップ８２３に遷移する（ステップ８０６）。
【００９５】
補完候補生成部（１３０１）は、ステップ８０３で入力行が「ｃｃｃ」の形式であった場合、「ｃｃｃ」で始まるクラスをクラスライブラリから検索する（ステップ８１３）。
【００９６】
補完候補生成部（１３０１）は、ライブラリに該当するクラスがあればステップ８１５に遷移する。補完候補生成部（１３０１）は、無ければステップ８１６に遷移する（ステップ８１４）。
【００９７】
補完候補生成部（１３０１）は、ライブラリに該当するクラスがあれば候補リストに候補文字列としてそのクラス名（１４０４）と種別として「クラス」（１４０５）を追加する（ステップ８１５）。このとき追加する候補のクラスは複数あっても良い。
【００９８】
補完候補生成部（１３０１）は、ライブラリに該当するクラスが無ければ、「ｃｃｃ」が、ユーザが編集中のソースコードで定義しているローカルなメソッド、であるかを調べる。補完候補生成部（１３０１）は、ローカルなメソッドでなければステップ８０１に遷移しユーザの入力を待ち、ローカルなメソッドであればステップ８１７に遷移する（ステップ８１６）。
【００９９】
補完候補生成部（１３０１）は、ステップ８１７では候補リストに、候補文字列としてメソッド文字列（１４１０）と種別情報として「ローカルメソッド」（１４１１）を追加する。
【０１００】
補完候補生成部（１３０１）は、ステップ８１８では、「ｃｃｃ」が、ユーザが編集中のソースコードで定義しているクラスの変数、定数であるかを調べる。補完候補生成部（１３０１）は、変数、定数でなければステップ８０１に遷移しユーザの入力を待ち、変数、定数であればステップ８１９に遷移する（ステップ８１８）。
【０１０１】
補完候補生成部（１３０１）は、ステップ８１９では「ｃｃｃ」を定義するクラスを取得し、そのクラスをキーとしてクラスライブラリの検索を行う（ステップ８１９）。
【０１０２】
補完候補生成部（１３０１）は、ライブラリに該当するクラスが無ければ、ステップ８０１に遷移しユーザの入力を待ち、ライブラリに該当するクラスがあればステップ８２１に遷移する（ステップ８２０）。
【０１０３】
補完候補生成部（１３０１）は、ステップ８２１では変数、定数の文字列（１４０７）と、種別情報として「メソッド、変数、定数」（１４０８）と、クラス情報としてステップ８１９で取得したクラス名（１４０９）とを候補リストに追加する（ステップ８２１）。
【０１０４】
補完候補生成部（１３０１）は、ステップ８２２では候補リストが空であるかを調べ空ならステップ８０１に遷移しユーザの入力を待ち、空でなければステップ８２３に遷移する（ステップ８２２）。
【０１０５】
次に、補完候補生成部（１３０１）は、候補リストから順序リストを生成する（ステップ８２３）。順序リストとは、繰り返し処理で次の要素を返す機能と繰り返し処理でさらに要素があるかを返す機能をもつリストのことである。
【０１０６】
補完候補生成部（１３０１）は、生成した順序リストから次の要素を取得する（ステップ８２４）。補完候補生成部（１３０１）は、実装情報を取得する（ステップ８２５）。実装情報の取得（ステップ８２５）の詳細な処理を図１４で説明する。
【０１０７】
補完候補生成部（１３０１）は、ステップ８２４で取得した要素の種別がクラスであるかを調べ（ステップ１５０１）、クラスであれば取得した要素の候補文字列をキーに実装情報を検索し実装情報を取得する（ステップ１５０２）。補完候補生成部（１３０１）は、クラスでなければ取得した要素がクラス情報を持っているかを調べ（ステップ１５０３）、クラス情報を持っていればそのクラス名のクラスの実装情報を候補文字列のメソッド、変数、定数をキーに検索し実装情報を取得する（ステップ１５０４）。補完候補生成部（１３０１）は、もっていなければ実装情報の取得はおこなわない。補完候補生成部（１３０１）は、処理が終了すると図１２のステップ８２６に遷移する。
【０１０８】
補完候補生成部（１３０１）は、ステップ８２５で実装情報が取得できたかを調べる（ステップ８２６）。補完候補生成部（１３０１）は、取得できなかった場合はステップ８２９に遷移する、取得できた場合はステップ８２７に遷移する。
【０１０９】
補完候補生成部（１３０１）は、ステップ８２７ではステップ８２５で取得した実装情報からターゲットとなっている機器で実装されているかどうかを調べる（ステップ８２７）。補完候補生成部（１３０１）は、実装されていればステップ８２９に遷移する。補完候補生成部（１３０１）は、実装されていなければ候補リストからステップ８２４で取得した要素を削除し（ステップ８２８）、ステップ８２９に遷移する。
【０１１０】
補完候補生成部（１３０１）は、ステップ８２９では順序リストに繰り返し処理でさらに要素があるか否かを調べ（ステップ８２９）、もう要素が無ければステップ８３０に遷移する、あればステップ８２４に遷移する。
【０１１１】
補完候補表示部（１３０２）はステップ８３０で図１５に示されるような補完候補リストを表示し（ステップ８３０）、補完候補選択部（１３０３）はユーザの入力を待つ（ステップ８３１）。
【０１１２】
補完候補生成部（１３０１）は、ユーザの入力があると、入力が候補選択指示であるかを調べ（ステップ８３２）、候補選択指示でなければステップ８０２に遷移して、新たに入力された文字列のパース及び候補リストの作成をおこなう。
【０１１３】
入力が候補選択指示であればコード補完部（１３０４）はユーザの編集しているソースコードの補完対象文字列を選択された補完候補文字列で置き換え（ステップ８３３）、ステップ８０１に遷移して次のユーザの入力を待つ。
【０１１４】
以上の処理を実行することにより、ＩＤＥがユーザの入力したコードを補完する場合にターゲットの機器で実装されているＡＰＩのみを候補として表示することにより、ターゲットの機器で実装されていないＡＰＩを入力しないようにすることを可能にしてより品質の高いソースコードの作成を行うことが可能になる。
【０１１５】
上述したように、本発明によれば、ターゲットとなる機器で実装されていなクラスや変数、定数、メソッドをユーザが入力した場合、エラーを通知したり、実行時に機器ごとの切り分けを行う制御構造をソースコードに追加したり、入力補完のときに補完候補としてターゲットとなる機器で実装されているクラスや変数、定数、メソッドのみをあげることにより、ターゲットとなる機種で使用できないクラスや変数、定数、メソッドをプログラムで使用しない、機器によって実行時に使用するクラスや変数、定数、メソッドを制御することが可能になる。
【０１１６】
また、本発明によれば、本発明に係る機能を用いてソフトウェアの開発を行うことにより、同時に複数の異なった機器向けのソフトウェアの開発・テストの工数を削減することができる。
【０１１７】
以上、本発明の好ましい実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１１８】
なお、上述したＩＤＥ等は、例えば情報処理装置（ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ））等に実装され、ＩＤＥ等の機能を実現する又は上述したフローチャートの処理をＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等に実行させるソフトウェア（又はプログラム）は例えば情報処理装置のＨＤ等に保管されている。このようなソフトウェアは、例えばＣＤ−ＲＯＭ等の記憶媒体によって情報処理装置に提供されるか、ネットワーク等を通じてダウンロードされる。例えば記憶媒体は、情報処理装置の記憶媒体ドライブ部にセットされ、プログラムが記憶媒体から記憶媒体ドライブ部を介してＨＤにインストールされる。
【図面の簡単な説明】
【０１１９】
【図１】図１は、機器ごとのライブラリの実装状況の違いを示す図である。
【図２】図２は、実施例１のＩＤＥの構成図である。
【図３】図３は、ライブラリ実装情報を示す図である。
【図４】図４は、ライブラリ実装情報読込み処理のフローチャートである。
【図５】図５は、実施例１の処理のフローチャートである。
【図６】図６は、実施例１のエラー表示の例を示す図である。
【図７】図７は、実施例２のＩＤＥの構成図である。
【図８】図８は、実施例２の処理のフローチャートである。
【図９】図９は、実施例２の実行制御ブロック追加メニューの例を示す図である。
【図１０】図１０は、実施例２の実行制御ブロック追加の例を示す図である。
【図１１】図１１は、実施例３のＩＤＥの構成図である。
【図１２】図１２は、実施例３の処理のフローチャートである。
【図１３】図１３は、実施例３の補完候補リストを示す図である。
【図１４】図１４は、実施例３のライブラリ実装情報取得処理のフローチャートである。
【図１５】図１５は、実施例３の補完候補表示の例を示す図である。
【符号の説明】
【０１２０】
１０１  機種指定部
１０２  ライブラリ実装情報記憶部
１０３  実装情報読込み部
１０４  コード編集部
１０５  コード評価部
１０６  エラー表示部
【図１】
2006338399.tif 000003
【図２】
2006338399.tif 000004
【図３】
2006338399.tif 000005
【図４】
2006338399.tif 000006
【図５】
2006338399.tif 000007
【図６】
2006338399.tif 000008
【図７】
2006338399.tif 000009
【図８】
2006338399.tif 000010
【図９】
2006338399.tif 000011
【図１０】
2006338399.tif 000012
【図１１】
2006338399.tif 000013
【図１２】
2006338399.tif 000014
【図１３】
2006338399.tif 000015
【図１４】
2006338399.tif 000016
【図１５】
2006338399.tif 000017