(57)【要約】【課題】オリジナルソースコードから着目ルートに基づいて抽出されたコードに対して行の追加が行われた際にオリジナルソースコードを正確に更新すること。【解決手段】ソースコード抽出部１３が、オリジナルソースコードから編集者によって選択されたルートに属するコードを抽出し、ソースコード画面入出力部１７が、ソースコード抽出部１３により抽出されたコードを表示装置５に表示する。そして、編集者により行の追加が行われると、ルート画面入出力部１８が、追加する行が属するルートを編集者に選択させる画面を表示装置５に表示する。【選択図】図５
2017151691.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
ソースコードのうち、指定された実行経路に対応する行部分を選択的に表示部に表示し、
選択的に表示した前記行部分に対して行の追加が行われると、前記追加が行われた行の前後の行が前記ソースコードにおいて隣接する位置関係にないことの検出に応じて、前記追加が行われた行について実行経路の選択を促す表示を出力する
処理を実行させることを特徴とするソースコード編集支援プログラム。
【請求項２】
前記実行経路の選択が行なわれると、選択に応じた位置に追加が行われた行が追記されるように制御する処理をさらに前記コンピュータに実行させることを特徴とする請求項１に記載のソースコード編集支援プログラム。
【請求項３】
選択的に表示した状態の前記ソースコードそれぞれの行に対応する実行経路を識別可能な情報を、選択的に表示した状態の前記ソースコードとともに表示する処理をさらに前記コンピュータに実行させることを特徴とする請求項１又は２に記載のソースコード編集支援プログラム。
【請求項４】
選択的に表示した前記行部分に対して行の削除が行われると、前記削除が行われた行の前後の行に応じて、前記前後の行を編集する処理をさらに前記コンピュータに実行させることを特徴とする請求項１、２又は３に記載のソースコード編集支援プログラム。
【請求項５】
前記追記されるように制御する処理は、前記行部分に含まれる行毎に前記実行経路を対応付ける経路対応情報に応じて前記位置を特定し、特定した位置に追加が行われた行が追記されるように制御することを特徴とする請求項２に記載のソースコード編集支援プログラム。
【請求項６】
コンピュータが、
ソースコードのうち、指定された実行経路に対応する行部分を選択的に表示部に表示し、
選択的に表示した前記行部分に対して行の追加が行われると、前記追加が行われた行の前後の行が前記ソースコードにおいて隣接する位置関係にないことの検出に応じて、前記追加が行われた行について実行経路の選択を促す表示を出力する、
処理を実行することを特徴とするソースコード編集支援方法。
【請求項７】
ソースコードのうち、指定された実行経路に対応する行部分を選択的に表示部に表示するコード表示部と、
前記コード表示部により選択的に表示された前記行部分に対して行の追加が行われると、前記追加が行われた行の前後の行が前記ソースコードにおいて隣接する位置関係にないことの検出に応じて、前記追加が行われた行について実行経路の選択を促す表示を出力する経路選択部と、
を有することを特徴とするソースコード編集支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコード編集支援プログラム、ソースコード編集支援方法及びソースコード編集支援装置に関する。
【背景技術】
【０００２】
マルチプラットフォーム対応のソースコードは、各プラットフォーム専用のコードを含むため、わかりにくくなる。例えば、Ｃ言語の場合、ｉｆｄｅｆ文により各プラットフォーム専用にコードが分けられるが、ｉｆｄｅｆ文の数が多くなるにつれて、ソースコードのわかりにくさが増す。
【０００３】
そこで、ｉｆｄｅｆ文等の指示情報に従ってファイルの特定部分のみを表示することで、ファイルの編集個所を見つけやすくする技術がある。また、ソーステキスト中の条件翻訳変数に影響されない部分と、条件翻訳変数に影響される部分をそれぞれ別々の色で背景色設定することで、修正ミスの発生を防ぐ技術がある。また、プログラムソースコード中で意味のない無効な行の表示を、削除したり、目立たない色で表示したり、省略したりして抑制することで、ソースコードを理解しやすくし、プログラム開発効率を改善する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平３−６３８２０号公報
【特許文献２】特開２００２−２３６５８４号公報
【特許文献３】特開２０００−２１５０３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ｉｆｄｅｆ文等の指示情報に従ってファイルの特定部分のみを表示すると、表示されたソースコードに対して追加が行われた際、ファイルのどこに追加されたか決定できないという問題がある。図１３は、指示情報に従って表示されたソースコードに対して追加が行われた際の問題を説明するための図である。
【０００６】
図１３は、Ｃ言語で作成されたマルチプラットフォーム対応のオリジナルソースファイル２の編集を支援する編集支援装置の動作を示す。編集支援装置は、編集者により指定された特定のルート（実行経路）に着目してオリジナルソースファイル２からコードを抽出して表示する。
【０００７】
図１３では、編集支援装置は、オリジナルソースファイル２から“＿ＷＩＮ３２”、“ｖｅｒ１”、“＿ＵＴＦ８”に着目したコード５１を抽出して表示している。ここで、“＿ＷＩＮ３２”、“ｖｅｒ１”、“＿ＵＴＦ８”は入れ子の関係にある。すなわち、＿ＷＩＮ３２ルートにｖｅｒ１ルートが含まれ、ｖｅｒ１ルートに＿ＵＴＦ８ルートが含まれる。
【０００８】
そして、編集者は、編集支援装置が表示したコード５１に対して、コードを追加する。図１３では、表示されたコード５１の５行目の「＃ｉｎｃｌｕｄｅ  “ａａａ．ｈ”」と６行目の「＃ｉｎｃｌｕｄｅ  “ｔｅｓｔ．ｈ”」との間に「＃ｉｎｃｌｕｄｅ  “ｓａｍｐｌｅ．ｈ”」が追加される。このとき、編集支援装置は、「＃ｉｎｃｌｕｄｅ  “ｓａｍｐｌｅ．ｈ”」を、オリジナルソースファイル２のどこに追加するべきかが分からない。
【０００９】
具体的には、編集支援装置は、「＃ｉｎｃｌｕｄｅ  “ｓａｍｐｌｅ．ｈ”」を、オリジナルソースファイル２の８行目と９行目の間、１１行目と１２行目の間、１４行目と１５行目の間、あるいは、１７行目と１８行目の間のいずれに追加すべきかが分からない。８行目と９行目の間への追加は、＿ＵＴＦ８ルートへの追加であり、１１行目と１２行目の間への追加は、ｖｅｒ１ルートへの追加である。１４行目と１５行目の間への追加は、＿ＷＩＮ３２ルートへの追加であり、１７行目と１８行目の間への追加は、共通のルートへの追加である。
【００１０】
本発明は、１つの側面では、ルート毎のソースコード編集作業の利便性向上を図ることを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、ソースコード編集支援プログラムは、ソースコードのうち、指定された実行経路に対応する行部分を選択的に表示部に表示する処理をコンピュータに実行させる。そして、ソースコード編集支援プログラムは、選択的に表示した行部分に対して行の追加が行われると、追加が行われた行の前後の行がソースコードにおいて隣接する位置関係にないことの検出に応じて、以下の処理をコンピュータに実行させる。すなわち、ソースコード編集支援プログラムは、追加が行われた行について実行経路の選択を促す表示を出力する処理をコンピュータに実行させる。
【発明の効果】
【００１２】
ルート毎のソースコード編集作業の利便性を向上することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例に係る編集支援装置を説明するための図である。
【図２】図２は、ｉｆｄｅｆ文が入れ子になっている場合のルート情報の表示を説明するための図である。
【図３Ａ】図３Ａは、ｉｆｄｅｆルート内の処理文をすべて削除した場合の問題を説明するための図である。
【図３Ｂ】図３Ｂは、ｉｆｄｅｆルート内の処理文をすべて削除した場合の問題の解決方法（１）を説明するための図である。
【図３Ｃ】図３Ｃは、ｉｆｄｅｆルート内の処理文をすべて削除した場合の問題の解決方法（２）を説明するための図である。
【図３Ｄ】図３Ｄは、ｉｆｄｅｆルート内の処理文をすべて削除した場合の問題の解決方法（３）を説明するための図である。
【図４Ａ】図４Ａは、ルート間に行を追加する場合の編集支援装置の動作を説明するための図である。
【図４Ｂ】図４Ｂは、追加後のオリジナルソースファイルを示す図である。
【図５】図５は、実施例に係る編集支援装置の機能構成を示す図である。
【図６】図６は、削除部による削除処理を説明するための図である。
【図７】図７は、追加部による追加処理を説明するための図である。
【図８】図８は、オリジナルソースコードから着目ルート及び共通ルートの処理文を抽出し、表示装置に表示するまでの処理のフローを示すフローチャートである。
【図９】図９は、編集が行われたときに、編集内容をオリジナルソースコードに反映するまでの処理のフローを示すフローチャートである。
【図１０】図１０は、削除処理のフローを示すフローチャートである。
【図１１】図１１は、追加処理のフローを示すフローチャートである。
【図１２】図１２は、実施例に係る編集支援プログラムを実行するコンピュータのハードウェア構成を示す図である。
【図１３】図１３は、指示情報に従って表示されたソースコードに対して追加が行われた際の問題を説明するための図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示するソースコード編集支援プログラム、ソースコード編集支援方法及びソースコード編集支援装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１５】
まず、実施例に係る編集支援装置について説明する。図１は、実施例に係る編集支援装置を説明するための図である。図１に示すように、編集支援装置は、オリジナルソースファイル２から編集者により指定されたルート“＿ＷＩＮ３２”のコードを抽出して表示する。
【００１６】
このとき、編集支援装置は、抽出したコード５１を表示すると共に、編集者により指定されたルートに関する情報をコード５１の行に対応付けてルート情報５２として表示する。図１では、ルート情報５２として、「共通」と「＿ＷＩＮ３２」がコード５１の行に対応付けて表示されている。すなわち、「＃ｉｎｃｌｕｄｅ  ＜ｓｔｄｉｏ．ｈ＞」と「＃ｉｎｃｌｕｄｅ  ＜ｓｔｒｉｎｇ．ｈ＞」は共通ルートに含まれるコードであり、「＃ｉｎｃｌｕｄｅ  ＜ｗｃｈａｒ．ｈ＞」と「＃ｉｎｃｌｕｄｅ  ＜ｔｃｈａｒ．ｈ＞」は＿ＷＩＮ３２ルートに含まれるコードである。
【００１７】
そして、コード５１の１行目と２行目の間に編集者が「＃ｉｎｃｌｕｄｅ  ＜ｓａｍｐｌｅ．ｈ＞」を追加すると、編集支援装置は、コード５１の１行目と２行目の間に「＃ｉｎｃｌｕｄｅ  ＜ｓａｍｐｌｅ．ｈ＞」を追加し、ルート情報５２を更新する。ここで、「＃ｉｎｃｌｕｄｅ  ＜ｓａｍｐｌｅ．ｈ＞」が追加される前後の行の「＃ｉｎｃｌｕｄｅ  ＜ｓｔｄｉｏ．ｈ＞」と「＃ｉｎｃｌｕｄｅ  ＜ｓｔｒｉｎｇ．ｈ＞」は、ともに共通ルートに含まれるコードである。
【００１８】
このため、編集支援装置は、「＃ｉｎｃｌｕｄｅ  ＜ｓａｍｐｌｅ．ｈ＞」の追加が共通ルートへの行の追加であることを特定することができる。したがって、編集支援装置は、オリジナルソースファイル２の「＃ｉｎｃｌｕｄｅ  ＜ｓｔｄｉｏ．ｈ＞」と「＃ｉｎｃｌｕｄｅ  ＜ｓｔｒｉｎｇ．ｈ＞」の間に「＃ｉｎｃｌｕｄｅ  ＜ｓａｍｐｌｅ．ｈ＞」を追加する。
【００１９】
また、ｉｆｄｅｆ文が入れ子になっている場合には、編集支援装置は、入れ子関係が分かるようにルート情報５２を表示する。図２は、ｉｆｄｅｆ文が入れ子になっている場合のルート情報５２の表示を説明するための図である。図２では、＿ＷＩＮ３２ルートが第１階層のルートであり、ｖｅｒ１ルートが第２階層のルートであり、＿ＵＴＦ８ルートが第３階層のルートである。
【００２０】
図２に示すように、編集支援装置は、左から階層の順にルート情報５２を表示する。図２では、「＃ｉｎｃｌｕｄｅ  “ｗｉｎｄｏｗｓ．ｈ”」は＿ＷＩＮ３２ルートに含まれることが示されている。また、「＃ｉｎｃｌｕｄｅ  ＜ｌｏｃａｌｅ．ｈ＞」と「＃ｉｎｃｌｕｄｅ  “ａａａ．ｈ”」は、＿ＷＩＮ３２ルート、ｖｅｒ１ルート及び＿ＵＴＦ８ルートに含まれることが示されている。
【００２１】
次に、表示したコード５１に対するコードの削除についての編集支援装置の動作について図３Ａ〜図３Ｄを用いて説明する。図３Ａは、ｉｆｄｅｆルート内の処理文をすべて削除した場合の問題を説明するための図である。
【００２２】
図３Ａに示すように、編集支援装置は、オリジナルソースファイル２から＿ＷＩＮ３２ルートに着目して抽出したコード５１を表示する。そして、編集者が表示されたコード５１から「＃ｉｎｃｌｕｄｅ  ＜ｗｃｈａｒ．ｈ＞」と「＃ｉｎｃｌｕｄｅ  ＜ｔｃｈａｒ．ｈ＞」を削除する。
【００２３】
すると、オリジナルソースファイル２から「＃ｉｎｃｌｕｄｅ  ＜ｗｃｈａｒ．ｈ＞」と「＃ｉｎｃｌｕｄｅ  ＜ｔｃｈａｒ．ｈ＞」は削除されるが、「＃ｉｆ  ｄｅｆｉｎｅｄ（＿ＷＩＮ３２）」と「＃ｅｌｓｅ」は削除されない。すなわち、オリジナルソースファイル２には余計なプリプロセッサディレクティブが残る。
【００２４】
このように、「＃ｉｆ  ｄｅｆｉｎｅｄ（ＸＸＸ）」と「＃ｅｌｓｅ」で挟まれたＸＸＸルートが有効で、ルート内の処理文がすべて削除されると、余計な「＃ｉｆ  ｄｅｆｉｎｅｄ（ＸＸＸ）」と「＃ｅｌｓｅ」が残る。そこで、編集支援装置は、図３Ｂに示すように、オリジナルソースファイル２に残された「＃ｉｆ  ｄｅｆｉｎｅｄ（＿ＷＩＮ３２）」を「＃ｉｆ  ｎｏｔ  ｄｅｆｉｎｅｄ（＿ＷＩＮ３２）」に変更し、「＃ｅｌｓｅ」を削除する。
【００２５】
また、図３Ｃに示すように、「＃ｅｌｓｅ」と「＃ｅｎｄｉｆ」で挟まれたルートが有効で、ルート内の処理文がすべて削除されると、オリジナルソースファイル２には余計な「＃ｅｌｓｅ」が残る。そこで、編集支援装置は、オリジナルソースファイル２に残された「＃ｅｌｓｅ」を削除する。
【００２６】
また、図３Ｄに示すように、「＃ｉｆ  ｄｅｆｉｎｅｄ（ＸＸＸ）」と「＃ｅｎｄｉｆ」で挟まれたＸＸＸルートが有効で、ルート内の処理文がすべて削除されると、余計な「＃ｉｆ  ｄｅｆｉｎｅｄ（ＸＸＸ）」と「＃ｅｎｄｉｆ」が残る。そこで、編集支援装置は、オリジナルソースファイル２に残された「＃ｉｆ  ｄｅｆｉｎｅｄ（ＸＸＸ）」と「＃ｅｎｄｉｆ」を削除する。
【００２７】
このように、編集支援装置は、オリジナルソースファイル２に残された余計なプリプロセッサディレクティブを変更又は削除することによって、コード５１における削除をオリジナルソースファイル２に正確に反映することができる。
【００２８】
次に、表示したコード５１に対するコードの追加についての編集支援装置の動作について図４Ａ及び図４Ｂを用いて説明する。図４Ａは、ルート間に行を追加する場合の編集支援装置の動作を説明するための図である。なお、ルート間に行を追加する場合の問題は、発明が解決しようとする課題で説明したとおりである。
【００２９】
図４Ａに示すように、編集者により５行目の「＃ｉｎｃｌｕｄｅ  “ａａａ．ｈ”」と６行目の「＃ｉｎｃｌｕｄｅ  “ｔｅｓｔ．ｈ”」との間に「＃ｉｎｃｌｕｄｅ  “ｓａｍｐｌｅ．ｈ”」が追加される。すると、編集支援装置は、５行目と６行目はルートが異なるのでルート間に「＃ｉｎｃｌｕｄｅ  “ｓａｍｐｌｅ．ｈ”」が追加された可能性があると判断し、編集者に「＃ｉｎｃｌｕｄｅ  “ｓａｍｐｌｅ．ｈ”」を追加するルートを選択させる画面表示を行う。
【００３０】
具体的には、編集支援装置は、ルート情報５２において、選択可能なルートを示す表示５３を行う。図４Ａでは、編集支援装置は、＿ＷＩＮ３２ルート、ｖｅｒ１ルート及び＿ＵＴＦ８ルートが選択可能であることを示す表示を行っている。そして、例えば、ｖｅｒ１ルートのバーを延長する等の操作で編集者がｖｅｒ１ルートを選択すると、ｖｅｒ１ルートの処理文は、上の階層の＿ＷＩＮ３２ルートにも属するので、編集支援装置は、＿ＷＩＮ３２ルートのバーも連動して延長する。
【００３１】
そして、編集支援装置は、編集者によって選択されたルートに「＃ｉｎｃｌｕｄｅ  “ｓａｍｐｌｅ．ｈ”」を追加してオリジナルソースファイル２を更新する。図４Ｂは、追加後のオリジナルソースファイル２を示す図である。図４Ｂに示すように、「＃ｉｎｃｌｕｄｅ  “ｓａｍｐｌｅ．ｈ”」は、追加後のオリジナルソースファイル２で１２行目に挿入される。１１行目の「＃ｅｎｄｉｆ」は６行目の「＃ｉｆ  ｄｅｆｉｎｅｄ（＿ＵＴＦ８）」に対応するため、１２行目は、５行目の「＃ｉｆ  ｄｅｆｉｎｅｄ（ｖｅｒ１）」のルートに含まれている。
【００３２】
次に、実施例に係る編集支援装置の機能構成について説明する。図５は、実施例に係る編集支援装置の機能構成を示す図である。図５において、実線の矢印は制御の流れを示し、破線の矢印は外部装置とのデータのアクセス関係を示す。
【００３３】
図５に示すように、編集支援装置１は、ファイル入力部１１と、着目ルート選択部１２と、ソースコード抽出部１３と、ソースコード対応情報作成部１４と、ルート対応情報作成部１５と、編集部１６とを有する。また、編集支援装置１は、ソースコード画面入出力部１７と、ルート画面入出力部１８と、キー入力部１９と、編集イベント読取部２０と、ソースコード更新部２１と、ファイル出力部２２とを有する。
【００３４】
ファイル入力部１１は、オリジナルソースファイル２からオリジナルソースコードを読み込んで編集支援装置１に取り込む。なお、取り込まれたオリジナルソースコードは、他の機能部からアクセスが可能である。
【００３５】
着目ルート選択部１２は、着目するルートを編集者に選択させる。ソースコード抽出部１３は、ファイル入力部１１により編集支援装置１に取り込まれたオリジナルソースコードから着目ルート選択部１２が編集者に選択させたルートのコードを抽出する。なお、抽出されたコードは、他の機能部からアクセスが可能である。
【００３６】
ソースコード対応情報作成部１４は、オリジナルソースコードと着目ルート選択部１２により選択されたルートのコードとの対応を示すソースコード対応情報３を作成する。図６にソースコード対応情報３の一例を示す。図６に示すソースコード対応情報３は、ｏｒｇとｅｄｉｔｏｒとｃｏｄｅとを対応付ける情報である。
【００３７】
ｏｒｇは、オリジナルソースコードにおける行番号である。ｅｄｉｔｏｒは、ソースコード抽出部１３により抽出されたコードにおける行番号である。ｃｏｄｅは、２つの行番号に対応づけられる文の種別であり、例えば、「共通ルートの処理文」、「＿ＷＩＮ３２ルートの開始」、「＿ＷＩＮ３２ルートの＃ｅｌｓｅ」、「＿ＷＩＮ３２ルートの＃ｅｎｄｉｆ」、「無効ルートの処理文」がある。
【００３８】
「共通ルートの処理文」は、共通ルートに属する処理文である。「＿ＷＩＮ３２ルートの開始」は、＿ＷＩＮ３２ルートの開始を示すプリプロセッサディレクティブであり、「＃ｉｆ  ｄｅｆｉｎｅｄ（＿ＷＩＮ３２）」に対応する。「＿ＷＩＮ３２ルートの＃ｅｌｓｅ」は、＿ＷＩＮ３２ルート以外のルートの開始を示すプリプロセッサディレクティブである。「＿ＷＩＮ３２ルートの＃ｅｎｄｉｆ」は、＿ＷＩＮ３２ルートの終了を示すプリプロセッサディレクティブである。「無効ルートの処理文」は、着目しているルート以外のルートに属する処理文である。
【００３９】
例えば、オリジナルソースコードにおける行番号が「１」の「共通ルートの処理文」は、ソースコード抽出部１３により抽出されたコードにおける行番号も「１」である。オリジナルソースコードにおける行番号が「１１」の「共通ルートの処理文」は、ソースコード抽出部１３により抽出されたコードにおける行番号は「６」である。
【００４０】
ルート対応情報作成部１５は、ソースコード抽出部１３により抽出されたコードとルートとの対応を示すルート対応情報４を作成する。図７にルート対応情報４の一例を示す。図７に示すルート対応情報４は、ｅｄｉｔｏｒとルート定義名を対応付ける情報である。ルート定義名は、ルートを定義する名前であり、左から階層が高い順に並べられる。図７において、行番号とルート定義名で特定される位置にある○は、行番号で識別される行がルート定義名で識別されるルートに含まれることを示す。
【００４１】
例えば、ソースコード抽出部１３により抽出された行番号が「１」の行は、共通ルートに含まれる。ソースコード抽出部１３により抽出された行番号が「２」の行は、共通ルートに含まれる。ソースコード抽出部１３により抽出された行番号が「５」の行は、＿ＷＩＮ３２ルート、ｖｅｒ１ルート及び＿ＵＴＦ８ルートに含まれる。
【００４２】
なお、ソースコード対応情報３及びルート対応情報４は、例えば、磁気ディスク装置等の記憶装置に記憶される。
【００４３】
編集部１６は、ソースコード抽出部１３により抽出されたコードを編集者の指示に基づいて編集する。編集部１６は、削除部３１と、追加ルート選択部３２と、追加部３３と、ソースコード対応情報更新部３４と、ルート対応情報更新部３５とを有する。
【００４４】
削除部３１は、表示装置５に表示されたコード５１のうち編集者が指示したコードを削除する。また、削除部３１は、コードの削除により変更が必要になったプリプロセッサディレクティブを変更し、コードの削除により不要となったプリプロセッサディレクティブを削除する。なお、削除部３１による削除処理の詳細については後述する。
【００４５】
追加ルート選択部３２は、コードを追加するルートを編集者に選択させる。追加部３３は、編集者が入力した場所にコードを追加する。追加部３３は、オリジナルソースコードでの入力場所が特定できない場合には、追加ルート選択部３２に指示して編集者にコードを追加するルートを選択させる。そして、追加部３３は、編集者により選択されたルートにコードを追加するための追加位置をオリジナルソースコードにおいて特定する。なお、追加部３３による追加処理の詳細については後述する。
【００４６】
ソースコード対応情報更新部３４は、編集者の編集結果に基づいてソースコード対応情報３を更新する。ルート対応情報更新部３５は、編集者の編集結果に基づいてルート対応情報４を更新する。
【００４７】
ソースコード画面入出力部１７は、ソースコード抽出部１３により抽出されたコードを表示装置５に表示するとともに、編集者による編集操作を受け付け、表示装置５に表示されるコード５１を編集操作に基づいて更新する。
【００４８】
ルート画面入出力部１８は、ルート情報５２を表示装置５に表示するとともに、編集者により表示装置５で選択されたルートを受け付け、追加ルート選択部３２に渡す。また、ルート画面入出力部１８は、表示装置５に表示されたルート情報５２を編集者のルート選択に基づいて更新する。
【００４９】
キー入力部１９は、編集者によるキー入力を受け付け、編集部１６に渡す。編集イベント読取部２０は、編集者による編集がコードの追加であるのか削除であるのかの情報と、操作が行われた行番号に関する情報とを編集部１６に渡す。
【００５０】
ソースコード更新部２１は、編集部１６の編集結果に基づいてオリジナルソースコードを更新する。ファイル出力部２２は、ソースコード更新部２１により更新されたオリジナルソースコードをオリジナルソースファイル２に書き出す。
【００５１】
次に、削除部３１による削除処理の詳細について説明する。図６は、削除部３１による削除処理を説明するための図である。図６では、オリジナルソースファイル２の４行目及び５行目、すなわち、編集支援装置１が“＿ＷＩＮ３２”に着目して表示したコード５１の３行目及び４行目が削除される。削除部３１は、行が削除されたこと及び削除された行番号が３及び４であることを編集イベント読取部２０から受け取る。
【００５２】
そして、削除部３１は、削除された行の直前及び直後の行をソースコード対応情報３に基づいて特定する。図６では、削除された行の直前の行は、オリジナルソースファイル２の３行目の「＿ＷＩＮ３２ルートの開始」を示すプリプロセッサディレクティブである。また、削除された行の直後の行は、オリジナルソースファイル２の６行目の「＿ＷＩＮ３２ルートの＃ｅｌｓｅ」である。そして、削除部３１は、ソースコード対応情報更新部３４を介して以下のようにソースコード対応情報３を更新する。
【００５３】
すなわち、削除部３１は、直前の行が「＿ＷＩＮ３２ルートの開始」であって直後の行が「＿ＷＩＮ３２ルートの＃ｅｌｓｅ」である場合には、「＿ＷＩＮ３２ルートの開始」を「＿ＷＩＮ３２以外のルートの開始」に書き換える。そして、削除部３１は、「＿ＷＩＮ３２ルートの＃ｅｌｓｅ」を削除する。ここで、「＿ＷＩＮ３２ルートの開始」は、“＃ｉｆ  ｄｅｆｉｎｅｄ（＿ＷＩＮ３２）”に対応し、「＿ＷＩＮ３２以外のルートの開始」は、“＃ｉｆ  ｎｏｔ  ｄｅｆｉｎｅｄ（＿ＷＩＮ３２）”に対応する。また、「＿ＷＩＮ３２ルートの＃ｅｌｓｅ」は“＃ｅｌｓｅ”に対応する。なお、図６は、この場合を示す。
【００５４】
また、削除部３１は、直前の行が「＿ＷＩＮ３２ルートの＃ｅｌｓｅ」であって直後の行が「＿ＷＩＮ３２ルートの＃ｅｎｄｉｆ」である場合には、直前の行「＿ＷＩＮ３２ルートの＃ｅｌｓｅ」を削除する。
【００５５】
また、削除部３１は、直前の行が「＿ＷＩＮ３２ルートの開始」であって直後の行が「＿ＷＩＮ３２ルートの＃ｅｎｄｉｆ」である場合には、直前の行「＿ＷＩＮ３２ルートの開始」及び直後の行「＿ＷＩＮ３２ルートの＃ｅｎｄｉｆ」を削除する。
【００５６】
次に、追加部３３による追加処理の詳細について説明する。図７は、追加部３３による追加処理を説明するための図である。図７では、編集支援装置１が“＿ＷＩＮ３２”、“ｖｅｒ１”及び“＿ＵＴＦ８”に着目して表示したコード５１の５行目と６行目の間に行が追加される。
【００５７】
追加部３３は、行が追加されたこと及び追加された行が行番号５と行番号６の間であることを編集イベント読取部２０から受け取る。そして、追加部３３は、ルート対応情報４を参照し、追加前後の行のルートが一致しているか否かを判定し、一致している場合には、追加前後の行のルートを追加されるルートであると特定する。なお、追加前後の行のルートが一致している場合とは、オリジナルソースコードで追加前後の行が隣接する場合である。
【００５８】
一方、追加前後の行のルートが一致していない場合には、追加部３３は、ルート間に行が追加されようとしていると判定し、追加前後の行が属する全てのルートをルート対応情報４から取り出して、追加できるルートの候補とする。図７では、ルート対応情報４の５行目と６行目に○がある“共通”、“＿ＷＩＮ３２”、“ｖｅｒ１”及び“＿ＵＴＦ８”の４つのルートが候補となる。
【００５９】
そして、追加部３３は、追加前後の行で属するルートの数、すなわち、ルート対応情報４の○の数が増加しているか否かを判定する。そして、追加部３３は、増加している場合には、候補のルート定義名をルート対応情報４の左から並べ、減少している場合には、候補のルート定義名をルート対応情報４の右から並べる。図７では、追加前後の行で属するルートの数が減少しているため、ルート定義名は、右から並べられ、“＿ＵＴＦ８”、“ｖｅｒ１”、“＿ＷＩＮ３２”、“共通”の順に並べられる。
【００６０】
そして、追加部３３は、ソースコード対応情報３において、追加直前の行から追加直後の行までを１行ずつ下に見ていったときに、前後の行で「無効ルートの処理文」が現れない場合は、その前後の行の間を追加候補箇所と見なし、ルート定義名を並べた順番で追加ルートとして当てはめていく。
【００６１】
図７では、８行目と９行目には「無効ルートの処理文」が現れないため、８行目と９行目の間に＿ＵＴＦ８ルートが当てはめられ、１１行目と１２行目には「無効ルートの処理文」が現れないため、１１行目と１２行目の間にｖｅｒ１ルートが当てはめられる。また、１４行目と１５行目には「無効ルートの処理文」が現れないため、１４行目と１５行目の間に＿ＷＩＮ３２ルートが当てはめられ、１７行目と１８行目には「無効ルートの処理文」が現れないため、１７行目と１８行目の間に共通ルートが当てはめられる。
【００６２】
そして、追加部３３は、追加ルート選択部３２に指示して、編集者に追加するルートを選択させ、選択されたルートと一致する箇所に行を追加する。そして、追加部３３は、ソースコード対応情報更新部３４を介してソースコード対応情報３を更新する。図７では、例えば、編集者が“ｖｅｒ１”を選択すると、ソースコード対応情報３の１１行目と１２行目の間に行が追加される。
【００６３】
次に、オリジナルソースコードから着目ルート及び共通ルートの処理文を抽出し、表示装置５に表示するまでの処理のフローについて説明する。図８は、オリジナルソースコードから着目ルート及び共通ルートの処理文を抽出し、表示装置５に表示するまでの処理のフローを示すフローチャートである。
【００６４】
図８に示すように、ファイル入力部１１が、オリジナルソースファイル２からオリジナルソースコードを読み込むソースファイル入力処理を行う（ステップＳ１）。そして、着目ルート選択部１２が、着目ルートの定義名一覧を受け取り（ステップＳ２）、着目ルート選択画面を出力する（ステップＳ３）。
【００６５】
そして、ソースコード抽出部１３が、オリジナルソースコードから着目するルートの処理文と共通ルートの処理文を抽出する（ステップＳ４）。そして、ソースコード対応情報作成部１４が、ソースコード対応情報３すなわちオリジナルソースコードと抽出後のソースコードの対応情報を作成する（ステップＳ５）。
【００６６】
そして、ルート対応情報作成部１５が、ルート対応情報４すなわち抽出後のソースコードの各行がどのｉｆｄｅｆルートに属しているのかを示す情報を作成する（ステップＳ６）。そして、ソースコード画面入出力部１７が、抽出後のソースコードを表示する画面を出力する（ステップＳ７）。また、ルート画面入出力部１８が、ルート情報５２を表示する画面を出力する（ステップＳ８）。
【００６７】
このように、ソースコード対応情報作成部１４がソースコード対応情報３を作成し、ルート対応情報作成部１５がルート対応情報４を作成することで、編集部１６がソースコード対応情報３及びルート対応情報４を用いて編集処理を行うことができる。
【００６８】
次に、編集が行われたときに、編集内容をオリジナルソースコードに反映するまでの処理のフローについて説明する。図９は、編集が行われたときに、編集内容をオリジナルソースコードに反映するまでの処理のフローを示すフローチャートである。
【００６９】
図９に示すように、キー入力部１９が、編集者によるキー入力を受け付けるキー入力処理を行う（ステップＳ１１）。そして、編集イベント読取部２０が、行が削除されたか否かを判定し（ステップＳ１２）、行が削除された場合には、編集部１６が、削除処理を行い（ステップＳ１３）、制御がステップＳ１７に進む。
【００７０】
一方、行が削除されない場合には、編集イベント読取部２０は、行が追加されたか否かを判定し（ステップＳ１４）、行が追加された場合には、編集部１６が、追加処理を行い（ステップＳ１５）、制御がステップＳ１７に進む。一方、行が追加されない場合には、編集部１６は、ソースコード対応情報３に編集内容を反映する（ステップＳ１６）。
【００７１】
そして、ソースコード画面入出力部１７が、ソースコード対応情報３の通りにソースコードを画面に出力する（ステップＳ１７）。そして、ルート画面入出力部１８がルート情報５２を画面に出力する（ステップＳ１８）。
【００７２】
そして、ソースコード更新部２１が、ソースコード対応情報３を基にオリジナルソースコードを更新する（ステップＳ１９）。そして、ファイル出力部２２が、更新されたオリジナルソースコードをオリジナルソースファイル２に出力するファイル出力処理を行う（ステップＳ２０）。
【００７３】
そして、編集支援装置１は、編集者によりファイル保存操作がされたか否かを判定し（ステップＳ２１）、ファイル保存操作がされない場合には、ステップＳ１１に戻る。一方、編集者によりファイル保存操作がされた場合には、編集支援装置１は、編集でｉｆｄｅｆ文の追加があるか否かを判定し（ステップＳ２２）、ｉｆｄｅｆ文の追加がある場合には、図８のステップＳ１に戻る。一方、ｉｆｄｅｆ文の追加がない場合には、編集支援装置１は、処理を終了する。
【００７４】
このように、編集支援装置１は、編集結果を自動的にオリジナルソースファイル２に反映することで、編集者を支援することができる。
【００７５】
次に、削除処理のフローについて説明する。図１０は、削除処理のフローを示すフローチャートである。図１０に示すように、削除部３１は、削除された行番号を編集イベント読取部２０から受け取る（ステップＳ３１）。
【００７６】
そして、削除部３１は、削除された行の直前及び直後の行をソースコード対応情報３に基づいて特定する（ステップＳ３２）。そして、削除部３１は、直前の行があるルートの開始であり直後の行がそのルートの“＃ｅｌｓｅ”であるか否かを判定する（ステップＳ３３）。その結果、直前の行があるルートの開始であり直後の行がそのルートの“＃ｅｌｓｅ”である場合には、削除部３１は、オリジナルソースコードで以下になるようにソースコード対応情報３をソースコード対応情報更新部３４を介して更新する。すなわち、削除部３１は、オリジナルソースコードで、直前の行の“＃ｉｆ  ｄｅｆｉｎｅｄ”を“＃ｉｆ  ｎｏｔ  ｄｅｆｉｎｅｄ”に書き換え、直後の行の“＃ｅｌｓｅ”を削除するように、ソースコード対応情報３を更新する（ステップＳ３４）。そして、編集部１６は、ステップＳ３９に進む。
【００７７】
一方、直前の行があるルートの開始でないか、又は、直後の行がそのルートの“＃ｅｌｓｅ”でない場合には、削除部３１は、直前の行があるルートの“＃ｅｌｓｅ”であり直後の行がそのルートの“＃ｅｎｄｉｆ”であるか否かを判定する（ステップＳ３５）。その結果、直前の行があるルートの“＃ｅｌｓｅ”であり直後の行がそのルートの“＃ｅｎｄｉｆ”である場合には、削除部３１は、オリジナルソースコードで以下になるようにソースコード対応情報３をソースコード対応情報更新部３４を介して更新する。すなわち、削除部３１は、オリジナルソースコードで、直前の行の“＃ｅｌｓｅ”を削除するように、ソースコード対応情報３を更新する（ステップＳ３６）。そして、編集部１６は、ステップＳ３９に進む。
【００７８】
一方、直前の行があるルートの“＃ｅｌｓｅ”でないか、又は、直後の行がそのルートの“＃ｅｎｄｉｆ”でない場合には、削除部３１は、直前の行があるルートの開始であり直後の行がそのルートの“＃ｅｎｄｉｆ”であるか否かを判定する（ステップＳ３７）。その結果、直前の行があるルートの開始であり直後の行がそのルートの“＃ｅｎｄｉｆ”である場合には、削除部３１は、オリジナルソースコードで以下になるようにソースコード対応情報３をソースコード対応情報更新部３４を介して更新する。すなわち、削除部３１は、オリジナルソースコードで、直前の行“＃ｉｆ  ｄｅｆｉｎｅｄ”及び直後の行の“＃ｅｎｄｉｆ”を削除するように、ソースコード対応情報３を更新する（ステップＳ３８）。
【００７９】
そして、ソースコード対応情報更新部３４が、削除する行のソースコード対応情報３を更新する（ステップＳ３９）。そして、ルート対応情報更新部３５が、削除する行のルート対応情報４を更新する（ステップＳ４０）。
【００８０】
このように、編集部１６が削除に伴って変更あるいは削除が必要になったプリプロセッサディレクティブに対応する情報をソースコード対応情報３において更新することで、編集支援装置１はオリジナルソースコードを正確に更新することができる。
【００８１】
次に、追加処理のフローについて説明する。図１１は、追加処理のフローを示すフローチャートである。図１１に示すように、追加部３３は、追加された行番号を編集イベント読取部２０から受け取る（ステップＳ５１）。
【００８２】
そして、追加部３３は、追加する行の直前及び直後の行が属するルート定義名をルート対応情報４に基づいて特定する（ステップＳ５２）。そして、追加部３３は、直前の行と直後の行のルートは一致しているか否かを判定し（ステップＳ５３）、一致している場合には、一致しているルートを行を追加する追加ルートとしてソースコ−ド対応情報３を更新し（ステップＳ５４）、ステップＳ６５へ進む。
【００８３】
一方、直前の行と直後の行のルートが一致していない場合には、追加ルート選択部３２が、ルート画面入出力部１８に追加前後の行が属するルート定義名を渡す（ステップＳ５５）。そして、ルート画面入出力部１８が、追加ルートを編集者に選択させる画面を表示し、追加部３３が、編集者によって選択されたルート定義名を受け取る（ステップＳ５６）。
【００８４】
そして、追加部３３は、追加する直前の行に対して直後の行に属するルートの数が増加しているか否かを判定し（ステップＳ５７）、増加していない場合には、追加前後の行が属するルート定義名をルート対応情報４の列項目の右からの順に並べる（ステップＳ５８）。一方、追加する直前の行に対して直後の行に属するルートの数が増加している場合には、追加部３３は、追加前後の行が属するルート定義名をルート対応情報４の列項目の左からの順に並べる（ステップＳ５９）。
【００８５】
そして、追加部３３は、編集者によって選択されたルート定義名が並べたルート定義名の何番目と等しいかを算出する（ステップＳ６０）。ここで、並べたルート定義名のｉ番目が編集者によって選択されたルート定義名と等しかったとする。
【００８６】
そして、追加部３３は、追加する直前の行の次の行から１行ずつ順番に追加する直後の行までソースコード対応情報３を読み込む（ステップＳ６１）。そして、追加部３３は、読み込んだ行が「無効ルートの処理文」であるか否かを判定し（ステップＳ６２）、「無効ルートの処理文」である場合には、ステップＳ６１に戻って次の行を読み込む。
【００８７】
一方、読み込んだ行が「無効ルートの処理文」でない場合には、追加部３３は、読み込んでからｉ番目の行か否かを判定する（ステップＳ６３）。ただし、追加部３３は、判定の際、「無効ルートの処理文」の読み込みは含まない。そして、ｉ番目の行でない場合には、追加部３３は、ステップＳ６１に戻って次の行を読み込む。
【００８８】
一方、読み込んでからｉ番目の行である場合には、追加部３３は、今読み込んだ行とその直前の行に行を追加するようにソースコード対応情報３をソースコード対応情報更新部３４を介して更新する（ステップＳ６４）。そして、ルート対応情報更新部３５は、ソースコード対応情報３と追加ルート定義名をもとにルート対応情報４を更新する（ステップＳ６５）。
【００８９】
このように、追加部３３が追加された行についてルート対応情報４とソースコード対応情報３を用いてソースコード対応情報３における追加位置を特定するので、編集支援装置１はオリジナルソースコードを正確に更新することができる。
【００９０】
上述してきたように、実施例では、ソースコード抽出部１３が、オリジナルソースコードから編集者によって選択されたルートに属するコードを抽出し、ソースコード画面入出力部１７が、ソースコード抽出部１３により抽出されたコードを表示装置５に表示する。そして、編集者により行の追加が行われると、ルート画面入出力部１８が、追加する行が属するルートを編集者に選択させる画面を表示装置５に表示する。
【００９１】
そして、追加部３３が、編集者に選択されたルートに基づいて、追加された行のオリジナルソースコードにおける挿入個所を特定する。そして、ソースコード対応情報更新部３４が追加部３３により特定された箇所に基づいて、ソースコード対応情報３を更新する。そして、ソースコード更新部２１が、更新されたソースコード対応情報３に基づいてオリジナルソースコードを更新する。
【００９２】
したがって、編集者は、着目するルートに基づいて表示されたコード５１上で行の追加を行うことができ、編集支援装置１は、編集者のコード編集作業の利便性を向上することができる。
【００９３】
また、実施例では、追加する行が属するルートを編集者に選択させる画面において、候補となるルートの定義名をソースコードに対応付けて編集者が選択可能なように表示する。したがって、編集者は、追加する行が属するルートを簡単に選択することができる。
【００９４】
また、実施例では、編集者による行の削除が行われると、削除部３１が、変更あるいは削除が必要になったプリプロセッサディレクティブを特定し、ソースコード対応情報３の対応する箇所の変更あるいは削除をソースコード対応情報更新部３４を介して行う。そして、ソースコード更新部２１が、更新されたソースコード対応情報３に基づいてオリジナルソースコードを更新する。したがって、編集支援装置１は、編集者による行の削除をオリジナルソースコードに正確に反映することができる。
【００９５】
なお、実施例では、編集支援装置１について説明したが、編集支援装置１が有する機能構成をソフトウェアによって実現することで、同様の機能を有する編集支援プログラムを得ることができる。そこで、編集支援プログラムを実行するコンピュータについて説明する。
【００９６】
図１２は、実施例に係る編集支援プログラムを実行するコンピュータのハードウェア構成を示す図である。図１２に示すように、コンピュータ６０は、メインメモリ６１と、ＣＰＵ６２と、ＬＡＮ（Local  Area  Network）インタフェース６３と、ＨＤＤ（Hard  Disk  Drive）６４とを有する。また、コンピュータ６０は、スーパーＩＯ（Input  Output）６５と、ＤＶＩ（Digital  Visual  Interface）６６と、ＯＤＤ（Optical  Disk  Drive）６７とを有する。
【００９７】
メインメモリ６１は、プログラムやプログラムの実行途中結果などを記憶するメモリである。ＣＰＵ６２は、メインメモリ６１からプログラムを読み出して実行する中央処理装置である。ＣＰＵ６２は、メモリコントローラを有するチップセットを含む。
【００９８】
ＬＡＮインタフェース６３は、コンピュータ６０をＬＡＮ経由で他のコンピュータに接続するためのインタフェースである。ＨＤＤ６４は、プログラムやデータを格納するディスク装置であり、スーパーＩＯ６５は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。ＤＶＩ６６は、液晶表示装置を接続するインタフェースであり、ＯＤＤ６７は、ＤＶＤの読み書きを行う装置である。
【００９９】
ＬＡＮインタフェース６３は、ＰＣＩエクスプレス（ＰＣＩｅ）によりＣＰＵ６２に接続され、ＨＤＤ６４及びＯＤＤ６７は、ＳＡＴＡ（Serial  Advanced  Technology  Attachment）によりＣＰＵ６２に接続される。スーパーＩＯ６５は、ＬＰＣ（Low  Pin  Count）によりＣＰＵ６２に接続される。
【０１００】
そして、コンピュータ６０において実行される編集支援プログラムは、ＤＶＤに記憶され、ＯＤＤ６７によってＤＶＤから読み出されてコンピュータ６０にインストールされる。あるいは、編集支援プログラムは、ＬＡＮインタフェース６３を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ６０にインストールされる。そして、インストールされた編集支援プログラムは、ＨＤＤ６４に記憶され、メインメモリ６１に読み出されてＣＰＵ６２によって実行される。
【０１０１】
また、実施例では、マルチプラットフォーム対応のソースコードについて説明したが、本発明はこれに限定されるものではなく、例えばマルチエディション、マルチパッケージ等に対応したソースコードにも同様に適用することができる。
【０１０２】
また、実施例では、ソースコードがＣ言語で記載されている場合について説明したが、本発明はこれに限定されるものではなく、ソースコードが他の言語で記載されている場合にも同様に適用することができる。
【０１０３】
また、実施例では、文が１行であって行を編集単位とする場合について説明したが、本発明はこれに限定されるものではなく、文は複数の行にまたがってもよく、あるいは、１行に複数の文が含まれてもよい。文が複数の行にまたがる場合、あるいは、１行に複数の文が含まれる場合には、１つの文の記憶単位をレコードとして、行の代わりにレコードを編集対象とすればよい。
【符号の説明】
【０１０４】
１    編集支援装置
２    オリジナルソースファイル
３    ソースコード対応情報
４    ルート対応情報
５    表示装置
１１    ファイル入力部
１２    着目ルート選択部
１３    ソースコード抽出部
１４    ソースコード対応情報作成部
１５    ルート対応情報作成部
１６    編集部
１７    ソースコード画面入出力部
１８    ルート画面入出力部
１９    キー入力部
２０    編集イベント読取部
２１    ソースコード更新部
２２    ファイル出力部
３１    削除部
３２    追加ルート選択部
３３    追加部
３４    ソースコード対応情報更新部
３５    ルート対応情報更新部
５１    コード
５２    ルート情報
５３    選択可能なルートを示す表示
６０    コンピュータ
６１    メインメモリ
６２    ＣＰＵ
６３    ＬＡＮインタフェース
６４    ＨＤＤ
６５    スーパーＩＯ
６６    ＤＶＩ
６７    ＯＤＤ
【図１】
2017151691.tif 000003
【図２】
2017151691.tif 000004
【図３Ａ】
2017151691.tif 000005
【図３Ｂ】
2017151691.tif 000006
【図３Ｃ】
2017151691.tif 000007
【図３Ｄ】
2017151691.tif 000008
【図４Ａ】
2017151691.tif 000009
【図４Ｂ】
2017151691.tif 000010
【図５】
2017151691.tif 000011
【図６】
2017151691.tif 000012
【図７】
2017151691.tif 000013
【図８】
2017151691.tif 000014
【図９】
2017151691.tif 000015
【図１０】
2017151691.tif 000016
【図１１】
2017151691.tif 000017
【図１２】
2017151691.tif 000018
【図１３】
2017151691.tif 000019