(57)【要約】【課題】第１、第２プログラミング言語で記述された第１、第２プログラムファイルを相互に変換する変換装置を提供する。【解決手段】変換装置１００は、第１、第２プログラミング言語で記述された第１、第２プログラムファイルが格納される第１、第２記憶部１４１，１４２と、変換指示の入力部３０とを備える。第１、第２プログラムファイルは、第１、第２プログラミング言語で記述された第１、第２プログラム部分と、第１、第２プログラム部分を有効化する第１、第２有効化ヘッダと、第１、第２プログラム部分を無効化する第１、第２無効化ヘッダとを含む。変換装置１００は、変換指示に応じて、第１、第２有効化ヘッダと第１、第２無効化ヘッダとを相互に変換する第１、第２変換部１２１，１２２をさらに備える。【選択図】図１
2019012460.tif 000002
【特許請求の範囲】
【請求項１】
第１プログラミング言語で記述された第１プログラムファイルが格納される第１記憶部と、第２プログラミング言語で記述された第２プログラムファイルが格納される第２記憶部と、前記第１プログラムファイルから前記第２プログラムファイルへの変換指示と、前記第２プログラムファイルから前記第１プログラムファイルへの変換指示と、を入力する入力部と、を備え、前記変換指示に応じて前記第１プログラムファイルと前記第２プログラムファイルとを相互に変換する変換装置であって、
前記第１プログラムファイルは、
前記第１プログラミング言語で記述された第１プログラム部分と、
前記第２プログラミング言語で記述された第２プログラム部分と、
前記第１プログラム部分に付加され、前記第１プログラム部分を有効化する第１有効化ヘッダと、
前記第２プログラム部分に付加され、前記第２プログラム部分を無効化する第２無効化ヘッダと、を含み、
前記第２プログラムファイルは、
前記第１プログラム部分と、
前記第２プログラム部分と、
前記第１プログラム部分に付加され、前記第１プログラム部分を無効化する第１無効化ヘッダと、
前記第２プログラム部分に付加され、前記第２プログラム部分を有効化する第２有効化ヘッダと、を含み、
前記入力部によって前記第１プログラムファイルから前記第２プログラムファイルへの変換指示が入力されたとき、前記第１プログラムファイルの前記第１有効化ヘッダを前記第１無効化ヘッダに変換し、前記入力部によって前記第２プログラムファイルから前記第１プログラムファイルへの変換指示が入力されたとき、前記第２プログラムファイルの前記第１無効化ヘッダを前記第１有効化ヘッダに変換する第１変換部と、
前記入力部によって前記第１プログラムファイルから前記第２プログラムファイルへの変換指示が入力されたとき、前記第１プログラムファイルの前記第２無効化ヘッダを前記第２有効化ヘッダに変換し、前記入力部によって前記第２プログラムファイルから前記第１プログラムファイルへの変換指示が入力されたとき、前記第２プログラムファイルの前記第２有効化ヘッダを前記第２無効化ヘッダに変換する第２変換部と、をさらに備えることを特徴とする変換装置。
【請求項２】
請求項１に記載の変換装置であって、
前記第１プログラム部分と、前記第２プログラム部分と、前記第１無効化ヘッダと、前記第２無効化ヘッダと、を含む統合ファイルが格納される第３記憶部をさらに備え、
前記入力部は、前記統合ファイルから前記第１プログラムファイルへの変換指示と、前記統合ファイルから前記第２プログラムファイルへの変換指示と、をさらに入力し、
前記第１変換部は、前記入力部によって前記統合ファイルから前記第１プログラムファイルへの変換指示が入力されたとき、前記統合ファイルの前記第１無効化ヘッダを前記第１有効化ヘッダに変換し、
前記第２変換部は、前記入力部によって前記統合ファイルから前記第２プログラムファイルへの変換指示が入力されたとき、前記統合ファイルの前記第２無効化ヘッダを前記第２有効化ヘッダに変換することを特徴とする変換装置。
【請求項３】
請求項１に記載の変換装置であって、
前記第１プログラム部分と、前記第２プログラム部分と、前記第１有効化ヘッダと、前記第２有効化ヘッダと、を含む統合ファイルが格納される第３記憶部をさらに備え、
前記入力部は、前記統合ファイルから前記第１プログラムファイルへの変換指示と、前記統合ファイルから前記第２プログラムファイルへの変換指示と、をさらに入力し、
前記第１変換部は、前記入力部によって前記統合ファイルから前記第２プログラムファイルへの変換指示が入力されたとき、前記統合ファイルの前記第１有効化ヘッダを前記第１無効化ヘッダに変換し、
前記第２変換部は、前記入力部によって前記統合ファイルから前記第１プログラムファイルへの変換指示が入力されたとき、前記統合ファイルの前記第２有効化ヘッダを前記第２無効化ヘッダに変換することを特徴とする変換装置。
【請求項４】
第１プログラミング言語で記述された第１プログラムファイルが格納される第１記憶部と、第２プログラミング言語で記述された第２プログラムファイルが格納される第２記憶部と、統合ファイルが格納される第３記憶部と、前記統合ファイルから前記第１プログラムファイルへの変換指示と、前記統合ファイルから前記第２プログラムファイルへの変換指示と、を入力する入力部と、を備え、前記変換指示に応じて前記統合ファイルを前記第１プログラムファイルおよび前記第２プログラムファイルに変換する変換装置であって、
前記第１プログラムファイルは、
前記第１プログラミング言語で記述された第１プログラム部分と、
前記第２プログラミング言語で記述された第２プログラム部分と、
前記第１プログラム部分に付加され、前記第１プログラム部分を有効化する第１有効化ヘッダと、
前記第２プログラム部分に付加され、前記第２プログラム部分を無効化する第２無効化ヘッダと、を含み、
前記第２プログラムファイルは、
前記第１プログラム部分と、
前記第２プログラム部分と、
前記第１プログラム部分に付加され、前記第１プログラム部分を無効化する第１無効化ヘッダと、
前記第２プログラム部分に付加され、前記第２プログラム部分を有効化する第２有効化ヘッダと、を含み、
前記統合ファイルは、
前記第１プログラム部分と、
前記第２プログラム部分と、
前記第１無効化ヘッダと、
前記第２無効化ヘッダと、を含み、
前記入力部によって前記統合ファイルから前記第１プログラムファイルへの変換指示が入力されたとき、前記統合ファイルの前記第１無効化ヘッダを前記第１有効化ヘッダに変換する第１変換部と、
前記入力部によって前記統合ファイルから前記第２プログラムファイルへの変換指示が入力されたとき、前記統合ファイルの前記第２無効化ヘッダを前記第２有効化ヘッダに変換する第２変換部と、をさらに備えることを特徴とする変換装置。
【請求項５】
第１プログラミング言語で記述された第１プログラムファイルが格納される第１記憶部と、第２プログラミング言語で記述された第２プログラムファイルが格納される第２記憶部と、統合ファイルが格納される第３記憶部と、前記統合ファイルから前記第１プログラムファイルへの変換指示と、前記統合ファイルから前記第２プログラムファイルへの変換指示と、を入力する入力部と、を備え、前記変換指示に応じて前記統合ファイルを前記第１プログラムファイルおよび前記第２プログラムファイルに変換する変換装置であって、
前記第１プログラムファイルは、
前記第１プログラミング言語で記述された第１プログラム部分と、
前記第２プログラミング言語で記述された第２プログラム部分と、
前記第１プログラム部分に付加され、前記第１プログラム部分を有効化する第１有効化ヘッダと、
前記第２プログラム部分に付加され、前記第２プログラム部分を無効化する第２無効化ヘッダと、を含み、
前記第２プログラムファイルは、
前記第１プログラム部分と、
前記第２プログラム部分と、
前記第１プログラム部分に付加され、前記第１プログラム部分を無効化する第１無効化ヘッダと、
前記第２プログラム部分に付加され、前記第２プログラム部分を有効化する第２有効化ヘッダと、を含み、
前記統合ファイルは、
前記第１プログラム部分と、
前記第２プログラム部分と、
前記第１有効化ヘッダと、
前記第２有効化ヘッダと、を含み、
前記入力部によって前記統合ファイルから前記第２プログラムファイルへの変換指示が入力されたとき、前記統合ファイルの前記第１有効化ヘッダを前記第１無効化ヘッダに変換する第１変換部と、
前記入力部によって前記統合ファイルから前記第１プログラムファイルへの変換指示が入力されたとき、前記統合ファイルの前記第２有効化ヘッダを前記第２無効化ヘッダに変換する第２変換部と、をさらに備えることを特徴とする変換装置。
【請求項６】
請求項１〜５のいずれか１項に記載の変換装置であって、
前記第１プログラミング言語と前記第２プログラミング言語とは、コメント化の書式が共通し、
前記第１有効化ヘッダおよび前記第２有効化ヘッダは、前記第１プログラム言語および前記第２プログラム言語において、コメントとして認識される文字列であるとともに、他の部分では使用されない特殊な文字列であり、
前記第１無効化ヘッダおよび前記第２無効化ヘッダは、前記第１プログラム言語および前記第２プログラム言語において、行の末尾までをコメント化する文字列で開始する文字列であるとともに、他の部分では使用されない特殊な文字列であることを特徴とする変換装置。
【請求項７】
請求項６に記載の変換装置であって、
前記第１プログラミング言語はＣ＋＋であり、
前記第２プログラミング言語がＪａｖａ（登録商標）であり、
前記第１有効化ヘッダおよび前記第２有効化ヘッダは、スラッシュ、アスタリスクで開始するとともにアスタリスク、スラッシュで終了する文字列であり、
前記第１無効化ヘッダおよび前記第２無効化ヘッダは、スラッシュ、スラッシュで開始する文字列であることを特徴とする変換装置。
【請求項８】
請求項７に記載の変換装置であって、
前記第１プログラムファイルは、
前記第１プログラムファイルにおいて文字列置換の対象として宣言された置換対象文字列の前に付加され、前記第１プログラム言語および前記第２プログラム言語において他の部分では使用されない特殊な文字列である第３ヘッダと、
前記第１プログラムファイルおよび前記第２プログラムファイルにおいて使用される共通関数の関数名の前に付加され、前記第１プログラム言語および前記第２プログラム言語において他の部分では使用されない特殊な文字列である第４ヘッダと、をさらに含み、
前記第２プログラムファイルは、
前記第２プログラムファイルにおいて文字列置換の宣言が行われたクラスのクラス名と前記第３ヘッダとが結合された文字列である第３クラス名ヘッダと、
前記共通関数が使用されるクラスのクラス変数名と前記第４ヘッダとが結合された文字列である第４クラス変数名ヘッダと、をさらに含み、
前記入力部によって前記第１プログラムファイルから前記第２プログラムファイルへの変換指示が入力されたとき、前記第１プログラムファイルの前記第３ヘッダを前記第３クラス名ヘッダに変換し、前記入力部によって前記第２プログラムファイルから前記第１プログラムファイルへの変換指示が入力されたとき、前記第２プログラムファイルの前記第３クラス名ヘッダを前記第３ヘッダに変換する第３変換部と、
前記入力部によって前記第１プログラムファイルから前記第２プログラムファイルへの変換指示が入力されたとき、前記第１プログラムファイルの前記第４ヘッダを前記第４クラス変数名ヘッダに変換し、前記入力部によって前記第２プログラムファイルから前記第１プログラムファイルへの変換指示が入力されたとき、前記第２プログラムファイルの前記第４クラス変数名ヘッダを前記第４ヘッダに変換する第４変換部と、をさらに備えることを特徴とする変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１プログラミング言語で記述された第１プログラムファイルと、第２プログラミング言語で記述された第２プログラムファイルとを相互に変換する変換装置に関する。
【背景技術】
【０００２】
従来より、特定のプログラミング言語で記述されたプログラムを、別のプログラミング言語で記述されたプログラムに変換するようにした変換装置が知られている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０２−０１０４３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プログラム開発においては、実行速度が速くメモリ容量が小さいＣ＋＋と、実行速度が遅くメモリ容量が大きいＪａｖａ（登録商標）とのように、特徴の異なる複数のプログラミング言語を使用して、同じ用途のプログラムを同時に開発する場合がある。このような場合には、各言語で記述されたプログラムファイルを、更新などのバージョンごとに、それぞれ管理しなければならないため、管理が複雑となる。また、一方の言語のプログラムファイルを更新した後に、上記特許文献１記載のような変換装置によって、他方の言語のプログラムファイルに変換することも考えられるが、変換をし忘れたり、誤って旧バージョンのプログラムファイルを変換するなどして、他方の言語のプログラムファイルに更新漏れが発生するおそれがある。このような更新漏れによる不具合の発生を防止するために、異なる複数のプログラミング言語で記述されたプログラムファイルをバージョンごとに一元管理したいという要求がある。
【課題を解決するための手段】
【０００５】
本発明の一態様は、第１プログラミング言語で記述された第１プログラムファイルが格納される第１記憶部と、第２プログラミング言語で記述された第２プログラムファイルが格納される第２記憶部と、第１プログラムファイルから第２プログラムファイルへの変換指示と、第２プログラムファイルから第１プログラムファイルへの変換指示と、を入力する入力部と、を備え、変換指示に応じて第１プログラムファイルと第２プログラムファイルとを相互に変換する変換装置であって、第１プログラムファイルは、第１プログラミング言語で記述された第１プログラム部分と、第２プログラミング言語で記述された第２プログラム部分と、第１プログラム部分に付加され、第１プログラム部分を有効化する第１有効化ヘッダと、第２プログラム部分に付加され、第２プログラム部分を無効化する第２無効化ヘッダと、を含み、第２プログラムファイルは、第１プログラム部分と、第２プログラム部分と、第１プログラム部分に付加され、第１プログラム部分を無効化する第１無効化ヘッダと、第２プログラム部分に付加され、第２プログラム部分を有効化する第２有効化ヘッダと、を含み、入力部によって第１プログラムファイルから第２プログラムファイルへの変換指示が入力されたとき、第１プログラムファイルの第１有効化ヘッダを第１無効化ヘッダに変換し、入力部によって第２プログラムファイルから第１プログラムファイルへの変換指示が入力されたとき、第２プログラムファイルの第１無効化ヘッダを第１有効化ヘッダに変換する第１変換部と、入力部によって第１プログラムファイルから第２プログラムファイルへの変換指示が入力されたとき、第１プログラムファイルの第２無効化ヘッダを第２有効化ヘッダに変換し、入力部によって第２プログラムファイルから第１プログラムファイルへの変換指示が入力されたとき、第２プログラムファイルの第２有効化ヘッダを第２無効化ヘッダに変換する第２変換部と、をさらに備える。
【発明の効果】
【０００６】
本発明によれば、第１、第２プログラミング言語で記述された第１、第２プログラムファイルを相互に変換するため、いずれか一方のファイルを共通ファイルとして使用することで、更新などのバージョンを一元管理することができる。また、第１、第２プログラミング言語で記述された第１、第２プログラム部分を対比しながら更新作業を行うことができるため、更新漏れが生じる可能性を低減することができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施形態に係る変換装置の概略構成を示すブロック図。
【図２】図１の第１記憶部に格納される第１プログラムファイルの一例の説明図。
【図３】図１の第２記憶部に格納される第２プログラムファイルの一例の説明図。
【図４】図１の処理部によって実行される、第１プログラムファイルから第２プログラムファイルへの変換処理の一例を示すフローチャート。
【図５】図１の処理部によって実行される、第２プログラムファイルから第１プログラムファイルへの変換処理の一例を示すフローチャート。
【図６】本発明の実施形態の変形例に係る変換装置の概略構成を示すブロック図。
【図７】図６の第３記憶部に格納される統合ファイルの一例の説明図。
【図８】図６の第３記憶部に格納される統合ファイルの別の例の説明図。
【図９】図６の処理部によって実行される、統合ファイルからら第１、第２プログラムファイルへの変換処理の一例を示すフローチャート。
【図１０】本発明の実施形態のさらなる変形例に係る変換装置の概略構成を示すブロック図。
【図１１】図１０の第１記憶部に格納される第１プログラムファイルの一例の説明図。
【図１２】図１０の第２記憶部に格納される第２プログラムファイルの一例の説明図。
【図１３】図１０の処理部によって実行される、第１プログラムファイルから第２プログラムファイルへの変換処理の一例を示すフローチャート。
【発明を実施するための形態】
【０００８】
以下、図１〜図１３を参照して本発明の実施形態について説明する。図１は、本発明の実施形態に係る変換装置（以下、装置という）１００の概略構成を示すブロック図である。装置１００は、制御部１０と、表示部（ディスプレイ）２０と、入力部３０とを備える。
【０００９】
制御部１０は、処理部（プロセッサ）１２と記憶部（メモリ）１４とを含んで構成される。処理部１２は、例えば、デスクトップ型あるいはラップトップ型の一般的なコンピュータのプロセッサとして構成される。処理部１２は、コンピュータに有線あるいは無線で電気的に接続される仮想プロセッサとして構成してもよい。記憶部１４は、例えば、コンピュータのメモリやコンピュータに接続される外付けメモリとして構成される。記憶部１４は、コンピュータに有線あるいは無線で電気的に接続される仮想メモリであってもよい。
【００１０】
処理部１２は、機能的な構成として、第１変換部１２１、第２変換部１２２を有する。すなわち、処理部１２は、記憶部１４に予め格納されたプログラムに従って後述する処理を実行することで、第１変換部１２１、第２変換部１２２として機能する。記憶部１４は、第１記憶部１４１、第２記憶部１４２を有する。第１、第２記憶部１４１，１４２は、例えば、メモリに格納されたフォルダとして、それぞれ構成される。第１、第２記憶部１４１，１４２には、第１、第２プログラミング言語で記述された第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴがそれぞれ格納される。
【００１１】
表示部２０は、制御部１０に有線あるいは無線で電気的に接続され、制御部１０からの出力に応じた画面をディスプレイ上に表示する。表示部２０は、例えば、デスクトップ型のコンピュータに接続されるディスプレイ、あるいはラップトップ型のコンピュータのディスプレイとして構成される。
【００１２】
入力部３０は、ユーザによる操作に応じて、第１プログラムファイル１４１ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換指示、あるいは第２プログラムファイル１４２ＴＸＴから第１プログラムファイル１４１ＴＸＴへの変換指示を、制御部１０に入力する。入力部３０は、例えば、表示部２０によって表示される画面上のボタンとして構成され、ユーザによるクリック操作あるいは、表示部２０がタッチパネル方式である場合にはタッチ操作に応じて、制御部１０への入力を行う。入力部３０は、デスクトップ型のコンピュータに接続されるキーボード、あるいはラップトップ型のコンピュータのキーボードの、特定のキーあるいはキーの組み合わせとして構成され、ユーザによるキーの押下に応じて、制御部１０への入力を行うようにしてもよい。
【００１３】
本発明の実施形態に係る装置１００は、ユーザによる入力部３０の操作に応じて、第１プログラムファイル１４１ＴＸＴと第２プログラムファイル１４２ＴＸＴとを相互に変換する。第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴは、機械言語にコンパイルされたときにコンピュータに対して同一の一連の指令（命令）を行う、互いに異なるプログラミング言語で記述されたソースコードからなるテキストファイルである。異なるプログラミング言語で記述されたソースコードには、両方の言語で共通する行と、言語によって異なる行とが含まれる。以上のことを前提として、以下、第１、第２記憶部１４１，１４２に格納される第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴの特徴について説明する。
【００１４】
図２は、第１記憶部１４１に格納される第１プログラムファイル１４１ＴＸＴの一例の説明図である。第１プログラムファイル１４１ＴＸＴは、第１プログラミング言語（本実施形態ではＣ＋＋）で記述された命令（以下、第１プログラム部分と称する）と、第２プログラミング言語（本実施形態ではＪａｖａ（登録商標））で記述された命令（以下、第２プログラム部分と称する）とが、行（あるいは段落）ごとに併記されたソースコードからなるテキストファイルである。なお、第１、第２プログラム部分のうち、行単位で記述が共通する部分は、共通行として１行で記述される。図２に示すのは、第１プログラムファイル１４１ＴＸＴのソースコードの一部である。
【００１５】
第１、第２プログラミング言語は、コメント化の書式が共通している。具体的には、どちらの言語においても、文字列「／＊」から「＊／」まで、および、「／／」からその行の末尾までは、コンパイルされない文字列、すなわち、コメントとして認識される。図２の上の行は、第１プログラム部分（一例として、出力命令）である「ｃｏｕｔ  ＜＜  “Ｈｅｌｌｏ！”  ＜＜  ｅｎｄｌ；」の前に、コメントである「／＊ｃ＊／」（以下、第１有効化ヘッダと称する）が付加されるため、行全体として第１プログラミング言語で記述された出力命令として機能する（有効化される）。一方、下の行は、第２プログラム部分（一例として、出力命令）である「Ｓｙｓｔｅｍ．ｏｕｔ．ｐｒｉｎｔｌｎ（  “Ｈｅｌｌｏ！”  ）；」の前に、文字列「／／＊ｊ＊／」（以下、第２無効化ヘッダと称する）が付加される。第２無効化ヘッダは文字列「／／」で開始するため、下の行は行全体としてコメント化される（無効化される）。
【００１６】
すなわち、第１プログラムファイル１４１ＴＸＴは、第１有効化ヘッダによって有効化された第１プログラム部分と、第２無効化ヘッダによって無効化された第２プログラム部分とが併記されたテキストファイルであるため、ファイル全体として第１プログラミング言語で記述されたプログラムファイルとして機能する。
【００１７】
図３は、第２記憶部１４２に格納される第２プログラムファイル１４２ＴＸＴの一例の説明図である。第２プログラムファイル１４２ＴＸＴも、第１プログラムファイル１４１ＴＸＴと同様に、第１、第２プログラム部分が併記されたソースコードからなるテキストファイルである。図３に示すのは、第２プログラムファイル１４２ＴＸＴのソースコードの一部である。図３の上の行は、第１プログラム部分（一例として、出力命令）の前に、文字列「／／＊ｃ＊／」（以下、第１無効化ヘッダと称する）が付加されるため、行全体として無効化される。一方、下の行は、第２プログラム部分（一例として、出力命令）の前に、コメントである「／＊ｊ＊／」（以下、第２有効化ヘッダと称する）が付加されるため、行全体として第２プログラミング言語で記述された出力命令として機能する（有効化される）。
【００１８】
すなわち、第２プログラムファイル１４２ＴＸＴは、第１無効化ヘッダによって無効化された第１プログラム部分と、第２有効化ヘッダによって有効化された第２プログラム部分とが併記されたテキストファイルであるため、ファイル全体として第２プログラミング言語で記述されたプログラムファイルとして機能する。
【００１９】
第１、第２有効化ヘッダ、第１、第２無効化ヘッダとして使用される文字列「／＊ｃ＊／」、「／＊ｊ＊／」、「／／＊ｃ＊／」、「／／＊ｊ＊／」は、いずれも、第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴにおいて他の部分では使用されない特殊な文字列である。このため、第１、第２有効化ヘッダ、第１、第２無効化ヘッダは、第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴにおいて、それぞれの文字列として検索することができる。図１の第１、第２変換部１２１，１２２は、第１、第２有効化ヘッダ、第１、第２無効化ヘッダを文字列として検索し、相互に変換（置換）する。
【００２０】
図４は、処理部１２によって実行される、第１プログラムファイル１４１ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換処理の一例を示すフローチャートである。この処理は、入力部３０から制御部１０に、第１プログラムファイル１４１ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換指示が入力されると開始される。まず、ステップＳ１０で、図１の第１記憶部１４１に格納された第１プログラムファイル１４１ＴＸＴを開く。次いでステップＳ１２に進み、第１変換部１２１での処理により、第１有効化ヘッダを検索して第１無効化ヘッダに変換する。次いでステップＳ１４に進み、第２変換部１２２での処理により、第２無効化ヘッダを検索して第２有効化ヘッダに変換する。次いでステップＳ１６に進み、変換後のファイルを第２プログラムファイル１４２ＴＸＴとして第２記憶部１４２に保存する。
【００２１】
図５は、処理部１２によって実行される、第２プログラムファイル１４２ＴＸＴから第１プログラムファイル１４１ＴＸＴへの変換処理の一例を示すフローチャートである。この処理は、入力部３０から制御部１０に、第２プログラムファイル１４２ＴＸＴから第１プログラムファイル１４１ＴＸＴへの変換指示が入力されると開始される。まず、ステップＳ２０で、図１の第２記憶部１４２に格納された第２プログラムファイル１４２ＴＸＴを開く。次いでステップＳ２２に進み、第１変換部１２１での処理により、第１無効化ヘッダを検索して第１有効化ヘッダに変換する。次いでステップＳ２４に進み、第２変換部１２２での処理により、第２有効化ヘッダを検索して第２無効化ヘッダに変換する。次いでステップＳ２６に進み、変換後のファイルを第１プログラムファイル１４１ＴＸＴとして第１記憶部１４１に保存する。
【００２２】
図６は、本発明の実施形態の変形例に係る変換装置（以下、装置という）１００Ａの概略構成を示すブロック図である。装置１００Ａの記憶部１４は、第３記憶部１４３をさらに有し、第３記憶部１４３には、テキストファイルからなる統合ファイル１４３ＴＸＴが格納される。図７は統合ファイル１４３ＴＸＴの一例の説明図、図８は統合ファイル１４３ＴＸＴの別の例の説明図である。
【００２３】
図７、図８に示すのは、統合ファイル１４３ＴＸＴのテキストデータの一部である。図７に示す一例では、上の行は第１無効化ヘッダと第１プログラム部分とからなり、下の行は第２無効化ヘッダと第２プログラム部分とからなるため、上の行も下の行も行全体として無効化される。図８に示す別の例では、上の行は第１有効化ヘッダと第１プログラム部分とからなり、下の行は第２有効化ヘッダと第２プログラム部分とからなるため、上の行も下の行も行全体として有効化される。すなわち、統合ファイル１４３ＴＸＴは、第１、第２無効化ヘッダあるいは第１、第２有効化ヘッダによって、第１、第２プログラム部分がともに無効化あるいは有効化されたテキストファイルであるため、プログラムファイルとしては機能しない。
【００２４】
図９は、装置１００Ａの処理部１２によって実行される、統合ファイル１４３ＴＸＴから第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴへの変換処理の一例を示すフローチャートである。図９は、第１、第２プログラム部分が無効化された統合ファイル１４３ＴＸＴ（図７）からの変換処理を例示する。この処理は、入力部３０から制御部１０に、統合ファイル１４３ＴＸＴから第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴへの変換指示が入力されると開始される。まず、ステップＳ３０で、図６の第３記憶部１４３に格納された統合ファイル１４３ＴＸＴを開く。次いでステップＳ３２に進み、第１変換部１２１での処理により、第１無効化ヘッダを検索して第１有効化ヘッダに変換する。次いでステップＳ３４に進み、変換後のファイルを第１プログラムファイル１４１ＴＸＴとして第１記憶部１４１に保存する。次いでステップＳ３６に進み、第３記憶部１４３に格納された統合ファイル１４３ＴＸＴを開く。次いでステップＳ３８に進み、第２変換部１２２での処理により、第２無効化ヘッダを検索して第２有効化ヘッダに変換する。次いでステップＳ４０に進み、変換後のファイルを第２プログラムファイル１４２ＴＸＴとして第２記憶部１４２に保存する。
【００２５】
図１０は、本発明の実施形態のさらなる変形例に係る変換装置（以下、装置という）１００Ｂの概略構成を示すブロック図である。装置１００Ｂの処理部１２は、機能的な構成として、第３、第４変換部１２３，１２４をさらに有する。すなわち、処理部１２は、記憶部１４に予め格納されたプログラムに従って後述する処理を実行することで、第３、第４変換部１２３，１２４としてさらに機能する。第１、第２プログラム部分のうち、行単位で記述が異なる部分は、非共通行として行（あるいは段落）ごとに第１、第２プログラミング言語で併記されるが、一部の非共通行は、変数名や関数名などの記述のみが異なり、その他の記述は共通する。このような一部の非共通行は、変数名や関数名などの記述を第１、第２プログラミング言語に合わせて変換することで、共通行として１行で記述することができる。装置１００Ｂは、このような一部の非共通行が共通行として記述された第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴを相互に変換する。
【００２６】
図１１は装置１００Ｂの第１記憶部１４１に格納される第１プログラムファイル１４１ＴＸＴの一例の説明図、図１２は第２記憶部１４２に格納される第２プログラムファイル１４２ＴＸＴの一例の説明図である。第１、第２プログラムの処理として文字列の置換あるいは数値の代入を行う場合、第１プログラミング言語では、「＃ｄｅｆｉｎｅ」を用いてソースコード中の特定の文字列（置換対象文字列）を別の文字列に置き換える宣言を行う。例えば、「＃ｄｅｆｉｎｅ  ＰＡＲＡＭ  １００」のように宣言することで、置換対象文字列「ＰＡＲＡＭ」を「１００」に置き換える。一方、第２プログラミング言語では、プログラムは１つあるいは複数のクラスを用いて記述され、例えば、クラス名「ＧＬｍ」のクラスにおいて「ｐｕｂｌｉｃ  ｓｔａｔｉｃ  ｉｎｔ  ＰＡＲＡＭ  ＝  １００」のように変数の宣言を行うことで、ソースコード中の変数「ＧＬｍ．ＰＡＲＡＭ」に数値「１００」を代入する。
【００２７】
図１１の上の行に例示するように、第１プログラムファイル１４１ＴＸＴの文字列「ＰＡＲＡＭ」の前には、第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴにおいて他の部分では使用されない特殊な文字列である「＄＿ｍ」（以下、第３ヘッダと称する）が付加される。第１プログラムの処理としては、文字列「＄＿ｍＰＡＲＡＭ」が「１００」に置き換えられる。一方、図１２の上の行に例示するように、第２プログラムファイル１４２ＴＸＴの変数名「ＰＡＲＡＭ」の前には、クラス名と第３ヘッダとが結合された文字列である「ＧＬｍ．＄＿ｍ」（以下、第３クラス名ヘッダと称する）が付加される。第２プログラムの処理としては、変数「ＧＬｍ．＄＿ｍＰＡＲＡＭ」に数値「１００」が代入される。
【００２８】
第３変換部１２３は、第３ヘッダ、第３クラス名ヘッダを文字列として検索し、相互に変換することで、変数名の記述を第１、第２プログラミング言語に合わせて変換する。第３変換部１２３による変換は、第２プログラミング言語において変数の宣言が行われているクラスに対して行う。例えば、クラス名「ＧＬ１」、「ＧＬ２」の２つのクラスで変数の宣言が行われている場合には、「＄＿１」と「ＧＬ１．＄＿１」との変換、「＄＿２」と「ＧＬ２．＄＿２」との変換のように、合計２回の変換を行う。
【００２９】
第１、第２プログラムにおいて関数を呼び出す場合、第１プログラミング言語では、例えば、「ｍｅｓｇ」のように呼び出すべき関数の関数名のみを記述するが、第２プログラミング言語では関数名の前にクラス変数名を付加して、例えば、「ｃｌａｓｓｎ．ｍｅｓｇ」のように記述する。第２プログラミング言語では、呼び出すべき関数が定義されているクラスに対してクラス変数名を宣言した上で、関数の呼び出しを行う。例えば、クラス名「ｃｌａｓｓｎａｍｅｎ」のクラスに対して、クラス変数名「ｃｌａｓｓｎ」を、「ｃｌａｓｓｎａｍｅｎ  ｃｌａｓｓｎ＝ｎｅｗ  ｃｌａｓｓｎａｍｅｎ（）；」のように宣言されている場合は、関数名「ｍｅｓｇ」の前にクラス変数名「ｃｌａｓｓｎ」を付加して、「ｃｌａｓｓｎ．ｍｅｓｇ」のように記述する。
【００３０】
図１１の下の行に例示するように、第１プログラムファイル１４１ＴＸＴの関数名「ｍｅｓｇ」の前には、第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴにおいて他の部分では使用されない特殊な文字列である「＄ｎ＄」（以下、第４ヘッダと称する）が付加される。一方、図１２の下の行に例示するように、第２プログラムファイル１４２ＴＸＴの関数名「ｍｅｓｇ」の前には、クラス変数名と第４ヘッダとが結合された文字列である「ｃｌａｓｓｎ．＄ｎ＄」（以下、第４クラス変数名ヘッダと称する）が付加される。
【００３１】
第４変換部１２４は、第４ヘッダ、第４クラス変数名ヘッダを文字列として検索し、相互に変換することで、関数名の記述を第１、第２プログラミング言語に合わせて変換する。第４変換部１２４による変換は、第２プログラミング言語において使用されているクラスに対して行う。すなわち、ｎ個のクラスが使用されている場合には、例えば、「＄１＄」と「ｃｌａｓｓ１．＄１＄」との変換、「＄２＄」と「ｃｌａｓｓ２．＄２＄」との変換、・・・「＄ｎ＄」と「ｃｌａｓｓｎ．＄ｎ＄」との変換のように、合計ｎ回の変換を行う。
【００３２】
なお、関数は、第１、第２プログラミング言語で共通して使用する共通関数を意味する。共通関数を使用することで、第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴの行数を削減することができる。すなわち、関数の中には、それぞれの言語の専用関数として事前に定義しておくことで、その後のソースコードの中の複数行にわたる記述を１行にできるような関数群がある。例えば、文字列の出力に関する関数「ｍｅｓｇ」を共通関数として使用することで、図２、図３の２行にわたる記述を、図１１、図１２の下の行のような共通行として記述することができる。共通関数「ｍｅｓｇ」を使用する場合、第１プログラミング言語では、
「    ＄ｎ＄ｍｅｓｇ（  ｃｈａｒ  ｃｈ０［］  ）｛
ｃｏｕｔ  ＜＜  ｃｈ０  ＜＜  ｅｎｄｌ；
｝」
のように第１プログラミング言語の専用関数を定義し、第２プログラミング言語では、
「    ＄ｎ＄ｍｅｓｇ（  Ｓｔｒｉｎｇ  ｓｔｒ０  ）｛
Ｓｙｓｔｅｍ．ｏｕｔ．ｐｒｉｎｔｌｎ（  ｓｔｒ０  ）；
｝」
のように第２プログラミング言語の専用関数を定義しておくことで、第１プログラミング言語では、「＄ｎ＄ｍｅｓｇ（  “Ｈｅｌｌｏ！”  ）；」、第２プログラミング言語では、「ｃｌａｓｓｎ．＄ｎ＄ｍｅｓｇ（  “Ｈｅｌｌｏ！”  ）；」のように、共通関数「ｍｅｓｇ」を呼び出すことができる。このような関数を複数使用してもよい。
【００３３】
図１３は、装置１００Ｂの処理部１２によって実行される、第１プログラムファイル１４１ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換処理の一例を示すフローチャートである。この処理は、入力部３０から制御部１０に、第１プログラムファイル１４１ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換指示が入力されると開始される。まず、ステップＳ５０で、第１記憶部１４１に格納された第１プログラムファイル１４１ＴＸＴを開く。次いでステップＳ５２に進み、第１変換部１２１での処理により、第１有効化ヘッダを検索して第１無効化ヘッダに変換する。次いでステップＳ５４に進み、第２変換部１２２での処理により、第２無効化ヘッダを検索して第２有効化ヘッダに変換する。次いでステップＳ５６に進み、第３変換部１２３での処理により、第３ヘッダを検索して第３クラス名ヘッダに変換する。次いでステップＳ５８に進み、第４変換部１２４での処理により、第４ヘッダを検索して第４クラス変数名ヘッダに変換する。次いでステップＳ６０に進み、変換後のファイルを第２プログラムファイル１４２ＴＸＴとして第２記憶部１４２に保存する。
【００３４】
本実施形態によれば以下のような作用効果を奏することができる。
（１）装置１００は、第１プログラミング言語（Ｃ＋＋）で記述された第１プログラムファイル１４１ＴＸＴが格納される第１記憶部１４１と、第２プログラミング言語（Ｊａｖａ（登録商標））で記述された第２プログラムファイル１４２ＴＸＴが格納される第２記憶部１４２と、第１プログラムファイル１４１ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換指示と、第２プログラムファイル１４２ＴＸＴから第１プログラムファイル１４１ＴＸＴへの変換指示とを入力する入力部３０とを備え（図１）、変換指示に応じて第１プログラムファイル１４１ＴＸＴと第２プログラムファイル１４２ＴＸＴとを相互に変換する（図４、図５）。第１プログラムファイル１４１ＴＸＴは、第１プログラミング言語で記述された第１プログラム部分（一例として、出力命令「ｃｏｕｔ  ＜＜  “Ｈｅｌｌｏ！”  ＜＜  ｅｎｄｌ；」）と、第２プログラミング言語で記述された第２プログラム部分（一例として、出力命令「Ｓｙｓｔｅｍ．ｏｕｔ．ｐｒｉｎｔｌｎ（  “Ｈｅｌｌｏ！”  ）；」）と、第１プログラム部分に付加され、第１プログラム部分を有効化する第１有効化ヘッダ（「／＊ｃ＊／」）と、第２プログラム部分に付加され、第２プログラム部分を無効化する第２無効化ヘッダ（「／／＊ｊ＊／」）とを含む（図２）。第２プログラムファイル１４２ＴＸＴは、第１プログラム部分と、第２プログラム部分と、第１プログラム部分に付加され、第１プログラム部分を無効化する第１無効化ヘッダ（「／／＊ｃ＊／」）と、第２プログラム部分に付加され、第２プログラム部分を有効化する第２有効化ヘッダ（「／＊ｊ＊／」）とを含む（図３）。装置１００は、入力部３０によって第１プログラムファイル１４１ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換指示が入力されたとき、第１プログラムファイル１４１ＴＸＴの第１有効化ヘッダを第１無効化ヘッダに変換し、入力部３０によって第２プログラムファイル１４２ＴＸＴから第１プログラムファイル１４１ＴＸＴへの変換指示が入力されたとき、第２プログラムファイル１４２ＴＸＴの第１無効化ヘッダを第１有効化ヘッダに変換する第１変換部１２１をさらに備える（図１、図４、図５）。また、装置１００は、入力部３０によって第１プログラムファイル１４１ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換指示が入力されたとき、第１プログラムファイル１４１ＴＸＴの第２無効化ヘッダを第２有効化ヘッダに変換し、入力部３０によって第２プログラムファイル１４２ＴＸＴから第１プログラムファイル１４１ＴＸＴへの変換指示が入力されたとき、第２プログラムファイル１４２ＴＸＴの第２有効化ヘッダを第２無効化ヘッダに変換する第２変換部１２２をさらに備える（図１、図４、図５）。
【００３５】
すなわち、装置１００は、第１プログラミング言語で記述された第１プログラム部分と、第２プログラミング言語で記述された第２プログラム部分とが併記されたテキストファイルである第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴを、第１プログラム部分を有効化するとともに第２プログラム部分を無効化する、あるいは、第１プログラム部分を無効化するとともに第２プログラム部分を有効化することで、相互に変換する。このため、いずれか一方を共通ファイルとして使用することで、更新などのバージョンを一元管理することができる。また、１つのファイルに第１プログラミング言語と第２プログラミング言語とが併記されるため、バージョンアップやバグの修正などの作業を第１、第２プログラミング言語で対比しながら行うことが可能となり、更新漏れが生じる可能性を低減することができる。
【００３６】
（２）装置１００Ａは、第１プログラム部分と、第２プログラム部分と、第１無効化ヘッダと、第２無効化ヘッダとを含む統合ファイル１４３ＴＸＴ（図７）が格納される第３記憶部１４３をさらに備える（図６）。入力部３０は、統合ファイル１４３ＴＸＴから第１プログラムファイル１４１ＴＸＴへの変換指示と、統合ファイル１４３ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換指示とをさらに入力する。第１変換部１２１は、入力部３０によって統合ファイル１４３ＴＸＴから第１プログラムファイル１４１ＴＸＴへの変換指示が入力されたとき、統合ファイル１４３ＴＸＴの第１無効化ヘッダを第１有効化ヘッダに変換する（図９）。第２変換部１２２は、入力部３０によって統合ファイル１４３ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換指示が入力されたとき、統合ファイル１４３ＴＸＴの第２無効化ヘッダを第２有効化ヘッダに変換する（図９）。
【００３７】
（３）装置１００Ａは、第１プログラム部分と、第２プログラム部分と、第１有効化ヘッダと、第２有効化ヘッダとを含む統合ファイル１４３ＴＸＴ（図８）が格納される第３記憶部１４３をさらに備える（図６）。入力部３０は、統合ファイル１４３ＴＸＴから第１プログラムファイル１４１ＴＸＴへの変換指示と、統合ファイル１４３ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換指示とをさらに入力する。第１変換部１２１は、入力部３０によって統合ファイル１４３ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換指示が入力されたとき、統合ファイル１４３ＴＸＴの第１有効化ヘッダを第１無効化ヘッダに変換する。第２変換部１２２は、入力部３０によって統合ファイル１４３ＴＸＴから第１プログラムファイル１４１ＴＸＴへの変換指示が入力されたとき、統合ファイル１４３ＴＸＴの第２有効化ヘッダを第２無効化ヘッダに変換する（図９）。
【００３８】
すなわち、第１、第２プログラム部分がどちらも無効化され、プログラムファイルとして機能しないテキストファイルである統合ファイル１４３ＴＸＴを、第１プログラム部分を有効化して第１プログラムファイル１４１ＴＸＴに変換するとともに、第２プログラム部分を有効化して第２プログラムファイル１４２ＴＸＴに変換する。あるいは、第１、第２プログラム部分がどちらも有効化され、プログラムファイルとして機能しないテキストファイルである統合ファイル１４３ＴＸＴを、第２プログラム部分を無効化して第１プログラムファイル１４１ＴＸＴに変換するとともに、第１プログラム部分を無効化して第２プログラムファイル１４２ＴＸＴに変換する。このため、１つの統合ファイル１４３ＴＸＴによって更新などのバージョンを一元管理することができ、更新漏れが生じる可能性を一層低減することができる。
【００３９】
（４）第１プログラミング言語と第２プログラミング言語とは、コメント化の書式が共通し、第１有効化ヘッダおよび第２有効化ヘッダは、第１プログラム言語および第２プログラム言語において、コメントとして認識される文字列であるとともに、他の部分では使用されない特殊な文字列（一例として、「／＊ｃ＊／」、「／＊ｊ＊／」）であり、第１無効化ヘッダおよび第２無効化ヘッダは、第１プログラム言語および第２プログラム言語において、行の末尾までをコメント化する文字列「／／」で開始する文字列であるとともに、他の部分では使用されない特殊な文字列（一例として、「／／＊ｃ＊／」、「／／＊ｊ＊／」）である。このため、第１、第２有効化ヘッダ、第１、第２無効化ヘッダは、第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴにおいて、それぞれの文字列として検索、あるいは検索して他の文字列に変換することができる。
【００４０】
（５）第１プログラムファイル１４１ＴＸＴは、第１プログラムファイル１４１ＴＸＴにおいて文字列置換の対象として宣言された置換対象文字列（一例として、「ＰＡＲＡＭ」）の前に付加され、第１プログラム言語および第２プログラム言語において他の部分では使用されない特殊な文字列である第３ヘッダ（一例として、「＄＿ｍ」）と、第１プログラムファイル１４１ＴＸＴおよび第２プログラムファイル１４２ＴＸＴにおいて使用される共通関数の関数名（一例として、「ｍｅｓｇ」）の前に付加され、第１プログラム言語および第２プログラム言語において他の部分では使用されない特殊な文字列である第４ヘッダ（一例として、「＄ｎ＄」）とをさらに含む。第２プログラムファイル１４２ＴＸＴは、第２プログラムファイル１４２ＴＸＴにおいて文字列置換の宣言が行われたクラスのクラス名と第３ヘッダとが結合された文字列である第３クラス名ヘッダ(一例として、「ＧＬｍ．＄＿ｍ」）と、共通関数が使用されるクラスのクラス変数名と第４ヘッダとが結合された文字列である第４クラス変数名ヘッダ（一例として、「ｃｌａｓｓｎ．＄ｎ＄」）とをさらに含む。装置１００Ｂは、入力部３０によって第１プログラムファイル１４１ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換指示が入力されたとき、第１プログラムファイル１４１ＴＸＴの第３ヘッダを第３クラス名ヘッダに変換し、入力部３０によって第２プログラムファイル１４２ＴＸＴから第１プログラムファイル１４１ＴＸＴへの変換指示が入力されたとき、第２プログラムファイル１４２ＴＸＴの第３クラス名ヘッダを第３ヘッダに変換する第３変換部１２３と、入力部３０によって第１プログラムファイル１４１ＴＸＴから第２プログラムファイル１４２ＴＸＴへの変換指示が入力されたとき、第１プログラムファイル１４１ＴＸＴの第４ヘッダを第４クラス変数名ヘッダに変換し、入力部３０によって第２プログラムファイル１４２ＴＸＴから第１プログラムファイル１４１ＴＸＴへの変換指示が入力されたとき、第２プログラムファイル１４２ＴＸＴの第４クラス変数名ヘッダを第４ヘッダに変換する第４変換部１２４とをさらに備える。このため、第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴの行数を削減し、ソースコードの見直しにかかる工数を削減することができる。
【００４１】
本発明の実施形態では、装置１００，１００Ａ，１００Ｂを、制御部１０、表示部２０、入力部３０を備える独立した装置として説明したが、装置１００，１００Ａ，１００Ｂは、プログラム開発において一般的に使用されるテキストエディタのアドイン（組み込み機能）としてもよい。すなわち、テキストエディタが使用するプロセッサを処理部１２とみなして、それを第１〜第４変換部１２１〜１２４として機能させるとともに、テキストエディタが使用するメモリを記憶部１４とみなして、そこに第１〜第３記憶部１４１〜１４３（フォルダ）を作成するようなアドインとしてもよい。
【００４２】
本発明の実施形態では、第１プログラミング言語をＣ＋＋、第２プログラミング言語をＪａｖａ（登録商標）としたが、コメント化の書式が共通するプログラミング言語であれば、これらの言語に限らない。
【００４３】
本発明の実施形態では、第１有効化ヘッダなどの種々のヘッダを「／＊ｃ＊／」などとして具体的に示したが、これらは例示であって、第１、第２プログラムファイル１４１ＴＸＴ，１４２ＴＸＴにおいて他の部分では使用されない特殊な文字列であれば、例示された文字列に限らない。また、置換対象文字列を「ＰＡＲＡＭ」、関数名を「ｍｅｓｇ」、クラス名を「ＧＬｍ」、クラス変数名を「ｃｌａｓｓｎ」などとして例示したが、これらに限るものではない。
【００４４】
以上の説明はあくまで一例であり、本発明の特徴を損なわない限り、上述した実施形態および変形例により本発明が限定されるものではない。上記実施形態および変形例の構成要素には、発明の同一性を維持しつつ置換可能かつ置換自明なものが含まれる。すなわち、本発明の技術的思想の範囲内で考えられる他の形態についても、本発明の範囲内に含まれる。また、上記実施形態と変形例の１つまたは複数を任意に組み合わせることも可能である。
【符号の説明】
【００４５】
１０  制御部、１２  処理部、１４  記憶部、２０  表示部、３０  入力部、１００，１００Ａ，１００Ｂ    変換装置（装置）、１２１〜１２４  第１〜第４変換部、１４１〜１４３  第１〜第３記憶部
【図１】
2019012460.tif 000003
【図２】
2019012460.tif 000004
【図３】
2019012460.tif 000005
【図４】
2019012460.tif 000006
【図５】
2019012460.tif 000007
【図６】
2019012460.tif 000008
【図７】
2019012460.tif 000009
【図８】
2019012460.tif 000010
【図９】
2019012460.tif 000011
【図１０】
2019012460.tif 000012
【図１１】
2019012460.tif 000013
【図１２】
2019012460.tif 000014
【図１３】
2019012460.tif 000015