(57)【要約】【課題】配列型変数の各要素などに対するコメントを、ユーザが容易に確認し、かつ、容易に編集できるようにする。【解決手段】開発支援装置（１０）は、各配列要素に対するコメントを、配列型変数の名称と、その配列型変数に対して各配列要素を識別するための識別情報と、に対応付けて、表計算ソフトにおいて編集可能なデータ形式のファイルとして出力する。【選択図】図３
2020166414.tif 000002
【特許請求の範囲】
【請求項１】
制御装置で実行されるプログラムをユーザが作成するのを支援する開発支援装置であって、
前記プログラムで用いられる変数に対して、当該変数の定義に併せてユーザが任意で付すことのできるコメントを、外部出力するよう指示するユーザ操作を受け付ける操作受付部と、
前記操作受付部によって前記ユーザ操作が受け付けられると、前記変数のうち、第１変数を先祖ノードとする木構造における子孫ノードとして表すことのできる複数の第２変数の各々に対するコメントを、前記第１変数の名称と、前記第１変数に対して前記複数の第２変数の各々を識別するための識別情報と、に対応付けて、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイルとして出力する出力部と、を備える開発支援装置。
【請求項２】
前記第１変数は、配列型変数または構造体型変数であり、
前記複数の第２変数の各々は、配列型変数の要素または構造体型変数のメンバである
請求項１に記載の開発支援装置。
【請求項３】
前記出力部は、前記複数の第２変数の各々に対するコメントを、前記第１変数の名称と前記識別情報とを含む１つの文字列に対応付けて、出力する
請求項１または２に記載の開発支援装置。
【請求項４】
前記識別情報は、前記木構造における前記第１変数から前記複数の第２変数の各々までのパスを示すパス情報を含み、
前記パス情報は、前記木構造における前記第１変数から前記複数の第２変数の各々までの、１つ以上の親子関係の各々を、
親ノードに相当する変数が配列型変数であって、子ノードに相当する変数が前記配列型変数の要素である場合はカッコ（［］）を用いて示し、
親ノードに相当する変数が構造体型変数であって、子ノードに相当する変数が前記構造体型変数のメンバである場合はピリオド（．）を用いて示す
請求項１から３のいずれか１項に記載の開発支援装置。
【請求項５】
前記第２変数の総数が所定値より大きいと、前記出力部は、前記ファイルを２以上に分割して出力する
請求項１から４のいずれか１項に記載の開発支援装置。
【請求項６】
前記出力部は、前記第１変数が共通である前記複数の第２変数の各々に対するコメントを全て、１つの前記ファイルに出力する
請求項１から４のいずれか１項に記載の開発支援装置。
【請求項７】
前記第１変数の名称と前記識別情報とに対応付けられて前記第２変数の各々に対するコメントが記載された、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイルのインポートを指示するユーザ操作が前記操作受付部によって受け付けられると、インポートを指示された前記ファイルをインポートする入力部と、
前記入力部によってインポートされた前記ファイルにしたがって、記憶部に格納された前記第２変数の各々に対するコメントを更新するコメント更新部と、をさらに備える
請求項１から６のいずれか１項に記載の開発支援装置。
【請求項８】
制御装置で実行されるプログラムをユーザが作成するのを支援する開発支援装置の制御方法であって、
前記プログラムで用いられる変数に対して、当該変数の定義に併せてユーザが任意で付すことのできるコメントを、外部出力するよう指示するユーザ操作を受け付ける操作受付ステップと、
前記操作受付ステップにて前記ユーザ操作が受け付けられると、前記変数のうち、第１変数を先祖ノードとする木構造における子孫ノードとして表すことのできる複数の第２変数の各々に対するコメントを、前記第１変数の名称と、前記第１変数に対して前記複数の第２変数の各々を識別するための識別情報と、に対応付けて、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイルとして出力する出力ステップと、
を含む制御方法。
【請求項９】
請求項１から７のいずれか１項に記載の開発支援装置としてコンピュータを機能させるための情報処理プログラムであって、前記各部としてコンピュータを機能させるための情報処理プログラム。
【請求項１０】
請求項９に記載の情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置で実行されるプログラムをユーザが作成するのを支援する開発支援装置等に関する。
【背景技術】
【０００２】
従来、プログラマブルコントローラ（Programmable Logic Controller、以下「ＰＬＣ」と略記する）等の産業用制御装置を使用した制御システムの開発を支援するための開発支援装置が知られている。例えば、下掲の特許文献１には、変数名、内部メモリアドレス、Ｉ／Ｏコメントからなる変数テーブルを備えた開発支援装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３５２６１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のような従来までの開発支援装置には、「或る変数を先祖ノードとする木構造における子孫ノードとして表すことのできる変数」についてのコメントをユーザが確認するためには、複数のユーザ操作が必要となり、利便性が低いという問題がある。「或る変数を先祖ノードとする木構造における子孫ノードとして表すことのできる変数」とは、例えば、配列型変数を親ノードとする木構造において、子ノードとして表すことのできる「その配列型変数の配列要素」である。また、例えば、構造体型変数を親ノードとする木構造において、子ノードとして表すことのできる「その構造体型変数のメンバ」も、「或る変数を先祖ノードとする木構造における子孫ノードとして表すことのできる変数」の一例である。以下、図１２を参照して、ユーザが、従来までの開発支援装置を用いて、配列型変数の配列要素についてのコメントを確認しようとする場合に、ユーザが行う操作について、説明する。
【０００５】
図１２は、従来までの開発支援装置を用いて、配列型変数の配列要素についてのコメントを確認しようとする場合に、ユーザが行う操作を説明する図である。図１２に例示する、従来までの開発支援装置が表示する「変数テーブル画面」において、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」という名称の配列型変数自体については、「起動条件全体」とのコメントが表示されている。同様に、「ｅｒｒｏｒＳｔａｔｕｓ」という名称の配列型変数自体については、「エラー全体」とのコメントが表示されている。
【０００６】
しかしながら、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」という名称の配列型変数の配列要素[０]、[１]、[２]の各々についてのコメントは、「変数テーブル画面」に表示されていない。同様に、「ｅｒｒｏｒＳｔａｔｕｓ」という名称の配列型変数の配列要素[０]、[１]、[２]の各々についてのコメントは、「変数テーブル画面」に表示されていない。
【０００７】
図１２に示すように、ユーザは、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」という名称の配列型変数の各配列要素についてのコメントを確認しようとする場合、以下の操作を行う必要がある。すなわち、ユーザは、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」という名称の配列型変数のコメント欄に表示されたソフトボタンを押下して、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」という名称の配列型変数の各配列要素の「コメント設定」ダイアログを表示させなければならない。「コメント設定」ダイアログには、「ｅｒｒｏｒＳｔａｔｕｓ」という名称の配列型変数の配列要素[０]、[１]、[２]の各々についてのコメント（コンテナ起動条件、ロボット起動条件、ｘｘｘ起動条件）が表示されている。
【０００８】
同様に、「ｅｒｒｏｒＳｔａｔｕｓ」変数の各配列要素のコメントを確認しようとする場合、ユーザは、「ｅｒｒｏｒＳｔａｔｕｓ」変数のコメント欄のソフトボタンを押下し、「ｅｒｒｏｒＳｔａｔｕｓ」変数の各配列要素の「コメント設定」ダイアログを表示させなければならない。
【０００９】
上述の通り、従来までの開発支援装置は、配列型変数の配列要素および構造体型変数のメンバなどの「或る変数を先祖ノードとする木構造における子孫ノードとして表すことのできる変数」についてのコメントを一覧形式でユーザに示すことができない。例えば、従来までの開発支援装置は、配列型変数である「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」の各配列要素についてのコメントと、配列型変数である「ｅｒｒｏｒＳｔａｔｕｓ」変数の各配列要素についてのコメントとを、一覧形式でユーザに示すことができない。そのため、ユーザが「或る変数を先祖ノードとする木構造における子孫ノードとして表すことのできる変数」のコメントについて、確認、編集を行おうとする場合、従来までの開発支援装置は、ユーザ利便性、操作性が低いという問題がある。
【００１０】
本発明の一態様は、前記の問題点に鑑みてなされたものであり、配列型変数の配列要素および構造体型変数のメンバなどの「或る変数を先祖ノードとする木構造における子孫ノードとして表すことのできる変数」に対するコメントを、ユーザが容易に確認し、かつ、容易に編集できるようにする開発支援装置等を実現することを目的としている。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために、本発明の一態様に係る開発支援装置は、制御装置で実行されるプログラムをユーザが作成するのを支援する開発支援装置であって、前記プログラムで用いられる変数に対して、当該変数の定義に併せてユーザが任意で付すことのできるコメントを、外部出力するよう指示するユーザ操作を受け付ける操作受付部と、前記操作受付部によって前記ユーザ操作が受け付けられると、前記変数のうち、第１変数を先祖ノードとする木構造における子孫ノードとして表すことのできる複数の第２変数の各々に対するコメントを、前記第１変数の名称と、前記第１変数に対して前記複数の第２変数の各々を識別するための識別情報と、に対応付けて、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイルとして出力する出力部と、を備えている。
【００１２】
前記の構成によれば、前記開発支援装置は、前記複数の第２変数の各々に対するコメントを、前記第１変数の名称と前記識別情報とに対応付けて、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイルとして出力する。
【００１３】
したがって、前記開発支援装置は、ユーザにとって確認しやすく、かつ、編集しやすい形式で、前記複数の第２変数の各々に対するコメントのリストを出力することができるとの効果を奏する。つまり、前記開発支援装置は、ユーザが、前記複数の第２変数の各々に対するコメントを容易に確認し、かつ、容易に編集することを可能とするとの効果を奏する。
【００１４】
また、前記開発支援装置は、表計算ソフト等を用いてユーザが編集可能な形式のファイルとして前記コメントを出力するので、ユーザは、前記ファイルを用いて、例えば、複数の言語の各々で前記コメントを作成し、管理することができるという効果を奏する。すなわち、前記開発支援装置は、前記複数の第２変数の各々に対する、複数の言語の各々で記載したコメントを、ユーザが容易に生成・管理することができるようにするという効果を奏する。
【００１５】
本発明の一態様に係る開発支援装置において、前記第１変数は、配列型変数または構造体型変数であり、前記複数の第２変数の各々は、配列型変数の配列要素または構造体型変数のメンバであってもよい。
【００１６】
前記の構成によれば、前記開発支援装置は、配列型変数の配列要素または構造体型変数のメンバである前記複数の第２変数の各々に対するコメントを、配列型変数または構造体型変数である前記第１変数の名称と、前記識別情報と、に対応付けて出力する。
【００１７】
したがって、前記開発支援装置は、ユーザにとって確認しやすく、かつ、編集しやすい形式で、配列型変数の配列要素または構造体型変数のメンバである前記複数の第２変数の各々に対するコメントのリストを出力することができるとの効果を奏する。
【００１８】
本発明の一態様に係る開発支援装置において、前記出力部は、前記複数の第２変数の各々に対するコメントを、前記第１変数の名称と前記識別情報とを含む１つの文字列に対応付けて、出力してもよい。
【００１９】
前記の構成によれば、前記開発支援装置は、前記複数の第２変数の各々に対するコメントを、前記第１変数の名称と前記識別情報とを含む１つの文字列に対応付けて、表計算ソフト等で編集可能なファイルとして出力する。例えば、前記開発支援装置は、（Ａ）前記第１変数の名称と前記識別情報とを含む１つの文字列と、（Ｂ）前記コメントと、を隣り合わせに表示したリストを、表計算ソフト等で編集可能なデータ形式で出力する。
【００２０】
具体的には、前記開発支援装置は、例えば表計算ソフトにおいて編集可能なデータ形式のファイルとして、前記複数の第２変数の各々に対するコメントを、前記第１変数の名称と前記識別情報とを含む１つの文字列に対応付けて、出力する。この場合、前記第１変数の名称と前記識別情報とを含む１つの文字列は１つのセルに格納され、また、前記複数の第２変数の各々に対するコメントも１つのセルに格納されることになる。そのため、ユーザは、前記複数の第２変数の各々に対するコメントと、当該コメントが付された前記第２変数と、前記第２変数の先祖ノードである前記第１変数との関係を、一目で確認することができる。例えば、ユーザは、前記第１変数の名称と前記識別情報とを含む１つの文字列と、前記コメントを示す１つの文字列とが対応付けられたリストを、一目で確認することができるようになる。
【００２１】
したがって、前記開発支援装置は、ユーザにとって視認性が極めて高く、かつ、編集しやすい形式で、前記複数の第２変数の各々に対するコメントのリストを出力することができるとの効果を奏する。
【００２２】
本発明の一態様に係る開発支援装置において、前記識別情報は、前記木構造における前記第１変数から前記複数の第２変数の各々までのパスを示すパス情報を含み、前記パス情報は、前記木構造における前記第１変数から前記複数の第２変数の各々までの、１つ以上の親子関係の各々を、（１）親ノードに相当する変数が配列型変数であって、子ノードに相当する変数が前記配列型変数の配列要素である場合はカッコ（［］）を用いて示し、（２）親ノードに相当する変数が構造体型変数であって、子ノードに相当する変数が前記構造体型変数のメンバである場合はピリオド（．）を用いて示してもよい。
【００２３】
前記の構成によれば、前記開発支援装置は、前記複数の第２変数の各々に対するコメントを、前記パス情報を含む前記識別情報と前記第１変数の名称とに対応付けて出力する。そして、前記パス情報において、前記第１変数から前記複数の第２変数の各々までの、１つ以上の親子関係の各々は、親と子が配列型変数と配列型変数の配列要素とであるのか、または、親と子が構造体型変数と構造体型変数のメンバとであるのか、が区別される。
【００２４】
したがって、前記開発支援装置は、前記第１変数と前記複数の第２変数との関係をユーザが確認することができるようにして、前記ファイルを出力することができるとの効果を奏する。例えば、前記開発支援装置は、第２変数が配列型変数である前記第１変数の配列要素であるのか、第２変数が構造体型変数である前記第１変数のメンバであるのか、または、第２変数が、複数の構造体型変数の各々を配列要素とする配列型変数（構造体型配列）である前記第１変数の、所定の前記構造体型変数のメンバであるのか・・・等を、ユーザが確認することができるようにして、前記ファイルを出力することができるとの効果を奏する。
【００２５】
本発明の一態様に係る開発支援装置において、前記第２変数の総数が所定値より大きいと、前記出力部は、前記ファイルを２以上に分割して出力してもよい。
【００２６】
前記の構成によれば、前記開発支援装置は、前記第２変数の総数が前記所定値より大きいと、前記ファイルを２以上に分割して出力する。つまり、前記開発支援装置は、前記第２変数の総数が前記所定値より大きくなって、前記ファイルのデータサイズが大きくなり過ぎると判断すると、前記ファイルを２以上に分割して出力する。
【００２７】
例えば、前記開発支援装置は、前記第１変数が共通である前記複数の第２変数の総数が前記所定値より大きいと、前記複数の第２変数の各々に付されたコメントを、２つ以上の前記ファイルに分けて出力する。また、例えば、前記開発支援装置は、複数の前記第１変数の各々を先祖ノードとする前記複数の第２変数の総数が前記所定値より大きいと、前記複数の第２変数の各々に付されたコメントを、２つ以上の前記ファイルに分けて出力する。
【００２８】
ここで、前記第２変数の総数が増えれば、当然、前記ファイルのデータサイズも大きくなり、データサイズが大きくなり過ぎると、前記ファイルを開いて内容を確認したり、前記ファイルを編集したりするのが困難になることがある。
【００２９】
したがって、前記開発支援装置は、前記ファイルを２以上に分割することによって、前記ファイルのデータサイズが大きくなり過ぎて前記ファイルのユーザ利便性が低下するという事態が発生するのを回避することができるとの効果を奏する。
【００３０】
本発明の一態様に係る開発支援装置において、前記出力部は、前記第１変数が共通である前記複数の第２変数の各々に対するコメントを全て、１つの前記ファイルに出力してもよい。
【００３１】
前記の構成によれば、前記開発支援装置は、前記第１変数が共通である前記複数の第２変数の各々に対するコメントを全て、１つの前記ファイルに出力する。したがって、前記開発支援装置は、前記第１変数が共通である前記複数の第２変数の各々に対するコメントが複数のファイルに分かれてしまい、ユーザにとって視認性および利便性が低下するのを回避することができるとの効果を奏する。
【００３２】
本発明の一態様に係る開発支援装置は、前記第１変数の名称と前記識別情報とに対応付けられて前記第２変数の各々に対するコメントが記載された、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイルのインポートを指示するユーザ操作が前記操作受付部によって受け付けられると、インポートを指示された前記ファイルをインポートする入力部と、前記入力部によってインポートされた前記ファイルにしたがって、記憶部に格納された前記第２変数の各々に対するコメントを更新するコメント更新部と、をさらに備えてもよい。
【００３３】
前記の構成によれば、前記開発支援装置は、前記ユーザ操作にしたがって、前記第１変数の名称と前記識別情報とに対応付けられて前記第２変数の各々に対するコメントが記載されたファイルをインポートする。そして、前記開発支援装置は、インポートした前記ファイルにしたがって、記憶部に格納された前記第２変数の各々に対するコメントを更新する。特に、前記開発支援装置は、ユーザが容易に内容を確認し、かつ、容易に内容を編集できる形式のファイルに記載された、前記複数の第２変数の各々に対するコメントをインポートして、記憶部に格納された前記第２変数の各々に対するコメントを更新する。
【００３４】
したがって、前記開発支援装置は、自装置が用いる前記第２変数の各々に対するコメントを、ユーザが、前記ファイルを用いて、容易に管理し、かつ、容易に編集できるようにすることができるとの効果を奏する。
【００３５】
また、各々、複数の言語の各々で記載された複数の前記ファイルを準備することによって、前記開発支援装置は、インポートするファイルを変更することで、自装置が用いる前記第２変数の各々に対するコメントの言語を、容易に切り替えることができる。
【００３６】
ユーザは、例えば、或る前記第２変数に対するコメントを、英語で記載したファイル、日本語で記載したファイル、中国語で記載したファイル、および、スペイン語で記載したファイルを、予め準備しておく。前記開発支援装置は、英語で記載したファイルをインポートすることにより、前記第２変数に対する英語のコメントを用いることができ、また、日本語で記載したファイルをインポートすることにより、前記第２変数に対する日本語のコメントを用いることができる。同様に、前記開発支援装置は、中国語で記載したファイルをインポートすることにより、前記第２変数に対する中国語のコメントを用いることができ、また、スペイン語で記載したファイルをインポートすることにより、前記第２変数に対するスペイン語のコメントを用いることができる。
【００３７】
すなわち、前記開発支援装置は、自装置において前記第２変数に対する何語のコメントを用いるか（前述の例でいえば、英語、日本語、中国語、および、スペイン語のいずれのコメントを用いるか）を容易に切り替えることができるとの効果を奏する。
【００３８】
上記の課題を解決するために、本発明の一態様に係る制御方法は、制御装置で実行されるプログラムをユーザが作成するのを支援する開発支援装置の制御方法であって、前記プログラムで用いられる変数に対して、当該変数の定義に併せてユーザが任意で付すことのできるコメントを、外部出力するよう指示するユーザ操作を受け付ける操作受付ステップと、前記操作受付ステップにて前記ユーザ操作が受け付けられると、前記変数のうち、第１変数を先祖ノードとする木構造における子孫ノードとして表すことのできる複数の第２変数の各々に対するコメントを、前記第１変数の名称と、前記第１変数に対して前記複数の第２変数の各々を識別するための識別情報と、に対応付けて、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイルとして出力する出力ステップと、を含んでいる。
【００３９】
前記の構成によれば、前記制御方法は、前記複数の第２変数の各々に対するコメントを、前記第１変数の名称と前記識別情報とに対応付けて、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイルとして出力する。
【００４０】
したがって、前記制御方法は、ユーザにとって確認しやすく、かつ、編集しやすい形式で、前記複数の第２変数の各々に対するコメントのリストを出力することができるとの効果を奏する。つまり、前記制御方法は、ユーザが、前記複数の第２変数の各々に対するコメントを容易に確認し、かつ、容易に編集することを可能とするとの効果を奏する。
【００４１】
また、前記制御方法は、表計算ソフト等を用いてユーザが編集可能な形式のファイルとして前記コメントを出力するので、ユーザは、前記ファイルを用いて、例えば、複数の言語の各々で前記コメントを作成し、管理することができるという効果を奏する。すなわち、前記制御方法は、前記複数の第２変数の各々に対する、複数の言語の各々で記載したコメントを、ユーザが容易に生成・管理することができるようにするという効果を奏する。
【発明の効果】
【００４２】
本発明の一態様によれば、開発支援装置は、配列型変数の配列要素および構造体型変数のメンバなどの「或る変数を先祖ノードとする木構造における子孫ノードとして表すことのできる変数」に対するコメントを、ユーザが容易に確認し、かつ、容易に編集できるようにするとの効果を奏する。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施形態１に係る開発支援装置の要部構成を示すブロック図である。
【図２】図１の開発支援装置を含む制御システムの全体概要を示す図である。
【図３】図１の開発支援装置が実行する処理の全体概要を示す図である。
【図４】図１の開発支援装置が実行するエキスポート処理の一例を示すフロー図である。
【図５】第１変数定義テーブルに格納されている、要素変数以外の変数の一例を示す図である。
【図６】第２変数定義テーブルに格納されている配列型変数の各配列要素の一例と、出力リストＬ１における、配列型変数の各配列要素に対する要素コメントの一例と、を示す図である。
【図７】第２変数定義テーブルに格納されている構造体型変数の各構造体メンバの一例と、出力リストＬ１における、構造体型変数の各構造体メンバに対する要素コメントの一例と、を示す図である。
【図８】第２変数定義テーブルに格納されている、配列型変数の配列要素である構造体型変数の各構造体メンバの一例を示す図である。
【図９】出力リストＬ１における、配列型変数の配列要素である構造体型変数の各構造体メンバに対する要素コメントの一例を示す図である。
【図１０】図１の開発支援装置が実行するインポート処理の一例を示すフロー図である。
【図１１】マップ情報の一例を示す図である。
【図１２】従来までの開発支援装置を用いて、配列型変数の配列要素についてのコメントを確認しようとする場合に、ユーザが行う操作を説明する図である。
【発明を実施するための形態】
【００４４】
〔実施形態１〕
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図１から図１２に基づいて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。本実施の形態においては、例えば開発支援装置１０を開発支援装置の典型例として説明を行う。本発明の一態様に係る開発支援装置１０についての理解を容易にするため、先ず、開発支援装置１０を含む制御システム１の概要を、図２を用いて説明する。
【００４５】
§１．適用例
（制御システムの全体概要）
図２は、開発支援装置１０を含む制御システム１の全体概要を示す図である。制御システム１は、マスタ装置としてのＰＬＣ（Programmable Logic Controller）２０と、マスタ装置にネットワーク（フィールドネットワーク６０）を介して接続される１つ以上のスレーブ装置４０と、を含むマスタスレーブ制御システムである。ＰＬＣ２０は、フィールドネットワーク６０を介したデータ伝送を管理しているという意味で「マスタ装置」と呼ばれる。
【００４６】
フィールドネットワーク６０に複数のＰＬＣ２０が接続される場合には、いずれか１つのＰＬＣ２０がマスタ装置となり、残りのＰＬＣ２０がスレーブ装置になる場合もある。また、ＰＬＣ２０およびスレーブ装置４０のいずれとも異なる制御主体がマスタ装置になってもよい。すなわち、「マスタ装置」および「スレーブ装置」は、フィールドネットワーク６０上のデータ伝送の制御機能に着目して定義されるものであり、各装置間でどのような情報が送受信されるかについては、特に限定されない。
【００４７】
ＰＬＣ２０は、制御システム１の全体の制御を行う。具体的には、ＰＬＣ２０は、スレーブ装置４０を介して、センサなどの入力機器であるデバイス５０からの情報を入力データとして取得する。ＰＬＣ２０は、予め組み込まれたユーザプログラムに従って、取得した入力データを用いた演算処理を実行する。ＰＬＣ２０は、前記演算処理を実行して、アクチュエータなどの出力機器であるデバイス５０への制御内容を決定し、その制御内容に対応する制御データを、スレーブ装置４０を介して、デバイス５０へと出力する。
【００４８】
フィールドネットワーク６０は、ＰＬＣ２０が受信し、またはＰＬＣ２０が送信する各種データを伝送し、例えば、ＥｔｈｅｒＣＡＴ（登録商標）、ＰＲＯＦＩＮＥＴ（登録商標）、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎである。また、フィールドネットワーク６０は、例えば、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ（登録商標）などであってもよい。なお、以下では、フィールドネットワーク６０上をデータフレームが順次転送されることで、ＰＬＣ２０とスレーブ装置４０との間、または、複数のスレーブ装置４０の間でデータが送受信される制御システム１について説明を行う。
【００４９】
スレーブ装置４０は、ＰＬＣ２０をマスタ装置とするネットワーク（フィールドネットワーク６０）におけるスレーブ装置であり、例えば、デバイス５０との通信を管理する通信カプラ等のデバイス通信管理ユニットである。スレーブ装置４０は、フィールドネットワーク６０に直接接続される、サーボドライバであってもよい。デバイス５０は、例えばセンサなどの入力機器であり、また、例えばアクチュエータなどの出力機器である。１つ以上のデバイス５０が、通信ケーブルを介して、スレーブ装置４０に接続される。
【００５０】
開発支援装置１０は、例えばＵＳＢ（Universal Serial Bus）ケーブルである通信ケーブルを介して、ＰＬＣ２０に接続する。開発支援装置１０は、ＰＬＣ２０で実行されるユーザプログラム、および、制御システム１に対する各種の設定情報などを生成するための情報処理装置である。
【００５１】
開発支援装置１０は、例えば、ＰＬＣ２０の開発環境を提供し、ユーザが、制御目的（たとえば、対象のラインおよびプロセス）に応じてユーザプログラム等のプログラムを作成する（作成・編集する）ための環境を提供する。ユーザは、開発支援装置１０の提供する開発環境（プログラミングツール）を用いて、ＰＬＣ２０で実行させる制御プログラム（ユーザプログラム）のプログラムコードを作成する。開発支援装置１０は、ＰＬＣ２０で実行させる制御プログラムをユーザが作成・編集するのを支援するため、デバック機能およびシミュレーション機能を有していてもよい。
【００５２】
また、開発支援装置１０は、例えば、ＰＬＣ２０による状態値の取得（入力リフレッシュ）のタイミング、および、ＰＬＣ２０による出力値の更新（出力リフレッシュ）のタイミングの算出および設定を実行してもよい。開発支援装置１０は、ＰＬＣ２０の運転状態、および各種データの値などを監視してもよい。
【００５３】
つまり、開発支援装置１０は、ＰＬＣ２０のプログラミング、コンフィグレーション（構成設定）、デバッグ、メンテナンス、モニタリング機能の他、３Ｄモーションシミュレーションにも対応した統合開発環境を提供する装置であってもよい。また、開発支援装置１０は、スレーブ装置４０のための各種のパラメータの設定および調整を行ってもよい。
【００５４】
開発支援装置１０は、典型的には、汎用のコンピュータで構成される。例えば、開発支援装置１０で実行される情報処理プログラムは、不図示のＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）に格納されて流通してもよい。このＣＤ−ＲＯ Ｍに格納されたプログラムは、図示しないＣＤ−ＲＯＭ駆動装置によって読取られ、開発支援装置１０のハードディスクなどへ格納される。あるいは、開発支援装置１０は、上位のホストコンピュータなどから、ネットワークを通じて、前記ＤＶＤ−ＲＯＭに格納されたプログラムと同様のプログラムをダウンロードするように構成してもよい。
【００５５】
図２に示すように、ＨＭＩ（Human Machine Interface）３０が、通信ケーブルを介して、ＰＬＣ２０に接続されてもよい。ＨＭＩ３０は、人間と機械とが情報をやり取りするための手段であり、具体的には、人間が機械を操作したり（機械に指示を与えたり）、機械が現在の状態・結果を人間に知らせたりする手段である。ＨＭＩ３０について、人間が機械に指示を与える手段としてはスイッチ、ボタン、ハンドル、ダイヤル、ペダル、リモコン、マイク、キーボード、マウスなどが含まれ、機械が現在の状態・結果等に係る情報を人間に伝える手段としては液晶画面、メーター、ランプ、スピーカーなどが含まれる。
【００５６】
ＨＭＩ３０は、表示部と、操作部と、ＰＬＣ２０と通信する通信部と、各部を制御する制御部と、を備える。ＨＭＩ３０は、操作部へのユーザ操作に応じて、制御システム１（例えば、ＰＬＣ２０）の各種の設定を変更することができる。また、ＨＭＩ３０の表示部は、制御システム１についての所定の情報を表示する。
【００５７】
開発支援装置１０の提供する開発環境を利用してユーザが作成・編集するプログラムは、ユーザプログラム、モーション演算プログラム、およびシーケンス命令演算プログラム等を含む。「ユーザプログラム」は、ユーザの制御対象（例えば、対象のラインおよびプロセス）に応じて作成される。開発支援装置１０は、ラダーロジック（ラダー言語）などによって記述されたラダープログラム（ソースプログラム）をコンパイルすることにより、ユーザプログラムを生成する。ラダーロジックは、論理回路を記述するための手法で、多くのＰＬＣで採用されているプログラム言語である。ユーザプログラムは、例えば、ＰＬＣ２０に含まれるマイクロプロセッサで実行可能なオブジェクトプログラム形式で生成される。「モーション演算プログラム」は、ユーザプログラムによる指示に従って実行され、サーボモータドライバおよびパルスモータドライバなどのモータドライバに対して出力する指令値を実行されるごとに算出するプログラムである。「シーケンス命令演算プログラム」は、ユーザプログラムで使用される所定のシーケンス命令が実行されるときに呼び出され、該命令の内容を実現するために実行されるプログラムである。
【００５８】
開発支援装置１０は、或る変数（第１変数）の各要素（要素変数、第２変数）に対してユーザが設定したコメントを、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイル（後述する出力リストＬ１）として出力する。変数の各要素とは、例えば配列型変数の各配列要素（各配列メンバ）であり、また、例えば構造体型変数の各構造体メンバである。
【００５９】
例えば、開発支援装置１０は、ユーザによって指定された変数について、その変数の各要素に対するコメントを、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｅｘｃｅｌ（登録商標）ファイル等の、表計算ソフトで編集可能なデータ形式のファイルとして出力する。
【００６０】
したがって、ユーザは、Ｅｘｃｅｌ（登録商標）等の表計算ソフトを用いて、出力リストＬ１の内容を容易に確認し、また、出力リストＬ１の内容を容易に編集（更新）することができる。ユーザは、Ｅｘｃｅｌ（登録商標）等の表計算ソフトが有する、高い一覧性および操作性を享受して、変数の各要素に対して付されたコメントを閲覧し、編集することができる。
【００６１】
また、ユーザは、開発支援装置１０が出力した出力リストＬ１をコピー＆ペーストして、１つ以上のリストＬ１（１）、Ｌ１（２）、Ｌ１（３）、・・・Ｌ１（ｎ）を生成することができる（「ｎ」は「１以上の自然数」とする）。ユーザは、複数のリストＬ１（１）、Ｌ１（２）、Ｌ１（３）、・・・Ｌ１（ｎ）の各々において、変数の各要素に対するコメントを、複数の言語の各々で記載しておくことによって、変数の各要素に対するコメントを、複数の言語の各々で作成し、管理することができる。
【００６２】
例えば、開発支援装置１０は、ユーザに指定された配列型変数ｖ１について、配列型変数ｖ１の各配列要素についてのコメントを、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式の出力リストＬ１（ｖ１）に出力する。ユーザは、出力リストＬ１（ｖ１）をコピー＆ペーストして、リストＬ１（ｖ１）（１）、Ｌ１（ｖ１）（２）、Ｌ１（ｖ１）（３）、・・・Ｌ１（ｖ１）（ｎ）を生成する。例えば、ユーザは、リストＬ１（ｖ１）（１）において、配列型変数ｖ１の各配列要素についてのコメントを、英語で記載する。例えば、ユーザは、リストＬ１（ｖ１）（２）において、配列型変数ｖ１の各配列要素についてのコメントを、日本語で記載する。例えば、ユーザは、リストＬ１（ｖ１）（３）において、配列型変数ｖ１の各配列要素についてのコメントを、中国語で記載する。例えば、ユーザは、リストＬ１（ｖ１）（ｎ）において、配列型変数ｖ１の各配列要素についてのコメントを、スペイン語で記載する。
【００６３】
したがって、開発支援装置１０は、「ユーザが、複数の言語の各々で、或る変数（第１変数）の各要素（要素変数、第２変数）に対するコメントを準備する」ことを容易にする。また、ユーザは、各々が複数の言語の各々で記載された複数のコメント（例えば、上述のリストＬ１（ｖ１）（１）、Ｌ１（ｖ１）（２）、Ｌ１（ｖ１）（３）、・・・Ｌ１（ｖ１）（ｎ））を、容易に管理することができる。
【００６４】
また、開発支援装置１０は、ユーザがＥｘｃｅｌ（登録商標）等の表計算ソフトを用いて編集したファイル（後述する入力リストＬ２）をインポートすることができる。例えば、開発支援装置１０は、ユーザが更新した出力リストＬ１を入力リストＬ２としてインポートする。開発支援装置１０は、入力リストＬ２において変数（例、配列型変数または構造体型変数）の各要素（例、各配列要素または各構造体メンバ）に対して付されたコメントによって、自装置の記憶部に保存している、各要素に対するコメントを更新する。そして、開発支援装置１０は、例えばプログラムで配列型変数を使用している箇所で、配列型変数の各配列要素の意味をユーザが把握できるように、各配列要素に対して付されたコメント（更新済の出力リストＬ１にしたがって更新されたコメント）を表示する。
【００６５】
したがって、ユーザは、開発支援装置１０にインポートする入力リストＬ２を切り替えることによって、容易に、開発支援装置１０が表示するコメントについて、例えば、そのコメントを表記する言語を切り替えることができる。ユーザは、開発支援装置１０に、コメントが英語で記載されたリストＬ１（１）に代えて、コメントが日本語で記載されたリストＬ１（２）をインポートさせることによって、英語表記のコメントから日本語表記のコメントに切り替えることができる。
【００６６】
複数の言語の各々でコメントを記載した、複数のリストＬ１（１）〜Ｌ１（ｎ）を予め準備しておけば、ユーザは、開発支援装置１０にインポートさせるリストを切り替えるだけで、開発支援装置１０の表示するコメントの表記言語を、切り替えることができる。
【００６７】
開発支援装置１０が出力する出力リストＬ１がＥｘｃｅｌ（登録商標）によって編集可能なファイルであることは必須ではなく、開発支援装置１０は、外部の装置、ソフトウェアによって編集、利用されるのに好適なデータ形式で、出力リストＬ１を出力する。
【００６８】
（用語の説明）
以下の説明において、「或る変数を先祖ノードとする木構造（ツリー）における子孫ノードとして表すことのできる変数」、例えば、配列要素であったり、構造体メンバであったりする変数を、「要素変数（第２変数）」と称することがある。
【００６９】
同様に、「或る変数を先祖ノードとするツリーの子孫ノードとして表すことのできる変数」についてのコメントは、「要素コメント」と称することがある。すなわち、「要素変数」についてのコメントを「要素コメント」と称し、「要素変数以外の変数」についてのコメントである「コメント」と区別することがある。「要素コメント」は、例えば、開発支援装置１０が提供するプログラム開発環境で使用する変数宣言において、或る変数の型が配列型および構造体型の少なくとも一方である場合に、配列要素または構造体メンバに対して設定できるコメントである。すなわち、「要素コメント」は、或る変数（第１変数）を先祖ノードとするツリーの子孫ノードとして表すことのできる変数（要素変数、第２変数）に対するコメントである。
【００７０】
「変数テーブル画面」は、プログラムで使用する変数をテーブル形式で記述する編集画面であり、変数についての、変数名、変数のデータ型、およびコメントなどを確認、編集（更新）することができる。
【００７１】
§２．構成例
これまで、図２を用いて、制御システム１の概要を説明してきた。次に、開発支援装置１０について、その詳細を説明する。図１等を用いて以下に詳細を説明する開発支援装置１０について、最初に概要を整理しておけば、以下の通りである。
【００７２】
すなわち、開発支援装置１０は、ＰＬＣ２０（制御装置）で実行されるプログラムをユーザが作成するのを支援する開発支援装置である。開発支援装置１０は、前記プログラムで用いられる変数に対して、当該変数の定義に併せてユーザが任意で付すことのできるコメントを、外部出力するよう指示するユーザ操作を受け付ける操作受付部１１０（特に、出力指示受付部１１１）と、操作受付部１１０によって前記ユーザ操作が受け付けられると、前記変数のうち、第１変数を先祖ノードとする木構造（ツリー）における子孫ノードとして表すことのできる複数の要素変数（第２変数）の各々に対する要素コメント（コメント）を、前記第１変数の名称と、前記第１変数に対して前記複数の第２変数の各々を識別するための識別情報と、に対応付けて、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイル（出力リストＬ１）として出力する出力部１２０と、を備えている。
【００７３】
前記の構成によれば、開発支援装置１０は、前記複数の第２変数の各々に対する要素コメントを、前記第１変数の名称と前記識別情報とに対応付けて、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイルとして出力する。
【００７４】
したがって、開発支援装置１０は、ユーザにとって確認しやすく、かつ、編集しやすい形式で、前記複数の第２変数の各々に対する要素コメントのリストを出力することができるとの効果を奏する。つまり、開発支援装置１０は、ユーザが、前記複数の第２変数の各々に対する要素コメントを容易に確認し、かつ、容易に編集することを可能とするとの効果を奏する。
【００７５】
また、開発支援装置１０は、表計算ソフト等を用いてユーザが編集可能な形式のファイルとして要素コメントを出力するので、ユーザは、前記ファイルを用いて、例えば、複数の言語の各々で要素コメントを作成し、管理することができるという効果を奏する。例えば、ユーザは、開発支援装置１０が出力した出力リストＬ１をコピー＆ペーストして複数のリストＬ１（１）〜Ｌ１（ｎ）を生成し、複数のリストＬ１（１）〜Ｌ１（ｎ）の各々において、複数の言語の各々で要素コメントを作成し、管理することができる。すなわち、開発支援装置１０は、前記複数の第２変数の各々に対する、複数の言語の各々で記載した要素コメントを、ユーザが容易に生成し、容易に管理することができるようにするという効果を奏する。
【００７６】
開発支援装置１０において、前記第１変数は、配列型変数または構造体型変数であり、前記複数の第２変数の各々は、配列型変数の配列要素または構造体型変数のメンバであってもよい。
【００７７】
前記の構成によれば、開発支援装置１０は、配列型変数の配列要素または構造体型変数のメンバである前記複数の第２変数の各々に対する要素コメントを、配列型変数または構造体型変数である前記第１変数の名称と、前記識別情報と、に対応付けて出力する。
【００７８】
したがって、開発支援装置１０は、ユーザにとって確認しやすく、かつ、編集しやすい形式で、配列型変数の配列要素または構造体型変数のメンバである前記複数の第２変数の各々に対する要素コメントのリストを出力することができるとの効果を奏する。
【００７９】
開発支援装置１０において、出力部１２０は、前記複数の第２変数の各々に対する要素コメントを、前記第１変数の名称と前記識別情報とを含む１つの文字列に対応付けて、出力してもよい。
【００８０】
前記の構成によれば、開発支援装置１０は、前記複数の第２変数の各々に対する要素コメントを、前記第１変数の名称と前記識別情報とを含む１つの文字列に対応付けて、表計算ソフト等で編集可能なファイルとして出力する。例えば、開発支援装置１０は、（Ａ）前記第１変数の名称と前記識別情報とを含む１つの文字列と、（Ｂ）前記要素コメントと、を隣り合わせに表示したリストを、表計算ソフト等で編集可能なデータ形式で出力する。
【００８１】
具体的には、開発支援装置１０は、例えば表計算ソフトにおいて編集可能なデータ形式のファイルとして、前記複数の第２変数の各々に対する要素コメントを、前記第１変数の名称と前記識別情報とを含む１つの文字列に対応付けて、出力する。この場合、前記第１変数の名称と前記識別情報とを含む１つの文字列は１つのセルに格納され、また、前記複数の第２変数の各々に対する要素コメントも１つのセルに格納されることになる。そのため、ユーザは、前記複数の第２変数の各々に対する要素コメントと、当該要素コメントが付された前記第２変数と、前記第２変数の先祖ノードである前記第１変数との関係を、一目で確認することができる。例えば、ユーザは、前記第１変数の名称と前記識別情報とを含む１つの文字列と、前記要素コメントを示す１つの文字列と、が隣り合う列で対応付けられたリストを、一目で確認することができるようになる。
【００８２】
したがって、開発支援装置１０は、ユーザにとって視認性が極めて高く、かつ、編集しやすい形式で、前記複数の第２変数の各々に対する要素コメントのリストを出力することができるとの効果を奏する。
【００８３】
開発支援装置１０において、前記識別情報は、前記木構造における前記第１変数から前記複数の第２変数の各々までのパスを示すパス情報を含む。前記パス情報は、前記木構造における前記第１変数から前記複数の第２変数の各々までの、１つ以上の親子関係の各々を、以下の規則にしたがって示す。すなわち、前記パス情報は、（１）親子関係が、親ノードに相当する変数が配列型変数であって、子ノードに相当する変数が前記配列型変数の配列要素である場合、その親子関係を、カッコ（［］）を用いて示す。また、前記パス情報は、（２）親子関係が、親ノードに相当する変数が構造体型変数であって、子ノードに相当する変数が前記構造体型変数のメンバである場合、その親子関係を、ピリオド（．）を用いて示す。或る要素変数のパス情報は、「その或る要素変数を子孫ノードとするツリーにおいて、その或る要素変数に相当する子孫ノードを特定する情報」であり、「そのツリーにおける、その或る要素変数に相当する子孫ノードの階層を示す情報」を含んでいる。
【００８４】
前記の構成によれば、開発支援装置１０は、前記複数の第２変数の各々に対する要素コメントを、前記パス情報を含む前記識別情報と前記第１変数の名称とに対応付けて出力する。そして、前記パス情報において、前記第１変数から前記複数の第２変数の各々までの、１つ以上の親子関係の各々は、親と子が配列型変数と配列型変数の配列要素とであるのか、または、親と子が構造体型変数と構造体型変数のメンバとであるのか、が区別される。
【００８５】
したがって、開発支援装置１０は、前記第１変数と前記複数の第２変数との関係をユーザが確認することができるようにして、前記ファイルを出力することができるとの効果を奏する。例えば、開発支援装置１０は、第２変数が配列型変数である前記第１変数の配列要素であるのか、第２変数が構造体型変数である前記第１変数の構造体メンバであるのか、または、第２変数が、複数の構造体型変数の各々を配列要素とする配列型変数（構造体型配列）である前記第１変数の、所定の前記構造体型変数の構造体メンバであるのか・・・等を、ユーザが区別できるようにして、前記ファイルを出力することができるとの効果を奏する。
【００８６】
これまでに概要を説明した開発支援装置１０について、次に、その構成の詳細について図１を参照しながら説明し、その後、開発支援装置１０が実行する処理の概要について、図３を参照しながら説明していく。
【００８７】
（開発支援装置の詳細）
（従来までの開発支援装置との主要な相違点）
図１２を用いて説明したように、従来までの開発支援装置は、「変数テーブル画面」において、要素コメントを、一覧形式でユーザに示すことができない。例えば、従来までの開発支援装置は、「変数テーブル画面」において、配列型変数の配列要素および構造体型変数の構造体メンバなどの「或る変数を先祖ノードとするツリーの子孫ノードとして表すことのできる変数（要素変数）」に対するコメント（要素コメント）を、一覧形式で表示できない。そのため、従来までの開発支援装置は、複数の要素変数の各々に対する要素コメントを確認したり、編集したりしようとするユーザにとって、利便性、操作性が低い。
【００８８】
具体的には、「或る変数を先祖ノードとするツリーの子孫ノードとして表すことのできる変数」のコメントについて、確認等を行おうとするユーザは、先祖ノード（例、親ノード）に相当する変数を選択した上で、要素コメントのダイアログを開く必要があった。
【００８９】
これに対して、開発支援装置１０は、複数の要素変数の各々についての要素コメントを、一覧形式のリストとして、特に、表計算ソフト等で編集可能なデータ形式の、一覧形式のリスト（出力リストＬ１）として、出力する。
【００９０】
ユーザは、例えば配列型変数の各配列要素について、開発支援装置１０が出力した出力リストＬ１を利用して、各配列要素に付与している意味等を示す要素コメントを、容易に確認することができる。また、ユーザは、例えば、開発支援装置１０が出力した出力リストＬ１をコピー＆ペーストして生成した複数のリストＬ１（１）〜Ｌ１（ｎ）の各々において、要素コメントを複数の言語の各々で記載しておくことができる。複数の言語の各々で要素コメントを記載した複数のリストＬ１（１）〜Ｌ１（ｎ）を予め準備しておくことで、ユーザは、開発支援装置１０にインポートするリストを切り替えるだけで、開発支援装置１０が表示する要素コメントの表記言語を、容易に切り替えることができる。
【００９１】
（開発支援装置の詳細構成）
図１は、開発支援装置１０の要部構成を示すブロック図である。図１に示すように、開発支援装置１０は、機能ブロックとして、操作受付部１１０と、出力部１２０と、記憶部１３０と、入力部１４０と、コメント更新部１５０とを備えている。
【００９２】
開発支援装置１０は、上述の各機能ブロックに加え、ユーザが制御目的に応じてＰＬＣ２０に実行させる制御プログラムとしてのユーザプログラムをプログラミングするための環境を提供する、不図示のプログラミング支援部などを備えていてもよい。しかしながら、記載の簡潔性を担保するため、本実施の形態に直接関係のない構成は、説明およびブロック図から省略している。ただし、実施の実情に則して、開発支援装置１０は、当該省略された構成を備えてもよい。
【００９３】
操作受付部１１０、出力部１２０、入力部１４０、および、コメント更新部１５０は、例えば、ＣＰＵ（central processing unit）等が、ＲＯＭ（read only memory）、ＮＶＲＡＭ（non-Volatile random access memory）等で実現された記憶装置（記憶部１３０）に記憶されているプログラムを不図示のＲＡＭ（random access memory）等に読み出して実行することで実現できる。以下、操作受付部１１０、出力部１２０、入力部１４０、および、コメント更新部１５０の各々について説明する。
【００９４】
操作受付部１１０は、出力リストＬ１の出力処理（エキスポート処理）の実行を指示するユーザ操作、または、入力リストＬ２の入力処理（インポート処理）の実行を指示するユーザ操作を受け付ける。操作受付部１１０は、出力指示受付部１１１と、入力指示受付部１１２と、を含む。
【００９５】
出力指示受付部１１１は、エキスポート処理の実行を指示するユーザ操作を受け付け、受け付けたユーザ操作を出力部１２０に通知する。入力指示受付部１１２は、インポート処理の実行を指示するユーザ操作を受け付け、受け付けたユーザ操作を入力部１４０に通知する。
【００９６】
出力部１２０は、出力指示受付部１１１が受け付けたユーザ操作に従って、「第１変数を先祖ノードとするツリーの子孫ノードとして表すことのできる変数（要素変数）」に対するコメント（要素コメント）を一覧形式で示すリスト（出力リストＬ１）を出力する。
【００９７】
例えば、出力部１２０は、ユーザ操作において指定された第１変数について、第２変数定義テーブル１３１Ｂを参照して、「その第１変数を先祖ノードとするツリーにおける、子孫ノードとして表すことのできる」複数の要素変数（第２変数）を特定する。また、出力部１２０は、第２変数定義テーブル１３１Ｂを参照して、特定した複数の要素変数の各々に対する要素コメントを取得する。出力部１２０は、「特定した複数の要素変数の各々を、第１変数に対して識別する」識別情報に対応付けて、特定した複数の要素変数の各々に対する要素コメントを、表計算ソフト等で編集可能なデータ形式の出力リストＬ１に出力する。特に、出力部１２０は、複数の要素変数の各々に対する要素コメントを、「第１変数の名称」および「複数の要素変数の各々の識別情報」に対応付けて、出力リストＬ１に出力する。出力部１２０は、第１取得部１２１と、第２取得部１２２と、第３取得部１２３と、文字列生成部１２４と、を含む。
【００９８】
第１取得部１２１は、「出力指示受付部１１１が受け付けたユーザ操作」においてユーザによって選択された第１変数の名称を特定する。第１取得部１２１は、ユーザによって選択された第１変数の名称を、第１変数定義テーブル１３１Ａまたは第２変数定義テーブル１３１Ｂを参照して、特定してもよい。
【００９９】
第２取得部１２２は、第２変数定義テーブル１３１Ｂを参照して、ユーザによって選択された第１変数を先祖ノードとするツリーを辿り、第１変数を先祖ノードとするツリーの子孫ノードに相当する複数の要素変数の各々を特定する。
【０１００】
第２取得部１２２は、第２変数定義テーブル１３１Ｂを参照して、特定した複数の要素変数の各々を第１変数に対して識別するための識別情報を生成し、特に、特定した複数の要素変数の各々のパス情報を含む識別情報を生成する。第２取得部１２２は、複数の要素変数の各々の識別情報として、「第１変数を先祖ノードとするツリーにおいて、複数の子孫ノード（つまり、複数の要素変数の各々に相当する、複数の子孫ノード）の各々を識別する識別情報」を、生成する。
【０１０１】
パス情報は、「第１変数を先祖ノードとするツリーにおいて、第１変数から複数の要素変数の各々までのパス（１つ以上の親子関係）を示す情報」である。言い換えれば、パス情報は、「第１変数を先祖ノードとするツリー」において、「先祖ノードである第１変数」から「子孫ノードである複数の要素変数の各々」までの間に存在する、１つ以上の親子関係を示す情報である。パス情報は、「第１変数を先祖ノードとするツリーにおける、各要素変数に対応する子孫ノードのインスタンスを示す情報」に対応する。
【０１０２】
第２取得部１２２は、識別情報（特に、パス情報）において、親子関係（親ノードに相当する変数と、子ノードに相当する変数との関係）を、例えば以下の規則にしたがって示す。すなわち、親ノードに相当する変数が配列型変数であって、子ノードに相当する変数が前記配列型変数の配列要素である場合、第２取得部１２２は、親子関係を、カッコ（［］）を用いて示す。また、親ノードに相当する変数が構造体型変数であって、子ノードに相当する変数が前記構造体型変数のメンバである場合、第２取得部１２２は、親子関係を、ピリオド（．）を用いて示す。
【０１０３】
第３取得部１２３は、第２変数定義テーブル１３１Ｂを参照して、第２取得部１２２が特定した複数の要素変数の各々に対する要素コメントを取得する。
【０１０４】
文字列生成部１２４は、第２取得部１２２が特定した複数の要素変数の各々について、以下の文字列を生成する。すなわち、文字列生成部１２４は、第１取得部１２１が特定した第１変数の名称と、第２取得部１２２が生成した「複数の要素変数の各々の識別情報（複数の要素変数の各々のパス情報を含む）」と、を含む１つの文字列を生成する。複数の要素変数の各々について文字列生成部１２４が生成する１つの文字列は、「コメント名称」とも称される。
【０１０５】
出力部１２０は、第３取得部１２３が取得した「複数の要素変数の各々に対する要素コメント」を、複数の要素変数の各々のコメント名称に対応付けて、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能な出力リストＬ１に出力する。
【０１０６】
入力部１４０は、操作受付部１１０が受け付けたユーザ操作（インポート処理の実行指示）に従って、入力リストＬ２を取り込む。入力リストＬ２は、「或る第１変数を先祖ノードとするツリーの子孫ノードとして表すことのできる要素変数」についての要素コメントが一覧形式で示されたリストであり、例えば、ユーザによって内容を更新された出力リストＬ１である。
【０１０７】
コメント更新部１５０は、入力部１４０が取り込んだ入力リストＬ２の内容にしたがって、記憶部１３０の第２変数定義テーブル１３１Ｂにおける要素コメントを更新する。コメント更新部１５０は、文字列解析部１５１と、第１特定部１５２と、第２特定部１５３と、第３特定部１５４と、を含む。
【０１０８】
文字列解析部１５１は、入力部１４０が取り込んだ入力リストＬ２のコメント名称から、第１変数の名称を抽出し、抽出した第１変数の名称を第１特定部１５２に通知する。第１特定部１５２は、入力リストＬ２のコメント名称から抽出された「第１変数の名称」から、第１変数を特定する。第１特定部１５２は、特定した第１変数を第２特定部１５３に通知する。
【０１０９】
第２特定部１５３は、マップ情報１３２を参照して、入力リストＬ２の「コメント名称」に対応する「ノードインスタンス」を取得する。そして、第２特定部１５３は、第１特定部１５２が特定した第１変数と、マップ情報１３２を参照して取得した「ノードインスタンス」と、から、入力リストＬ２に要素コメントが格納された要素変数を特定する。
【０１１０】
ここで、入力リストＬ２における各「コメント名称」の記載規則は、出力リストＬ１における「コメント名称」の記載規則と同様である。したがって、第２特定部１５３は、マップ情報１３２を参照せずに、入力リストＬ２の「コメント名称」から直接、第１変数を先祖ノードとするツリーにおいて、入力リストＬ２に要素コメントが格納された要素変数を識別するための識別情報を取得してもよい。言い換えれば、第２特定部１５３は、入力リストＬ２の「コメント名称」から、「入力リストＬ２に要素コメントが格納された要素変数のパス情報」を含む、「入力リストＬ２に要素コメントが格納された要素変数の識別情報」を抽出してもよい。
【０１１１】
第３特定部１５４は、入力部１４０が取り込んだ入力リストＬ２から、「入力リストＬ２において、コメント名称に対応付けられている要素コメント」を取得する。つまり、第３特定部１５４は、入力リストＬ２から、「入力リストＬ２のコメント名称によって一意に特定される要素変数」に対する「入力リストＬ２における要素コメント」を取得する。
【０１１２】
コメント更新部１５０は、第２特定部１５３によって特定された要素変数の、第２変数定義テーブル１３１Ｂにおける要素コメントを、第３特定部１５４が入力リストＬ２から取得した要素コメントによって、更新する。
【０１１３】
記憶部１３０は、開発支援装置１０が使用する各種データを格納する記憶装置である。なお、記憶部１３０は、開発支援装置１０が実行する（１）制御プログラム、（２）ＯＳプログラム、（３）開発支援装置１０が有する各種機能を実行するためのアプリケーションプログラム、および、（４）該アプリケーションプログラムを実行するときに読み出す各種データを非一時的に記憶してもよい。上記の（１）〜（４）のデータは、例えば、ＲＯＭ（read only memory）、フラッシュメモリ、ＥＰＲＯＭ（Erasable Programmable ROM）、ＥＥＰＲＯＭ（登録商標）（Electrically EPROM）、ＨＤＤ（Hard Disc Drive）等の不揮発性記憶装置に記憶される。開発支援装置１０は、図示しない一時記憶部を備えていてもよい。一時記憶部は、開発支援装置１０が実行する各種処理の過程で、演算に使用するデータおよび演算結果等を一時的に記憶するいわゆるワーキングメモリであり、ＲＡＭ（Random Access Memory）等の揮発性記憶装置で構成される。どのデータをどの記憶装置に記憶するのかについては、ＰＬＣ２０の使用目的、利便性、コスト、または、物理的な制約等から適宜決定される。記憶部１３０はさらに、変数定義テーブル１３１およびマップ情報１３２を格納している。
【０１１４】
変数定義テーブル１３１は、要素変数の以外の変数について、コメント等を格納した第１変数定義テーブル１３１Ａと、要素変数について、要素コメント等を格納した第２変数定義テーブル１３１Ｂと、を含む。
【０１１５】
第１変数定義テーブル１３１Ａは、要素変数以外の変数（例えば、第１変数）の「変数名、データ型、およびコメント」等のセットを格納している。第１変数定義テーブル１３１Ａは、複数の「要素変数以外の変数」の各々の「変数名、データ型、およびコメント」等のセットを、複数の「要素変数以外の変数」の各々の属性として、一覧形式で格納している。第１変数定義テーブル１３１Ａの詳細については、図５を用いて後述する。
【０１１６】
第２変数定義テーブル１３１Ｂは、複数の要素変数の各々について、複数の要素変数の各々を子孫ノードとするツリーの先祖ノードに相当する変数（第１変数）の名称、前記ツリーの階層構造、要素コメント等を格納している。第２変数定義テーブル１３１Ｂには、第１変数と複数の要素変数の各々との関係、第１変数に対して複数の要素変数の各々を識別するための識別情報、前記ツリーにおいて複数の要素変数の各々に相当する子孫ノードのインスタンス等が格納されていてもよい。第２変数定義テーブル１３１Ｂの詳細については、図６の（Ａ）、図７の（Ａ）、および、図８を用いて後述する。
【０１１７】
マップ情報１３２は、入力リストＬ２における各「コメント名称」の内容と、「複数の要素変数の各々のインスタンス（ノードインスタンス）を示す情報」と、を対応付けた情報であり、その詳細については、図１１を用いて後述する。前述の通り、入力リストＬ２には、各要素変数のコメント名称に対応付けられて、各要素変数の要素コメントが示されている。
【０１１８】
入力リストＬ２における各「コメント名称」、つまり、各要素変数の「入力リストＬ２におけるコメント名称」は、各要素変数の第１変数の名称、および、各要素変数の識別情報（パス情報を含む）を示している。
【０１１９】
「要素変数のインスタンスを示す情報」は、「第１変数を先祖ノードとするツリーにおける、複数の要素変数の各々に相当する複数の子孫ノードの各々のインスタンス」を示す情報である。第２特定部１５３は、或る要素変数のインスタンスを示す情報を用いて、第１変数に対する、その或る要素変数の関係を把握することができ、したがって、その或る要素変数を、第２変数定義テーブル１３１Ｂにおいて特定することができる。
【０１２０】
§３．動作例
図３は、開発支援装置１０が実行する処理の全体概要を示す図である。すなわち、開発支援装置１０は、エキスポート処理を実行して、第２変数定義テーブル１３１Ｂを参照して取得した各要素変数の要素コメントを、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式の出力リストＬ１に出力する。また、開発支援装置１０は、インポート処理を実行して、取り込んだ入力リストＬ２にしたがって、第２変数定義テーブル１３１Ｂにおける各要素変数の要素コメントを更新する。
【０１２１】
（エキスポート処理の内容）
図４は、開発支援装置が１０実行する出力処理（エキスポート処理）の全体概要を示す図である。出力指示受付部１１１は、選択した第１変数の各要素（要素変数。以下、「対象変数」とも称する）についての要素コメントを、外部へと出力することを指示するユーザ操作を取得する（出力指示取得処理、Ｓ１１０）。すなわち、出力指示受付部１１１は、エキスポート処理の実行を指示するユーザ操作を受け付ける。
【０１２２】
第１取得部１２１は、対象変数の先祖ノードに相当する変数（つまり、ユーザが選択した第１変数）の名称を取得する（親ノード名取得処理、Ｓ１２０）。第２取得部１２２は、第２変数定義テーブル１３１Ｂを参照して、第１変数を先祖ノードとする他の子孫ノードに相当する変数から、対象変数を識別するための識別情報を取得（生成）する（識別情報取得処理、Ｓ１３０）。
【０１２３】
例えば、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」という名称の配列型変数の配列要素[０]は、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」という名称の配列型変数の他の配列要素（例、[１]および[２]）から、「０」によって識別される。したがって、第２取得部１２２は、第２変数定義テーブル１３１Ｂを参照して、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素[０]を、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの他の配列要素から識別する「０」を、識別情報として取得する。
【０１２４】
第３取得部１２３は、第２変数定義テーブル１３１Ｂを参照して、対象変数に対する要素コメントを取得する（コメント取得処理、Ｓ１４０）。そして、文字列生成部１２４は、第１取得部１２１が取得した第１変数の名称と、第２取得部１２２が取得した識別情報とを組み合わせた、１つの文字列を生成する（パス文字列生成処理、Ｓ１５０）。
【０１２５】
出力部１２０は、第３取得部１２３が取得した対象変数に対するコメントを、文字列生成部１２４がパス文字列生成処理において生成した文字列へと対応付けたリスト（出力リストＬ１）を、外部へ出力する（エキスポート処理、Ｓ１６０）。出力部１２０は、出力リストＬ１を、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイルとして出力する。
【０１２６】
これまでに図４を参照しながら説明してきた開発支援装置１０が実行する処理（特に、エキスポート処理）は、言い換えれば、開発支援装置１０が実行する制御方法は、以下のように整理することができる。すなわち、開発支援装置１０が実行する処理（制御方法）は、ＰＬＣ２０（制御装置）で実行されるプログラムをユーザが作成するのを支援する開発支援装置の制御方法であって、前記プログラムで用いられる変数に対して、当該変数の定義に併せてユーザが任意で付すことのできる要素コメントを、外部出力するよう指示するユーザ操作を受け付ける操作受付ステップ（出力指示取得処理Ｓ１１０）と、前記操作受付ステップにて前記ユーザ操作が受け付けられると、前記変数のうち、第１変数を先祖ノードとする木構造（ツリー）における子孫ノードとして表すことのできる複数の第２変数の各々に対する要素コメントを、前記第１変数の名称と、前記第１変数に対して前記複数の第２変数の各々を識別するための識別情報と、に対応付けて、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイルとして出力する出力ステップ（エキスポート処理Ｓ１６０）と、を含んでいる。
【０１２７】
前記の構成によれば、前記制御方法は、前記複数の第２変数の各々に対する要素コメントを、前記第１変数の名称と前記識別情報とに対応付けて、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイルとして出力する。
【０１２８】
したがって、前記制御方法は、ユーザにとって確認しやすく、かつ、編集しやすい形式で、前記複数の第２変数の各々に対する要素コメントのリストを出力することができるとの効果を奏する。つまり、前記制御方法は、ユーザが、前記複数の第２変数の各々に対する要素コメントを容易に確認し、かつ、容易に編集することを可能とするとの効果を奏する。
【０１２９】
また、前記制御方法は、表計算ソフト等を用いてユーザが編集可能な形式のファイルとして前記要素コメントを出力するので、ユーザは、前記ファイルを用いて、例えば、複数の言語の各々で前記要素コメントを作成し、管理することができるという効果を奏する。すなわち、前記制御方法は、前記複数の第２変数の各々に対する、複数の言語の各々で記載した要素コメントを、ユーザが容易に生成・管理することができるようにするという効果を奏する。
【０１３０】
（データ形式）
（要素変数以外の変数のデータ形式例）
開発支援装置１０において、要素変数以外の変数は、つまり、「或る変数を先祖ノードとするツリーの子孫ノードとして表すことのできる変数」以外の変数は、例えば、以下のデータ形式で、第１変数定義テーブル１３１Ａに格納されている。すなわち、要素変数以外の変数については、各変数の「変数名、データ型、およびコメント」等のセットが、各変数の属性として、一覧形式で、第１変数定義テーブル１３１Ａに格納されている。
【０１３１】
図５は、第１変数定義テーブル１３１Ａに格納されている、要素変数以外の変数の一例を示す図である。すなわち、図５には、第１変数定義テーブル１３１Ａに格納されている、「或る変数を先祖ノードとするツリーの子孫ノードとして表すことのできる変数」以外の変数の一例が示されている。
【０１３２】
図５に例示するように、第１変数定義テーブル１３１Ａにおいて、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」という名称の配列型変数と、「ｅｒｒｏｒＳｔａｔｕｓ」という名称の配列型変数とは、各変数の属性と共に、一覧形式で格納されている。すなわち、第１変数定義テーブル１３１Ａにおいて、要素変数以外の変数について、各変数の変数名は、各変数のデータ型、および、各変数のコメントに対応付けられて、格納されている。
【０１３３】
「或る変数を先祖ノードとするツリーの子孫ノードとして表すことのできる変数」以外の変数について、開発支援装置１０は、例えば第１変数定義テーブル１３１Ａにおける格納内容をそのまま、「変数テーブル画面」に表示する（可視化する）。
【０１３４】
（要素変数のデータ形式例１：配列型変数の各配列要素）
これに対して、「或る変数を先祖ノードとするツリーの子孫ノードとして表すことのできる変数」は、つまり、要素変数は、開発支援装置１０において、例えば、以下のデータ形式で、第２変数定義テーブル１３１Ｂに格納されている。すなわち、第２変数定義テーブル１３１Ｂにおいて、複数の要素変数の各々は、或る変数を先祖ノードとするツリーの複数の子孫ノードの各々に相当するものとして管理されている。第２変数定義テーブル１３１Ｂには、前記ツリーの構造を示す情報、特に、複数の要素変数の各々に相当する複数の子孫ノードの各々を、前記ツリーにおいて特定する情報が格納されている。また、第２変数定義テーブル１３１Ｂにおいて、複数の要素変数の各々に対する要素コメントは、複数の要素変数の各々に相当する複数の子孫ノードの各々に対応付けられている。
【０１３５】
図６は、第２変数定義テーブル１３１Ｂに格納されている要素変数の一例（図６の（Ａ））と、出力リストＬ１における要素変数についての要素コメントの一例（図６の（Ｂ））を示す図である。具体的には、図６の（Ａ）には、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」という名称の配列型変数の各配列要素（すなわち、［０］、［１］、［２］）について、各配列要素の要素コメント等が、第２変数定義テーブル１３１Ｂに格納されている例が示されている。
【０１３６】
開発支援装置１０は、先祖ノードに相当する第１変数（例えば、配列型変数または構造体型変数である第１変数）に対して、配列要素または構造体メンバ（要素変数。つまり、第２変数）が子孫ノードとして階層化されたツリーを構成する。例えば、開発支援装置１０は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素［０］、［１］、［２］を、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーの子ノードとして管理する。
【０１３７】
開発支援装置１０は、第１変数（例えば、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎ）を先祖ノードとするツリーの兄弟ノードに相当する複数の第２変数（例えば、配列要素［０］、［１］、［２］）の各々を、以下のように識別する。すなわち、開発支援装置１０は、第１変数に対して複数の第２変数の各々を識別するための識別情報（図６の（Ａ）に示す例では、「０」、「１」、「２」）を、複数の第２変数の各々に付与することにより、兄弟ノードに相当する複数の第２変数の各々を識別する。配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーの兄弟ノードに相当する配列要素［０］、［１］、［２］は、子ノードを示す階層において、各々、「０」、「１」、「２」によって、兄弟ノードに相当する他の配列要素から区別される。
【０１３８】
そして、開発支援装置１０は、第２変数定義テーブル１３１Ｂにおいて、「各要素変数に相当する、上記ツリー内の各子孫ノード」に対応付けて、各要素変数の要素コメントを格納している。
【０１３９】
すなわち、図６の（Ａ）の第２変数定義テーブル１３１Ｂにおいて、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素：［０］は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーの子ノードとして格納されている。配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素：［０］に対する要素コメント：「コンテナ起動条件」は、上記ツリーにおいて配列要素：［０］を示す子ノードに対応付けられている。
【０１４０】
また、第２変数定義テーブル１３１Ｂの「ノードの説明」欄の内容は、「上記ツリーにおける、各要素変数に相当する各子孫ノードのインスタンスを示す情報」と捉えることができる。特に、「ノードの説明」欄には、各要素変数を子ノードとするツリーにおける、各要素変数に相当する子ノードのインスタンスを示す情報が示されている。
る。配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素：［０］の「ノードの説明」欄には、「配列要素：［０］は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーにおいて、子ノード０に相当する」ことが示されている。
【０１４１】
また、図６の（Ａ）の第２変数定義テーブル１３１Ｂにおいて、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素：［１］は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーの子ノードとして格納されている。そして、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素：［１］に対する要素コメント：「ロボット起動条件」は、上記ツリーにおいて配列要素：［１］を示す子ノードに対応付けられている。また、「ノードの説明」欄には、配列要素：［１］が、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーにおいて、子ノード１に相当することが示されている。配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素：［２］についても同様である。
【０１４２】
（出力リストにおける要素コメント例１：配列要素に対する要素コメント）
前述の通り、開発支援装置１０は、エキスポート処理の実行を指示するユーザ操作を受け付けると、以下の処理を実行する。すなわち、開発支援装置１０は、前述のユーザ操作において選択された或る変数（第１変数）について、第２変数定義テーブル１３１Ｂを参照して、その或る変数を先祖ノードとするツリーの子孫ノードに相当する複数の第２変数の各々を特定する。開発支援装置１０は、第２変数定義テーブル１３１Ｂを参照して、特定した複数の第２変数の各々についての要素コメントを取得する。また、開発支援装置１０は、第２変数定義テーブル１３１Ｂを参照して、複数の第２変数の各々を識別する識別情報を取得し、特に、第１変数を先祖ノードとするツリーの、第１変数から複数の第２変数の各々までのパス情報を取得する。開発支援装置１０は、第１変数の名称と、複数の第２変数の各々を識別する識別情報（第１変数から複数の第２変数の各々までのパス情報を含む）とを含む１つの文字列に、複数の第２変数の各々についての要素コメントを対応付けた出力リストＬ１を出力する。
【０１４３】
図６の（Ｂ）には、図６の（Ａ）に例示した配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの各配列要素に対する要素コメントが出力リストＬ１に出力された例が示されている。例えば、エキスポート処理の実行を指示するユーザ操作において、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎが選択されると、開発支援装置１０は、以下の処理を実行する。
【０１４４】
すなわち、先ず、出力部１２０（特に、第１取得部１２１）は、ユーザによって選択された第１変数の名称を、つまり、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの名称である「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」を特定する。
【０１４５】
出力部１２０（特に、第２取得部１２２）は、第２変数定義テーブル１３１Ｂを参照して、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを先祖ノードとするツリーを辿り、そのツリーにおける複数の子孫ノードに相当する複数の第２変数を特定する。すなわち、第２取得部１２２は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素［０］、［１］、［２］を特定する。そして、出力部１２０は、第１変数に対して、複数の第２変数（例えば、配列要素［０］、［１］、［２］）の各々を識別するための識別情報（つまり、「０」、「１」、「２」）を取得する。
【０１４６】
出力部１２０（特に、第２取得部１２２）は、第２変数定義テーブル１３１Ｂを参照して、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素［０］、［１］、［２］の各々のパス情報を生成する。第２取得部１２２は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを先祖ノードとするツリーにおいて、先祖ノードである配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎから、子孫ノードである配列要素［０］、［１］、［２］の各々までのパスを特定する。言い換えれば、第２取得部１２２は、上記ツリーにおいて、先祖ノードである配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎから、子孫ノードである配列要素［０］、［１］、［２］の各々までの間にある、１つ以上の親子関係を、特定する。第２取得部１２２は、特定したパス（１つ以上の親子関係）を示すパス情報を生成する。「第１変数に対して複数の第２変数の各々を識別するための識別情報」は、「第１変数を先祖ノードとするツリーにおける、第１変数から複数の第２変数の各々までのパスを示すパス情報」を含んでいる。
【０１４７】
図６に示す例では、変数名が「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」である変数は配列型変数であり、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素は、配列要素［０］、［１］、［２］である。前述の通り、第２取得部１２２は、識別情報（特に、パス情報）において、配列型変数と配列要素との間の親子関係を、カッコ（［］）を用いて示す。
【０１４８】
第２取得部１２２は、第２変数定義テーブル１３１Ｂを参照して、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎと、配列要素［０］との間には親子関係が１つ存在し、その親子関係は、配列型変数と配列要素との間の親子関係であることを特定する。また、第２取得部１２２は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーにおいて、兄弟ノードに相当する他の配列要素（［１］、［２］）から、配列要素［０］を識別する情報として、「１」を特定する。したがって、第２取得部１２２は、配列要素［０］について、パス情報を含む識別情報として、「［０］」を生成する。同様に、第２取得部１２２は、配列要素［１］について、パス情報を含む識別情報として、「［１］」を生成し、また、配列要素［２］について、パス情報を含む識別情報として、「［２］」を生成する。
【０１４９】
「［０］」とのパス情報は、そのパス情報に対応する要素変数が、配列型変数である第１変数の配列要素であり、第１変数の他の配列要素から「０」によって識別されることを示す。同様に、「［１］」とのパス情報は、そのパス情報に対応する要素変数が、配列型変数である第１変数の配列要素であり、第１変数の他の配列要素から「１」によって識別されることを示す。また、「［２］」とのパス情報は、そのパス情報に対応する要素変数が、配列型変数である第１変数の配列要素であり、第１変数の他の配列要素から「２」によって識別されることを示す。
【０１５０】
出力部１２０（特に、文字列生成部１２４）は、第１変数の名称（ｓｔａｒｔＣｏｎｄｉｔｉｏｎ）と、複数の第２変数の各々の識別情報と、を含む１つの文字列を生成する。文字列生成部１２４は、配列要素［０］について、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」と、配列要素［０］の識別情報（［０］）と、を含む１つの文字列（つまり、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［０］」）を生成する。同様に、文字列生成部１２４は、配列要素［１］について「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［１］」を生成し、配列要素［２］について「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［２］」を生成する。
【０１５１】
出力部１２０（特に、第３取得部１２３）は、第２変数定義テーブル１３１Ｂを参照して、第１変数を先祖ノードとするツリーの子孫ノードに相当する複数の第２変数（例えば、配列要素［０］、［１］、［２］）の各々について、要素コメントを取得する。具体的には、第３取得部１２３は、第２変数定義テーブル１３１Ｂを参照して、配列要素［０］に対する要素コメント：コンテナ起動条件を取得する。同様に、第３取得部１２３は、第２変数定義テーブル１３１Ｂを参照して、配列要素［１］に対する要素コメント：ロボット起動条件を取得し、また、配列要素［２］に対する要素コメント：ＸＸＸ起動条件を取得する。
【０１５２】
そして、出力部１２０は、複数の第２変数の各々の要素コメントを、複数の第２変数の各々の「先祖ノードに相当する第１変数の名称と、識別情報と、を含む１つの文字列」に対応付けて、出力リストＬ１に出力する。図６の（Ｂ）に例示するように、出力部１２０は、配列要素［０］に対する要素コメント：コンテナ起動条件を、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［０］」とのコメント名称に対応付けて、出力リストＬ１に出力する。同様に、出力部１２０は、配列要素［１］に対する要素コメント：ロボット起動条件を、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［１］」とのコメント名称に対応付けて、出力リストＬ１に出力する。また、出力部１２０は、配列要素［２］に対する要素コメント：ＸＸＸ起動条件を、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［２］」とのコメント名称に対応付けて、出力リストＬ１に出力する。
【０１５３】
（要素変数のデータ形式例２：構造体型変数の各構造体メンバ）
図７は、図６と同様に、第２変数定義テーブル１３１Ｂに格納されている要素変数の一例（図７の（Ａ））と、出力リストＬ１における要素変数についての要素コメントの一例（図７の（Ｂ））を示している。具体的には、図７の（Ａ）には、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」という名称の構造体型変数の各構造体メンバについて、各構造体メンバの要素コメント等が、第２変数定義テーブル１３１Ｂに格納されている例が示されている。図７の（Ａ）に示す例において、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」という名称の構造体型変数の構造体メンバは、Ｍｅｍｂｅｒ１およびＭｅｍｂｅｒ２である。
【０１５４】
開発支援装置１０は、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの構造体メンバＭｅｍｂｅｒ１およびＭｅｍｂｅｒ２を、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーの子ノードとして管理する。上記ツリーにおいて兄弟ノードに相当する構造体メンバＭｅｍｂｅｒ１およびＭｅｍｂｅｒ２は、子ノードを示す階層において、各々、「Ｍｅｍｂｅｒ１」または「Ｍｅｍｂｅｒ２」によって、兄弟ノードに相当する他の配列要素から区別される。
【０１５５】
すなわち、図７の（Ａ）の第２変数定義テーブル１３１Ｂにおいて、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの構造体メンバ：Ｍｅｍｂｅｒ１は、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーの子ノードとして格納されている。そして、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの構造体メンバ：Ｍｅｍｂｅｒ１に対する要素コメント：「コンテナ起動条件」は、上記ツリーにおいて構造体メンバ：Ｍｅｍｂｅｒ１を示す子ノードに対応付けられている。また、「ノードの説明」欄には、構造体メンバ：Ｍｅｍｂｅｒ１が、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーにおいて、子ノードに相当することが示されている。
【０１５６】
同様に、図７の（Ａ）の第２変数定義テーブル１３１Ｂにおいて、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの構造体メンバ：Ｍｅｍｂｅｒ２は、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーの子ノードとして格納されている。そして、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの構造体メンバ：Ｍｅｍｂｅｒ２に対する要素コメント：「ロボット起動条件」は、上記ツリーにおいて構造体メンバ：Ｍｅｍｂｅｒ２を示す子ノードに対応付けられている。また、「ノードの説明」欄には、構造体メンバ：Ｍｅｍｂｅｒ２が、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーにおいて、子ノードに相当することが示されている。
【０１５７】
（出力リストにおける要素コメント例２：構造体メンバに対する要素コメント）
図７の（Ｂ）には、図７の（Ａ）に例示した構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの各構造体メンバに対する要素コメントが出力リストＬ１に出力された例が示されている。例えば、エキスポート処理の実行を指示するユーザ操作において、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎが選択されると、開発支援装置１０は、以下の処理を実行する。
【０１５８】
すなわち、第１取得部１２１は、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの名称である「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」を特定する。第２取得部１２２は、第２変数定義テーブル１３１Ｂを参照して、第１変数を先祖ノードとするツリーを辿り、第１変数を先祖ノードとするツリーの子孫ノードに相当する複数の第２変数（例えば、構造体メンバＭｅｍｂｅｒ１、Ｍｅｍｂｅｒ２）の各々を特定する。そして、出力部１２０は、第１変数に対して、複数の第２変数（例えば、構造体メンバＭｅｍｂｅｒ１、Ｍｅｍｂｅｒ２）の各々を識別するための識別情報（つまり、Ｍｅｍｂｅｒ１またはＭｅｍｂｅｒ２）を取得する。識別情報は、パス情報を含んでいる。
【０１５９】
図７に示す例では、変数名が「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」である変数は構造体型変数であり、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの構造体メンバは、構造体メンバＭｅｍｂｅｒ１およびＭｅｍｂｅｒ２である。前述の通り、第２取得部１２２は、識別情報（特に、パス情報）において、構造体型変数と構造体メンバとの間の親子関係を、ピリオド（．）を用いて示す。
【０１６０】
第２取得部１２２は、第２変数定義テーブル１３１Ｂを参照して、構造体変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎと、構造体メンバＭｅｍｂｅｒ１との間には親子関係が１つ存在し、その親子関係は、構造体型変数と構造体メンバとの間の親子関係であることを特定する。また、第２取得部１２２は、構造体型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーにおいて、兄弟ノードに相当する他の構造体メンバ（Ｍｅｍｂｅｒ２）から、構造体メンバＭｅｍｂｅｒ１を識別する情報として、「Ｍｅｍｂｅｒ１」を特定する。したがって、第２取得部１２２は、構造体メンバＭｅｍｂｅｒ１について、パス情報を含む識別情報として、「．Ｍｅｍｂｅｒ１」を生成する。同様に、第２取得部１２２は、構造体メンバＭｅｍｂｅｒ２について、パス情報を含む識別情報として、「．Ｍｅｍｂｅｒ２」を生成する。
【０１６１】
「．Ｍｅｍｂｅｒ１」とのパス情報は、そのパス情報に対応する要素変数が、構造体型変数である第１変数の構造体メンバであり、第１変数の他の構造体メンバから「Ｍｅｍｂｅｒ１」によって識別されることを示している。同様に、「．Ｍｅｍｂｅｒ２」とのパス情報は、そのパス情報に対応する要素変数が、構造体型変数である第１変数の構造体メンバであり、第１変数の他の構造体メンバから「Ｍｅｍｂｅｒ２」によって識別されることを示している。
【０１６２】
文字列生成部１２４は、構造体メンバＭｅｍｂｅｒ１について、第１変数の名称（ｓｔａｒｔＣｏｎｄｉｔｉｏｎ）と、構造体メンバＭｅｍｂｅｒ１の識別情報（．Ｍｅｍｂｅｒ１）と、を含む、以下の１つの文字列を生成する。すなわち、文字列生成部１２４は、構造体メンバＭｅｍｂｅｒ１について、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ．Ｍｅｍｂｅｒ１」という１つの文字列を生成する。同様に、文字列生成部１２４は、構造体メンバＭｅｍｂｅｒ２について、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ．Ｍｅｍｂｅｒ２」という１つの文字列を生成する。
【０１６３】
出力部１２０（特に、第３取得部１２３）は、第２変数定義テーブル１３１Ｂを参照して、構造体メンバＭｅｍｂｅｒ１に対する要素コメント：コンテナ起動条件を取得し、また、構造体メンバＭｅｍｂｅｒ２に対する要素コメント：ロボット起動条件を取得する。
【０１６４】
そして、出力部１２０は、図７の（Ｂ）に例示するように、構造体メンバＭｅｍｂｅｒ１に対する要素コメント：コンテナ起動条件を、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ．Ｍｅｍｂｅｒ１」とのコメント名称に対応付けて、出力リストＬ１に出力する。同様に、出力部１２０は、構造体メンバＭｅｍｂｅｒ２に対する要素コメント：ロボット起動条件を、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ．Ｍｅｍｂｅｒ２」とのコメント名称に対応付けて、出力リストＬ１に出力する。
【０１６５】
（要素変数のデータ形式例３：配列型変数の配列要素である構造体変数のメンバ）
図８は、図６および図７と同様に、第２変数定義テーブル１３１Ｂに格納されている要素変数の一例を示している。具体的には、図８には、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」という名称の、構造体型変数を配列要素とする配列型変数について、各配列要素および各構造体メンバに対する要素コメント等が、第２変数定義テーブル１３１Ｂに格納されている例が示されている。図８に示す例において、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの各配列要素（すなわち、［０］、［１］）は構造体型変数であり、構造体型変数である各配列要素の構造体メンバは、Ｍｅｍｂｅｒ１およびＭｅｍｂｅｒ２である。
【０１６６】
開発支援装置１０は、先祖ノードに相当する配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎに対して、構造体型変数［０］および［１］が子ノードとして、構造体メンバＭｅｍｂｅｒ１およびＭｅｍｂｅｒ２が孫ノードとして、階層化されたツリーを構成する。
【０１６７】
また、開発支援装置１０は、「０、１、Ｍｅｍｂｅｒ１、および、Ｍｅｍｂｅｒ２」の少なくとも１つを識別情報として用いて、複数の要素変数の各々を、上記ツリーの同階層の兄弟ノードに相当する他の要素変数から識別する。例えば、開発支援装置１０は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素［０］および［１］の各々を、「０」または「１」を識別情報として用いて、区別する。また、開発支援装置１０は、構造体型変数［０］の構造体メンバＭｅｍｂｅｒ１およびＭｅｍｂｅｒ２の各々を、「Ｍｅｍｂｅｒ１」または「Ｍｅｍｂｅｒ２」を識別情報として用いて、区別する。さらに、開発支援装置１０は、上記ツリーの４つの孫ノードの各々に相当する要素変数の各々を、「０」または「１」と、「Ｍｅｍｂｅｒ１」または「Ｍｅｍｂｅｒ２」と、を組み合わせた識別情報を用いて、区別する。
【０１６８】
すなわち、図８に示すように、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの各配列要素（すなわち、［０］、［１］）は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーの子ノードとして、第２変数定義テーブル１３１Ｂに格納されている。第２変数定義テーブル１３１Ｂにおいて、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの各配列要素は、配列型変数に対して各配列要素を識別する情報（図８に示す例では、「０」、「１」）を用いて識別されている。以下の説明においては、構造体型変数を配列要素とする配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素である、配列要素［０］および［１］の各々を、構造体型変数［０］および［１］と称することがある。
【０１６９】
構造体型変数［０］の構造体メンバ（すなわち、Ｍｅｍｂｅｒ１およびＭｅｍｂｅｒ２）は、構造体型変数［０］を親ノードとするツリーの子ノードとして、第２変数定義テーブル１３１Ｂに格納されている。言い換えれば、構造体型変数［０］の各構造体メンバは、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを先祖ノードとするツリーの孫ノードとして、第２変数定義テーブル１３１Ｂに格納されている。第２変数定義テーブル１３１Ｂにおいて、構造体型変数［０］の各構造体メンバは、構造体型変数［０］に対して各構造体メンバを識別する情報（図８の例では、「Ｍｅｍｂｅｒ１」または「Ｍｅｍｂｅｒ２」）を用いて、識別されている。
【０１７０】
同様に、構造体型変数［１］の構造体メンバ（すなわち、Ｍｅｍｂｅｒ１およびＭｅｍｂｅｒ２）は、構造体型変数［１］を親ノードとするツリーの子ノードとして、第２変数定義テーブル１３１Ｂに格納されている。言い換えれば、構造体型変数［１］の各構造体メンバは、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを先祖ノードとするツリーの孫ノードとして、第２変数定義テーブル１３１Ｂに格納されている。第２変数定義テーブル１３１Ｂにおいて、構造体型変数［１］の各構造体メンバは、構造体型変数［１］に対して各構造体メンバを識別する情報（図８の例では、「Ｍｅｍｂｅｒ１」または「Ｍｅｍｂｅｒ２」）を用いて、識別されている。
【０１７１】
配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎの配列要素：［０］に対する要素コメント：「工程Ａの起動条件」は、上記ツリーにおいて配列要素：［０］を示す子ノードに対応付けられている。また、「ノードの説明」欄には、配列要素：［０］が、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーにおいて、子ノード０に相当することが示されている。
【０１７２】
同様に、図８の第２変数定義テーブル１３１Ｂにおいて、構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１は、構造体型変数［０］を親ノードとするツリーの子ノードとして格納されている。つまり、図８の第２変数定義テーブル１３１Ｂにおいて、構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを先祖ノードとするツリーの孫ノードとして格納されている。そして、構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１に対する要素コメント：「コンテナ起動条件（工程Ａ）」は、上記ツリーにおいて構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１を示すノードに対応付けられている。また、「ノードの説明」欄には、構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１が、配列要素：［０］である構造体型変数を親ノードとするツリーにおいて、子ノードに相当することが示されている。
【０１７３】
（出力リストにおける要素コメント例３：配列型変数の配列要素である構造体変数のメンバ等）
図９は、出力リストＬ１における要素変数についての要素コメントの一例を示している。特に、図９には、図８に例示した「構造体型変数を配列要素とする、『ｓｔａｒｔＣｏｎｄｉｔｉｏｎ』という名称の配列型変数（第１変数）」が含む複数の要素変数の各々に対する要素コメントが出力リストＬ１に出力された例が示されている。例えば、エキスポート処理の実行を指示するユーザ操作において「構造体型変数を配列要素とする、『ｓｔａｒｔＣｏｎｄｉｔｉｏｎ』という名称の配列型変数（第１変数）」が選択されると、開発支援装置１０は、以下の処理を実行する。
【０１７４】
すなわち、第１取得部１２１は、第１変数の名称として、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」を特定する。第２取得部１２２は、第２変数定義テーブル１３１Ｂを参照して、第１変数を先祖ノードとするツリーを辿り、第１変数を先祖ノードとするツリーの子孫ノードに相当する複数の第２変数の各々を特定する。例えば、第２取得部１２２は、配列要素［０］および［１］、構造体型変数［０］の構造体メンバＭｅｍｂｅｒ１およびＭｅｍｂｅｒ２、さらに、構造体型変数［１］の構造体メンバＭｅｍｂｅｒ１およびＭｅｍｂｅｒ２の各々を特定する。第２取得部１２２は、それら複数の第２変数の各々を識別するための識別情報（それら複数の第２変数の各々のパス情報を含む）を取得する。
【０１７５】
例えば、第２取得部１２２は、第２変数定義テーブル１３１Ｂを参照して、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎと、配列要素［０］との間には親子関係が１つ存在し、その親子関係は、配列型変数と配列要素との間の親子関係であることを特定する。また、第２取得部１２２は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーにおいて、兄弟ノードに相当する他の配列要素（［１］）から、配列要素［０］を識別する情報として、「１」を特定する。したがって、第２取得部１２２は、配列要素［０］について、パス情報を含む識別情報として、「［０］」を生成する。同様に、第２取得部１２２は、配列要素［１］について、パス情報を含む識別情報として、「［１］」を生成する。また、第２取得部１２２は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーにおいて、兄弟ノードに相当する他の配列要素（［１］）から、配列要素［０］を識別する情報として、「１」を特定する。したがって、第２取得部１２２は、配列要素［０］について、パス情報を含む識別情報として、「［０］」を生成する。「［０］」とのパス情報は、そのパス情報に対応する要素変数が、配列型変数である第１変数の配列要素であり、第１変数の他の配列要素から「０」によって識別されることを示す。
【０１７６】
同様に、第２取得部１２２は、第２変数定義テーブル１３１Ｂを参照して、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎと、構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１との間には、２つの親子関係が存在することを特定する。
【０１７７】
すなわち、第２取得部１２２は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとし、構造体型変数［０］を子ノードとする第１の親子関係が存在し、第１の親子関係は、配列型変数と配列要素との間の親子関係であることを特定する。そして、第２取得部１２２は、配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎを親ノードとするツリーにおいて、兄弟ノードに相当する他の配列要素（［１］）から、配列要素［０］を識別する情報として、「１」を特定する。したがって、第２取得部１２２は、配列要素［０］について、パス情報を含む識別情報として、「［０］」を生成する。
【０１７８】
また、第２取得部１２２は、構造体型変数［０］を親ノードとし、構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１を子ノードとする第２の親子関係が存在し、第２の親子関係は、構造体型変数と構造体メンバとの間の親子関係であることを特定する。そして、第２取得部１２２は、構造体型変数［０］を親ノードとするツリーにおいて、兄弟ノードに相当する他の構造体メンバ（Ｍｅｍｂｅｒ２）から、Ｍｅｍｂｅｒ１を識別する情報として、「Ｍｅｍｂｅｒ１」を特定する。したがって、第２取得部１２２は、配列要素［０］について、パス情報を含む識別情報として、「．Ｍｅｍｂｅｒ１」を生成する。
【０１７９】
したがって、第２取得部１２２は、先祖ノードとしての配列型変数：ｓｔａｒｔＣｏｎｄｉｔｉｏｎに対して、構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１を他の兄弟ノードから識別する識別情報として、以下の文字列を生成する。すなわち、第２取得部１２２は、構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１の識別情報として、「［０］．Ｍｅｍｂｅｒ１」を生成する。
【０１８０】
「［０］．Ｍｅｍｂｅｒ１」とのパス情報は、そのパス情報に対応する要素変数が、「構造体型変数を配列要素とする第１変数」の配列要素である配列要素［０］の、つまり、構造体型変数である配列要素［０］の、構造体メンバであることを示す。また、「［０］．Ｍｅｍｂｅｒ１」とのパス情報は、そのパス情報に対応する要素変数が、第１変数を先祖ノードとするツリーの、他の兄弟ノードから、「０」と「Ｍｅｍｂｅｒ１」とをこの順に並べた識別情報によって識別されることを示す。
【０１８１】
文字列生成部１２４は、配列要素［０］について、第１変数の名称である「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」と、配列要素［０］の識別情報（［０］）と、を含む１つの文字列（つまり、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［０］」）を生成する。また、文字列生成部１２４は、構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１について、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」と、構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１の識別情報（［０］．Ｍｅｍｂｅｒ１）と、を含む以下の文字列を生成する。
すなわち、文字列生成部１２４は、構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１について、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［０］．Ｍｅｍｂｅｒ１」を生成する。
【０１８２】
第３取得部１２３は、第２変数定義テーブル１３１Ｂを参照して、配列要素［０］に対する要素コメント：工程Ａの起動条件を取得する。同様に、第３取得部１２３は、第２変数定義テーブル１３１Ｂを参照して、構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１に対する要素コメント：コンテナ起動条件（工程Ａ）を取得する。
【０１８３】
そして、出力部１２０は、図９に例示するように、配列要素［０］に対する要素コメント：工程Ａの起動条件を、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［０］」とのコメント名称に対応付けて、出力リストＬ１に出力する。同様に、出力部１２０は、構造体型変数［０］の構造体メンバ：Ｍｅｍｂｅｒ１に対する要素コメント：コンテナ起動条件（工程Ａ）を、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［０］．Ｍｅｍｂｅｒ１」とのコメント名称に対応付けて、出力リストＬ１に出力する。
【０１８４】
（１つの出力リストに納める要素コメント数の制限）
開発支援装置１０（特に、出力部１２０）は、１つの出力リストＬ１に出力する要素コメントの数（つまり、要素コメントを出力する要素変数の数）を制約することによって、出力リストＬ１のデータサイズが大きくなりすぎるのを回避する。
【０１８５】
例えば、出力部１２０は、１つの出力リストＬ１に出力する要素コメントの数について、予め最大数（所定値）を設定しておく。出力部１２０は、出力予定の要素コメントの数が最大数を超えると判定すると、出力予定の要素コメントを、複数の出力リストＬ１（例えば、出力リストＬ１（１）、Ｌ１（２）、Ｌ１（３）、・・・Ｌ１（ｎ））に分けて出力する。
【０１８６】
すなわち、開発支援装置１０において、前記第２変数の総数が所定値（最大値）より大きいと、出力部１２０は、前記ファイル（出力リストＬ１）を２以上に分割して出力してもよい。
【０１８７】
前記の構成によれば、開発支援装置１０は、前記第２変数の総数が前記所定値より大きいと、前記ファイルを２以上に分割して出力する。つまり、開発支援装置１０は、前記第２変数の総数が前記所定値より大きくなって、前記ファイルのデータサイズが大きくなり過ぎると判断すると、前記ファイルを２以上に分割して出力する。
【０１８８】
例えば、開発支援装置１０は、前記第１変数が共通である前記複数の第２変数の総数が前記所定値より大きいと、前記複数の第２変数の各々に付された要素コメントを、２つ以上の前記ファイルに分けて出力する。また、例えば、開発支援装置１０は、複数の前記第１変数の各々を先祖ノードとする前記複数の第２変数の総数が前記所定値より大きいと、前記複数の第２変数の各々に付された要素コメントを、２つ以上の前記ファイルに分けて出力する。
【０１８９】
ここで、前記第２変数の総数が増えれば、当然、前記ファイルのデータサイズも大きくなり、データサイズが大きくなり過ぎると、前記ファイルを開いて内容を確認したり、前記ファイルを編集したりするのが困難になることがある。
【０１９０】
したがって、開発支援装置１０は、前記ファイルを２以上に分割することによって、前記ファイルのデータサイズが大きくなり過ぎて前記ファイルのユーザ利便性が低下するという事態が発生するのを回避することができるとの効果を奏する。
【０１９１】
さらに、出力部１２０は、前記第１変数が共通である前記複数の第２変数の各々に対する要素コメントを全て、１つの前記ファイルに出力してもよい。
【０１９２】
前記の構成によれば、開発支援装置１０は、前記第１変数が共通である前記複数の第２変数の各々に対する要素コメントを全て、１つの前記ファイルに出力する。したがって、開発支援装置１０は、前記第１変数が共通である前記複数の第２変数の各々に対する要素コメントが複数のファイルに分かれてしまい、ユーザにとって視認性および利便性が低下するのを回避することができるとの効果を奏する。
【０１９３】
出力部１２０は、先祖ノードに相当する変数（第１変数）が共通である複数の要素変数の各々に対する要素コメントの数が最大行数以下である場合、それら「第１変数が共通である複数の要素変数の各々に対する要素コメント」を、１つの出力リストＬ１に出力する。つまり、出力部１２０は、先祖ノードに相当する変数が共通である複数の要素変数の各々に対する要素コメントは全て、１つの出力リストＬ１に収まるようにし、複数の出力リストＬ１に分割されないようにする。ただし、先祖ノードに相当する変数が共通である複数の要素変数の各々に対する要素コメントの数が最大数を超える場合、出力部１２０は、それら「第１変数が共通である複数の要素変数の各々に対する要素コメント」を、複数の出力リストＬ１に分けて出力する。
【０１９４】
例えば、出力部１２０は、複数の要素変数の各々に対する要素コメントをＬ１（ｍ）に出力する際、最大数から「出力リストＬ１（ｍ）に出力済の要素コメントの数」を減じた「残り数」を、出力リストＬ１（ｍ）について算出する。「ｍ」は「１」以上の自然数である。出力部１２０は、「出力リストＬ１（ｍ）に出力予定の要素コメントの数」と、出力リストＬ１（ｍ）について算出した「残り数」とを比較する。出力部１２０は、「出力リストＬ１（ｍ）に出力予定の要素コメントの数」よりも「残り数」の方が少ないと判定すると、出力予定の要素コメントの出力先のファイルを、出力リストＬ１（ｍ）から出力リストＬ１（ｍ＋１）に切り替える。
【０１９５】
（インポート処理の概要）
開発支援装置１０は、入力リストＬ２における各「コメント名称」の内容と、複数の要素変数の各々のインスタンス（ノードインスタンス）を示す情報と、を対応付けたマップ情報１３２を、予め記憶部１３０に格納している。入力リストＬ２における「コメント名称」には、出力リストＬ１における「コメント名称」と同様に、子孫ノードに相当する複数の要素変数の各々のパス情報（先祖ノードに相当する第１変数の名称を含む）が記載されている。
【０１９６】
入力リストＬ２における各「コメント名称」の記載規則は、出力リストＬ１における「コメント名称」の記載規則と同様である。すなわち、「コメント名称」は、先祖ノードに相当する変数（第１変数）の名称と、第１変数に対して複数の第２変数の各々を識別するための識別情報とを含む。識別情報は、「第１変数を先祖ノードとするツリーにおける、第１変数から複数の第２変数の各々までのパスを示すパス情報」を含む。パス情報は、第１変数を先祖ノードとするツリーにおいて、第１変数から複数の第２変数の各々までの間に存在する、１つ以上の親子関係の各々を特定する情報である。パス情報において、親ノードに相当する変数が配列型変数であって、子ノードに相当する変数が前記配列型変数の要素である場合、親子関係はカッコ（［］）を用いて示される。また、パス情報において、親ノードに相当する変数が構造体型変数であって、子ノードに相当する変数が前記構造体型変数のメンバである場合、親子関係は、ピリオド（．）を用いて示される。
【０１９７】
入力リストＬ２における「複数の要素変数の各々のインスタンスを示す情報」とは、「複数の要素変数の各々を子孫ノードとするツリーにおいて、複数の子孫ノードの各々のインスタンス」を示す情報である。「複数の要素変数の各々のインスタンスを示す情報」は、「子孫ノードに相当する複数の要素変数（第２変数）と、先祖ノードに相当する変数（第１変数）との関係を示す情報」ということもできる。
【０１９８】
これまで説明したように、開発支援装置１０は、入力部１４０と、コメント更新部１５０と、をさらに備えてもよい。入力部１４０は、前記第１変数の名称と前記識別情報とに対応付けられて前記第２変数の各々に対する要素コメントが記載された、テキストエディタおよび表計算ソフトの少なくとも一方において編集可能なデータ形式のファイル（入力リストＬ２）のインポートを指示するユーザ操作が操作受付部１１０（特に、入力指示受付部１１２）によって受け付けられると、インポートを指示された前記ファイルをインポートする。コメント更新部１５０は、入力部１４０によってインポートされた前記ファイルにしたがって、記憶部１３０に格納された前記第２変数の各々に対する要素コメントを更新する。
【０１９９】
前記の構成によれば、開発支援装置１０は、前記ユーザ操作にしたがって、前記第１変数の名称と前記識別情報とに対応付けられて前記第２変数の各々に対する要素コメントが記載された入力リストＬ２をインポートする。そして、開発支援装置１０は、インポートした入力リストＬ２にしたがって、記憶部１３０に格納された前記第２変数の各々に対する要素コメントを更新する。特に、開発支援装置１０は、ユーザが容易に内容を確認し、かつ、容易に内容を編集できる形式の入力リストＬ２に記載された、前記複数の第２変数の各々に対する要素コメントをインポートして、記憶部１３０に格納された前記第２変数の各々に対する要素コメントを更新する。
【０２００】
したがって、開発支援装置１０は、自装置が用いる前記第２変数の各々に対する要素コメントを、ユーザが、入力リストＬ２を用いて、容易に管理し、かつ、容易に編集できるようにすることができるとの効果を奏する。
【０２０１】
また、各々、複数の言語の各々で記載された複数の入力リストＬ２を準備することによって、開発支援装置１０は、インポートする入力リストＬ２を変更することで、自装置が用いる前記第２変数の各々に対する要素コメントの言語を、容易に切り替えることができる。
【０２０２】
ユーザは、例えば、或る第２変数に対する要素コメントを、英語で記載した入力リストＬ２（１）、日本語で記載した入力リストＬ２（２）、中国語で記載した入力リストＬ２（３）、および、スペイン語で記載した入力リストＬ２（４）を、予め準備しておく。開発支援装置１０は、英語で記載した入力リストＬ２（１）をインポートすることにより、前記第２変数に対する英語の要素コメントを用いることができ、また、日本語で記載した入力リストＬ２（２）をインポートすることにより、前記第２変数に対する日本語の要素コメントを用いることができる。同様に、開発支援装置１０は、中国語で記載した入力リストＬ２（３）をインポートすることにより、前記第２変数に対する中国語の要素コメントを用いることができ、また、スペイン語で記載した入力リストＬ２（４）をインポートすることにより、前記第２変数に対するスペイン語の要素コメントを用いることができる。
【０２０３】
すなわち、開発支援装置１０は、自装置において前記第２変数に対する何語の要素コメントを用いるか（前述の例でいえば、英語、日本語、中国語、および、スペイン語のいずれの要素コメントを用いるか）を容易に切り替えることができるとの効果を奏する。
【０２０４】
（インポート処理の詳細）
図１０は、開発支援装置が１０実行する入力処理（インポート）の全体概要を示す図である。入力指示受付部１１２は、インポート処理の実行を指示するユーザ操作を受け付け、すなわち、入力リストＬ２の入力処理の実行を指示するユーザ操作を受け付ける（入力指示取得処理、Ｓ２１０）。入力リストＬ２において、要素変数である対象変数に対するコメント（要素コメント）は、コメント名称に対応付けられている。コメント名称は、（ｉ）対象変数の先祖ノードに相当する変数（第１変数）の名称と、（ｉｉ）第１変数を先祖ノードとするツリーにおいて、他の子孫ノードに相当する要素変数から対象変数を識別するための識別情報と、を含む。
【０２０５】
入力部１４０が、入力リストＬ２をインポートすると（インポート処理、Ｓ２２０）、コメント更新部１５０（特に、文字列解析部１５１）は、入力リストＬ２のコメント名称から、第１変数の名称を抽出し、抽出した第１変数の名称を第１特定部１５２に通知する。第１特定部１５２は、入力リストＬ２のコメント名称から抽出された「第１変数の名称」から、第１変数を特定する（第１変数特定処理、Ｓ２３０）。第２特定部１５３は、入力リストＬ２のコメント名称から抽出された「識別情報」から、対象変数が、第１変数の子孫ノードに相当する変数のうち、どの変数であるのかを特定する（第２変数特定処理、Ｓ２４０）。例えば、第２特定部１５３は、マップ情報１３２を参照して、入力リストＬ２の「コメント名称」に対応する「ノードインスタンス」を取得し、取得した「ノードインスタンス」を用いて、対象変数を第２変数定義テーブル１３１Ｂにおいて特定する。また、第３特定部１５４は、入力リストＬ２においてコメント名称に対応付けられているコメント（要素コメント）を特定し、つまり、コメント名称に対応する要素コメントを、入力リストＬ２から取得する。
【０２０６】
コメント更新部１５０は、第２変数特定処理において特定した対象変数の、第２変数定義テーブル１３１Ｂにおけるコメントを、入力リストＬ２における対象変数に対するコメントによって更新する（コメント更新処置、Ｓ２５０）。つまり、コメント更新部１５０は、第２変数特定処理において特定した対象変数の、第２変数定義テーブル１３１Ｂにおける要素コメントを、第３特定部１５４が入力リストＬ２から取得した要素コメントによって、更新する。
【０２０７】
（マップ情報の例）
（第１変数を先祖（親）ノードとするツリーの、子ノードに相当する変数について）
図１１は、マップ情報１３２の一例を示す図である。前述の通り、マップ情報１３２は、「コメント名称」と、「インスタンス」と、を対応付けている。
【０２０８】
例えば、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［０］」というコメント名称は、先祖ノードに相当する変数（第１変数）の名称である「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」と、第１変数に対して複数の第２変数の各々を識別するための識別情報である「［０］」とを含む。「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」の直後の「［０］」は、以下の情報を示している。第１に、そのコメント名称に対応する要素変数は、変数名が「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」である変数（第１変数）を先祖ノードとするツリーの、子ノードに相当することを示している。第２に、そのコメント名称に対応する要素変数は、第１変数の、配列要素である（つまり、第１変数は配列型の変数である）ことを示している。第３に、そのコメント名称に対応する要素変数を、第１変数を親ノードとするツリーの他の子ノードに相当する変数（他の配列要素）から識別するため識別情報は、「０」であることを示している。
【０２０９】
「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［０］」というコメント名称が示すこれらの情報は、マップ情報１３２において、このコメント名称に対応付けられている「［０］のノード」というノードインスタンスが示す情報と同様である。すなわち、「［０］のノード」というノードインスタンスは、或る要素変数が、或る第１変数の子ノードに相当し、特に、その或る第１変数の配列要素であり、その或る第１変数の他の配列要素から「０」という識別情報によって識別されることを示している。
【０２１０】
（第１変数を先祖ノードとするツリーの、孫ノードに相当する変数について）
同様に、例えば「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［１］.Ｍｅｍｂｅｒ２」というコメント名称は、先祖ノードに相当する変数（第１変数）の名称である「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」を含んでいる。また、「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［１］.Ｍｅｍｂｅｒ２」というコメント名称は、そのコメント名称に対応する要素変数を、前記第１変数を先祖ノードとする他の子孫ノードに相当する変数から識別する識別情報として、「［１］.Ｍｅｍｂｅｒ２」を含む。
【０２１１】
「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」の直後の「［１］.Ｍｅｍｂｅｒ２」は、以下の情報を示している。第１に、そのコメント名称に対応する要素変数は、変数名が「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ」である変数（第１変数）を先祖ノードとするツリーの、孫ノードに相当することを示している。第２に、そのコメント名称に対応する要素変数は、第１変数の配列要素［１］である構造体型変数の、構造体メンバである（つまり、第１変数は、構造体型変数を配列要素とする、配列型の変数である）ことを示している。
【０２１２】
第３に、そのコメント名称に対応する要素変数を、「第１変数を先祖ノードとするツリーの、他の孫ノードに相当する変数」から識別するため識別情報は、「１」および「Ｍｅｍｂｅｒ２」であることを示している。
【０２１３】
具体的には、そのコメント名称に対応する要素変数は、「第１変数の配列要素［１］である構造体型変数の、構造体メンバである」点で、「第１変数の配列要素［０］である構造体型変数の、構造体メンバ」から識別される。つまり、そのコメント名称に対応する要素変数は、第１変数の配列要素［１］を親ノードとする点で、「第１変数の配列要素［０］を親ノードとするツリーの、子ノードに相当する変数」から識別される。
【０２１４】
また、そのコメント名称に対応する要素変数は、「第１変数の配列要素［１］である構造体型変数の、Ｍｅｍｂｅｒ２である」点で、「第１変数の配列要素［１］である構造体型変数の、他の構造体メンバ（例えば、Ｍｅｍｂｅｒ１）」から識別される。
【０２１５】
「ｓｔａｒｔＣｏｎｄｉｔｉｏｎ［１］.Ｍｅｍｂｅｒ２」というコメント名称が示すこれらの情報は、マップ情報１３２において、このコメント名称に対応付けられている「［１］−Ｍｅｍｂｅｒ２のノード」というノードインスタンスが示す情報と同様である。「［１］−Ｍｅｍｂｅｒ２のノード」というノードインスタンスは、以下の情報を示している。すなわち、「［１］−Ｍｅｍｂｅｒ２のノード」というノードインスタンスは、或る要素変数が、或る第１変数の孫ノードに相当し、特に、その或る第１変数の配列要素［１］である構造体型変数の、構造体メンバであることを示している。また、「［１］−Ｍｅｍｂｅｒ２のノード」というノードインスタンスは、その或る要素変数は、「第１変数を先祖ノードとするツリーの、他の孫ノードに相当する変数」から、「１」および「Ｍｅｍｂｅｒ２」という識別情報によって識別されることを示している。
【０２１６】
前述の通り、第２特定部１５３が、入力リストＬ２における要素変数の各々を特定するのに際して、マップ情報１３２を参照することは必須ではない。第２特定部１５３は、マップ情報１３２を参照せずに、入力リストＬ２の「コメント名称」から直接、第１変数を先祖ノードとするツリーにおいて、入力リストＬ２に要素コメントが格納された要素変数を識別するための識別情報を取得してもよい。
【０２１７】
マップ情報１３２における「ノードインスタンス」は、第２変数定義テーブル１３１Ｂにおける「ノードの説明」に対応付けられていてもよい。
【０２１８】
§４．変形例
これまで、第１変数が配列型変数または構造体型変数であり、第２変数が配列要素または構造体メンバである例を説明してきた。しかしながら、第１変数が配列型変数または構造体型変数であり、第２変数が配列要素または構造体メンバであることは必須ではない。第２変数は、第１変数を先祖ノードとするツリーの子孫ノードとして表すことのできる変数であればよい。
【０２１９】
〔ソフトウェアによる実現例〕
開発支援装置１０の機能ブロック（具体的には、出力部１２０、入力部１４０、および、コメント更新部１５０）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（CenＴｒal Processing Unit）を用いてソフトウェアによって実現してもよい。
【０２２０】
後者の場合、開発支援装置１０は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）等を備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路等を用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０２２１】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【０２２２】
１０  開発支援装置
２０  ＰＬＣ（制御装置）
１１０  操作受付部
１２０  出力部
１３０  記憶部
１４０  入力部
１５０  コメント更新部
Ｓ１１０  出力指示取得処理（操作受付ステップ）
Ｓ１６０  エキスポート処理（出力ステップ）
【図１】
2020166414.tif 000003
【図２】
2020166414.tif 000004
【図３】
2020166414.tif 000005
【図４】
2020166414.tif 000006
【図５】
2020166414.tif 000007
【図６】
2020166414.tif 000008
【図７】
2020166414.tif 000009
【図８】
2020166414.tif 000010
【図９】
2020166414.tif 000011
【図１０】
2020166414.tif 000012
【図１１】
2020166414.tif 000013
【図１２】
2020166414.tif 000014