【解決手段】ブロックは、開始端制御ブロック102、制御ブロック105、110及び115並びに終端制御ブロック120を有する。制御ブロック105、110及び115は、例えば、プログラムの内容を表す命令又は命令を指定する情報を有し、命令又は命令を指定する情報を記憶する不揮発性記憶媒体を備える。
互いに通信可能に接続されている一又は二以上の物体であって、一連の動作の内容の部分を表す命令及び/又は前記命令に関する情報をそれぞれが記憶する一又は二以上の物体の少なくとも一つに通信可能に接続され、前記一又は二以上の物体の前記接続の順序を特定する装置。
互いに通信可能に接続されている一又は二以上の物体であって、一連の動作の内容の部分を表す命令及び/又は前記命令に関する情報をそれぞれが記憶する一又は二以上の物体の少なくとも一つに通信可能に接続されている第1の物体が、前記一又は二以上の物体の前記接続の順序を特定するためのコンピュータプログラム。
互いに通信可能に接続されている一又は二以上の物体であって、一連の動作の内容の部分を表す命令及び/又は前記命令に関する情報をそれぞれが記憶する一又は二以上の物体の少なくとも一つに通信可能に接続されている第1の物体が、前記一又は二以上の物体の前記接続の順序を特定するステップ、を含む方法。
【発明を実施するための形態】
【0011】
図1は、本発明の実施例による制御ブロックの実施例を示す。ブロックは、開始端制御ブロック102、制御ブロック105、110及び115、及び、終端制御ブロック120を有する。制御ブロック105、110及び115は、例えば、プログラムの内容を表す命令又は命令を指定する情報を有する。制御ブロック105、110及び115は、命令又は命令を指定する情報を記憶する不揮発性記憶媒体を備える。
【0012】
ブロック102、105、110、115及び120は、例えば、立方体の形状とすることができる。立方体の形状は、例示であり、ブロックの形状は、直方体、球体、三角柱、棒などの幾何学的形状であってもよい。さらに、ブロックの形状は、幾何学的形状ではない動物などのぬいぐるみや、自動車やロボットのような形態を模した形状であってもよい。言い換えると、ブロックは、物体として定義することもできる。開始端制御ブロック102、制御ブロック105、110及び115、及び、終端制御ブロック120は、有線を介して互いに接続することができる。有線は、例えば、シリアル接続、パラレル接続、USBなどの有線接続手段によって実現される。また、接続は無線で実現されてもよい。言い換えると、各ブロックは、互いに通信できればよい。
【0013】
図1において、制御ブロック105、110及び115それぞれは、プログラムの内容を表す命令を有している。制御ブロック105、110及び115は、それぞれ、「↑」(上(前)に進む)、「→」(右に曲がる)及び「↑」(上(前)に進む)命令を有している。制御ブロック105、110及び115は、この順序にて数珠つなぎで物理的に接続される。これにより、制御ブロック105、110及び115は、互いに電気的に接続され、互いに通信を行うことができる。本実施例において、制御ブロック105、110及び115において、ブロック外部から認識可能なしるし「↑」、「→」及び「↑」は、それぞれのブロックが記憶している命令と関連付けされている。また、認識には、視覚的認識が含まれており、さらに、触覚的認識や、聴覚的認識、嗅覚的認識などが含まれていてもよい。
【0014】
開始端制御ブロック102は、制御ブロックの一つであるブロック105に物理的に接続される。終端制御ブロック120は、制御ブロックの一つであるブロック115に物理的に接続される。これにより、開始端制御ブロック102は、制御ブロック105、110及び115を介して終端制御ブロック120に電気的に接続することができる。したがって、開始端制御ブロック102、制御ブロック105、110及び115、及び、終端制御ブロック120は、互いに通信可能となる。
【0015】
開始端制御ブロック102及び終端制御ブロック120が電気的に接続されたことに応じて、開始端制御ブロック102及び/又は終端制御ブロック120は、それらブロック102及び120に挟まれている制御ブロック105、110及び115が有する命令及びそれら命令を実行する順序を収集する。命令及び命令の順序の収集の詳細については後述する。順序は、例えば、ブロックの接続順序とすることができる。
図1の例では、制御ブロック105が記憶する命令が1番目、制御ブロック110が記憶する命令が2番目及び制御ブロック115が記憶する命令が3番目に実行される順序とすることができる。
【0016】
図2は、制御ブロックを備えたシステムを示す。複数の制御ブロック102、105、110、115及び125、及び、コンピュータ装置150を備えている。
【0017】
開始端制御ブロック102及び/又は終端制御ブロック120は、命令を収集すると、収集した命令をコンピュータ装置150に有線又は無線を介して送信する。これにより、ユーザは、一又は二以上の命令からなるプログラム作成が終了したことを、ブロックに設けるボタンを用いた明示的な提示などを行うことなく、開始端制御ブロック102及び終端制御ブロック120の接続によって得ることができる。
【0018】
他の実施例において、開始端制御ブロック102及び終端制御ブロック120のいずれか一方のみが準備されるだけでもよい。この場合、開始端制御ブロック102及び終端制御ブロック120の代わりに、命令の収集を行う1つのデータ収集ブロックがあればよい。この場合、データ収集ブロックは、ボタンや他の入力手段を有しており、入力手段を介してユーザから入力を受けたことに応じて、収集した命令をコンピュータ装置150に有線又は無線を介して送信することができる。
【0019】
コンピュータ装置150は、表示装置152を有し、受信した命令に基づいて処理を実行する。本実施例では、例えば、表示装置152は、マス目を有するマップ153及びキャラクタ154を表示する。コンピュータ装置150は、命令に基づいて、表示装置152のキャラクタ154を動かす。例えば、キャラクタ154は、制御ブロック105の命令「↑」に基づいて、スタートのマス155から160に移動し、制御ブロック110の命令「→」に基づいて、マス160から165に移動し、さらに、制御ブロック115の命令「↑」に基づいて、マス165から170に移動する。これにより、子供や、初めてプログラムを作成する人であっても、簡単にコンピュータプログラミングの作成と実行が体験できる。
【0020】
ここで、コンピュータプログラムにおいてプログラムの作成及び実行とは、プログラムステップの作成とプログラムステップの実行における内部レジスタ、メモリの演算結果であったり、外部I/Oの動作結果であったりする。言い換えるとプログラムステップの実行によりそのプログラムステップの実行結果が内部レジスタ、メモリ、外部I/Oに作用して一連の目的を達成する。また、プログラムステップの作成において各ステップの実行結果を確認することが重要であり、本来期待するプログラムの動作と違う場合、プログラムの構成、内容を確認し、正しいプログラムステップに修正する作業が重要となる。
本発明において、上記のプログラミングの概念を教育するに当たり、動作の意味を持たせた制御ブロックの一連の並びを作成し、動作対象物に制御ブロックで定義した一連の動作を実行させることや、動作対象物の動作の確認において期待する動作と違う場合には制御ブロックの並びを変えることにより期待した動作を実現することができる。このことは、プログラミングにおけるプログラムステップの作成とプログラムステップの実行検証にあたり、実際のプログラミング言語を使わなくてもブロックを並べる遊びの中で楽しくプログラミング概念の教育となる効果が期待される。
【0021】
上記の実施例において、開始端制御ブロック102及び終端制御ブロック120の両方を準備する場合、開始端制御ブロック102(又は終端制御ブロック120)が終端制御ブロック120(又は開始端制御ブロック102)に電気的に接続されたことを検出したことに応じて、開始端制御ブロック102及び/又は終端制御ブロック120は、命令の収集及び/又はコンピュータ装置150への命令の送信などを実行することができる。この場合、開始端制御ブロック102及び終端制御ブロック120の間の電気的接続は、開始端制御ブロック102及び/又は終端制御ブロック120が命令の収集などの処理を開始するトリガーとなる。
【0022】
他の実施例において、開始端制御ブロック102(又は終端制御ブロック120)は、命令を周期的に各制御ブロックから収集することができる。開始端制御ブロック102(又は終端制御ブロック120)が終端制御ブロック120(又は開始端制御ブロック102)に電気的に接続されたことを検出したことに応じて、開始端制御ブロック102及び/又は終端制御ブロック120は、収集した命令をコンピュータ装置150へ送信することができる。
【0023】
他の実施例において、開始端制御ブロック102及び終端制御ブロック120のいずれか一方のみが準備される。すなわち、開始端制御ブロック102及び終端制御ブロック120の代わりに、データ収集ブロックが準備される。この場合、ユーザによる入力などが命令の収集などの処理を開始するトリガーとなる。一実施例において、データ収集ブロックは、ユーザによる入力を受ける入力手段を有する。入力手段は、ボタン、液晶タッチパネルなどのユーザの入力を直接的に受ける手段とすることができる。一実施例において、データ収集ブロックは、ユーザによる入力を無線又は有線を介して外部装置(例えば、コンピュータ装置150や他の装置)から受ける入力手段を有し外部装置からの入力をトリガとしてデータ収集を行ってもよい。したがって、データ収集ブロックは、入力手段がユーザからの入力を受けたことに応じて、各制御ブロックから命令を収集する及び/又はその命令を送信することができる。
【0024】
他の実施例において、データ収集ブロックは、ユーザからの入力等を受けることなく周期的(例えば、1秒、5秒、10秒など)に各制御ブロックから命令を収集してもよい。この場合、データ収集ブロックは、入力手段がユーザからの入力を受けたことに応じて、収集した命令の送信を行うことができる。
【0025】
他の実施例において、開始端制御ブロック102及び/又は終端制御ブロック120は、開始端制御ブロック102及び終端制御ブロック120間の上記電気的接続を検出し、さらに、ユーザによる入力を受けたことに応じて、命令の収集などの処理を開始してもよい。
【0026】
他の実施例において、各ブロックの接続は無線で実現されてもよい。制御ブロック105、110及び115は、リーダが無線で読取可能な記憶媒体を有していてもよい。開始端制御ブロック102及び終端制御ブロック120のいずれか一方は、リーダを有しており、制御ブロック105、110及び115と通信が可能である。これにより、リーダが記憶媒体から情報を読み取ることができる。例えば、ユーザが、リーダを有するブロックを、
図1及び2に示したように並んでいる制御ブロック105、110及び115に沿って動かすことによって、制御ブロックの情報を取得することができる。一実施例において、リーダが無線で読取可能な記憶媒体としてRFIDタグ、リーダとしてRFIDリーダなどが用いられ得る。
【0027】
制御ブロック105、110及び115は、物理的な形状に基づいてリーダを有するブロックを受け入れるように構成されていてもよい。例えば、制御ブロック105、110及び115それぞれにおいて、それらの上面にレール形状が施されており、制御ブロック105、110及び115を並べると、それらの上面に1つのレールが形成される。そのレールは、リーダを有するブロックの少なくとも一部の形状と適合するように構成されている。これにより、ユーザは、リーダを有するブロックを制御ブロック105、110及び115に沿って、それらブロックの上面をより的確に動かすことができる。
【0028】
上記実施例において、命令の収集は、命令自体の収集、命令を実行すべき順序、命令を識別する識別子、及び、各制御ブロックの識別子などのような命令や制御ブロックに関連する情報の少なくとも一つを含むことができる。
【0029】
上述のコンピュータ装置150が命令に基づいてキャラクタを動作させる例は、一例であり、本発明の実施例は、これに限定されない。例えば、キャラクタは、乗り物などの物体であってもよい。他の実施例において、コンピュータ装置150の代わりに動作可能な物体であってもよい。例えば、終端制御ブロック120から命令を受信する物体は、車輪などの移動手段を持った物体とすることができる。他の実施例において、データ収集ブロック、開始端制御ブロック102及び/又は終端制御ブロック120は、命令を送信しなくてもよい。例えば、ブロックの少なくとも一つそれ自体(例えば、ブロック102〜120のいずれのブロックでもよい)が命令に基づいて動作(例えば、動く、光る、音を出すなど)するように構成されていてもよい。他の実施例において、全てのブロック(例えば、ブロック102〜120の全てのブロック)が命令に基づいて動作するように構成されていてもよい。
【0030】
上記の実施例において、制御ブロック105、110及び115が有する命令(制御ブロック105が有する「上」又は「前」に進む命令など)は、例示であり、それらに限定されない。制御ブロック105、110及び115が有する命令は、視覚、聴覚、触覚、味覚及び嗅覚などの人間が感知できる命令とすることができる。例えば、視覚の命令は、移動、光、色などに基づくことができる。聴覚の命令は、音に基づくことができる。触覚の命令は、移動や振動などの接触による感知に基づくことができる。
【0031】
図3は、ブロックが接続されている状態の第1の実施例の模式図を示す。本実施例において、装置全体300は、5つのブロックを含んでおり、データ収集ブロック302、第1の制御ブロック304、第2の制御ブロック306、第3の制御ブロック308及び第4の制御ブロック310を含んでいる。当業者であれば理解されるように、制御ブロックの数は例示であり、4より少なくてもよい、また、4より多くてもよい。
【0032】
データ収集ブロック302は、制御部322、外部入出力インタフェース324、送信部326、接続検出部328、受信部330及び固有情報記憶部332を備えている。第1の制御ブロック304、第2の制御ブロック306、第3の制御ブロック308及び第4の制御ブロック310は、制御部342、接続通知部344、送信部346、接続検出部348、受信部350、固有情報記憶部352及び送信先切替部354を備えている。第1の制御ブロック304、第2の制御ブロック306、第3の制御ブロック308及び第4の制御ブロック310は、ほぼ同じ構成とすることができる。
【0033】
データ収集ブロック302の制御部322及び制御ブロック304〜310の制御部342は、プロセッサ及びメモリを少なくとも有し、当該制御部を備えたブロックそれぞれを制御する。データ収集ブロック302の外部入出力インタフェース324は、コンピュータ装置150のような外部装置と通信を行うためのインタフェースである。データ収集ブロック302の送信部326及び受信部330、及び、各制御ブロック304〜310の制御部342の送信部346及び受信部350は、各ブロック間の通信を可能にする。データ収集ブロック302の固有情報記憶部332及び各制御ブロックの固有情報記憶部352は、ブロックの識別子や、一連の所定の動作の一部を定義し、ブロックに関連付けされている命令、ブロックを制御させるための命令(コンピュータプログラム)などを記憶している。
【0034】
データ収集ブロック302の接続検出部328は、制御ブロックが接続されたことを検出する。一実施例において、データ収集ブロック302は、接続検出部328に接続されている凸型コネクタを有し、各制御ブロックは、接続通知部344に接続されている凹型コネクタを有する。データ収集ブロック302の凸型コネクタが第1の制御ブロック304の凹型コネクタに接続されると、第1の制御ブロック304の接続通知部344は、データ収集ブロック302が第1の制御ブロック304に接続されたことをデータ収集ブロック302に通知し、データ収集ブロック302の接続検出部328は、第1の制御ブロック304がデータ収集ブロック302に接続されたことを検出する。
【0035】
各制御ブロックは、例えば凸型コネクタを有する接続検出部348を備えており、凸型コネクタを他の制御ブロックの接続通知部344に接続されている凹型コネクタに接続することができる。これにより、例えば、第1の制御ブロック304の接続検出部348は、第2の制御ブロック306の接続通知部344を用いて、これらのブロックが接続されていることを検出することができる。各制御ブロックは、送信先切替部354を備える。送信先切替部354は、接続検出部348に接続されている。送信先切替部348は、接続検出部348が他の制御ブロックへの接続を検出したことに応じて、送信部346の送信先を切り替える。例えば、各制御ブロックが左側(
図3に関し、制御ブロックにおいてデータ収集ブロック302へ近い側)に凹型コネクタを有し、右側(
図3に関し、制御ブロックにおいてデータ収集ブロック302から遠い側)に凸型コネクタを有する場合、各制御ブロックの送信先切替部354は、送信部346の送信を凸型コネクタ又は凹型コネクタを介して行うことを切り替えることができる。すなわち、第1の制御ブロック304は、データ収集ブロック302へデータを送信するか、又は、第2の制御ブロック306へデータを送信するか切り替えることができる。具体的には、第1の制御ブロック304は、接続検出部348が接続を検出したことに応じて、送信先切替部354を用いて第2の制御ブロック306へデータを送信し、接続を検出しないことに応じて、データ収集ブロック302へデータを送信する。本実施例において、左側の凹型コネクタへの送信先の切替は、第4の制御ブロック310のみが行う。第4の制御ブロック310からデータ収集ブロック302へのデータを送信する線を、各ブロックの接続により形成することによって、第4の制御ブロック310の送信部346は、他の制御ブロックそれぞれの送信部を用いることなく、情報をデータ収集ブロック302に送信することができる。これにより、送信部の部品を削減することができる。
【0036】
図4は、
図3に示した実施例の処理フローを示す。まず、データ収集ブロック302は、各制御ブロックが記憶する情報を収集するための要求を第1の制御ブロック304に送信する(ステップ405)。第1の制御ブロック304は、第2の制御ブロック306に接続されていることに応じて、制御部342を用いて固有情報記憶部352から第1の情報を取得し、要求及び第1の情報を第2の制御ブロック306に送信する(ステップ410)。第1の情報は、第1の制御ブロック304の識別子、及び、第1の制御ブロック304に関連付けされている命令の少なくとも一方を含むことができる。第2の制御ブロック306は、固有情報記憶部352から第2の情報を取得する。これにより、第2の制御ブロック306は、第1の制御ブロック304から受信した要求及び第1の情報と第2の情報とを取得することができる。第2の制御ブロック306は、要求、第1の情報及び第2の情報を第3の制御ブロック308に送信する(ステップ415)。
【0037】
第3の制御ブロック308は、固有情報記憶部352から第3の情報を取得し、要求、第1の情報、第2の情報及び第3の情報を第4の制御ブロック310に送信する(ステップ420)。第4の制御ブロック310は、固有情報記憶部352から第4の情報を取得する。また、第4の制御ブロック310は、例えば、右側の凸型コネクタ(
図3に関し、制御ブロックにおいてデータ収集ブロック302から遠い側)の接続が無いことを検出する。第4の制御ブロック310は、さらなる接続が無いことを検出したことに応じて、データの送信先を左側の凹型コネクタ(
図3に関し、制御ブロックにおいてデータ収集ブロック302へ近い側)に決定する。第4の制御ブロック310は、要求、第1の情報、第2の情報、第3の情報及び第4の情報を第3の制御ブロック308、第2の制御ブロック306及び第1の制御ブロック304を介してデータ収集ブロック302に送信する(ステップ425)。各制御ブロックが、それ自体のブロックに関連付けされている第1の情報、第2の情報、第3の情報及び第4の情報を順に組み合わせることで、データ収集ブロック302は、実行順序が特定されている命令を取得することができる。一実施例において、第1の情報、第2の情報、第3の情報及び第4の情報は、それぞれに関連付けされているブロックの識別子であってもよい。これにより、データ収集ブロック302は、それら識別子の並びにより、制御ブロックの接続順序を取得することができる。
【0038】
上記のように各制御ブロックの接続検出部348は次の制御ブロックの接続通知部344に接続されることにより次の制御ブロックの存在を検出できるが、接続通知部344が接続されていない制御ブロックは最端の制御ブロックと判定されその制御ブロックで受信データが送信部を介して折り返しされデータ収集ブロック322へ送信される。
【0039】
他の実施例において、データ収集ブロック302は、制御ブロックにその制御ブロックを制御するための命令を送信することができる。例えば、ステップ425の後、データ収集ブロック302は、各制御ブロックの識別子を維持することができる。一実施例において、データ収集ブロック302は、第3の制御ブロックの識別子を含む第3の情報に基づいて、第1の制御ブロック304及び第2の制御ブロック306を介して第3の制御ブロック308に命令を送信することができる(ステップ450、455、460)。命令は、第3の制御ブロック308を動作させるための命令であってもよい。この時各制御ブロックは受信した命令が当該ブロックの命令でなければそのまま送信部に渡し、次の制御ブロックへ送信し、当該ブロックへの命令であれば処理を行う。例えば、データ収集ブロック302は、第3の制御ブロック308に光を発生させる命令を送信し、この命令に基づいて第3の制御ブロック308が発光する。例えば、データ収集ブロック302が第3の制御ブロック308から第3の情報を取得した後に第3の制御ブロック308に光を発生させる命令を送信する。これにより、ユーザは、データ収集ブロック302が第3の制御ブロック308が記憶している情報を取得できたことを知ることができる。
【0040】
他の実施例において、データ収集ブロック302は、任意に発生した制御ブロックの状態の変化情報を取得することができる。例えば、第2の制御ブロック306は、状態が変化したことを示す情報及び変化した第2の情報を取得し、第3の制御ブロック308に送信する(ステップ465)。第3の制御ブロック308は、受信した情報を第4の制御ブロック310に送信する(ステップ470)。第4の制御ブロック310は、受信した情報を、第3の制御ブロック308、第2の制御ブロック306及び第1の制御ブロック304を介してデータ収集ブロック302に送信する(ステップ475)。データ収集ブロック302は、第2の制御ブロック306において状態が変化したことを示す情報及び変化した第2の情報を取得することができる。例えば、制御ブロックから収集される情報がコンピュータプログラムであり、第2の情報がプログラムにおけるループ及びループ回数を示す場合、データ収集ブロック302は、第2の制御ブロック306において変更されたループ回数などを収集することができる。この場合、第2の制御ブロック306は、当該ブロックの状態変化を表す情報の入力を受け付けるための入力手段を有することができる。
【0041】
上記の例では各ブロックの状態変化が単発で起こる場合の例であるが、複数のブロックから同時に状態変化が発生する場合を考慮するとデータ収集ブロックから定期的にポーリング命令を送り、各制御ブロックはポーリング命令を受信後、状態変化の情報をポーリング命令に付加して次のブロックへ送信することにより状態変化の情報をデータ収集ブロックへ届けることができる。
【0042】
図5は、ブロックが接続されている状態の第2の実施例の模式図を示す。本実施例において、装置全体500は、5つのブロックを含んでおり、データ収集ブロック502、第1の制御ブロック504、第2の制御ブロック506、第3の制御ブロック508及び第4の制御ブロック510を含んでいる。当業者であれば理解されるように、制御ブロックの数は例示であり、4より少なくてもよい、また、4より多くてもよい。
【0043】
データ収集ブロック502は、制御部522、外部入出力インタフェース524、送信部526、接続検出部528、受信部530及び固有情報記憶部532を備えている。第1の制御ブロック504、第2の制御ブロック506、第3の制御ブロック508及び第4の制御ブロック510は、制御部542、接続通知部544、第1の送信部546、接続検出部548、第1の受信部550、固有情報記憶部552、第2の送信部556及び第2の受信部554を備えている。第1の制御ブロック504、第2の制御ブロック506、第3の制御ブロック508及び第4の制御ブロック510は、ほぼ同じ構成とすることができる。
【0044】
本実施例の構成は、
図3で示した第1の実施例とほぼ同等である。しかしながら、本実施例では、各制御ブロックは、送信先切替部354を有していない、また、第1の実施例より一組多い送信部及び受信部を有する。本実施例において、各制御ブロックは、第1の送信部546、第1の受信部550、第2の送信部556及び第2の受信部554を有し、制御ブロックの第1の送信部546及び第2の受信部554は、それぞれ、他の制御ブロックの第1の受信部550及び第2の送信部556に接続することができる。また、制御ブロックの第1の受信部550及び第2の送信部556は、それぞれ、データ収集ブロック502の送信部526及び受信部530にも接続することができる。
【0045】
図6は、
図5に示した実施例の処理フローを示す。まず、データ収集ブロック502は、各制御ブロックが記憶する情報を収集するための要求を第1の制御ブロック504に送信する(ステップ605)。第1の制御ブロック504は、所定の時間(Tx)の間待機した後、制御部542を用いて固有情報記憶部552から第1の情報を取得し、第1の情報をデータ収集ブロック502に送信する(ステップ510)。第1の制御ブロック504は、要求を第2の制御ブロック506に送信する(ステップ515)。第2の制御ブロック506は、要求を受信した後、第1の制御ブロック504と同様に、所定の時間(Tx)の間待機した後、自身の記憶部から第2の情報を取得し、データ収集ブロック502に向けて送信し(ステップ520及び525)、要求を第3の制御ブロック508に送信する(ステップ530)。第3の制御ブロック508は、要求を受信した後、第1の制御ブロック504と同様に、所定の時間(Tx)の間待機した後、自身の記憶部から第3の情報を取得し、データ収集ブロック502に向けて送信し(ステップ535、540及び545)、要求を第4の制御ブロック510に送信する(ステップ550)。第4の制御ブロック510は、要求を受信した後、第1の制御ブロック504と同様に、所定の時間(Tx)の間待機した後、自身の記憶部から第4の情報を取得し、データ収集ブロック502に向けて送信する(ステップ565、570、575及び580)。
【0046】
データ収集ブロック502は、第1〜4の情報を受信した時間順に並び替える。これらの情報が制御ブロックの識別子を含んでいる場合、データ収集ブロック502は、各制御ブロックの接続の順序を特定することができる。これらの情報が例えばコンピュータプログラムの命令の一部を含んでいる場合、それら命令の一部を接続の順序で組み合わせることによって、一連の命令を作成することができる。
【0047】
一実施例において、データ収集ブロック502は、データを受信する最大待ち時間を有することができる。最大待ち時間は、制御ブロックの最大接続数に基づくことができる。これにより、データ収集ブロック502は、最大待ち時間を設定することにより、情報をより適格に収集することができる。
【0048】
図7は、
図5に示した実施例の変形例による処理フローを示す。データ収集ブロック522は、第1の制御ブロック504、第2の制御ブロック506及び第3の制御ブロック508を介して第4の制御ブロック510に要求を送信することができる(ステップ705、710、720及び725)。一実施例において、情報の送信は、各制御ブロックにおける受信部及び送信部を用いて実行されてもよい。他の実施例において、要求は信号として送信されてもよい。この場合、各ブロックは、接続により信号線を形成するように構成されていてもよい。データ収集ブロック522は、信号を各制御ブロック内の当該信号線を介して第4の制御ブロック510に送信することができる。これにより、各制御ブロックにおける1組の受信部及び送信部を排除することができる。
【0049】
各制御ブロックは、接続検出部548を用いて、さらに制御ブロックが接続されているか否かを判定することができる。本実施例の第1、第2及び第3の制御ブロック502、506及び508において、各接続検出部548は、さらに制御ブロックが接続されていることを検出する。第4の制御ブロック510において、接続検出部548は、さらに制御ブロックが接続されていないことを検出する。これにより、第1、第2及び第3の制御ブロック502、506及び508は、接続先である制御ブロックに要求を送信し、第4の制御ブロック510は、さらなる接続先が無いことから、送信先をデータ収集ブロック502に向けることを決定する。第4の制御ブロック510は、自身の記憶装置から第4の情報を取得し、要求及び第4の情報を第4の制御ブロック508に送信する(ステップ730)。第3の制御ブロック508は、第2の制御ブロック506は、第1の制御ブロック504は、それぞれ、自己の記憶装置から第3、2及び1の情報を取得するとともに、それらを順に組み合わせて、組み合わせた情報及び要求をデータ収集ブロック502に向けて順に送信する(ステップ735、740、745)。これにより、データ収集ブロック502は、各制御ブロックが有する情報を接続の順に組み合わせることができる。
【0050】
上記の実施例で説明した開始端制御ブロック102及び終端制御ブロック120は、それぞれ、制御ブロックが有する命令の開始及び終了を意味する。したがって、所定の一連の命令において開始端である場合は、他の一連の命令において終端とすることができ、又は、所定の一連の命令において終端である場合は、他の一連の命令において開始端とすることができる。さらに他の実施例において、所定の一連の命令における開始端制御ブロック102又は終端制御ブロック120は、他の一連の命令における制御ブロックとすることができる。
【0051】
上記の実施例において、各制御ブロックは、コンピュータプログラムの命令の代わりに命令に関する情報を記憶していてもよい。この場合、データ収集ブロックは、命令に関する情報を取得した後、当該情報を命令に変換することができる。
【0052】
上記の実施例において、各制御ブロックが記憶する情報は、コンピュータプログラムの命令でなくてもよい。例えば、記憶されている情報は、外部装置などで動作する内容の一部を表す情報とすることができる。例えば、動作内容が動画の再生である場合、動作内容の一部に対応する情報は、一又は二以上の静止画の情報とすることができ、動作内容が音の再生である場合、動作内容の一部に対応する情報は、一又は二以上の音の情報とすることができる。このように、動作内容に応じて、各制御ブロックに記憶されるべき情報は変化させることができる。
【0053】
上記実施例において、終端制御ブロック120が命令の取得や、通信などの制御処理を行っているが、開始端制御ブロック102が終端制御ブロック120の代わりにこれらの処理を実行してもよい。
【0054】
上記の実施例において、ハードウエアで実現するよう説明されたいくつかの要素の一部又は全ては、ソフトウエアで実現することができ、そして、ソフトウエアで実現するよう説明されたいくつかの要素の一部又は全ては、ハードウエアで実現することができることは理解されるであろう。
【0055】
以上に説明した処理又は処理順序において、ある処理において、その処理ではまだ利用することができないはずのデータを利用しているなどの処理又は処理順序上の矛盾が生じない限りにおいて、処理又は処理順序を自由に変更することができる。
【0056】
以上に説明してきた各実施例に関し、各実施例の一部又は全部を組み合わせて一つの実施例として実現されてもよい。
【0057】
以上に説明してきた各実施例は、本発明を説明するための例示であり、本発明はこれらの実施例に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。
【0058】
請求項の記載における「装置」は、プログラミング教育用玩具とすることができる。プログラミング教育用玩具において、子供は、上記の各実施例で説明したブロックなどを用いてプログラミングの概念を学ぶことができる。また、大人は、プログラミング教育用玩具を用いて、プログラミングの概念をより簡単に子供に教えることができる。