IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 横河電機株式会社の特許一覧

特許7477027情報処理装置、情報処理方法、及びプログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-04-22
(45)【発行日】2024-05-01
(54)【発明の名称】情報処理装置、情報処理方法、及びプログラム
(51)【国際特許分類】
   G06F 8/34 20180101AFI20240423BHJP
   G06Q 50/20 20120101ALI20240423BHJP
   G09B 19/00 20060101ALI20240423BHJP
   G09B 19/02 20060101ALI20240423BHJP
【FI】
G06F8/34
G06Q50/20
G09B19/00 Z
G09B19/02 Z
【請求項の数】 13
(21)【出願番号】P 2023120260
(22)【出願日】2023-07-24
【審査請求日】2023-07-27
【早期審査対象出願】
(73)【特許権者】
【識別番号】000006507
【氏名又は名称】横河電機株式会社
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【弁護士】
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100169823
【弁理士】
【氏名又は名称】吉澤 雄郎
(74)【代理人】
【識別番号】100202326
【弁理士】
【氏名又は名称】橋本 大佑
(72)【発明者】
【氏名】有吉 正宣
【審査官】北川 純次
(56)【参考文献】
【文献】特開2015-122007(JP,A)
【文献】特開2017-167899(JP,A)
【文献】HARVEY, Brian et al.,Bringing "No Ceiling" to Scratch: Can One Language Serve Kids and Computer Scientists?,Constructionism 2010 [online],2010年,pp. 1-10,[検索日 2023.10.31], インターネット:<URL:https://snap.berkeley.edu/old_site/BYOB.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/34
G06Q 50/20
G09B 19/00
G09B 19/02
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を支援する情報処理装置であって、
制御部を備え、前記制御部は、
前記プログラムに基づく一連の処理のうちの一部の処理をまとめて関連付けるステップブロックであって、一の前記ステップブロックから他の前記ステップブロックへの状態遷移に従い前記一連の処理が実行される前記ステップブロックを、機能ブロックの1つとして含み、他の前記ステップブロックと区別するための識別番号、前記一連の処理における順番を示すステップ番号、及び前記状態遷移により続けて処理を実行する次の前記ステップブロックの前記ステップ番号を含む前記プログラムを取得する、
情報処理装置。
【請求項2】
請求項1に記載の情報処理装置であって、
前記ステップブロックは、前記状態遷移に必要な遷移条件を示す第1機能ブロックと関連付けられている、
情報処理装置。
【請求項3】
請求項2に記載の情報処理装置であって、
前記ステップブロックは、AND又はORの論理演算に従って判定される複数の前記第1機能ブロックと関連付けられている、
情報処理装置。
【請求項4】
請求項1乃至3のいずれか1項に記載の情報処理装置であって、
前記ステップブロックは、前記状態遷移の前に実行される遷移処理を示す第2機能ブロックと関連付けられている、
情報処理装置。
【請求項5】
請求項1乃至3のいずれか1項に記載の情報処理装置であって、
前記制御部は、互いに並列して処理が実行される複数の前記ステップブロックを含む前記プログラムを取得する、
情報処理装置。
【請求項6】
請求項に記載の情報処理装置であって、
前記識別番号は、前記状態遷移に必要な遷移条件が複数の前記ステップブロックにおいて成立する場合に実行する処理の優先順位を示す優先度を含み、
前記制御部は、前記優先度に基づいて、複数の前記ステップブロックのうちの一の前記ステップブロックの処理を実行する、
情報処理装置。
【請求項7】
請求項1乃至3のいずれか1項に記載の情報処理装置であって、
前記制御部は、前記情報処理装置と通信可能に接続されている端末装置に、前記プログラムの実行状況を示す第1画面を表示させる、
情報処理装置。
【請求項8】
請求項に記載の情報処理装置であって、
前記制御部は、前記プログラムの実行に必要となる、前記ステップブロックで用いられる変数を編集するための第2画面を、前記端末装置に表示させる、
情報処理装置。
【請求項9】
請求項に記載の情報処理装置であって、
前記制御部は、前記プログラムの実行に基づく指示と前記指示に対するユーザからのコメントとを示す第3画面を、前記端末装置に表示させる、
情報処理装置。
【請求項10】
請求項に記載の情報処理装置であって、
前記制御部は、前記端末装置を用いてユーザの操作に従い前記プログラムを構築するための第4画面を、前記端末装置に表示させる、
情報処理装置。
【請求項11】
請求項10に記載の情報処理装置であって、
前記第4画面は、複数の前記機能ブロックの中から所定の前記機能ブロックを選択するための選択エリアと、選択された前記機能ブロックを前記ステップブロックごとに配列して前記プログラムを構築する構築エリアと、を含む、
情報処理装置。
【請求項12】
ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を支援する情報処理方法であって、
前記プログラムに基づく一連の処理のうちの一部の処理をまとめて関連付けるステップブロックであって、一の前記ステップブロックから他の前記ステップブロックへの状態遷移に従い前記一連の処理が実行される前記ステップブロックを、機能ブロックの1つとして含み、他の前記ステップブロックと区別するための識別番号、前記一連の処理における順番を示すステップ番号、及び前記状態遷移により続けて処理を実行する次の前記ステップブロックの前記ステップ番号を含む前記プログラムを取得すること、
を含む、
情報処理方法。
【請求項13】
ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を支援する情報処理装置に、
前記プログラムに基づく一連の処理のうちの一部の処理をまとめて関連付けるステップブロックであって、一の前記ステップブロックから他の前記ステップブロックへの状態遷移に従い前記一連の処理が実行される前記ステップブロックを、機能ブロックの1つとして含み、他の前記ステップブロックと区別するための識別番号、前記一連の処理における順番を示すステップ番号、及び前記状態遷移により続けて処理を実行する次の前記ステップブロックの前記ステップ番号を含む前記プログラムを取得すること、
を含む動作を実行させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【0002】
従来、プログラミングを支援するための技術が知られている。例えば、特許文献1には、パズル的な要素を取り入れ、プログラミングを楽しみながら自然に学ぶことのできるプログラミング支援具が開示されている。加えて、直感的な操作でプログラムを構築可能にするブロック型プログラミング言語が知られている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2022-178061号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来技術には、ブロック型プログラミング言語に従ったプログラムをより容易に理解できるようにするという観点で改善の余地があった。
【0005】
本開示は、ブロック型プログラミング言語に従ったプログラムをより容易に理解できるようにする情報処理装置、情報処理方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
幾つかの実施形態に係る情報処理装置は、ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を支援する情報処理装置であって、制御部を備え、前記制御部は、前記プログラムに基づく一連の処理のうちの一部の処理をまとめて関連付けるステップブロックであって、一の前記ステップブロックから他の前記ステップブロックへの状態遷移に従い前記一連の処理が実行される前記ステップブロックを、機能ブロックの1つとして含む前記プログラムを取得する。
【0007】
これにより、ブロック型プログラミング言語に従ったプログラムをより容易に理解することができる。情報処理装置は、ステップブロックを機能ブロックの1つとして含むプログラムを取得することで、ブロック型プログラミングに「ステップ」という概念を導入し、プログラムをよりシンプルに可視化することを可能にする。当該プログラムは、最初から最後まで一つなぎに表現されるのではなく、ステップとしての部分集合により表現される。したがって、プログラム全体が大規模となってもネストが深くなるようなことが軽減される。
【0008】
一実施形態における情報処理装置では、前記ステップブロックは、前記状態遷移に必要な遷移条件を示す第1機能ブロックと関連付けられていてもよい。これにより、情報処理装置により取得されるプログラムにおいて、一のステップブロックから他のステップブロックへとプログラムを状態遷移させるための条件が指定可能である。
【0009】
一実施形態における情報処理装置では、前記ステップブロックは、AND又はORの論理演算に従って判定される複数の前記第1機能ブロックと関連付けられていてもよい。これにより、情報処理装置により取得されるプログラムにおいて、一のステップブロックから他のステップブロックへとプログラムを状態遷移させるためのAND条件又はOR条件が指定可能である。
【0010】
一実施形態における情報処理装置では、前記ステップブロックは、前記状態遷移の前に実行される遷移処理を示す第2機能ブロックと関連付けられていてもよい。これにより、情報処理装置により取得されるプログラムにおいて、一のステップブロックから他のステップブロックへとプログラムを状態遷移させる直前の処理が指定可能である。
【0011】
一実施形態における情報処理装置では、前記ステップブロックは、前記一連の処理における順番を示すステップ番号を含んでもよい。これにより、ユーザは、所定のステップブロックが一連の処理において何番目のステップに該当するのかを容易に理解できる。
【0012】
一実施形態における情報処理装置では、前記ステップブロックは、前記状態遷移により続けて処理を実行する次の前記ステップブロックの前記ステップ番号を含んでもよい。これにより、情報処理装置により取得されるプログラムにおいて、一のステップブロックから他のステップブロックへとプログラムを状態遷移させるときの遷移先が指定可能である。情報処理装置の制御部は、各ステップにおいて遷移条件が成立したら、指定の遷移処理を実行して次のステップへと処理を移行できる。
【0013】
一実施形態における情報処理装置では、前記ステップブロックは、他の前記ステップブロックと区別するための識別番号を含んでもよい。これにより、情報処理装置により取得されるプログラムにおいて、ステップ番号が互いに同一である複数のステップブロックを互いに区別して指定することも可能となる。
【0014】
一実施形態における情報処理装置では、前記制御部は、互いに並列して処理が実行される複数の前記ステップブロックを含む前記プログラムを取得してもよい。これにより、当該プログラムにおいて、並列処理が可能となる。例えば、当該プログラムにおいて、図13A乃至図13Cに示されるような制御構文と同様の機能を実現させることも可能である。
【0015】
一実施形態における情報処理装置では、前記識別番号は、前記状態遷移に必要な遷移条件が複数の前記ステップブロックにおいて成立する場合に実行する処理の優先順位を示す優先度を含み、前記制御部は、前記優先度に基づいて、複数の前記ステップブロックのうちの一の前記ステップブロックの処理を実行してもよい。これにより、当該プログラムにおいて、図13A乃至図13Cに示されるような制御構文と同様の機能を実現させることも可能である。
【0016】
一実施形態における情報処理装置では、前記制御部は、前記情報処理装置と通信可能に接続されている端末装置に、前記プログラムの実行状況を示す第1画面を表示させてもよい。これにより、ユーザは、プログラムの現在の状態を端末装置の出力部を用いて容易に確認することができる。
【0017】
一実施形態における情報処理装置では、前記制御部は、前記プログラムの実行に必要となる、前記ステップブロックで用いられる変数を編集するための第2画面を、前記端末装置に表示させてもよい。これにより、ユーザは、プログラムに用いられる変数を、端末装置の出力部を視認しながら入力部を用いて容易に編集することができる。
【0018】
一実施形態における情報処理装置では、前記制御部は、前記プログラムの実行に基づく指示と前記指示に対するユーザからのコメントとを示す第3画面を、前記端末装置に表示させてもよい。これにより、ユーザは、プログラムの実行に基づく指示を端末装置の出力部を用いて容易に確認することができる。ユーザは、端末装置の入力部を用いて入力した、当該指示に対するコメントを、端末装置の出力部を用いて容易に確認することができる。
【0019】
一実施形態における情報処理装置では、前記制御部は、前記端末装置を用いてユーザの操作に従い前記プログラムを構築するための第4画面を、前記端末装置に表示させてもよい。これにより、ユーザは、ブロック型プログラミング言語に従ったプログラムを、端末装置の出力部を視認しながら入力部を用いて容易に作成可能である。
【0020】
一実施形態における情報処理装置では、前記第4画面は、複数の前記機能ブロックの中から所定の前記機能ブロックを選択するための選択エリアと、選択された前記機能ブロックを前記ステップブロックごとに配列して前記プログラムを構築する構築エリアと、を含んでもよい。
【0021】
これにより、ユーザがプログラムを構築するときの操作性が向上する。ユーザは、複数の機能ブロックの中から所定の機能ブロックを選択する操作と、選択された機能ブロックをステップブロックごとに配列してプログラムを構築する操作とを第4画面上の異なるエリアで行うことができる。ユーザは、プログラムをより容易に構築可能である。
【0022】
幾つかの実施形態に係る情報処理方法は、ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を支援する情報処理方法であって、前記プログラムに基づく一連の処理のうちの一部の処理をまとめて関連付けるステップブロックであって、一の前記ステップブロックから他の前記ステップブロックへの状態遷移に従い前記一連の処理が実行される前記ステップブロックを、機能ブロックの1つとして含む前記プログラムを取得すること、を含む。
【0023】
これにより、ブロック型プログラミング言語に従ったプログラムをより容易に理解することができる。情報処理方法を実行する情報処理装置は、ステップブロックを機能ブロックの1つとして含むプログラムを取得することで、ブロック型プログラミングに「ステップ」という概念を導入し、プログラムをよりシンプルに可視化することを可能にする。当該プログラムは、最初から最後まで一つなぎに表現されるのではなく、ステップとしての部分集合により表現される。したがって、プログラム全体が大規模となってもネストが深くなるようなことが軽減される。
【0024】
幾つかの実施形態に係るプログラムは、ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を支援する情報処理装置に、前記プログラムに基づく一連の処理のうちの一部の処理をまとめて関連付けるステップブロックであって、一の前記ステップブロックから他の前記ステップブロックへの状態遷移に従い前記一連の処理が実行される前記ステップブロックを、機能ブロックの1つとして含む前記プログラムを取得すること、を含む動作を実行させる。
【0025】
これにより、ブロック型プログラミング言語に従ったプログラムをより容易に理解することができる。情報処理装置は、ステップブロックを機能ブロックの1つとして含むプログラムを取得することで、ブロック型プログラミングに「ステップ」という概念を導入し、プログラムをよりシンプルに可視化することを可能にする。当該プログラムは、最初から最後まで一つなぎに表現されるのではなく、ステップとしての部分集合により表現される。したがって、プログラム全体が大規模となってもネストが深くなるようなことが軽減される。
【発明の効果】
【0026】
本開示の一実施形態に係る情報処理装置、情報処理方法、及びプログラムによれば、ブロック型プログラミング言語に従ったプログラムをより容易に理解できるようになる。
【図面の簡単な説明】
【0027】
図1】本開示の一実施形態に係る情報処理装置を含む情報処理システムの構成を示す構成図である。
図2図1の情報処理装置及び端末装置のそれぞれの概略構成を示すブロック図である。
図3図2の情報処理装置による処理の一例を説明するための第1図である。
図4図3のステップブロックの詳細を説明するための模式図である。
図5A図4の第1機能ブロック及び第2機能ブロックの一例を示す第1模式図である。
図5B図4の第1機能ブロック及び第2機能ブロックの一例を示す第2模式図である。
図5C図4の第1機能ブロック及び第2機能ブロックの一例を示す第3模式図である。
図6図2の情報処理装置による処理の一例を説明するための第2図である。
図7図2の情報処理装置による処理の一例を説明するための第3図である。
図8A図2の情報処理装置による処理の一例を説明するための第4図である。
図8B図2の情報処理装置による処理の一例を説明するための第5図である。
図9図2の情報処理装置による処理の一例を説明するための第6図である。
図10図2の情報処理装置による処理の一例を説明するための第7図である。
図11図2の情報処理装置による処理の一例を説明するための第8図である。
図12図2の情報処理装置による処理の一例を説明するための第9図である。
図13A図2の情報処理装置による処理の一例を説明するための第10図である。
図13B図2の情報処理装置による処理の一例を説明するための第11図である。
図13C図2の情報処理装置による処理の一例を説明するための第12図である。
図14図2の情報処理装置による処理の他の例を説明するための模式図である。
【発明を実施するための形態】
【0028】
従来技術の背景及び問題点についてより詳細に説明する。
【0029】
プログラムに慣れていないユーザでも直感的な操作でプログラムを視覚的に構築可能にするブロック型プログラミング言語が知られている。例えば、Google社が提供するBlockly及びBlocklyを用いたScratchなどが広く知られている。
【0030】
ユーザは、ブロック型プログラミング言語を用いると、1つの処理を示す機能ブロックを、ドラッグアンドドロップなどの操作により画面上で複数並べたり嵌め込んだりするだけでプログラムを構築可能である。しかしながら、ブロック型プログラミング言語は、本格的にプログラミングを学ぶ前の、プログラミングの入門として位置づけられるものである。
【0031】
従来のブロック型プログラミング言語では、if/else文及びwhile文などの制御構文が使用されていた。このような制御構文は、論理的なプログラムを構築する上では有益である。しかしながら、複数の機能ブロックの集合体としてプログラムの最初から最後までを一つなぎに表現する従来のブロック型プログラミング言語では、プログラム全体が大規模となり制御構文が多用されると、条件が分岐してネストが深くなる。
【0032】
これにより、プログラムの構造が複雑になり、長いプログラムの中でどのように条件の分岐が作られているかをユーザが理解することは容易ではなかった。このような大規模なプログラムを、当該プログラムを構築したユーザ自身ではなく他のユーザが理解しようとする場合、さらに難度が上がる。大規模なプログラムの見通しが良くないことで、他のユーザがプログラムを変更するときの理解が妨げられていた。
【0033】
当該プログラムを構築したユーザ自身及び他のユーザも含むユーザは、当該プログラムにおいて例えば制御構文を追加するなどの変更を部分的に加えようとしても、プログラムの一部を書き換えることは容易でなかった。ユーザは、プログラムの一部を書き換えようとする場合には、プログラムの現在の状態を判定する処理をその都度作成する必要があり、手間を多くかけていた。
【0034】
本開示は、以上のような問題点を解決するために、ブロック型プログラミング言語に従ったプログラムをより容易に理解できるようにする情報処理装置、情報処理方法、及びプログラムを提供することを目的とする。
【0035】
以下では、添付図面を参照しながら本開示の一実施形態について主に説明する。以下の説明は、本開示を適用した、情報処理装置10が実行する情報処理方法及びプログラムにも当てはまる。
【0036】
図1は、本開示の一実施形態に係る情報処理装置10を含む情報処理システム1の構成を示す構成図である。図1を参照しながら、本開示の一実施形態に係る情報処理装置10を含む情報処理システム1の概要について主に説明する。情報処理システム1は、情報処理装置10に加えて、端末装置20を有する。
【0037】
図1では説明の簡便のため、情報処理装置10及び端末装置20の各々について1つのみ図示しているが、情報処理システム1が有する情報処理装置10及び端末装置20の数はそれぞれ2つ以上であってもよい。情報処理装置10及び端末装置20のそれぞれは、移動体通信網及びインターネットなどを含むネットワーク30と通信可能に接続されている。
【0038】
情報処理装置10は、1つ又は互いに通信可能な複数のサーバ装置である。情報処理装置10は、これらに限定されず、PC(Personal Computer)又はスマートフォンなどの任意の汎用の電子機器であってもよいし、情報処理システム1に専用の他の電子機器であってもよい。
【0039】
端末装置20は、PC、タブレットPC、スマートフォン、又はスマートウォッチなどのウェアラブルデバイスなどの汎用の電子機器である。端末装置20は、ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を情報処理システム1により行うユーザが使用する電子機器である。端末装置20は、これらに限定されず、当該ユーザが使用する1つ又は互いに通信可能な複数のサーバ装置であってもよいし、情報処理システム1に専用の他の電子機器であってもよい。
【0040】
情報処理装置10は、端末装置20と協働しながら、ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を支援する。例えば、情報処理装置10は、端末装置20を用いたユーザからの操作に従い構築されたプログラムを、ネットワーク30を介して当該端末装置20から受信し、情報処理装置10自体に格納する。例えば、情報処理装置10は、ユーザにより構築されたプログラムの実行に関連する各種画面及び端末装置20を用いた操作によりユーザがプログラムを構築するための画面などを、ネットワーク30を介して端末装置20に表示させる。
【0041】
図2は、図1の情報処理装置10及び端末装置20のそれぞれの概略構成を示すブロック図である。図2を参照しながら、情報処理システム1に含まれる情報処理装置10及び端末装置20のそれぞれの構成の一例について主に説明する。
【0042】
図2に示すとおり、情報処理装置10は、通信部11、記憶部12、及び制御部13を有する。
【0043】
通信部11は、ネットワーク30に接続する1つ以上の通信インタフェースを含む。当該通信インタフェースは、例えば、4G(4th Generation)及び5G(5th Generation)などの移動体通信規格、有線LAN(Local Area Network)規格、又は無線LAN規格に対応するが、これらに限定されず任意の通信規格に対応してもよい。例えば、当該通信インタフェースは、近距離無線通信規格にも対応してもよい。一実施形態において、情報処理装置10は、通信部11を介してネットワーク30に通信可能に接続されている。通信部11は、ネットワーク30を介して多様な情報を送信及び受信する。
【0044】
記憶部12は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、ROM(Read-Only Memory)、及びRAM(Random Access Memory)などの記憶モジュールを含む。記憶部12は、情報処理装置10の動作を実現するために必要な情報を記憶する。記憶部12は、情報処理装置10の動作によって得られた情報を記憶する。例えば、記憶部12は、システムプログラム、アプリケーションプログラム、及び通信などの任意の手段で取得される各種データなどを記憶する。
【0045】
記憶部12は、主記憶モジュール、補助記憶モジュール、又はキャッシュメモリとして機能してもよい。記憶部12は、情報処理装置10に内蔵されているものに限定されず、USB(Universal Serial Bus)などのデジタル入出力ポートなどによって接続されている外付け型の記憶モジュールを含んでもよい。
【0046】
制御部13は、1つ以上のプロセッサを含む。本開示において、「プロセッサ」は、汎用のプロセッサ、又は特定の処理に特化した専用のプロセッサであるが、これらに限定されない。制御部13は、例えば、CPU(Central Processing Unit)を含む。制御部13は、情報処理装置10を構成する各構成部と通信可能に接続され、情報処理装置10全体の動作を制御する。
【0047】
情報処理システム1に含まれる端末装置20の構成について主に説明する。図2に示されるように、端末装置20は、通信部21、記憶部22、入力部23、出力部24、及び制御部25を有する。
【0048】
通信部21は、ネットワーク30に接続する1つ以上の通信インタフェースを含む。当該通信インタフェースは、例えば、4G及び5Gなどの移動体通信規格、有線LAN規格、又は無線LAN規格に対応するが、これらに限定されず任意の通信規格に対応してもよい。例えば、当該通信インタフェースは、近距離無線通信規格にも対応してもよい。一実施形態において、端末装置20は、通信部21を介してネットワーク30に通信可能に接続されている。通信部21は、ネットワーク30を介して多様な情報を送信及び受信する。
【0049】
記憶部22は、HDD、SSD、EEPROM、ROM、及びRAMなどの記憶モジュールを含む。記憶部22は、端末装置20の動作を実現するために必要な情報を記憶する。記憶部22は、端末装置20の動作によって得られた情報を記憶する。例えば、記憶部22は、システムプログラム、アプリケーションプログラム、及び通信などの任意の手段で取得される各種データなどを記憶する。
【0050】
記憶部22は、主記憶モジュール、補助記憶モジュール、又はキャッシュメモリとして機能してもよい。記憶部22は、端末装置20に内蔵されているものに限定されず、USBなどのデジタル入出力ポートなどによって接続されている外付け型の記憶モジュールを含んでもよい。
【0051】
入力部23は、ユーザ入力を検出して、ユーザの操作に基づく入力情報を取得する1つ以上の入力インタフェースを含む。当該入力インタフェースは、物理キー、静電容量キー、マウス、出力部24のディスプレイと一体的に設けられたタッチスクリーン、カメラなどの撮像モジュール、及び音声入力を受け付けるマイクロフォンなどを含む。
【0052】
出力部24は、情報を出力してユーザに通知する1つ以上の出力インタフェースを含む。当該出力インタフェースは、情報を画像で出力するディスプレイ、情報を音で出力するスピーカ、及び情報を振動で出力するバイブレータなどを含む。ディスプレイは、LCD(Liquid Crystal Display)及び有機EL(Electro Luminescence)ディスプレイなどを含む。
【0053】
制御部25は、1つ以上のプロセッサを含む。制御部25は、例えば、CPUを含む。制御部25は、端末装置20を構成する各構成部と通信可能に接続され、端末装置20全体の動作を制御する。
【0054】
初めに、情報処理装置10が端末装置20と協働しながら、ブロック型プログラミング言語に従ったプログラムのユーザによる作成を支援するときの情報処理システム1における処理の一例について主に説明する。
【0055】
図3は、図2の情報処理装置10による処理の一例を説明するための第1図である。図3を参照しながら、通信部11及びネットワーク30を介して情報処理装置10が端末装置20の出力部24に表示させる画面S1について主に説明する。
【0056】
情報処理装置10の制御部13は、情報処理装置10と通信可能に接続されている端末装置20を用いてユーザの操作に従いプログラムを構築するための画面S1を、端末装置20に表示させる。端末装置20の制御部25は、入力部23を用いたユーザの操作に従いプログラムを構築するための画面S1を、出力部24により表示する。ユーザは、端末装置20の出力部24に表示された画面S1を視認しながら、入力部23を用いて操作を行うことで、ブロック型プログラミング言語に従ったプログラムを作成する。
【0057】
画面S1は、複数の機能ブロックBの中から所定の機能ブロックBを選択するための選択エリアA1を含む。画面S1は、選択エリアA1からユーザにより選択された機能ブロックBを、後述するステップブロックB1ごとに配列してプログラムを構築する構築エリアA2を含む。ユーザは、例えば、ブロック型プログラミング言語に従ってプログラムを作成するときに、選択エリアA1に配置されている複数の機能ブロックBの中から必要となる機能ブロックBを選択して、ドラッグアンドドロップなどの操作に基づいて構築エリアA2に移動させる。ユーザは、このような操作を繰り返すことで、開始から終了までの一連の処理を実行させるプログラムを構築する。
【0058】
端末装置20の制御部25は、入力部23を用いたユーザの操作に従って、選択エリアA1に表示される機能ブロックBの種類を随時変更する。選択エリアA1では、例えば、機能ブロックBの属性名が選択されることで、選択された属性名に関連付けられている少なくとも1つの機能ブロックBが表示される。ユーザは、プログラムの構築にあたり使用する機能ブロックBの属性名をクリックして、必要な機能ブロックBを選択できるように選択エリアA1の表示を更新する。本開示において、「属性名」は、定義、基本、インプット、ファイル操作、時刻データ、及びその他などを含む。
【0059】
端末装置20の制御部25は、入力部23を用いたユーザの操作に従って、変数の定義を行うための機能ブロックB0と、複数のステップブロックB1とを構築エリアA2で配列して表示する。機能ブロックB0では、data1及びdata2の変数について定義されている。複数のステップブロックB1は、プログラムとして実行される一連の処理の流れを示す。ステップブロックB1に関連付けられている機能ブロックBの処理が、複数のステップブロックB1にわたりステップ番号1から順番に実行される。
【0060】
図4は、図3のステップブロックB1の詳細を説明するための模式図である。図4を参照しながら、図2の情報処理装置10が取得するプログラムに機能ブロックBの1つとして含まれるステップブロックB1の一例について詳細に説明する。
【0061】
ステップブロックB1は、プログラムに基づく一連の処理のうちの一部の処理をまとめて関連付ける。一のステップブロックB1から他のステップブロックB1への状態遷移に従い一連の処理が実行される。本開示において、「状態」は、例えば、プログラムにおいてステップブロックB1により定められる処理のステップを意味する。「状態遷移」は、例えば、プログラムが実行されているときに、現在の状態(ステップ)から次の状態(ステップ)にプログラムが遷移することを意味する。
【0062】
ステップブロックB1は、状態遷移に必要な遷移条件を示す第1機能ブロックB11と関連付けられている。一のステップブロックB1に関連付けられている第1機能ブロックB11は、他のステップブロックB1へ状態遷移するための条件を示す。プログラムが実行されているときに遷移条件が成立すると、処理は、一のステップブロックB1に基づく内容から、他のステップブロックB1に基づく内容へと遷移する。
【0063】
図4に示されるステップブロックB1は、複数の第1機能ブロックB11と関連付けられている。例えば、ステップブロックB1は、ANDの論理演算に従って判定される複数の第1機能ブロックB11と関連付けられている。複数の第1機能ブロックB11によりそれぞれ示される複数の遷移条件が全て成立すると、処理は、他のステップブロックB1に基づく内容へと遷移する。例えば、変数data1の値が1であり、かつ変数data2の値も1であると、処理は、他のステップブロックB1に基づく内容へと遷移する。
【0064】
ステップブロックB1は、以上のような状態遷移の前に実行される遷移処理を示す第2機能ブロックB12と関連付けられている。一のステップブロックB1に関連付けられている第2機能ブロックB12は、他のステップブロックB1へ状態遷移する前に実行される処理を示す。例えば、一のステップブロックB1により定められる現在の状態において、第1機能ブロックB11により示される遷移条件が成立すると、第2機能ブロックB12により示される遷移処理が実行される。遷移処理は、例えば、同一のステップブロックB1に関連付けられている遷移条件の成立後であって、状態遷移の前に実行される処理である。したがって、第1機能ブロックB11と第2機能ブロックB12とは、互いに異なるものである。その後、処理は、一のステップブロックB1に基づく内容から、他のステップブロックB1に基づく内容へと遷移する。
【0065】
図4に示されるステップブロックB1は、複数の第2機能ブロックB12と関連付けられている。例えば、当該ステップブロックB1において、複数の第1機能ブロックB11によりそれぞれ示される複数の遷移条件が全て成立すると、複数の第2機能ブロックB12によりそれぞれ示される複数の遷移処理が全て実行される。例えば、変数data1の値が1であり、かつ変数data2の値も1であるとき、変数data1に値10を代入する処理と、変数data2に値20を代入する処理とが実行される。その後、処理は、他のステップブロックB1に基づく内容へと遷移する。
【0066】
ステップブロックB1は、プログラムに基づく一連の処理での順番を示すステップ番号N1を含む。ステップブロックB1は、状態遷移により続けて処理を実行する次のステップブロックB1のステップ番号N2を含む。例えば、ステップ番号N1が1であるステップブロックB1に対して、ステップ番号N2が2である次のステップブロックB1が関連付けられている。図4に示されるステップブロックB1では、状態遷移前の現在の状態がステップ番号1で示され、状態遷移後の次の状態がステップ番号2で示されている。
【0067】
ステップブロックB1は、他のステップブロックB1と区別するための識別番号N3を一意に含む。複数のステップブロックB1は、全て異なる識別番号N3で示される。図4に示されるステップブロックB1では、識別番号N3として1が示されている。複数のステップブロックB1において、ステップ番号N1が互いに同一となったり、ステップ番号N2が互いに同一となったりする場合が考えられる一方で、識別番号N3は、複数のステップブロックB1にわたり全て異なる。
【0068】
以下では、図5A乃至図5Cを参照しながら、図4に示される第1機能ブロックB11及び第2機能ブロックB12の一例について主に説明する。
【0069】
図5Aは、図4の第1機能ブロックB11及び第2機能ブロックB12の一例を示す第1模式図である。図5Aは、図3の属性名のうち「基本」に関連付けられている機能ブロックBの一例を示す。属性名のうち「基本」に関連付けられている機能ブロックBとして、比較の第1機能ブロックB11、並びに代入、数値演算、出力、及びユーザファイル表示の第2機能ブロックB12が含まれる。
【0070】
比較の第1機能ブロックB11は、左辺に入力された変数を右辺に入力された数値と比較して、当該変数が当該数値と一致するという遷移条件が成立しているか否かの判定処理に用いられる。代入の第2機能ブロックB12は、左辺に入力された変数に、右辺に入力された数値を代入する処理に用いられる。数値演算の第2機能ブロックB12は、左辺に入力された変数に対して右辺に入力された演算式を当てはめる数値演算処理に用いられる。出力の第2機能ブロックB12は、入力されたメッセージを端末装置20の出力部24などによりユーザに出力する処理に用いられる。ユーザファイル表示の第2機能ブロックB12は、入力されたメッセージと共にファイルを端末装置20の出力部24などによりユーザに出力する処理に用いられる。
【0071】
図5Bは、図4の第1機能ブロックB11及び第2機能ブロックB12の一例を示す第2模式図である。図5Bは、図3の属性名のうち「インプット」に関連付けられている機能ブロックBの一例を示す。属性名のうち「インプット」に関連付けられている機能ブロックBとして、入力チェックの第1機能ブロックB11、並びにリスト入力、時刻入力、数値入力、テキスト入力、及びファイル入力の第2機能ブロックB12が含まれる。
【0072】
入力チェックの第1機能ブロックB11は、入力が正しく行われているという遷移条件が成立しているか否かの判定処理に用いられる。リスト入力の第2機能ブロックB12は、コメントと共にリストとしての変数をプルダウンなどで入力させるリスト入力の処理に用いられる。時刻入力の第2機能ブロックB12は、コメントと共に時刻としての変数を入力させる時刻入力の処理に用いられる。数値入力の第2機能ブロックB12は、コメントと共に数値としての変数を入力させる数値入力の処理に用いられる。テキスト入力の第2機能ブロックB12は、コメントと共にテキストとしての変数を入力させるテキスト入力の処理に用いられる。ファイル入力の第2機能ブロックB12は、コメントと共にユーザが指定したファイルの内容を変数として保持させるファイル入力の処理に用いられる。
【0073】
図5Cは、図4の第1機能ブロックB11及び第2機能ブロックB12の一例を示す第3模式図である。図5Cは、図3の属性名のうち「ファイル操作」に関連付けられている機能ブロックBの一例を示す。属性名のうち「ファイル操作」に関連付けられている機能ブロックBとして、ファイル確認の第1機能ブロックB11、並びにファイル読込、ファイル出力、Excel新規、Excel読込、Excel書込、ファイル複製、及びファイル移動の第2機能ブロックB12が含まれる。
【0074】
ファイル確認の第1機能ブロックB11は、入力されたフォルダに入力されたファイルが確認できるという遷移条件が成立しているか否かの判定処理に用いられる。ファイル読込の第2機能ブロックB12は、入力されたファイルから入力された変数を読み込む処理に用いられる。ファイル出力の第2機能ブロックB12は、入力された変数をファイル名とし、入力された拡張子に基づきファイルを出力する処理に用いられる。
【0075】
Excel新規の第2機能ブロックB12は、入力されたファイル名で入力されたシートを新規に作成する処理に用いられる。Excel読込の第2機能ブロックB12は、入力されたファイルのシート範囲から入力された変数を読み込む処理に用いられる。Excel書込の第2機能ブロックB12は、入力されたファイルのシートの先頭セルから入力された変数を書き込む処理に用いられる。
【0076】
ファイル複製の第2機能ブロックB12は、入力された元ファイルを入力された新ファイルとして新たに複製する処理に用いられる。ファイル移動の第2機能ブロックB12は、入力されたフォルダに入力されたファイルを移動する処理に用いられる。
【0077】
図3を再度参照すると、識別番号N3及びステップ番号N1が共に1であるステップブロックB1に関連付けられている処理が最初に実行される。このとき、遷移条件を示す比較の第1機能ブロックB11に従って、変数data1の値が1であるという遷移条件が成立しているか否かを判定する。変数data1の値が1であると、代入の第2機能ブロックB12に従って変数data2に値100を代入し、プログラムがステップ番号1からステップ番号2へと状態遷移する。
【0078】
識別番号N3及びステップ番号N1が共に2であるステップブロックB1に関連付けられている処理が続いて実行される。このとき、遷移条件を示す比較の第1機能ブロックB11に従って、変数data1の値が2であるという遷移条件が成立しているか否かを判定する。変数data1の値が2であると、出力の第2機能ブロックB12に従って「終了します」というメッセージを出力し、プログラムがステップ番号2から終了を意味するステップ番号100へと状態遷移する。
【0079】
情報処理装置10の制御部13は、以上のように、機能ブロックBの1つであるステップブロックB1が複数配列されたプログラムを、ネットワーク30及び通信部11を介して端末装置20から受信する。制御部13は、端末装置20から取得されたプロブラムを記憶部12に格納する。
【0080】
続いて、情報処理装置10が端末装置20と協働しながら、ブロック型プログラミング言語に従ったプログラムの実行を支援するときの情報処理システム1における処理の一例について主に説明する。
【0081】
図6は、図2の情報処理装置10による処理の一例を説明するための第2図である。図6を参照しながら、通信部11及びネットワーク30を介して情報処理装置10が端末装置20の出力部24に表示させる画面S2について主に説明する。
【0082】
情報処理装置10の制御部13は、情報処理装置10と通信可能に接続されている端末装置20に、プログラムの実行状況を示す画面S2を表示させる。図6に示される画面S2は、図3に示されるように構築されたプログラムの実行状況を示す。端末装置20の制御部25は、情報処理装置10の制御部13により実行される当該プログラムの実行状況を示す画面S2を、出力部24により表示する。ユーザは、端末装置20の出力部24に表示された画面S2を視認しながら、当該プログラムの実行状況を確認する。
【0083】
情報処理装置10の制御部13は、プログラムの現在の状態を画面S2によりユーザに示すために、現在実行している処理に対応する機能ブロックをハイライト表示させる。例えば、制御部13は、識別番号N3及びステップ番号N1が共に2であるステップブロックB1において、遷移条件が成立しているか否かを判定しているとき、当該遷移条件を示す第1機能ブロックB11に対応するボックスをハイライト表示させる。
【0084】
図7は、図2の情報処理装置10による処理の一例を説明するための第3図である。図7を参照しながら、通信部11及びネットワーク30を介して情報処理装置10が端末装置20の出力部24に表示させる画面S3について主に説明する。
【0085】
情報処理装置10の制御部13は、プログラムの実行に必要となる、ステップブロックB1で用いられる変数を編集するための画面S3を、端末装置20に表示させる。図7に示される画面S3は、図3に示されるように構築されたプログラムの実行に必要となる変数を編集するためのものである。端末装置20の制御部25は、情報処理装置10の制御部13による当該プログラムの実行に必要となる変数を編集するための画面S3を、出力部24により表示する。ユーザは、端末装置20の出力部24に表示された画面S3を視認しながら入力部23を操作することで、当該プログラムの実行に必要となる変数を編集する。例えば、ユーザは、変数data1及びdata2の値を端末装置20の入力部23を用いた入力操作に基づいて編集する。
【0086】
図8Aは、図2の情報処理装置10による処理の一例を説明するための第4図である。図8Bは、図2の情報処理装置10による処理の一例を説明するための第5図である。図8A及び図8Bは、図3に示される画面S1において端末装置20の入力部23を用いてユーザにより構築されたプログラムの他の例を示す。図8A及び図8Bに示されるように、当該プログラムでは、ステップブロックB1が6つ配列されている。
【0087】
識別番号N3及びステップ番号N1が共に1であるステップブロックB1は、遷移条件を示す第1機能ブロックB11と関連付けられておらず、遷移処理を示す複数の第2機能ブロックB12と関連付けられている。当該複数の第2機能ブロックB12は、連続する2つの出力の第2機能ブロックB12と、テキスト入力の第2機能ブロックB12と、数値入力の第2機能ブロックB12と、リスト入力の第2機能ブロックB12とを順に含む。これらの遷移処理が実行されると、プログラムは、ステップ番号2の状態に遷移する。
【0088】
識別番号N3及びステップ番号N1が共に2であるステップブロックB1は、遷移条件を示す入力チェックの第1機能ブロックB11及び遷移処理を示す複数の第2機能ブロックB12と関連付けられている。当該複数の第2機能ブロックB12は、出力の第2機能ブロックB12と、ユーザファイル表示の第2機能ブロックB12と、連続する2つの出力の第2機能ブロックB12と、時刻入力の第2機能ブロックB12とを順に含む。これらの遷移処理が実行されると、プログラムは、ステップ番号3の状態に遷移する。
【0089】
識別番号N3及びステップ番号N1が共に3であるステップブロックB1は、遷移条件を示す入力チェックの第1機能ブロックB11及び遷移処理を示す複数の第2機能ブロックB12と関連付けられている。当該複数の第2機能ブロックB12は、出力の第2機能ブロックB12と、連続する2つのユーザファイル表示の第2機能ブロックB12とを順に含む。これらの遷移処理が実行されると、プログラムは、ステップ番号4の状態に遷移する。
【0090】
当該プログラムにおいて、ステップ番号4の状態は、互いに異なる識別番号N3によって2つ並列されている。
【0091】
識別番号N3及びステップ番号N1が共に4であるステップブロックB1は、遷移条件を示す複数の第1機能ブロックB11及び遷移処理を示す複数の第2機能ブロックB12と関連付けられている。当該複数の第1機能ブロックB11は、比較の第1機能ブロックB11と、時刻指定の第1機能ブロックB11とを順に含む。当該複数の第2機能ブロックB12は、連続する3つの出力の第2機能ブロックB12と、ユーザファイル表示の第2機能ブロックB12とを順に含む。これらの遷移処理が実行されると、プログラムは、ステップ番号100の状態に遷移して終了する。
【0092】
識別番号N3が5であり、ステップ番号N1が4であるステップブロックB1は、遷移条件を示す比較の第1機能ブロックB11及び遷移処理を示す複数の第2機能ブロックB12と関連付けられている。当該複数の第2機能ブロックB12は、連続する2つの出力の第2機能ブロックB12と、ユーザファイル表示の第2機能ブロックB12とを順に含む。これらの遷移処理が実行されると、プログラムは、ステップ番号6の状態に遷移する。
【0093】
識別番号N3及びステップ番号N1が共に6であるステップブロックB1は、遷移条件を示す比較の第1機能ブロックB11及び遷移処理を示す複数の第2機能ブロックB12と関連付けられている。当該複数の第2機能ブロックB12は、連続する2つの出力の第2機能ブロックB12と、ユーザファイル表示の第2機能ブロックB12とを順に含む。これらの遷移処理が実行されると、プログラムは、ステップ番号4の状態に遷移する。
【0094】
当該プログラムのステップ番号4において、互いに異なる識別番号N3を有するステップブロックB1が並列して配置されている。情報処理装置10の制御部13は、互いに並列して処理が実行される複数のステップブロックB1を含む当該プログラムを、ネットワーク30及び通信部11を介して端末装置20から取得する。
【0095】
制御部13は、状態遷移に必要な遷移条件が複数のステップブロックB1のいずれかにおいて成立する場合、遷移条件が成立したステップブロックB1の処理のみを実行する。例えば、図6に示されるように、ステップ番号N1が4である2つのステップブロックB1において状態遷移に必要な遷移条件がいずれか一方においてのみ成立する場合、制御部13は、いずれか一方のステップブロックB1の処理のみを実行する。
【0096】
逆に、制御部13は、状態遷移に必要な遷移条件が複数のステップブロックB1において成立する場合、識別番号N3が最も小さいステップブロックB1の処理を優先して実行する。仮に、図6のステップ番号N1が4である2つのステップブロックB1において状態遷移に必要な遷移条件が両方とも成立する場合、制御部13は、識別番号N3が4であるステップブロックB1の処理を優先して実行する。
【0097】
識別番号N3は、状態遷移に必要な遷移条件が複数のステップブロックB1において成立する場合に実行する処理の優先順位を示す優先度を含む。優先度は、識別番号N3が上記のように数字で表される場合、当該数字自体に対応する。例えば、優先度は、当該数字が小さいほど高くてもよい。制御部13は、優先度に基づいて、複数のステップブロックB1のうちの一のステップブロックB1の処理を実行する。例えば、制御部13は、状態遷移に必要な遷移条件が複数のステップブロックB1において成立する場合、優先度が最も高い、すなわち識別番号N3の数字が最も小さいステップブロックB1の処理を優先して実行する。
【0098】
図9は、図2の情報処理装置10による処理の一例を説明するための第6図である。図9を参照しながら、通信部11及びネットワーク30を介して情報処理装置10が端末装置20の出力部24に表示させる画面S4について主に説明する。
【0099】
情報処理装置10の制御部13は、プログラムの実行に基づく指示と当該指示に対するユーザからのコメントとを示す画面S4を、端末装置20に表示させる。画面S4には、プログラムの実行に基づく指示と当該指示に対するユーザからのコメントに加えて、プログラムの実行の結果出力される画像も表示される。
【0100】
図9に示される画面S4は、図8Aに示されるように構築されたプログラムの実行に基づく指示、当該指示に対するユーザからのコメント、及びプログラムの実行の結果出力される画像を部分的に示す。端末装置20の制御部25は、情報処理装置10の制御部13による当該プログラムの実行に基づく画面S4を、出力部24により表示する。
【0101】
ユーザは、端末装置20の出力部24に表示された画面S4上で当該プログラムからの指示を確認しながら入力部23を操作することで、当該指示に対するコメントを入力する。例えば、ユーザは、「詳細情報をインプットしてください」との指示に対し、ロット番号、製造量、及び対象となる会社をコメントとして入力する。
【0102】
図10は、図2の情報処理装置10による処理の一例を説明するための第7図である。図11は、図2の情報処理装置10による処理の一例を説明するための第8図である。図12は、図2の情報処理装置10による処理の一例を説明するための第9図である。図10乃至図12を参照しながら、ネットワーク30及び通信部11を介して情報処理装置10が端末装置20から取得するプログラムについて主に説明する。
【0103】
上述したとおり、端末装置20の入力部23を用いてユーザにより作成され、情報処理装置10の制御部13により実行されるプログラムは、状態として定義されるステップのフローとして構築される。プログラムは、開始から終了までを複数の状態に分割される。図10に示される例では、プログラムは、開始から終了まで、ステップ1の状態と、ステップ2の状態とに分割される。図12に示される例では、プログラムは、開始から終了まで、3つ以上のさらに多くの状態に分割される。
【0104】
図11に示されるように、ユーザは、端末装置20の入力部23を用いながら、プログラムの開始から終了までのステップルールを各ステップブロックB1において作成する。当該ステップルールは、プログラムが状態遷移するための遷移条件、遷移条件が成立したときに実行される遷移処理、及び遷移先となるステップの番号などを含む。
【0105】
例えば、ステップ1におけるステップルールは、2つの遷移条件を含む。ステップ1におけるステップルールは、2つの遷移条件が共に成立したときに実行される2つの遷移処理を含む。ステップ1におけるステップルールは、遷移先となるステップの番号2を含む。例えば、ステップ2におけるステップルールは、2つの遷移条件を含む。ステップ2におけるステップルールは、2つの遷移条件が共に成立したときに実行される2つの遷移処理を含む。ステップ2におけるステップルールは、処理の終了を遷移先として含む。
【0106】
図13Aは、図2の情報処理装置10による処理の一例を説明するための第10図である。図13Bは、図2の情報処理装置10による処理の一例を説明するための第11図である。図13Cは、図2の情報処理装置10による処理の一例を説明するための第12図である。図13A乃至図13Cを参照しながら、ネットワーク30及び通信部11を介して情報処理装置10が端末装置20から取得するプログラムにおいて、if/else文などの制御構文と同様の機能を得るためのステップルールの作成方法について主に説明する。
【0107】
図13Aは、分岐を得るためのif/else文と同様の機能を得るためのステップルールを示す。プログラムは、ステップ1の状態において遷移条件Aが成立すると、ステップ2の状態に遷移する。プログラムは、ステップ1の状態において遷移条件Bが成立すると、ステップ3の状態に遷移する。このとき、プログラムは、2つのステップブロックB1を含む。
【0108】
識別番号N3が01であるステップブロックB1では、遷移条件Aが関連付けられている。当該ステップブロックB1では、遷移条件Aが成立したときに実行される遷移処理A’が関連付けられている。当該ステップブロックB1では、遷移先となるステップの番号2が関連付けられている。
【0109】
識別番号N3が02であるステップブロックB1では、遷移条件Bが関連付けられている。当該ステップブロックB1では、遷移条件Bが成立したときに実行される遷移処理B’が関連付けられている。当該ステップブロックB1では、遷移先となるステップの番号3が関連付けられている。
【0110】
情報処理装置10の制御部13は、プログラムを実行するときに、識別番号N3が01であるステップ1及び識別番号N3が02であるステップ1の両方の処理を並行して実行する。プログラムは、遷移条件A又は遷移条件Bの少なくとも一方の成立に応じて、遷移する状態が変わる。プログラムは、遷移条件Aのみの成立に応じて、ステップ1の状態からステップ2の状態に遷移する。プログラムは、遷移条件Bのみの成立に応じて、ステップ1の状態からステップ3の状態に遷移する。遷移条件A及び遷移条件Bが共に成立すると、識別番号N3が最も小さいステップブロックB1の処理が優先されるので、プログラムは、ステップ1の状態からステップ2の状態に遷移する。
【0111】
図13Bは、繰り返しを得るためのfor文と同様の機能を得るためのステップルールを示す。プログラムは、ステップ1の状態において遷移条件Cが成立すると、ステップ2の状態に遷移する。プログラムは、ステップ1の状態において遷移条件Dが成立すると、ステップ1の状態自体に遷移する。このとき、プログラムは、2つのステップブロックB1を含む。
【0112】
識別番号N3が01であるステップブロックB1では、遷移条件Cが関連付けられている。当該ステップブロックB1では、遷移条件Cが成立したときに実行される遷移処理C’が関連付けられている。当該ステップブロックB1では、遷移先となるステップの番号2が関連付けられている。
【0113】
識別番号N3が02であるステップブロックB1では、遷移条件Dが関連付けられている。当該ステップブロックB1では、遷移条件Dが成立したときに実行される遷移処理D’が関連付けられている。当該ステップブロックB1では、遷移先となるステップの番号1が関連付けられている。
【0114】
情報処理装置10の制御部13は、プログラムを実行するときに、識別番号N3が01であるステップ1及び識別番号N3が02であるステップ1の両方の処理を並行して実行する。プログラムは、遷移条件C又は遷移条件Dの少なくとも一方の成立に応じて、遷移する状態が変わる。プログラムは、遷移条件Cのみの成立に応じて、ステップ1の状態からステップ2の状態に遷移する。プログラムは、遷移条件Dのみの成立に応じて、ステップ1の状態からステップ1の状態に遷移する。遷移条件C及び遷移条件Dが共に成立すると、識別番号N3が最も小さいステップブロックB1の処理が優先されるので、プログラムは、ステップ1の状態からステップ2の状態に遷移する。
【0115】
図13Cは、ジャンプを得るためのgoto文と同様の機能を得るためのステップルールを示す。プログラムは、ステップ1の状態において遷移条件Eが成立すると、ステップ2の状態に遷移する。プログラムは、ステップ1の状態において遷移条件Fが成立すると、ステップ2の状態を飛び越してステップ3の状態に遷移する。このとき、プログラムは、2つのステップブロックB1を含む。
【0116】
識別番号N3が01であるステップブロックB1では、遷移条件Eが関連付けられている。当該ステップブロックB1では、遷移条件Eが成立したときに実行される遷移処理E’が関連付けられている。当該ステップブロックB1では、遷移先となるステップの番号2が関連付けられている。
【0117】
識別番号N3が02であるステップブロックB1では、遷移条件Fが関連付けられている。当該ステップブロックB1では、遷移条件Fが成立したときに実行される遷移処理F’が関連付けられている。当該ステップブロックB1では、遷移先となるステップの番号3が関連付けられている。
【0118】
情報処理装置10の制御部13は、プログラムを実行するときに、識別番号N3が01であるステップ1及び識別番号N3が02であるステップ1の両方の処理を並行して実行する。プログラムは、遷移条件E又は遷移条件Fの少なくとも一方の成立に応じて、遷移する状態が変わる。プログラムは、遷移条件Eのみの成立に応じて、ステップ1の状態からステップ2の状態に遷移する。プログラムは、遷移条件Fのみの成立に応じて、ステップ1の状態からステップ3の状態に遷移する。遷移条件E及び遷移条件Fが共に成立すると、識別番号N3が最も小さいステップブロックB1の処理が優先されるので、プログラムは、ステップ1の状態からステップ2の状態に遷移する。
【0119】
以上のような一実施形態によれば、ブロック型プログラミング言語に従ったプログラムをより容易に理解することができる。情報処理装置10は、ステップブロックB1を機能ブロックBの1つとして含むプログラムを取得することで、ブロック型プログラミングに「ステップ」という概念を導入し、プログラムをよりシンプルに可視化することを可能にする。当該プログラムは、最初から最後まで一つなぎに表現されるのではなく、ステップとしての部分集合により表現される。したがって、プログラム全体が大規模となってもネストが深くなるようなことが軽減される。
【0120】
これにより、プログラムの構造が単純化され、長いプログラムの中でどのように条件の分岐が作られているかをユーザは容易に理解できる。当該プログラムを構築したユーザ自身ではなく他のユーザであっても、このような大規模なプログラムを容易に理解することができる。大規模なプログラムの見通しが良いことで、他のユーザがプログラムを変更するときでもその理解が容易になる。
【0121】
当該プログラムを構築したユーザ自身及び他のユーザも含むユーザは、当該プログラムにおいて例えば制御構文を追加するなどの変更を部分的に加える場合、当該プログラムの一部としてステップブロックB1を主に書き換えるだけでよい。当該プログラムは、ユーザによる部分的な編集をより容易にし、編集の手間を軽減する。
【0122】
ステップブロックB1は、プログラムの状態遷移に必要な遷移条件を示す第1機能ブロックB11と関連付けられている。これにより、情報処理装置10により取得されるプログラムにおいて、一のステップブロックB1から他のステップブロックB1へとプログラムを状態遷移させるための条件が指定可能である。
【0123】
ステップブロックB1は、ANDの論理演算に従って判定される複数の第1機能ブロックB11と関連付けられている。これにより、情報処理装置10により取得されるプログラムにおいて、一のステップブロックB1から他のステップブロックB1へとプログラムを状態遷移させるためのAND条件が指定可能である。
【0124】
ステップブロックB1は、プログラムの状態遷移の前に実行される遷移処理を示す第2機能ブロックB12と関連付けられている。これにより、情報処理装置10により取得されるプログラムにおいて、一のステップブロックB1から他のステップブロックB1へとプログラムを状態遷移させる直前の処理が指定可能である。
【0125】
ステップブロックB1は、プログラムに基づく一連の処理における順番を示すステップ番号N1を含む。これにより、ユーザは、所定のステップブロックB1が一連の処理において何番目のステップに該当するのかを容易に理解できる。
【0126】
ステップブロックB1は、プログラムの状態遷移により続けて処理を実行する次のステップブロックB1のステップ番号N2を含む。これにより、情報処理装置10により取得されるプログラムにおいて、一のステップブロックB1から他のステップブロックB1へとプログラムを状態遷移させるときの遷移先が指定可能である。情報処理装置10の制御部13は、各ステップにおいて遷移条件が成立したら、指定の遷移処理を実行して次のステップへと処理を移行できる。
【0127】
ステップブロックB1は、他のステップブロックB1と区別するための識別番号N3を含む。これにより、情報処理装置10により取得されるプログラムにおいて、ステップ番号N1が互いに同一である複数のステップブロックB1を互いに区別して指定することも可能となる。
【0128】
情報処理装置10は、互いに並列して処理が実行される複数のステップブロックB1を含むプログラムを取得する。これにより、当該プログラムにおいて、並列処理が可能となる。例えば、当該プログラムにおいて、図13A乃至図13Cに示されるような制御構文と同様の機能を実現させることも可能である。
【0129】
情報処理装置10は、プログラムの状態遷移に必要な遷移条件が複数のステップブロックB1において成立する場合、優先度に基づいて、複数のステップブロックB1のうちの一のステップブロックB1の処理を実行する。これにより、当該プログラムにおいて、図13A乃至図13Cに示されるような制御構文と同様の機能を実現させることも可能である。
【0130】
情報処理装置10が取得するプログラムは、if/else文などの制御構文を用いずとも構築可能である。したがって、上述したとおり、プログラム全体が大規模となってもネストが深くなるようなことが軽減される。大規模なプログラムであっても、プログラムの構造をシンプルに維持することが可能である。
【0131】
情報処理装置10は、情報処理装置10と通信可能に接続されている端末装置20に、プログラムの実行状況を示す第1画面S2を表示させる。これにより、ユーザは、プログラムの現在の状態を端末装置20の出力部24を用いて容易に確認することができる。
【0132】
情報処理装置10は、プログラムの実行に必要となる、ステップブロックB1で用いられる変数を編集するための第2画面S3を、端末装置20に表示させる。これにより、ユーザは、プログラムに用いられる変数を、端末装置20の出力部24を視認しながら入力部23を用いて容易に編集することができる。
【0133】
情報処理装置10は、プログラムの実行に基づく指示と指示に対するユーザからのコメントとを示す第3画面S4を、端末装置20に表示させる。これにより、ユーザは、プログラムの実行に基づく指示を端末装置20の出力部24を用いて容易に確認することができる。ユーザは、端末装置20の入力部23を用いて入力した、当該指示に対するコメントを、端末装置20の出力部24を用いて容易に確認することができる。
【0134】
情報処理装置10は、端末装置20を用いてユーザの操作に従いプログラムを構築するための第4画面S1を、端末装置20に表示させる。これにより、ユーザは、ブロック型プログラミング言語に従ったプログラムを、端末装置20の出力部24を視認しながら入力部23を用いて容易に作成可能である。
【0135】
第4画面S1は、選択エリアA1と構築エリアA2とを含む。これにより、ユーザがプログラムを構築するときの操作性が向上する。ユーザは、複数の機能ブロックBの中から所定の機能ブロックBを選択する操作と、選択された機能ブロックBをステップブロックB1ごとに配列してプログラムを構築する操作とを第4画面S1上の異なるエリアで行うことができる。ユーザは、プログラムをより容易に構築可能である。
【0136】
情報処理装置10は、製造業における作業者に向けた作業表示ロジックの構築を支援することができる。情報処理装置10は、ブロック型プログラミング言語に従ったプログラムの視認性を向上させ、プログラミング経験が乏しいユーザに対しても必要なロジックを容易に構築可能に支援する。
【0137】
本開示を諸図面及び実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形及び改変を行うことが可能であることに注意されたい。したがって、これらの変形及び改変は本開示の範囲に含まれることに留意されたい。例えば、各構成又は各ステップなどに含まれる機能などは論理的に矛盾しないように再配置可能であり、複数の構成又はステップなどを1つに組み合わせたり、或いは分割したりすることが可能である。
【0138】
例えば、スマートフォン又はコンピュータなどの汎用の電子機器を、上述した一実施形態に係る情報処理装置10として機能させる構成も可能である。具体的には、一実施形態に係る情報処理装置10などの各機能を実現する処理内容を記述したプログラムを、電子機器のメモリに格納し、電子機器のプロセッサにより当該プログラムを読み出して実行させる。したがって、本開示は、プロセッサが実行可能なプログラムとしても実現可能である。
【0139】
又は、本開示は、一実施形態に係る情報処理装置10などに各機能を実行させるために1つ又は複数のプロセッサにより実行可能なプログラムを記憶した非一時的なコンピュータ読取可能な媒体としても実現し得る。本開示の範囲には、これらも包含されると理解されたい。
【0140】
上記実施形態では、情報処理装置10は、端末装置20と協働しながら、ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を支援すると説明したが、これに限定されない。情報処理装置10は、サーバではなく端末として機能し、ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を単独で支援してもよい。
【0141】
上記実施形態では、情報処理装置10は、ネットワーク30を介して端末装置20からプログラムを受信することで、プログラムを取得すると説明したが、これに限定されない。情報処理装置10は、端末として機能する場合、それ自体の入力インタフェースを用いたユーザからの操作に従い構築されたプログラムを直接取得してもよい。
【0142】
上記実施形態では、ステップブロックB1は、プログラムの状態遷移に必要な遷移条件を示す第1機能ブロックB11と関連付けられていると説明したが、これに限定されない。ステップブロックB1は、第1機能ブロックB11と関連付けられていなくてもよい。
【0143】
図14は、図2の情報処理装置10による処理の他の例を説明するための模式図である。上記実施形態では、ステップブロックB1は、ANDの論理演算に従って判定される複数の第1機能ブロックB11と関連付けられていると説明したが、これに限定されない。ステップブロックB1は、ORの論理演算に従って判定される複数の第1機能ブロックB11と関連付けられていてもよい。
【0144】
図14の左端に示されるように、ステップブロックB1は、ORブロックB2を介して複数の第1機能ブロックB11と関連付けられていてもよい。このとき、情報処理装置10の制御部13は、当該ステップブロックB1に基づく処理を実行するとき、ORブロックB2を介してステップブロックB1に関連付けられている複数の第1機能ブロックB11のいずれかの遷移条件が成立しているか否かを判定する。制御部13は、複数の第1機能ブロックB11のいずれかの遷移条件が成立していると判定すると、遷移処理を実行して次のステップに処理を移行させる。
【0145】
図14の左端に示される当該ステップブロックB1のORの論理演算機能は、その右側に示される3つのステップブロックB1に基づく機能と等価である。当該ステップブロックB1は、その右側に示されるような3つのステップブロックB1を1つにまとめて表現したものである。このようにORブロックB2を介して1つのステップブロックB1にORの論理演算機能をまとめることで、プログラムの構造が単純化され、その視認性がさらに向上する。
【0146】
上記実施形態では、ステップブロックB1は、プログラムの状態遷移の前に実行される遷移処理を示す第2機能ブロックB12と関連付けられていると説明したが、これに限定されない。ステップブロックB1は、第2機能ブロックB12と関連付けられていなくてもよい。
【0147】
ステップブロックB1は、第1機能ブロックB11及び第2機能ブロックB12のいずれも関連付けられていなくてもよく、プログラムの構築にあたり単独でも配置可能である。
【0148】
上記実施形態では、ステップブロックB1は、一連の処理における順番を示すステップ番号N1を含むと説明したが、これに限定されない。ステップブロックB1は、ステップ番号N1に代えて、又は加えて任意の他の方法で一連の処理における順番を示してもよい。例えば、ステップブロックB1は、プログラムに基づく一連の処理での順番を示す、数字とは異なる文字及び記号などを含んでもよい。又は、ステップブロックB1は、一連の処理における順番を示すステップ番号N1などをそもそも含まなくてもよい。
【0149】
上記実施形態では、ステップブロックB1は、プログラムの状態遷移により続けて処理を実行する次のステップブロックB1のステップ番号N2を含むと説明したが、これに限定されない。ステップブロックB1は、ステップ番号N2に代えて、又は加えて任意の他の方法で次のステップブロックB1を示してもよい。例えば、ステップブロックB1は、次のステップブロックB1を示す、数字とは異なる文字及び記号などを含んでもよい。又は、ステップブロックB1は、次のステップブロックB1を示すステップ番号N2などをそもそも含まなくてもよい。
【0150】
上記実施形態では、ステップブロックB1は、他のステップブロックB1と区別するための識別番号N3を数字として含むと説明したが、これに限定されない。識別番号N3は、数字に代えて、又は加えて任意の他の形態で他のステップブロックB1と区別されるものであってもよい。例えば、識別番号N3は、他のステップブロックB1と区別するための、数字とは異なる文字及び記号などを含んでもよい。このとき、優先度は、例えば、文字及び記号などの順番が早いほど高くてもよい。例えば、優先度は、アルファベット文字においてアルファベット順が早いほど高くてもよい。又は、ステップブロックB1は、他のステップブロックB1と区別するための識別番号N3などをそもそも含まなくてもよい。
【0151】
上記実施形態では、情報処理装置10は、互いに並列して処理が実行される複数のステップブロックB1を含むプログラムを取得すると説明したが、これに限定されない。当該プログラムは、互いに並列して処理が実行される複数のステップブロックB1を含んでいなくてもよい。
【0152】
上記実施形態では、情報処理装置10は、プログラムの状態遷移に必要な遷移条件が複数のステップブロックB1において成立する場合、識別番号N3が最も小さいステップブロックB1の処理を優先して実行すると説明したが、これに限定されない。情報処理装置10は、識別番号N3が最も小さいステップブロックB1以外の他のステップブロックB1の処理を優先して実行してもよい。例えば、情報処理装置10は、識別番号N3が最も大きいステップブロックB1の処理を優先して実行してもよい。
【0153】
上記実施形態では、情報処理装置10は、情報処理装置10と通信可能に接続されている端末装置20に、プログラムの実行状況を示す第1画面S2を表示させると説明したが、これに限定されない。情報処理装置10は、プログラムの実行状況を示す第1画面S2を表示させなくてもよい。情報処理装置10は、例えば、ブロック型プログラミング言語に従ったプログラムの作成のみを支援するような場合、第1画面S2を表示させなくてもよい。
【0154】
上記実施形態では、情報処理装置10は、プログラムの実行に必要となる、ステップブロックB1で用いられる変数を編集するための第2画面S3を、端末装置20に表示させると説明したが、これに限定されない。情報処理装置10は、第2画面S3を表示させなくてもよい。情報処理装置10は、例えば、ブロック型プログラミング言語に従ったプログラムの作成のみを支援するような場合、第2画面S3を表示させなくてもよい。
【0155】
上記実施形態では、情報処理装置10は、プログラムの実行に基づく指示と当該指示に対するユーザからのコメントとを示す第3画面S4を、端末装置20に表示させると説明したが、これに限定されない。情報処理装置10は、第3画面S4を表示させなくてもよい。情報処理装置10は、例えば、ブロック型プログラミング言語に従ったプログラムの作成のみを支援するような場合、第3画面S4を表示させなくてもよい。
【0156】
上記実施形態では、情報処理装置10は、端末装置20を用いてユーザの操作に従いプログラムを構築するための第4画面S1を、端末装置20に表示させると説明したが、これに限定されない。情報処理装置10は、第4画面S1を表示させなくてもよい。情報処理装置10は、例えば、ブロック型プログラミング言語に従ったプログラムの実行のみを支援するような場合、第4画面S1を表示させなくてもよい。
【0157】
上記実施形態では、第4画面S1は、選択エリアA1と構築エリアA2とを含むと説明したが、これに限定されない。第4画面S1は、任意の他の態様で構成されていてもよい。例えば、第4画面S1は、複数の機能ブロックBの中から所定の機能ブロックBを選択するためのエリアと、選択された機能ブロックBをステップブロックB1ごとに配列してプログラムを構築するエリアとが互いに同一となるように構成されていてもよい。
【0158】
上記実施形態では、端末装置20の入力部23に含まれるマウスを用いたユーザのドラッグアンドドロップ操作によりプログラムが構築されると説明したが、これに限定されない。プログラムは、任意の他の操作に基づいて構築されてもよい。例えば、プログラムは、端末装置20の入力部23に含まれるマイクロフォンを用いたユーザの音声入力操作に基づいて構築されてもよい。
【0159】
以下に本開示の実施形態の一部について例示する。しかしながら、本開示の実施形態はこれらに限定されない点に留意されたい。
[付記1]
ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を支援する情報処理装置であって、
制御部を備え、前記制御部は、
前記プログラムに基づく一連の処理のうちの一部の処理をまとめて関連付けるステップブロックであって、一の前記ステップブロックから他の前記ステップブロックへの状態遷移に従い前記一連の処理が実行される前記ステップブロックを、機能ブロックの1つとして含む前記プログラムを取得する、
情報処理装置。
[付記2]
付記1に記載の情報処理装置であって、
前記ステップブロックは、前記状態遷移に必要な遷移条件を示す第1機能ブロックと関連付けられている、
情報処理装置。
[付記3]
付記2に記載の情報処理装置であって、
前記ステップブロックは、AND又はORの論理演算に従って判定される複数の前記第1機能ブロックと関連付けられている、
情報処理装置。
[付記4]
付記1乃至3のいずれか1つに記載の情報処理装置であって、
前記ステップブロックは、前記状態遷移の前に実行される遷移処理を示す第2機能ブロックと関連付けられている、
情報処理装置。
[付記5]
付記1乃至4のいずれか1つに記載の情報処理装置であって、
前記ステップブロックは、前記一連の処理における順番を示すステップ番号を含む、
情報処理装置。
[付記6]
付記5に記載の情報処理装置であって、
前記ステップブロックは、前記状態遷移により続けて処理を実行する次の前記ステップブロックの前記ステップ番号を含む、
情報処理装置。
[付記7]
付記1乃至6のいずれか1つに記載の情報処理装置であって、
前記ステップブロックは、他の前記ステップブロックと区別するための識別番号を含む、
情報処理装置。
[付記8]
付記7に記載の情報処理装置であって、
前記制御部は、互いに並列して処理が実行される複数の前記ステップブロックを含む前記プログラムを取得する、
情報処理装置。
[付記9]
付記8に記載の情報処理装置であって、
前記識別番号は、前記状態遷移に必要な遷移条件が複数の前記ステップブロックにおいて成立する場合に実行する処理の優先順位を示す優先度を含み、
前記制御部は、前記優先度に基づいて、複数の前記ステップブロックのうちの一の前記ステップブロックの処理を実行する、
情報処理装置。
[付記10]
付記1乃至9のいずれか1つに記載の情報処理装置であって、
前記制御部は、前記情報処理装置と通信可能に接続されている端末装置に、前記プログラムの実行状況を示す第1画面を表示させる、
情報処理装置。
[付記11]
付記10に記載の情報処理装置であって、
前記制御部は、前記プログラムの実行に必要となる、前記ステップブロックで用いられる変数を編集するための第2画面を、前記端末装置に表示させる、
情報処理装置。
[付記12]
付記10又は11に記載の情報処理装置であって、
前記制御部は、前記プログラムの実行に基づく指示と前記指示に対するユーザからのコメントとを示す第3画面を、前記端末装置に表示させる、
情報処理装置。
[付記13]
付記10乃至12のいずれか1つに記載の情報処理装置であって、
前記制御部は、前記端末装置を用いてユーザの操作に従い前記プログラムを構築するための第4画面を、前記端末装置に表示させる、
情報処理装置。
[付記14]
付記13に記載の情報処理装置であって、
前記第4画面は、複数の前記機能ブロックの中から所定の前記機能ブロックを選択するための選択エリアと、選択された前記機能ブロックを前記ステップブロックごとに配列して前記プログラムを構築する構築エリアと、を含む、
情報処理装置。
[付記15]
ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を支援する情報処理方法であって、
前記プログラムに基づく一連の処理のうちの一部の処理をまとめて関連付けるステップブロックであって、一の前記ステップブロックから他の前記ステップブロックへの状態遷移に従い前記一連の処理が実行される前記ステップブロックを、機能ブロックの1つとして含む前記プログラムを取得すること、
を含む、
情報処理方法。
[付記16]
ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を支援する情報処理装置に、
前記プログラムに基づく一連の処理のうちの一部の処理をまとめて関連付けるステップブロックであって、一の前記ステップブロックから他の前記ステップブロックへの状態遷移に従い前記一連の処理が実行される前記ステップブロックを、機能ブロックの1つとして含む前記プログラムを取得すること、
を含む動作を実行させる、
プログラム。
【符号の説明】
【0160】
1 情報処理システム
10 情報処理装置
11 通信部
12 記憶部
13 制御部
20 端末装置
21 通信部
22 記憶部
23 入力部
24 出力部
25 制御部
30 ネットワーク
A1 選択エリア
A2 構築エリア
B 機能ブロック
B0 機能ブロック
B1 ステップブロック
B11 第1機能ブロック
B12 第2機能ブロック
B2 ORブロック
N1 ステップ番号
N2 ステップ番号
N3 識別番号
S1 画面(第4画面)
S2 画面(第1画面)
S3 画面(第2画面)
S4 画面(第3画面)
【要約】
【課題】ブロック型プログラミング言語に従ったプログラムをより容易に理解できるようにする情報処理装置を提供する。
【解決手段】ブロック型プログラミング言語に従ったプログラムの作成又は実行の少なくとも一方を支援する情報処理装置10は、制御部13を備える。制御部13は、プログラムに基づく一連の処理のうちの一部の処理をまとめて関連付けるステップブロックであって、一のステップブロックから他のステップブロックへの状態遷移に従い一連の処理が実行されるステップブロックを、機能ブロックの1つとして含むプログラムを取得する。
【選択図】図2
図1
図2
図3
図4
図5A
図5B
図5C
図6
図7
図8A
図8B
図9
図10
図11
図12
図13A
図13B
図13C
図14