(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-05
(45)【発行日】2024-11-13
(54)【発明の名称】ビジュアルプログラミングエディタのプログラム、コンピューターおよび方法
(51)【国際特許分類】
G06F 8/34 20180101AFI20241106BHJP
【FI】
G06F8/34
(21)【出願番号】P 2020112588
(22)【出願日】2020-06-30
【審査請求日】2023-03-01
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】荒井 航
【審査官】渡辺 順哉
(56)【参考文献】
【文献】国際公開第2019/156706(WO,A1)
【文献】特開2009-193181(JP,A)
【文献】特開2007-065910(JP,A)
【文献】特開平08-339208(JP,A)
【文献】特開2007-206798(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00-8/77
G06F 9/44-9/445
(57)【特許請求の範囲】
【請求項1】
1つ以上のプロセッサに、
操作を受け付けたことに基づいて、1または複数のプログラム部品と、1または複数のコメントとをビジュアルプログラミングエディタの画面上に配置するステップと、
前記1または複数のコメントに含まれる特定のコメントと、前記1または複数のプログラム部品に含まれる特定のプログラム部品との位置関係に基づいて、前記特定のコメントを前記特定のプログラム部品に紐付けするか否かを判定するステップと、
前記特定のコメントを前記特定のプログラム部品に紐付けすると判定したことに基づいて、前記特定のコメントのテキスト
を前記特定のプログラム部品のテキスト
の直前の行に配置したテキストベースのコードを生成するステップとを実行させる、プログラム。
【請求項2】
前記特定のコメントを前記特定のプログラム部品に紐付けするか否かを判定するステップは、
前記特定のコメントから前記特定のプログラム部品までの距離が予め定められた閾値以内であるか否かを判定するステップと、
前記距離が前記閾値以下であることに基づいて、前記特定のコメントおよび前記特定のプログラム部品を紐付けるステップとを含む、請求項1に記載のプログラム。
【請求項3】
前記1または複数のプログラム部品のいずれにも紐付けされていないコメントがあることに基づいて、前記テキストベースのコード内において、前記1または複数のプログラム部品のいずれにも紐付けされていないコメントのテキストを前記テキストベースのコードの先頭に配置するステップをさらに前記1つ以上のプロセッサに実行させる、請求項2に記載のプログラム。
【請求項4】
前記特定のコメントを前記特定のプログラム部品の一定範囲内に近づける操作を受け付けたこと基づいて、前記閾値の範囲を表示するステップをさらに前記1つ以上のプロセッサに実行させる、請求項2または3に記載のプログラム。
【請求項5】
前記1または複数のプログラム部品と、前記1または複数のコメントとを前記ビジュアルプログラミングエディタの画面上に配置するステップは、第1のプログラム部品と、第2のプログラム部品と、前記特定のコメントとを配置するステップを含み、
前記プログラムは、前記特定のコメントと前記第1のプログラム部品および前記第2のプログラム部品の各々との距離が前記閾値以下であることに基づいて、前記特定のコメントを前記第1のプログラム部品および前記第2のプログラム部品のうち距離が近い方のプログラム部品と紐付けるステップをさらに前記1つ以上のプロセッサに実行させる、請求項2~4のいずれかに記載のプログラム。
【請求項6】
前記第1のプログラム部品および前記第2のプログラム部品が隣接して配置されている場合、前記第1のプログラム部品および前記第2のプログラム部品のいずれからも近い一定範囲内を前記特定のコメントと、前記第1のプログラム部品および前記第2のプログラム部品の各々との紐付けを行わない無効範囲に設定するステップをさらに前記1つ以上のプロセッサに実行させる、請求項5に記載のプログラム。
【請求項7】
前記1または複数のプログラム部品と、前記1または複数のコメントとを前記ビジュアルプログラミングエディタの画面上に配置するステップは、前記特定のプログラム部品と、第1のコメントと、第2のコメントとを配置するステップを含み、
前記プログラムは、前記第1のコメントおよび前記第2のコメントのいずれもが前記特定のプログラム部品に紐付けられていることに基づいて、前記第1のコメントおよび前記第2のコメントの各々から前記特定のプログラム部品までの距離に基づいて、前記テキストベースのコード内における前記第1のコメントおよび前記第2のコメントの表示順序を決定するステップをさらに含む、請求項2~6のいずれかに記載のプログラム。
【請求項8】
紐付けられた前記特定のコメントおよび前記特定のプログラム部品の間の距離を前記閾値よりも離す操作を受け付けたことに基づいて、前記特定のコメントおよび前記特定のプログラム部品の紐付けを解除するステップをさらに前記1つ以上のプロセッサに実行させる、請求項2~7のいずれかに記載のプログラム。
【請求項9】
前記特定のプログラム部品に紐付けられた前記特定のコメントがダブルクリックされたことに基づいて、前記特定のコメントおよび前記特定のプログラム部品の紐付けを解除し、前記特定のコメントおよび前記特定のプログラム部品の間の距離を前記閾値よりも離すステップをさらに前記1つ以上のプロセッサに実行させる、請求項2~8のいずれかに記載のプログラム。
【請求項10】
手動での紐付け制御命令の入力を受け付けたことに基づいて、前記特定のコメントおよび前記特定のプログラム部品の間の距離に関係なく、前記特定のコメントおよび前記特定のプログラム部品の紐付けまたは紐付けの解除処理を実行するステップをさらに前記1つ以上のプロセッサに実行させる、請求項2~9のいずれかに記載のプログラム。
【請求項11】
前記特定のコメントおよび前記特定のプログラム部品を紐付けたことに基づいて、紐付けられた前記特定のコメントおよび前記特定のプログラム部品の色を変更するステップをさらに前記1つ以上のプロセッサに実行させる、請求項2~10のいずれかに記載のプログラム。
【請求項12】
前記特定のコメントおよび前記特定のプログラム部品を紐付けたことに基づいて、紐付けられた前記特定のコメントおよび前記特定のプログラム部品の接続線を表示するステップをさらに前記1つ以上のプロセッサに実行させる、請求項2~11のいずれかに記載のプログラム。
【請求項13】
前記特定のコメントおよび前記特定のプログラム部品を紐付けたことに基づいて、紐付けられた前記特定のコメントおよび前記特定のプログラム部品を囲う枠を表示するステップをさらに前記1つ以上のプロセッサに実行させる、請求項2~12のいずれかに記載のプログラム。
【請求項14】
請求項1~13のいずれかに記載のプログラムを格納したメモリーと、
前記プログラムを実行するための1以上のプロセッサをとを備える、コンピューター。
【請求項15】
コンピューターにおけるコードの変換に関する方法であって、
操作を受け付けたことに基づいて、1または複数のプログラム部品と、1または複数のコメントとをビジュアルプログラミングエディタの画面上に配置するステップと、
前記1または複数のコメントに含まれる特定のコメントと、前記1または複数のプログラム部品に含まれる特定のプログラム部品との位置関係に基づいて、前記特定のコメントを前記特定のプログラム部品に紐付けするか否かを判定するステップと、
前記特定のコメントを前記特定のプログラム部品に紐付けすると判定したことに基づいて、前記特定のコメントのテキスト
を前記特定のプログラム部品のテキスト
の直前の行に配置したテキストベースのコードを生成するステップとを含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ビジュアルプログラミングエディタのプログラムに関し、より特定的には、ビジュアルプログラミングエディタで作成されたプログラムの変換技術に関する。
【背景技術】
【0002】
近年、ビジュアルプログラムエディタを用いてブロック状のプログラム部品等を組み合わせてプログラムを作成するビジュアルプログラミングが普及している。いくつかのビジュアルプログラムエディタは、ビジュアルプログラムエディタを使用して作成されたコードをテキストベースのコードに変換する機能を備える。しかし、ビジュアルプログラムエディタを使用して作成されたコードがテキストベースのコードに変換された場合、プログラム部品と、当該プログラム部品に対するコメントとが近隣に配置されずに、可読性の低いテキストベースのコードが生成されることがある。
【0003】
ビジュアルプログラミングに関し、例えば、国際公開第2018/092237号(特許文献1)は、「プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義するブロック図を取得するブロック図取得部と、前記ブロック図でのブロック間の接続を辿って、前記ブロック図で定義されているデータ処理手順に矛盾があるかどうかを検査する矛盾検査部とを有する」プログラムコード生成装置を開示している(段落[0006]参照)。
【0004】
また、ビジュアルプログラミングに関する他の技術が、例えば、国際公開第2019/026248号(特許文献2)および国際公開第2019/132037号(特許文献3)に開示されている。
【先行技術文献】
【特許文献】
【0005】
【文献】国際公開第2018/092237号
【文献】国際公開第2019/026248号
【文献】国際公開第2019/132037号
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1~3に開示された技術によると、プログラムエディタを使用して作成されたコードをテキストベースのコードに変換するとき、プログラム部品と、当該プログラム部品に対するコメントとを近隣に配置することができない。したがって、プログラムエディタを使用して作成されたコードをテキストベースのコードに変換するとき、プログラム部品と、当該プログラム部品に対するコメントとを近隣に配置するための技術が必要とされている。
【0007】
本開示は、上記のような背景に鑑みてなされたものであって、ある局面における目的は、プログラムエディタを使用して作成されたコードをテキストベースのコードに変換するとき、プログラム部品と、当該プログラム部品に対するコメントとを近隣に配置するための技術を提供することにある。
【課題を解決するための手段】
【0008】
本開示の一例では、1つ以上のプロセッサに、操作を受け付けたことに基づいて、1または複数のプログラム部品と、1または複数のコメントとをビジュアルプログラミングエディタの画面上に配置するステップと、1または複数のコメントに含まれる特定のコメントと、1または複数のプログラム部品に含まれる特定のプログラム部品との位置関係に基づいて、特定のコメントを特定のプログラム部品に紐付けするか否かを判定するステップと、特定のコメントを特定のプログラム部品に紐付けすると判定したことに基づいて、特定のコメントのテキストおよび特定のプログラム部品のテキストを近隣に配置したテキストベースのコードを生成するステップとを実行させる、プログラムが提供される。
【0009】
上記の開示によれば、プログラムは、テキストベースのコードにおいて、関連するプログラム部品およびコメントを近くに配置することができる。
【0010】
上記の開示において、特定のコメントを特定のプログラム部品に紐付けするか否かを判定するステップは、特定のコメントから特定のプログラム部品までの距離が予め定められた閾値以内であるか否かを判定するステップと、距離が閾値以下であることに基づいて、特定のコメントおよび特定のプログラム部品を紐付けるステップとを含む。
【0011】
上記の開示によれば、プログラムは、閾値に基づいて、特定のコメントおよび特定のプログラム部品の紐づけを行うことができる。
【0012】
上記の開示において、1または複数のプログラム部品のいずれにも紐付けされていないコメントがあることに基づいて、テキストベースのコード内において、1または複数のプログラム部品のいずれにも紐付けされていないコメントのテキストをテキストベースのコードの先頭に配置するステップをさらに1つ以上のプロセッサに実行させる。
【0013】
上記の開示によれば、プログラムは、いずれのプログラム部品にも紐づけられていないコメントをテキストベースのコード内の適切な位置に配置することができる。
【0014】
上記の開示において、プログラムは、特定のコメントを特定のプログラム部品の一定範囲内に近づける操作を受け付けたこと基づいて、閾値の範囲を表示するステップをさらに1つ以上のプロセッサに実行させる。
【0015】
上記の開示によれば、プログラムは、ユーザーに、視覚的に閾値の範囲を示すことができる。
【0016】
上記の開示において、1または複数のプログラム部品と、1または複数のコメントとをビジュアルプログラミングエディタの画面上に配置するステップは、第1のプログラム部品と、第2のプログラム部品と、特定のコメントとを配置するステップを含む。プログラムは、特定のコメントと第1のプログラム部品および第2のプログラム部品の各々との距離が閾値以下であることに基づいて、特定のコメントを第1のプログラム部品および第2のプログラム部品のうち距離が近い方のプログラム部品と紐付けるステップをさらに1つ以上のプロセッサに実行させる。
【0017】
上記の開示によれば、プログラムは、コメントを紐づけるプログラム部品を一意に選択することができる。
【0018】
上記の開示において、プログラムは、第1のプログラム部品および第2のプログラム部品が隣接して配置されている場合、第1のプログラム部品および第2のプログラム部品のいずれからも近い一定範囲内を特定のコメントと、第1のプログラム部品および第2のプログラム部品の各々との紐付けを行わない無効範囲に設定するステップをさらに1つ以上のプロセッサに実行させる。
【0019】
上記の開示によれば、プログラムは、コメントを紐づけるプログラム部品を一意に選択することができる。
【0020】
上記の開示において、1または複数のプログラム部品と、1または複数のコメントとをビジュアルプログラミングエディタの画面上に配置するステップは、特定のプログラム部品と、第1のコメントと、第2のコメントとを配置するステップを含む。プログラムは、第1のコメントおよび第2のコメントのいずれもが特定のプログラム部品に紐付けられていることに基づいて、第1のコメントおよび第2のコメントの各々から特定のプログラム部品までの距離に基づいて、テキストベースのコード内における第1のコメントおよび第2のコメントの表示順序を決定するステップをさらに含む。
【0021】
上記の開示によれば、プログラムは、テキストベースのコード内において、複数のコメントの配置を適切に決定することができる。
【0022】
上記の開示において、プログラムは、紐付けられた特定のコメントおよび特定のプログラム部品の間の距離を閾値よりも離す操作を受け付けたことに基づいて、特定のコメントおよび特定のプログラム部品の紐付けを解除するステップをさらに1つ以上のプロセッサに実行させる。
【0023】
上記の開示によれば、プログラムは、プログラム部品およびコメントの紐づけ解除手段を提供することができる。
【0024】
上記の開示において、プログラムは、特定のプログラム部品に紐付けられた特定のコメントがダブルクリックされたことに基づいて、特定のコメントおよび特定のプログラム部品の紐付けを解除し、特定のコメントおよび特定のプログラム部品の間の距離を閾値よりも離すステップをさらに1つ以上のプロセッサに実行させる。
【0025】
上記の開示によれば、プログラムは、プログラム部品およびコメントの紐づけ解除手段を提供することができる。
【0026】
上記の開示において、プログラムは、手動での紐付け制御命令の入力を受け付けたことに基づいて、特定のコメントおよび特定のプログラム部品の間の距離に関係なく、特定のコメントおよび特定のプログラム部品の紐付けまたは紐付けの解除処理を実行するステップをさらに1つ以上のプロセッサに実行させる。
【0027】
上記の開示によれば、プログラムは、プログラム部品およびコメントの紐づけ解除手段を提供することができる。
【0028】
上記の開示において、プログラムは、特定のコメントおよび特定のプログラム部品を紐付けたことに基づいて、紐付けられた特定のコメントおよび特定のプログラム部品の色を変更するステップをさらに1つ以上のプロセッサに実行させる。
【0029】
上記の開示によれば、プログラムは、プログラム部品およびコメントの紐づけを視覚的に表示することができる。
【0030】
上記の開示において、プログラムは、特定のコメントおよび特定のプログラム部品を紐付けたことに基づいて、紐付けられた特定のコメントおよび特定のプログラム部品の接続線を表示するステップをさらに1つ以上のプロセッサに実行させる。
【0031】
上記の開示によれば、プログラムは、プログラム部品およびコメントの紐づけを視覚的に表示することができる。
【0032】
上記の開示において、プログラムは、特定のコメントおよび特定のプログラム部品を紐付けたことに基づいて、紐付けられた特定のコメントおよび特定のプログラム部品を囲う枠を表示するステップをさらに1つ以上のプロセッサに実行させる。
【0033】
上記の開示によれば、プログラムは、プログラム部品およびコメントの紐づけを視覚的に表示することができる。
【0034】
他の開示の一例では、上記のいずれかのプログラムを格納したメモリーと、プログラムを実行するための1以上のプロセッサをとを備える、コンピューターが提供される。
【0035】
上記の開示によれば、プログラムは、テキストベースのコードにおいて、関連するプログラム部品およびコメントを近くに配置することができる。
【0036】
他の開示の一例では、コンピューターにおけるコードの変換に関する方法が提供される。方法は、操作を受け付けたことに基づいて、1または複数のプログラム部品と、1または複数のコメントとをビジュアルプログラミングエディタの画面上に配置するステップと、1または複数のコメントに含まれる特定のコメントと、1または複数のプログラム部品に含まれる特定のプログラム部品との位置関係に基づいて、特定のコメントを特定のプログラム部品に紐付けするか否かを判定するステップと、特定のコメントを特定のプログラム部品に紐付けすると判定したことに基づいて、特定のコメントのテキストおよび特定のプログラム部品のテキストを近隣に配置したテキストベースのコードを生成するステップとを含む。
【0037】
上記の開示によれば、プログラムは、テキストベースのコードにおいて、関連するプログラム部品およびコメントを近くに配置することができる。
【発明の効果】
【0038】
ある実施の形態に従うと、プログラムエディタを使用して作成されたコードをテキストベースのコードに変換するとき、プログラム部品と、当該プログラム部品に対するコメントとを近隣に配置することが可能である。
【0039】
この開示内容の上記および他の目的、特徴、局面および利点は、添付の図面と紐付けして理解される本開示に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【0040】
【
図1】ある実施の形態に従うビジュアルプログラミングエディタ100の一例を示す図である。
【
図2】コメント130およびプログラム部品110の紐付けの第1の例を示す図である。
【
図3】コメント130およびプログラム部品110の紐付けの第2の例を示す図である。
【
図4】コメント130およびプログラム部品110の紐付けの第3の例を示す図である。
【
図5】コメント130およびプログラム部品110の紐付けの第4の例を示す図である。
【
図6】エディタ102上でのプログラム部品110の表示の変化の一例を示す図である。
【
図7】ビジュアルプログラムの他の例を示す図である。
【
図8】フロー型ビジュアルプログラムの一例を示す図である。
【
図9】ブロック型ビジュアルプログラムの一例を示す図である。
【
図10】プログラムPに基づいて生成されたテキストプログラム1050の一例を示す図である。
【
図11】ビジュアルプログラミングエディタ100の機能ブロックの一例を示す図である。
【
図12】ビジュアルプログラミングエディタ100のプログラムを実行するための装置1200のハードウェア構成の一例を示す図である。
【
図13】コメント130およびプログラム部品110の第1の紐付け処理の一例である。
【
図14】コメント130およびプログラム部品110の第2の紐付け処理の一例である。
【
図15】コメント130およびプログラム部品110の第3の紐付け処理の一例である。
【
図16】コメント130およびプログラム部品110の第4の紐付け処理の一例である。
【発明を実施するための形態】
【0041】
以下、図面を参照しつつ、本開示に係る技術思想の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【0042】
<A.適用例>
図1は、本実施の形態に従うビジュアルプログラミングエディタ100の一例を示す図である。
図1を参照して、ビジュアルプログラミングエディタ100のソースコードの変換機能について説明する。ビジュアルプログラミングエディタ100は、例えば、
図1に示すようにブロック状のプログラム部品と、コネクタとを組み合わせるフロー型のビジュアルプログラミングを行なうための機能を提供し得る。ある局面において、ビジュアルプログラミングエディタ100は、
図7に示すようにブロックを重ね合わせてプログラミングを行なうための機能を提供してもよい。他の局面において、ビジュアルプログラミングエディタ100は、任意の視覚的表現を用いてプログラミングを行なうための機能を提供してもよい。
【0043】
これ以降、区別のために、ビジュアルプログラミングエディタ100を用いて視覚的に作成されたプログラムコードを、「ビジュアルプログラム」と表す。これに対して、テキストベースのプログラムコードを、「テキストプログラム」と表す。ビジュアルプログラミングエディタ100は、プログラム部品リスト101と、エディタ102とを備える。
【0044】
プログラム部品リスト101は、プログラム部品110の一覧を含む。プログラム部品110は、例えば、ある機能を持つプログラムの部品である。エディタ102は、ビジュアルプログラムを作成するための領域である。ユーザーは、例えば、ドラッグアンドドロップでプログラム部品リスト101から選択したプログラム部品110をエディタ102に挿入し得る。また、ユーザーは、コネクタ120を使用してプログラム部品110間の接続を定義することで、あるプログラム部品110の出力データを他のプログラム部品110の入力データとして設定し、全体として1つのプログラムを作成し得る。
【0045】
図1に示す例では、エディタ102上に、プログラム部品110A~110Cが存在している。また、プログラム部品110Aおよびプログラム部品110Bは、コネクタ120Aにより接続されている。これは、プログラム部品110Aの出力データが、プログラム部品110Bの入力データとして渡されていることを示す。また、プログラム部品110Bおよびプログラム部品110Cは、コネクタ120Bにより接続されている。これは、プログラム部品110Bの出力データが、プログラム部品110Cの入力データとして渡されていることを示す。さらに、プログラム部品110Bおよび終端部品がコネクタ120Cにより接続されている。これは、例えば、プログラム部品110Bの出力データがビジュアルプログラム105のアウトプットとして出力されることを示す。
【0046】
ユーザーは、さらに、エディタ102上にコメント130を配置することができる。
図1の例では、コメント130A~130Cがエディタ102上に配置されている。これらのコメント130A~130Cの各々は、プログラム部品110A~110Cの各々に対するコメントである。コメント130は、ある特定のプログラム部品110に紐付けられていてもよいし、いずれのプログラム部品110にも紐付けられていなくてもよい。いずれのプログラム部品110にも紐付けられていないコメント130は、例えば、プログラム全体に対するコメント等である。
【0047】
ビジュアルプログラミングエディタ100は、プログラム部品110、コネクタ120およびコメント130の組み合わせによって作成されたビジュアルプログラム105をテキストプログラム150に変換する機能を備える。テキストプログラム150に含まれるコメントおよびコードは、ビジュアルプログラム105に含まれるコメントおよびコードと同じ内容である。例えば、テキストプログラム150に含まれるコメント151A~151Cは、ビジュアルプログラム105に含まれるコメント130A~130Cに対応する。また、テキストプログラム150に含まれるコード152A~152Cは、ビジュアルプログラム105に含まれるプログラム部品110A~110Cに対応する。一例として、コード152A~152Cの各々は、ビジュアルプログラム105内のコネクタ120の情報も含んでいてもよい。
【0048】
通常、テキストで作成されるソースコードにおいて、コメントは、対応するコードの直前に書かれることが多い。コメントと、コメントに対応するコードとの距離が離れてしまうと、著しくプログラムの可読性が損なわれる。そこで、ビジュアルプログラム105は、各コメント130およびプログラム部品110の位置関係または距離に基づいて、紐付けするコメント130およびプログラム部品110をテキストプログラム150上で近隣に、または隣接して配置する。
【0049】
ある局面において、ユーザーは、エディタ102上に配置された各プログラム部品110、コネクタ120およびコメント130をドラッグアンドドロップで自由に動かすことができてもよい。また、他の局面において、ユーザーは、エディタ102上に配置された各プログラム部品110、コネクタ120およびコメント130の座標を直接入力できてもよい。また、他の局面において、ユーザーは、別の画面、サイドメニューまたはダイアログ等を用いて、エディタ102上に配置された各プログラム部品110、コネクタ120およびコメント130に対するプロパティ等を設定できてもよい。
【0050】
<B.コメントおよびプログラム部品の紐付け>
次に、
図2~
図7を参照して、ビジュアルプログラミングエディタ100が、どのように各コメント130および各プログラム部品110を紐付け、かつ、どのように紐付けられたコメント130およびプログラム部品110同士を隣接してテキストプログラム150上に配置するのかについて説明する。
【0051】
図2は、コメント130およびプログラム部品110の紐付けの第1の例を示す図である。エディタ102上において、プログラム部品110の周辺には、紐付け領域201が設定される。当該紐付け領域201にコメント130のブロックが接触した場合、コメント130およびプログラム部品110が紐付けられる。言い換えれば、コメント130およびプログラム部品110間の距離が予め定められた閾値以下である場合、コメント130およびプログラム部品110は紐付けられる。
【0052】
ある局面において、コメント130およびプログラム部品110間の距離とは、コメント130のブロックおよびプログラム部品110のブロックの中心間距離、特定の角同士の距離、枠同士の距離等を含み得る。他の局面において、ビジュアルプログラミングエディタ100は、コメント130を掴んでいるマウスカーソルが紐付け領域201に接触したことに基づいて、コメント130およびプログラム部品110を紐付けてもよい。
【0053】
ビジュアルプログラミングエディタ100は、一例として、ユーザーの操作を受け付けるごとに、当該閾値と、各コメント130および各プログラム部品110間の距離とを比較して、各コメント130および各プログラム部品110の紐付けを動的に実行してもよい。
【0054】
また、ビジュアルプログラミングエディタ100は、特定のコメント130およびプログラム部品110が紐付けられたことをユーザーに視覚的に示すために紐付けられたコメント130およびプログラム部品110の表示を変更し得る。
【0055】
表示210,220および230は、紐付けられたコメント130およびプログラム部品110を示す表示の一例である。ある局面において、ビジュアルプログラミングエディタ100は、紐付けられたコメント130およびプログラム部品110をコメント用コネクタで接続してもよい。当該コメント用コネクタは、区別のために、コネクタ120と太さおよび/または色が異なっていてもよい。他の局面において、ビジュアルプログラミングエディタ100は、紐付けられたコメント130およびプログラム部品110を枠で囲ってもよい。また、他の局面において、ビジュアルプログラミングエディタ100は、紐付けられたコメント130およびプログラム部品110の色を変更してもよい。さらに、他の局面において、ビジュアルプログラミングエディタ100は、表示210,220および230を適宜組み合わせてもよい。
【0056】
上記のように、ビジュアルプログラミングエディタ100は、コメント130およびプログラム部品110の位置関係、またはコメント130およびプログラム部品110間の距離に基づいて、明確にコメント130およびプログラム部品110に紐付けがあるか否かを判定することができる。また、ビジュアルプログラミングエディタ100は、紐付けられたコメント130およびプログラム部品110の表示を変更することで、ユーザーに視覚的にコメント130およびプログラム部品110同士の紐付けを提示することができる。
【0057】
図3は、コメント130およびプログラム部品110の紐付けの第2の例を示す図である。プログラムのコメントは、ある特定のコードに対するコメントと、プログラム全体を指すコメントとを含み得る。ビジュアルプログラミングエディタ100は、いずれのプログラム部品110にも紐付けられていないコメント130を、プログラム全体を指すコメントであると判定する。言い換えれば、ビジュアルプログラミングエディタ100は、いずれのプログラム部品110からも紐付けの閾値以上に距離が離れているコメント130を、プログラム全体を指すコメントであると判定する。
【0058】
図3の例では、コメント130Dは、プログラム部品110A~110Cのいずれにも紐付けられていないため、プログラム全体を指すコメントになる。逆に、コメント130Cは、プログラム部品110Cに紐付けられているため、特定のコード(プログラム部品110C)に対するコメントになる。
【0059】
ビジュアルプログラミングエディタ100は、例えば、ユーザーからテキストプログラムの生成命令の入力を受け付けたことに基づいて、テキストプログラムを出力する。テキストプログラム350は、ビジュアルプログラム300に対応する。
【0060】
コード352A~352Cの各々は、プログラム部品110A~110Cの各々に対応する。コメント351Cは、コメント130Cに対応する。コメント351Dは、コメント130Dに対応する。
【0061】
ビジュアルプログラミングエディタ100は、いずれのプログラム部品110にも紐付けられていないコメント130Dをテキストプログラム350の先頭に配置する。ある局面において、ビジュアルプログラム300が複数のいずれのプログラム部品110にも紐付けられていないコメント130を含んでいた場合、ビジュアルプログラミングエディタ100は、これらのコメント130を全てテキストプログラム150の先頭に配置してもよい。
【0062】
ビジュアルプログラミングエディタ100は、コメント351Cをコード352Cの近隣に配置する。ある局面において、ビジュアルプログラミングエディタ100は、コメント351Cをコード352Cの直前の行または直後の行に配置してもよい。他の局面において、ビジュアルプログラミングエディタ100は、コメント351Cをコード352Cの末尾に追加してもよい。
【0063】
上記のように、ビジュアルプログラミングエディタ100は、紐付けられたコメント130およびプログラム部品110をテキストプログラム上で近隣に配置し、いずれのプログラム部品110にも紐付けられていないコメント130をテキストプログラムの先頭に配置する。こうすることで、テキストプログラムの先頭付近に、例えば、プログラム全体のコメントが配置され、各コードの直前の行等に各コードに対するコメントが配置される。その結果、ビジュアルプログラムから生成されたテキストプログラムの可読性が向上する。
【0064】
図4は、コメント130およびプログラム部品110の紐付けの第3の例を示す図である。
図4に示す例では、ビジュアルプログラム400において、1つのプログラム部品110Aに複数のコメント130Aおよび130Bが紐付けられている。
【0065】
ビジュアルプログラミングエディタ100は、ビジュアルプログラム400を基にテキストプログラム450を生成したとする。テキストプログラム450は、コメント130Aおよび130Bの各々に対応するコメント451Aおよび451Bと、プログラム部品110Aに対応するコード452Aとを含む。
【0066】
このような場合、ビジュアルプログラミングエディタ100は、プログラム部品110Aから各コメント130Aおよび130Bまでの距離に基づいて、コメント451Aおよび451Bの配置順序を決定し得る。
図4の例では、コメント130Aは、コメント130Bよりもプログラム部品110Aに近い。そこで、ビジュアルプログラミングエディタ100は、コメント451A、コメント451Bの順番で、各コメントをコード452Aの直前に配置している。
【0067】
ある局面において、ビジュアルプログラミングエディタ100は、あるプログラム部品110に対してより近い位置にあるコメント130を優先してテキストプログラム上に配置してもよい。他の局面において、ビジュアルプログラミングエディタ100は、あるプログラム部品110に対してより遠い位置にあるコメント130を優先してテキストプログラム上に配置してもよい。
【0068】
上記のように、複数のコメント130があるプログラム部品110に紐付けられることがある。この場合、ビジュアルプログラミングエディタ100は、プログラム部品110から各コメント130までの距離に基づいて、テキストプログラム上での各コメントの配置の優先順位を決定し得る。当該機能により、ユーザーは、エディタ102上でコメント130の位置を調節することで、テキストプログラム上に配置されるコメントの順番を変更することができる。
【0069】
図5は、コメント130およびプログラム部品110の紐付けの第4の例を示す図である。第4の例は、特殊な紐付けの例501と、紐付けの例502とを含む。紐付けの例501は、ユーザー操作によるコメント130およびプログラム部品110の紐付け制御を示す。ビジュアルプログラミングエディタ100は、ユーザーからの手動紐付け制御の入力を受け付けたことにより、コメント130およびプログラム部品110の距離に関係なく、コメント130およびプログラム部品110間の紐付けまたは紐付けの削除を実行し得る。
【0070】
例えば、ビジュアルプログラミングエディタ100は、ユーザーからの手動紐付け制御の入力を受け付けたことに基づいて、紐付け領域201外のコメント130Aをプログラム部品110Aに紐付けてもよい。また、ビジュアルプログラミングエディタ100は、ユーザーからの手動紐付け制御の入力を受け付けたことに基づいて、紐付け領域201内のコメント130Bおよびプログラム部品110A間の紐付けを削除してもよい。ある局面において、ビジュアルプログラミングエディタ100は、コメント130またはコメント用コネクタを紐付け領域201外に移動させる操作を受け付けたことに基づいて、紐付けを削除してもよい。他の局面において、ビジュアルプログラミングエディタ100は、コメント130またはコメント用コネクタがダブルクリックされたことに基づいて、紐付けを削除してもよい。また、その際、ビジュアルプログラミングエディタ100は、紐付けを削除されたコメント130を紐付け領域201の外に移動させてもよい。
【0071】
紐付けの例502は、コメント130Aが複数のプログラム部品110Aおよび110Bの紐付け領域201に接触している場合のコメント130Aの紐付け制御を示す。紐付けの例502のような場合、ビジュアルプログラミングエディタ100は、コメント130Aおよびプログラム部品110A間の距離と、コメント130Bおよびプログラム部品110A間の距離とを比較し、コメント130Aにより近い方のプログラム部品110をコメント130Aに紐付ける。
【0072】
ビジュアルプログラミングエディタ100は、コメント130が3つ以上のプログラム部品110の紐付け領域201に接触している場合においても同様に、最も距離の近いプログラム部品110にコメント130を紐付ける。
【0073】
上記のように、ビジュアルプログラミングエディタ100は、手動でのコメント130およびプログラム部品110の紐付け機能を提供する。当該機能により、ユーザーは、より柔軟にコメント130およびプログラム部品110を紐付けることができる。また、ビジュアルプログラミングエディタ100は、コメント130が複数のプログラム部品110の紐付け領域201に接触している場合のコメント130の紐付け制御機能を提供する。当該機能により、プログラム部品110は、常に整合性のとれたコメント130およびプログラム部品110の紐付け制御を実行することができる。
【0074】
図6は、エディタ102上でのプログラム部品110の表示の変化の一例を示す図である。プログラム部品110の周辺には、紐付け領域201と、さらに範囲の広い反応領域601とがある。ビジュアルプログラミングエディタ100は、紐付け領域201にコメント130が接触した場合、当該コメント130をプログラム部品110と紐付ける。
【0075】
ビジュアルプログラミングエディタ100は、反応領域601にコメント130が接触した場合、エディタ102上に紐付け領域201を表示する。当該機能により、ユーザーは、明確にプログラム部品110の紐付け領域201を認識することができる。なお、プログラム部品110、紐付け領域201および反応領域601の各々のサイズは、任意のサイズであってもよい。
【0076】
図7は、ビジュアルプログラムの他の例を示す図である。
図7に示すビジュアルプログラムは、
図1に示すフロータイプのビジュアルプログラムと異なり、プログラム部品110がスタックされていく。ビジュアルプログラミングエディタ100は、
図7のブロックタイプのビジュアルプログラムの編集機能を提供してもよい。
【0077】
ビジュアルプログラミングエディタ100は、ブロックタイプのビジュアルプログラムにおいて、各プログラム部品110の周辺を紐付け領域に設定する。例えば、領域701Aは、プログラム部品110Aの紐付け領域である。同様に、領域701B~701Eの各々は、プログラム部品110B~110Eの各々の紐付け領域である。
【0078】
ブロック型のビジュアルプログラムでは、例えばプログラム部品110Aおよび110Bの間の隣接部分705のように、各プログラム部品110が隣接することがある。隣接部分705付近の領域は、隣接するどちらのプログラム部品110に属する領域であるかが不明瞭である。そこで、ビジュアルプログラミングエディタ100は、隣接部分705の周辺を、紐付けを行なわない無効領域710に設定してもよい。ビジュアルプログラミングエディタ100は、コメント130が無効領域710に接触したとしても、当該コメント130をいずれのプログラム部品110にも紐付けない。ビジュアルプログラミングエディタ100は、コメント130がいずれかの紐付け領域701に接触したときのみ、当該コメント130をプログラム部品110に紐付ける。
【0079】
上記のように、ビジュアルプログラミングエディタ100は、ブロック型のビジュアルプログラムにおいてもコメント130およびプログラム部品110の紐付けを行なう機能を提供し得る。また、ビジュアルプログラミングエディタ100は、隣接するプログラム部品110同士の接触部分付近を無効領域とすることで、コメント130を明確にいずれかのプログラム部品110に紐付けることができる。
【0080】
<C.ビジュアルプログラムからテキストプログラムへの変換例>
次に、
図8~
図10を参照して、ビジュアルプログラムからテキストプログラムを生成する例について説明する。
図8は、フロー型ビジュアルプログラムの一例を示す図である。
図9は、ブロック型ビジュアルプログラムの一例を示す図である。
図8および
図9に示すビジュアルプログラムは、同一のプログラム(以下、「プログラムP」と表す)を示している。当該プログラムPは、プログラム部品810A~810Dを含む。また、プログラムPは、いずれのプログラム部品にも紐付けられていないコメント830Aおよび830Bと、プログラム部品810A~810Dのいずれかに紐付けられたコメント830B~830Fとを含む。
【0081】
図10は、プログラムPに基づいて生成されたテキストプログラム1050の一例を示す図である。テキストプログラム1050は、コメント1030A~1030Fと、コード1010A~1010Dとを含む。なお、各コードに含まれるパラメーター等は、ビジュアルプログラミングエディタ100上で設定され得る。
【0082】
コメント1030Aおよび1030Bの各々は、いずれのプログラム部品にも紐付けられていないコメント830Aおよび830Bの各々に対応する。そのため、コメント1030Aおよび1030Bは、テキストプログラム1050の先頭に配置されている。なお、いずれのプログラム部品にも紐付けられていない複数のコメントが存在する場合、ビジュアルプログラミングエディタ100は、例えば、エディタ102の左上の座標から各コメントまでの距離等の任意の基準に基づいて、コメントの表示の優先順位を決定してもよい。
【0083】
コメント1030Cおよび1030Dの各々は、プログラム部品810Aに紐付けられるコメント830Cおよび830Dの各々に対応する。そのため、コメント1030Cおよび1030Dは、プログラム部品810Aに対応するコード1010Aの直前に配置されている。
【0084】
コメント1030Eは、プログラム部品810Cに紐付けられるコメント830Eに対応する。そのため、コメント1030Eは、プログラム部品810Cに対応するコード1010Cの直前に配置されている。
【0085】
コメント1030Fは、プログラム部品810Dに紐付けられるコメント830Fに対応する。そのため、コメント1030Fは、プログラム部品810Dに対応するコード1010Dの直前に配置されている。
【0086】
上記のように、ビジュアルプログラミングエディタ100は、エディタ102上で作成されたビジュアルプログラムに基づいてテキストプログラムを生成する。その際、ビジュアルプログラミングエディタ100は、コメントおよびプログラム部品の紐付けの情報に基づいて、テキストプログラム上の適切な位置にコメントを配置し得る。当該機能により、ユーザーは可読性の高いテキストプログラムを得ることができる。
【0087】
<D.システム構成>
図11は、ビジュアルプログラミングエディタ100の機能ブロックの一例を示す図である。
図11に示す各機能ブロックは、プログラムとして実現されていてもよい。また、これらの機能ブロックは、
図12に示すハードウェア上で実行され得る。
【0088】
ビジュアルプログラミングエディタ100は、プログラム部品/コメント配置部1101と、紐付け範囲表示部1102と、紐付け選択部1103と、紐付け表示部1104と、動的紐付け部1105と、手動紐付け部1106と、紐付け記憶部1107と、出力部1108とを備える。
【0089】
プログラム部品/コメント配置部1101は、ユーザーの操作を受け付けたことに基づいて、プログラム部品110またはコメント130をエディタ102上に配置する。または、プログラム部品/コメント配置部1101は、ユーザーの操作を受け付けたことに基づいて、プログラム部品110またはコメント130をエディタ102上で移動させる。
【0090】
紐付け範囲表示部1102は、紐付け領域201をエディタ102上に表示する。ある局面において、紐付け範囲表示部1102は、紐付け領域201を常に表示してもよい。他の局面において、紐付け範囲表示部1102は、コメント130がプログラム部品110に一定距離(反応領域601)まで近づいたことに基づいて、紐付け領域201を表示してもよい。
【0091】
紐付け選択部1103は、紐付けられるコメント130と、プログラム部品110とを選択する。例えば、紐付け選択部1103は、コメント130が複数のプログラム部品110の紐付け領域201に接触しているときに、当該コメント130からの距離が最も近いプログラム部品110を選択し得る。
【0092】
紐付け表示部1104は、コメント130およびプログラム部品110の紐付けをエディタ102上に表示する。ある局面において、紐付け表示部1104は、コメント130およびプログラム部品110を接続するコメント用コネクタを表示してもよい。他の局面において、紐付け表示部1104は、紐付けられたコメント130およびプログラム部品110を枠で囲ってもよい。また、他の局面において、紐付け表示部1104は、紐付けられたコメント130およびプログラム部品110の色を変更してもよい。
【0093】
動的紐付け部1105は、コメント130またはプログラム部品110の配置または移動を検出したことに基づいて、コメント130およびプログラム部品110の紐付け処理を実行する。
【0094】
手動紐付け部1106は、ユーザーからの手動の紐付け制御の入力を受け付けたことに基づいて、コメント130およびプログラム部品110の紐付け処理を実行する。当該処理は、
図5を参照して説明した処理に相当する。
【0095】
紐付け記憶部1107は、紐付けられたコメント130およびプログラム部品110の紐付け情報を格納する。紐付け記憶部1107は、紐付けられたコメント130およびプログラム部品110の紐付け情報を後述する1次記憶装置1202または2次記憶装置1203のいずれかに格納し得る。
【0096】
出力部1108は、ユーザーからのテキストプログラムの出力要求の入力を受け付けたこと等に基づいて、紐付け記憶部1107に格納されたコメント130およびプログラム部品110の紐付け情報を参照して、テキストプログラムを出力する。ある局面において、出力部1108は、コメント130およびプログラム部品110の紐付け情報に変更が発生するごとに、自動的にテキストプログラムを出力してもよい。
【0097】
図12は、ビジュアルプログラミングエディタ100のプログラムを実行するための装置1200のハードウェア構成の一例を示す図である。ある局面において、ビジュアルプログラミングエディタ100は、1台の装置1200上でプログラムとして実行されてもよい。また、他の局面において、ビジュアルプログラミングエディタ100は、複数の装置1200からなるシステム上でプログラムとして実行されてもよい。また、他の局面において、ビジュアルプログラミングエディタ100は、複数の装置1200からなるクラウド環境において実行され、他の端末から、ブラウザ経由で操作されてもよい。
【0098】
装置1200は、CPU(Central Processing Unit)1201と、1次記憶装置1202と、2次記憶装置1203と、外部機器インターフェイス1204と、入力インターフェイス1205と、出力インターフェイス1206と、通信インターフェイス1207とを含む。
【0099】
CPU1201は、装置1200の各種機能を実現するためのプログラムを実行し得る。CPU1201は、例えば、少なくとも1つの集積回路によって構成される。集積回路は、例えば、少なくとも1つのCPU、少なくとも1つのFPGA(Field Programmable Gate Array)、またはこれらの組み合わせなどによって構成されてもよい。
【0100】
1次記憶装置1202は、CPU1201によって実行されるプログラムと、CPU1201によって参照されるデータとを格納する。ある局面において、1次記憶装置1202は、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)等によって実現されてもよい。
【0101】
2次記憶装置1203は、不揮発性メモリーであり、CPU1201によって実行されるプログラムおよびCPU1201によって参照されるデータを格納してもよい。その場合、CPU1201は、2次記憶装置1203から1次記憶装置1202に読み出されたプログラムを実行し、2次記憶装置1203から1次記憶装置1202に読み出されたデータを参照する。ある局面において、2次記憶装置1203は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)またはフラッシュメモリー等によって実現されてもよい。
【0102】
外部機器インターフェイス1204は、プリンター、スキャナーおよび外付けHDDなどの任意の外部機器に接続され得る。ある局面において、外部機器インターフェイス1204は、USB(Universal Serial Bus)端子等によって実現されてもよい。
【0103】
入力インターフェイス1205は、キーボード、マウス、タッチパッドまたはゲームパッドなどの任意の入力装置に接続され得る。ある局面において、入力インターフェイス1205は、USB端子、PS/2端子およびBluetooth(登録商標)モジュール等によって実現されてもよい。
【0104】
出力インターフェイス1206は、ブラウン管ディスプレイ、液晶ディスプレイまたは有機EL(electro-luminescence)ディスプレイなどの任意の出力装置に接続され得る。ある局面において、出力インターフェイス1206は、USB端子、D-sub端子、DVI(Digital Visual Interface)端子およびHDMI(登録商標)(High-Definition Multimedia Interface)端子等によって実現されてもよい。
【0105】
通信インターフェイス1207は、有線または無線のネットワーク機器と接続される。ある局面において、通信インターフェイス1207は、有線LAN(Local Area Network)ポートおよびWi-Fi(登録商標)(Wireless Fidelity)モジュール等によって実現されてもよい。他の局面において、通信インターフェイス1207は、TCP/IP(Transmission Control Protocol/Internet Protocol)、UDP(User Datagram Protocol)などの通信プロトコルを用いてデータを送受信してもよい。
【0106】
<E.フローチャート>
次に、
図13~16を参照して、コメント130およびプログラム部品110の紐付け制御の処理手順について説明する。ある局面において、CPU1201は、
図13~16の処理を行うためのプログラムを2次記憶装置1203から1次記憶装置1202に読み込んで、当該プログラムを実行してもよい。他の局面において、当該処理の一部または全部は、当該処理を実行するように構成された回路素子の組み合わせとしても実現され得る。
【0107】
図13は、コメント130およびプログラム部品110の第1の紐付け処理の一例である。
図13における処理は、ユーザーが、ビジュアルプログラミングエディタ100上でコメント130をマウスによりドラッグで移動させた場合の処理である。
【0108】
ステップS1305において、ビジュアルプログラミングエディタ100は、マウスによるコメント130の移動を検出する。ステップS1310において、ビジュアルプログラミングエディタ100は、マウスカーソルがコメント130を掴んだまま動いている間、ステップS1315~S1335までの処理を繰り返し実行する。
【0109】
ステップS1315において、ビジュアルプログラミングエディタ100は、マウスカーソルが配置済みのプログラム部品110の紐付け領域201内に存在するか否かを判定する。ビジュアルプログラミングエディタ100は、マウスカーソルが配置済みのプログラム部品110の紐付け領域201内に存在すると判定した場合(ステップS1315にてYES)、制御をステップS1325に移す。そうでない場合(ステップS1315にてNO)、ビジュアルプログラミングエディタ100は、ステップS1315の処理を再度実行する。ある局面において、ビジュアルプログラミングエディタ100は、マウスカーソルが掴んでいるコメント130が、配置済みのプログラム部品110の紐付け領域201内に存在するか否かを判定してもよい。
【0110】
ステップS1320において、ビジュアルプログラミングエディタ100は、マウスカーソルが近づいているプログラム部品110の紐付け領域201を表示する。より具体的には、マウスカーソルまたはマウスカーソルによって掴まれているコメント130が、プログラム部品110の反応領域601に接触した場合、ビジュアルプログラミングエディタ100は、プログラム部品110の紐付け領域201を表示する。
【0111】
ステップS1325において、ビジュアルプログラミングエディタ100は、マウスカーソルが接触している紐付け領域201の個数を判定する。ある局面において、ビジュアルプログラミングエディタ100は、マウスカーソルが掴んでいるコメント130が接触している紐付け領域201の個数を判定してもよい。
【0112】
ビジュアルプログラミングエディタ100は、マウスカーソルが接触している紐付け領域201の個数が2個以上であると判定した場合、制御をステップS1330に移す。ビジュアルプログラミングエディタ100は、マウスカーソルが接触している紐付け領域201の個数が1個であると判定した場合、制御をステップS1335に移す。ビジュアルプログラミングエディタ100は、マウスカーソルが接触している紐付け領域201の個数が0個であると判定した場合、制御をステップS1315に移す。
【0113】
ステップS1330において、ビジュアルプログラミングエディタ100は、コメント130と紐付ける対象として、プログラム部品110の輪郭と、マウスカーソルとの距離が最も短いプログラム部品110とを選択する。ある局面において、ビジュアルプログラミングエディタ100は、コメント130と紐付ける対象として、プログラム部品110の輪郭とカーソルによって掴まれているコメント130の輪郭との距離が最も短いプログラム部品110を選択してもよい。
【0114】
ステップS1335において、ビジュアルプログラミングエディタ100は、マウスカーソルまたはマウスカーソルが掴んでいるコメント130が接触している紐付け領域201に対応するプログラム部品110と、マウスカーソルによって移動中のコメント130との間に紐付けを表示する。ある局面において、ビジュアルプログラミングエディタ100は、紐付けられたコメント130およびプログラム部品110をコメント用コネクタで接続してもよい。他の局面において、ビジュアルプログラミングエディタ100は、紐付けられたコメント130およびプログラム部品110を枠で囲ってもよい。また、他の局面において、ビジュアルプログラミングエディタ100は、紐付けられたコメント130およびプログラム部品110の色を変更してもよい。さらに、他の局面において、ビジュアルプログラミングエディタ100は、これらの表示方法を適宜組み合わせてもよい。
【0115】
ステップS1340において、ビジュアルプログラミングエディタ100は、紐付けされているコメント130およびプログラム部品110の間の紐付け情報を紐付け記憶部1107に格納する。
【0116】
ステップS1345において、ビジュアルプログラミングエディタ100は、ユーザーの操作に応じて、ビジュアルプログラミングエディタ100で作成されたビジュアルプログラムに対応するテキストプログラムを出力する。
【0117】
図14は、コメント130およびプログラム部品110の第2の紐付け処理の一例である。
図14における処理は、ユーザーが、ビジュアルプログラミングエディタ100上でプログラム部品110をドラッグで移動させた場合の処理である点で
図13の処理と異なる。
【0118】
ステップS1405において、ビジュアルプログラミングエディタ100は、マウスによるプログラム部品110の移動を検出する。ステップS1410において、ビジュアルプログラミングエディタ100は、マウスカーソルがプログラム部品110を掴んだまま動いている間、ステップS1415~S1430までの処理を繰り返し実行する。ステップS1415において、ビジュアルプログラミングエディタ100は、移動中のプログラム部品110の紐付け領域201を表示する。
【0119】
ステップS1420において、ビジュアルプログラミングエディタ100は、移動中のプログラム部品110の紐付け領域201に接触しているコメント130の個数を判定する。ビジュアルプログラミングエディタ100は、移動中のプログラム部品110の紐付け領域201に接触しているコメント130の個数が2個以上であると判定した場合、制御をステップS1425に移す。ビジュアルプログラミングエディタ100は、移動中のプログラム部品110の紐付け領域201に接触しているコメントの個数が1個であると判定した場合、制御をステップS1430に移す。ビジュアルプログラミングエディタ100は、移動中のプログラム部品110の紐付け領域201に接触しているコメントの個数が0個であると判定した場合、制御をステップS1415に移す。
【0120】
ステップS1425において、ビジュアルプログラミングエディタ100は、プログラム部品110と紐付ける対象として、コメント130の輪郭と、マウスカーソルとの距離が最も短いコメント130とを選択する。ある局面において、ビジュアルプログラミングエディタ100は、プログラム部品110と紐付ける対象として、コメント130の輪郭とカーソルによって掴まれているプログラム部品110の輪郭との距離が最も短いコメント130を選択してもよい。
【0121】
ステップS1430において、ビジュアルプログラミングエディタ100は、マウスカーソルによって移動中のプログラム部品110と、コメント130との間に紐付けを表示する。ある局面において、ビジュアルプログラミングエディタ100は、紐付けられたコメント130およびプログラム部品110をコメント用コネクタで接続してもよい。他の局面において、ビジュアルプログラミングエディタ100は、紐付けられたコメント130およびプログラム部品110を枠で囲ってもよい。また、他の局面において、ビジュアルプログラミングエディタ100は、紐付けられたコメント130およびプログラム部品110の色を変更してもよい。さらに、他の局面において、ビジュアルプログラミングエディタ100は、これらの表示方法を適宜組み合わせてもよい。
【0122】
ステップS1435において、ビジュアルプログラミングエディタ100は、紐付けされているコメント130およびプログラム部品110の間の紐付け情報を紐付け記憶部1107に格納する。
【0123】
ステップS1440において、ビジュアルプログラミングエディタ100は、ユーザーの操作に応じて、ビジュアルプログラミングエディタ100で作成されたビジュアルプログラムに対応するテキストプログラムを出力する。
【0124】
図15は、コメント130およびプログラム部品110の第3の紐付け処理の一例である。
図15における処理は、ユーザーが、コメント130およびプログラム部品110間の紐付けを手動で削除するための処理である点で、
図13および
図14の処理と異なる。
【0125】
ステップS1510において、ビジュアルプログラミングエディタ100は、既存のコメント130およびプログラム部品110の紐付けが選択されたことを検出する。ある局面において、ビジュアルプログラミングエディタ100は、ユーザーがコメント用コネクタをマウスで右クリックしてメニューを開く等の任意の入力に基づいて、既存のコメント130およびプログラム部品110の紐付けが選択されたことを検出してもよい。
【0126】
ステップS1520において、ビジュアルプログラミングエディタ100は、メニューの中からコメント130およびプログラム部品110の紐付けの削除が選択されたことを検出する。ある局面において、ビジュアルプログラミングエディタ100は、メニューの操作の代わりに、コメント用コネクタのダブルクリック等を検出してもよい。
【0127】
ステップS1530において、ビジュアルプログラミングエディタ100は、紐付け記憶部1107から、指定されたコメント130およびプログラム部品110の紐付け情報を削除する。
【0128】
ステップS1540において、ビジュアルプログラミングエディタ100は、ユーザーの操作に応じて、ステップS1510~S1530までの処理を反映したビジュアルプログラムに対応するテキストプログラムを出力する。
【0129】
図16は、コメント130およびプログラム部品110の第4の紐付け処理の一例である。
図16における処理は、ユーザーが、コメント130およびプログラム部品110を手動で紐付けするための処理である点で、
図13~
図15の処理と異なる。
【0130】
ステップS1610において、ビジュアルプログラミングエディタ100は、1つの配置済みのプログラム部品110と、1つの配置済みのコメント130とが選択されたことを検出する。ある局面において、ビジュアルプログラミングエディタ100は、ユーザーがプログラム部品110およびコメント130をマウスでクリックする等の任意の入力に基づいて、1つの配置済みのプログラム部品110と、1つの配置済みのコメント130とが選択されたことを検出してもよい。
【0131】
ステップS1620において、ビジュアルプログラミングエディタ100は、メニューの中からコメント130およびプログラム部品110の紐付けが選択されたことを検出する。ある局面において、ビジュアルプログラミングエディタ100は、ビジュアルプログラミングエディタ100のメニューバー内のメニューから紐付けが選択されたことを検出してもよい。他の局面において、ビジュアルプログラミングエディタ100は、マウスが右クリックされたことにより表示されたメニューから紐付けが選択されたことを検出してもよい。
【0132】
ステップS1630において、ビジュアルプログラミングエディタ100は、紐付け記憶部1107に、紐付けられたコメント130およびプログラム部品110の紐付け情報を格納する。
【0133】
ステップS1640において、ビジュアルプログラミングエディタ100は、ユーザーの操作に応じて、ステップS1610~S1630までの処理を反映したビジュアルプログラムに対応するテキストプログラムを出力する。
【0134】
ある局面において、ビジュアルプログラミングエディタ100は、パーソナルコンピューター、スマートフォンまたはタブレット等の任意の情報処理装置上で実行され得る。また、他の局面において、ビジュアルプログラミングエディタ100上のコメント130またはプログラム部品110の移動、メニューの表示等の任意の操作は、キーボード、マウス、タッチパネルおよび音声等の任意の入力手段を介して行なわれてもよい。
【0135】
以上説明したように、ビジュアルプログラミングエディタ100は、エディタ102上で作成されたビジュアルプログラムに基づいてテキストプログラムを生成する。その際、ビジュアルプログラミングエディタ100は、コメントおよびプログラム部品の紐付けの情報に基づいて、テキストプログラム上の適切な位置にコメントを配置し得る。当該機能により、ユーザーは可読性の高いテキストプログラムを得ることができる。
【0136】
また、ビジュアルプログラミングエディタ100は、手動でのコメント130およびプログラム部品110の紐付けまたは紐付けの削除機能を提供する。当該機能により、ユーザーは、より柔軟にコメント130およびプログラム部品110の紐付け操作を行なうことができる。
【0137】
<F.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
【0138】
[構成1]
1つ以上のプロセッサ(1201)に、
操作を受け付けたことに基づいて、1または複数のプログラム部品(110)と、1または複数のコメント(130)とをビジュアルプログラミングエディタ(100)の画面上に配置するステップと、
前記1または複数のコメントに含まれる特定のコメントと、前記1または複数のプログラム部品に含まれる特定のプログラム部品との位置関係に基づいて、前記特定のコメントを前記特定のプログラム部品に紐付けするか否かを判定するステップと、
前記特定のコメントを前記特定のプログラム部品に紐付けすると判定したことに基づいて、前記特定のコメントのテキストおよび前記特定のプログラム部品のテキストを近隣に配置したテキストベースのコード(150)を生成するステップとを実行させる、プログラム。
【0139】
[構成2]
前記特定のコメントを前記特定のプログラム部品に紐付けするか否かを判定するステップは、
前記特定のコメントから前記特定のプログラム部品までの距離が予め定められた閾値以内であるか否かを判定するステップと、
前記距離が前記閾値以下であることに基づいて、前記特定のコメントおよび前記特定のプログラム部品を紐付けるステップとを含む、構成1に記載のプログラム。
【0140】
[構成3]
前記1または複数のプログラム部品のいずれにも紐付けされていないコメントがあることに基づいて、前記テキストベースのコード内において、前記1または複数のプログラム部品のいずれにも紐付けされていないコメントのテキストを前記テキストベースのコードの先頭に配置するステップをさらに前記1つ以上のプロセッサに実行させる、構成2に記載のプログラム。
【0141】
[構成4]
前記特定のコメントを前記特定のプログラム部品の一定範囲内に近づける操作を受け付けたこと基づいて、前記閾値の範囲を表示するステップをさらに前記1つ以上のプロセッサに実行させる、構成2または3に記載のプログラム。
【0142】
[構成5]
前記1または複数のプログラム部品と、前記1または複数のコメントとを前記ビジュアルプログラミングエディタの画面上に配置するステップは、第1のプログラム部品と、第2のプログラム部品と、前記特定のコメントとを配置するステップを含み、
前記プログラムは、前記特定のコメントと前記第1のプログラム部品および前記第2のプログラム部品の各々との距離が前記閾値以下であることに基づいて、前記特定のコメントを前記第1のプログラム部品および前記第2のプログラム部品のうち距離が近い方のプログラム部品と紐付けるステップをさらに前記1つ以上のプロセッサに実行させる、構成2~4のいずれかに記載のプログラム。
【0143】
[構成6]
前記第1のプログラム部品および前記第2のプログラム部品が隣接して配置されている場合、前記第1のプログラム部品および前記第2のプログラム部品のいずれからも近い一定範囲内を前記特定のコメントと、前記第1のプログラム部品および前記第2のプログラム部品の各々との紐付けを行わない無効範囲に設定するステップをさらに前記1つ以上のプロセッサに実行させる、構成5に記載のプログラム。
【0144】
[構成7]
前記1または複数のプログラム部品と、前記1または複数のコメントとを前記ビジュアルプログラミングエディタの画面上に配置するステップは、前記特定のプログラム部品と、第1のコメントと、第2のコメントとを配置するステップを含み、
前記プログラムは、前記第1のコメントおよび前記第2のコメントのいずれもが前記特定のプログラム部品に紐付けられていることに基づいて、前記第1のコメントおよび前記第2のコメントの各々から前記特定のプログラム部品までの距離に基づいて、前記テキストベースのコード内における前記第1のコメントおよび前記第2のコメントの表示順序を決定するステップをさらに含む、構成2~6のいずれかに記載のプログラム。
【0145】
[構成8]
紐付けられた前記特定のコメントおよび前記特定のプログラム部品の間の距離を前記閾値よりも離す操作を受け付けたことに基づいて、前記特定のコメントおよび前記特定のプログラム部品の紐付けを解除するステップをさらに前記1つ以上のプロセッサに実行させる、構成2~7のいずれかに記載のプログラム。
【0146】
[構成9]
前記特定のプログラム部品に紐付けられた前記特定のコメントがダブルクリックされたことに基づいて、前記特定のコメントおよび前記特定のプログラム部品の紐付けを解除し、前記特定のコメントおよび前記特定のプログラム部品の間の距離を前記閾値よりも離すステップをさらに前記1つ以上のプロセッサに実行させる、構成2~8のいずれかに記載のプログラム。
【0147】
[構成10]
手動での紐付け制御命令の入力を受け付けたことに基づいて、前記特定のコメントおよび前記特定のプログラム部品の間の距離に関係なく、前記特定のコメントおよび前記特定のプログラム部品の紐付けまたは紐付けの解除処理を実行するステップをさらに前記1つ以上のプロセッサに実行させる、構成2~9のいずれかに記載のプログラム。
【0148】
[構成11]
前記特定のコメントおよび前記特定のプログラム部品を紐付けたことに基づいて、紐付けられた前記特定のコメントおよび前記特定のプログラム部品の色を変更するステップをさらに前記1つ以上のプロセッサに実行させる、構成2~10のいずれかに記載のプログラム。
【0149】
[構成12]
前記特定のコメントおよび前記特定のプログラム部品を紐付けたことに基づいて、紐付けられた前記特定のコメントおよび前記特定のプログラム部品の接続線を表示するステップをさらに前記1つ以上のプロセッサに実行させる、構成2~11のいずれかに記載のプログラム。
【0150】
[構成13]
前記特定のコメントおよび前記特定のプログラム部品を紐付けたことに基づいて、紐付けられた前記特定のコメントおよび前記特定のプログラム部品を囲う枠を表示するステップをさらに前記1つ以上のプロセッサに実行させる、構成2~12のいずれかに記載のプログラム。
【0151】
[構成14]
構成1~13のいずれかに記載のプログラムを格納したメモリー(1202)と、
前記プログラムを実行するための1以上のプロセッサをとを備える、コンピューター(1200)。
【0152】
[構成15]
コンピューターにおけるコードの変換に関する方法であって、
操作を受け付けたことに基づいて、1または複数のプログラム部品と、1または複数のコメントとをビジュアルプログラミングエディタの画面上に配置するステップと、
前記1または複数のコメントに含まれる特定のコメントと、前記1または複数のプログラム部品に含まれる特定のプログラム部品との位置関係に基づいて、前記特定のコメントを前記特定のプログラム部品に紐付けするか否かを判定するステップと、
前記特定のコメントを前記特定のプログラム部品に紐付けすると判定したことに基づいて、前記特定のコメントのテキストおよび前記特定のプログラム部品のテキストを近隣に配置したテキストベースのコードを生成するステップとを含む、方法。
【0153】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内で全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された開示内容は、可能な限り、単独でも、組合わせても、実施することが意図される。
【符号の説明】
【0154】
100 ビジュアルプログラミングエディタ、101 プログラム部品リスト、102 エディタ、105,300,400 ビジュアルプログラム、110,110A,110B,110C,110E,810A,810C,810D プログラム部品、120,120A,120B コネクタ、130,130A,130B,130C,130D,151A,151C,351C,451A,451B,830A,830B,830C,830E,830F,1030A,1030C,1030E,1030F コメント、150,350,450,1050 テキストプログラム、152A,152C,352A,352C,452A,1010A,1010C,1010D コード、201,701 紐付け領域、210,220,230 表示、601 反応領域、705 隣接部分、710 無効領域、1101 コメント配置部、1102 紐付け範囲表示部、1103 紐付け選択部、1104 紐付け表示部、1105 動的紐付け部、1106 手動紐付け部、1107 紐付け記憶部、1108 出力部、1200 装置、1201 CPU、1202 1次記憶装置、1203 2次記憶装置、1204 外部機器インターフェイス、1205 入力インターフェイス、1206 出力インターフェイス、1207 通信インターフェイス。