(57)【要約】【課題】コンテンツデータを各ブロックに割り当てることによって、よりフレキシブルな遊び方を提供する玩具が望まれている。【解決手段】ブロック玩具は、ブロック制御装置と、前記ブロック制御装置に接続された一又は二以上の玩具用ブロックとを備え、前記ブロック制御装置は、前記ブロックに関連付けされているコンテンツデータと前記ブロックとの対応関係の少なくとも一部を入れ替えることができる。【選択図】図２
2019205903.tif 000002
【特許請求の範囲】
【請求項１】
ブロック玩具であって、
ブロック制御装置と、
前記ブロック制御装置に接続された一又は二以上の玩具用ブロックと、
を備え、
前記ブロック制御装置は、前記ブロックに関連付けされているコンテンツデータと前記ブロックとの対応関係の少なくとも一部を入れ替えることができる、ブロック玩具。
【請求項２】
前記玩具用ブロックは、所定のコンテンツを分割したコンテンツデータそれぞれに関連付けされている、請求項１に記載のブロック玩具。
【請求項３】
前記玩具用ブロックは、互いが数珠繋ぎで接続されている、請求項１又は２に記載のブロック玩具。
【請求項４】
前記玩具用ブロックは、識別子を有する、請求項１ないし３のいずれか１項に記載のブロック玩具。
【請求項５】
前記ブロック制御装置は、前記識別子を前記ブロックから収集し、前記ブロックの接続順序を特定し、前記ブロック制御装置は、さらに、前記接続順序に応じて、前記ブロックに関連付けされたコンテンツデータの実行又は再生を制御する、請求項４に記載のブロック玩具。
【請求項６】
前記ブロック制御装置は、シグナル情報に基づいて前記ブロックのインデントの情報を特定する、請求項５に記載のブロック玩具。
【請求項７】
ブロック制御装置であって、
一又は二以上の玩具用ブロックに接続され、
前記ブロックに関連付けされているコンテンツデータと前記ブロックとの対応関係の少なくとも一部を入れ替えることができる、ブロック制御装置。
【請求項８】
請求項７に記載のブロック制御装置と通信する玩具用ブロック。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロックにコンテンツを関連付けする装置に関する。
【背景技術】
【０００２】
コンピュータプログラムなどのような動作を表すコンテンツの一部であるコンテンツデータなどを関連付けたブロックを並べて、その接続順に応じて、コンテンツの実行や、表示などを行う玩具が知られている。そのような玩具は、知育玩具、教育用玩具などとして知られている。従来のこのような玩具において、ユーザは、ブロックに関連付けされたコンテンツを変更することができない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
コンテンツデータを各ブロックに割り当てることによって、よりフレキシブルな遊び方を提供する玩具が望まれている。
【課題を解決するための手段】
【０００４】
本発明の実施例によるブロック玩具は、ブロック制御装置と、前記ブロック制御装置に接続された一又は二以上の玩具用ブロックとを備え、前記ブロック制御装置は、前記ブロックに関連付けされているコンテンツデータと前記ブロックとの対応関係の少なくとも一部を入れ替えることができる。
【０００５】
本発明の実施例によるブロック玩具において、前記玩具用ブロックは、所定のコンテンツを分割したコンテンツデータそれぞれに関連付けされている。
【０００６】
本発明の実施例によるブロック玩具において、前記玩具用ブロックは、互いが数珠繋ぎで接続されている。
【０００７】
本発明の実施例によるブロック玩具において、前記玩具用ブロックは、識別子を有する。
【０００８】
本発明の実施例によるブロック玩具において、前記ブロック制御装置は、前記識別子を前記ブロックから収集し、前記ブロックの接続順序を特定し、前記ブロック制御装置は、さらに、前記接続順序に応じて、前記ブロックに関連付けされたコンテンツデータの実行又は再生を制御する。
【０００９】
本発明の実施例によるブロック玩具において、前記ブロック制御装置は、シグナル情報に基づいて前記ブロックのインデントの情報を特定する。
【００１０】
本発明の実施例によるブロック制御装置は、一又は二以上の玩具用ブロックに接続され、前記ブロックに関連付けされているコンテンツデータと前記ブロックとの対応関係の少なくとも一部を入れ替えることができる。
【００１１】
本発明の実施例によるブロック制御装置は、玩具用ブロックと通信することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例によるブロックの実施例を示す。
【図２】ブロックを備えたシステムを示す。
【図３】スタートブロックの内部の概要を示す。
【図４】コンテンツテーブル、識別子対応情報テーブル及びブロック接続情報テーブルを示す。
【図５】実行ブロックの内部の概要を示す。
【図６】コンテンツ識別子テーブルの変形例を示す。
【図７】識別子対応情報テーブルの変形例を示す。
【図８】（ａ）：スタートブロックの内部の概要を示す。（ｂ）：スタートブロックの第２の面を示す。
【図９】（ａ）：実行ブロック第１の面を示す。（ｂ）：実行ブロックの内部の概要を示す。（ｃ）：実行ブロックの第２の面を示す。
【図１０】（ａ）：制御ブロックの第１の面を示す。（ｂ）：制御ブロックの内部の概要を示す。（ｃ）：制御ブロックの第２の面を示す。
【図１１】一つのスタートブロック及び３つの実行ブロックが接続されている状態を示す。
【図１２】第４の実行ブロックを第３の実行ブロックに対して右にずらして配置している状態を示す。
【図１３】関数定義ブロック及び関数呼び出し（ファンクションコール）ブロックによる制御ブロックを用いた例を示す。
【図１４】制御ブロックとして、条件分岐（ブランチ）ブロックを用いた例を示す。
【図１５】制御ブロックとして、繰り返し（ループ）ブロックを用いた例を示す。
【図１６】設定ブロックの内部の概要を示す。
【図１７】スタートブロック及び関数定義ブロックの接続例を示す。
【図１８】制御ブロックとして、繰り返し（ループ）ブロック及び条件分岐（ブランチ）ブロックを用いた例を示す。
【発明を実施するための形態】
【００１３】
以下の説明において、図中の同様の参照番号は同様の要素を示すものとする。
【００１４】
概要
図１は、本発明の実施例によるブロックの実施例を示す。ブロックは、スタートブロック１０２、及び、実行ブロック１０５、１１０及び１１５を有する。実行ブロック１０５、１１０及び１１５は、例えば、プログラムの内容を表す命令又は命令を識別する情報を有する。実行ブロック１０５、１１０及び１１５は、それぞれのブロックに関連付けされたコンテンツに関する情報を少なくとも記憶する記憶媒体を備える。コンテンツに関する情報は、コンテンツそのものの情報、コンテンツを識別するための識別子などとすることができる。各ブロックの記憶媒体は、ブロックが接続されたときのブロックの位置や、接続順などの情報を記憶していてもよい。スタートブロック１０２は、記憶媒体を有しており、各ブロックと各コンテンツとの関係を表す情報、実行ブロック１０５、１１０及び１１５が接続されたときのブロックの位置や、接続順序などの情報を記憶していてもよい。記憶媒体は、不揮発性、揮発性もしくは両方でもよい。
【００１５】
ブロック１０２、１０５、１１０及び１１５は、例えば、立方体の形状とすることができる。立方体の形状は、例示であり、ブロックの形状は、直方体、球体、三角柱、棒などの幾何学的形状であってもよい。さらに、ブロックの形状は、幾何学的形状ではない動物などのぬいぐるみや、自動車やロボットのような形態を模した形状であってもよい。言い換えると、ブロックは、物体として定義することもできる。スタートブロック１０２、及び、実行ブロック１０５、１１０及び１１５は、有線を介して互いに接続することができる。有線は、例えば、シリアル接続、パラレル接続、USBなどの有線接続手段によって実現される。また、接続は無線で実現されてもよい。言い換えると、各実行ブロックは、スタートブロック１０２に通信できればよい。
【００１６】
図１において、実行ブロック１０５、１１０及び１１５それぞれは、プログラムの内容を表す命令（コンテンツ）又は命令を識別する情報を有している。実行ブロック１０５、１１０及び１１５における命令は、それぞれ、「↑」（上（前）に進む）、「→」（右に曲がる）及び「↑」（上（前）に進む）である。実行ブロック１０５、１１０及び１１５は、この順序にて数珠つなぎで物理的に接続される。これにより、実行ブロック１０５、１１０及び１１５は、互いに電気的に接続され、互いに通信を行う、もしくは、他の実行ブロックを介して少なくともスタートブロック１０２と通信を行うことができる。本実施例において、実行ブロック１０５、１１０及び１１５において、ブロック外部から認識可能なしるし「↑」、「→」及び「↑」は、それぞれのブロックの命令に関連付けされている。また、認識には、視覚的認識が含まれている。他の実施例において、認識は、触覚的認識や、聴覚的認識、嗅覚的認識及び味覚的認識などの少なくとも一つを含んでいてもよい。さらに、他の実施例において、認識がされなくてもよい。これにより、ブロックの命令を認識させないことで、ブロックを正しく配列することを困難にしてゲーム性を高めることができる。
【００１７】
スタートブロック１０２は、実行ブロックの一つであるブロック１０５に物理的に接続される。これにより、スタートブロック１０２は、実行ブロック１０５、１１０及び１１５に電気的に接続することができる。したがって、スタートブロック１０２、実行ブロック１０５、１１０及び１１５は、互いに通信可能、もしくは、スタートブロック１０２は、各ブロックと通信可能となる。これにより、スタートブロック１０２は、実行ブロック１０５が１番目、実行ブロック１１０が２番目及び実行ブロック１１５が３番目に接続されていること、すなわち、実行ブロック１０５、１１０及び１１５の接続順序を特定することができる。
【００１８】
図２は、ブロックを備えたシステムを示す。複数のブロック１０２、１０５、１１０、１１５、及び、コンピュータ装置１５０を備えている。
【００１９】
スタートブロック１０２は、特定した実行ブロックの接続順序に基づいて、実行ブロック１０５、１１０及び１１５の命令（コンテンツ）の実行順序を特定することができる。スタートブロック１０２又は他のブロックは、実行順序及びコンテンツを有線回線及び／又は無線回線１２５を介してコンピュータ装置１５０に送信することができる。
【００２０】
コンピュータ装置１５０は、表示装置１５２を有し、受信した実行順序及びコンテンツに基づいて処理を実行する。本実施例では、例えば、表示装置１５２は、マス目を有するマップ１５３及びキャラクタ１５４を表示する。コンピュータ装置１５０は、命令に基づいて、表示装置１５２のキャラクタ１５４を動かす。例えば、キャラクタ１５４は、実行ブロック１０５の命令「↑」に基づいて、スタートのマス１５５から１６０に移動し、実行ブロック１１０の命令「→」に基づいて、マス１６０から１６５に移動し、さらに、実行ブロック１１５の命令「↑」に基づいて、マス１６５から１７０に移動する。各ブロックの並び順により、子供や、初めてプログラムを作成する人であっても、コンピュータプログラミングの作成及び実行と同等の体験が楽しめる。
【００２１】
本実施例において、コンテンツは、オブジェクトなどの動作を示すコンピュータプログラムであり、その動作は、コンピュータ装置１５０で実行されたが、スタートブロック１０２において、動作が行われてもよい。他の実施例において、コンテンツが、音声、音楽、動画である場合も同様に、そのコンテンツは、コンピュータ装置１５０又はスタートブロック１０２において実行又は再生されてもよい。
【００２２】
実施例１
（実行ブロックのみを用いた例）
図３は、スタートブロックの内部の概要を示す。スタートブロック１０２は、プロセッサ３０５、ＲＯＭ３１０、ＲＡＭ３１５、コネクタ３２０を備える。さらに、スタートブロック１０２は、電源を備えていてもよい、又は、外部から電源が供給される電源用コネクタを備えていてもよい（電源に関する構成については図示せず）。コネクタ３２０は、後述する実行ブロックの上位コネクタ５１０に接続することができる。プロセッサ３０５は、ＲＯＭ３１０に記憶されているコンピュータプログラムに基づいて命令を実行し、スタートブロック１０２自体を制御することができ、さらに、接続された実行ブロックを制御することもできる。例えば、プロセッサ３０５は、実行ブロックを制御することにより、接続された実行ブロックの接続順序を特定することができる。
【００２３】
ＲＡＭ３１５は、不揮発性の記憶媒体とすることができる。ＲＡＭ３１５は、図４に示すコンテンツテーブル４１０、識別子対応情報テーブル４２０、ブロック接続情報テーブル４３０を有する。コンテンツテーブル４１０は、コンテンツ識別子及びコンテンツデータを有する。コンテンツ識別子は、コンテンツデータごとにユニークである。コンテンツデータは、コンテンツがコンピュータプログラムである場合、コンピュータプログラムに対応する動作やステップに関する命令のデータであり、コンテンツが音楽である場合、１つの曲を適切に分割した音楽データであり、コンテンツが動画である場合、１つの動画を適切に分割した動画データとすることができる。他の実施例において、コンテンツは、コンピュータプログラム、音楽及び動画以外でもよく、他のコンテンツでもよい。コンテンツデータは、少なくともコンテンツの一部とすることができる。
【００２４】
識別子対応情報テーブル４２０は、ブロック識別子及びコンテンツ識別子を少なくとも有する。ブロック識別子は、各ブロックにユニークに割り当てられる識別子である。例えば、実行ブロック１０５、１１０及び１１５には、それぞれ、識別子対応情報テーブル４２０のブロック識別子に示される「０１０１」、「０１０２」及び「０１０３」が格納されている。また、ブロック識別子は、関連付けされるコンテンツ識別子と対応付けされる。例えば、実行ブロック１０５、１１０及び１１５には、コンテンツ識別子「００１」、「００２」及び「００３」が対応付けされる。これにより、実行ブロック１０５、１１０及び１１５には、それぞれ、コンテンツデータ「ＡＡＡ」、「ＢＢＢ」及び「ＣＣＣ」が対応付けされる。例えば、図２のように、コンテンツがコンピュータプログラムに関する場合、コンテンツデータ「ＡＡＡ」、「ＢＢＢ」及び「ＣＣＣ」は、それぞれ、「↑」（上（前）に進む）、「→」（右に曲がる）及び「↑」（上（前）に進む）の命令となる。
【００２５】
ブロック接続情報テーブル４３０は、接続された実行ブロックの接続順序を特定するために用いられる。スタートブロック１０２は、実行ブロック１０５、１１０及び１１５に接続されると、プロセッサ３０５は、各実行ブロックのブロック識別子を後述する方法で実行ブロックのＲＯＭ５２０又はＲＡＭ５３０から取得するととともに、接続の順序を特定する。プロセッサ３０５は、ブロック識別子及び接続の順序をブロック接続情報テーブルに作成又は更新する。図４のブロック接続情報テーブル４３０は、実行ブロック１０５（ブロック識別子：０１０１）、実行ブロック１１０（ブロック識別子：０１０２）及び実行ブロック１１５（ブロック識別子：０１０３）がこの順序で接続されていることを示す。具体的には、ブロック接続情報テーブル４３０では、実行ブロック１０５、１１０及び１１５が、それぞれ、ブロック識別子「０１０１」、「０１０２」及び「０１０３」に対応しており、スタートブロック１０２に近いブロックから、位置情報として「１」番目、「２」番目及び「３」番目に接続されていることが示されている。
【００２６】
したがって、スタートブロック１０２は、コンテンツデータの実行や再生の順序を実行ブロックの位置情報に基づいてテーブル４１０、４２０、４３０を用いて特定することができる。
【００２７】
図５は、実行ブロックの内部の概要を示す。実行ブロック１０５、１１０及び１１５は、それぞれ、上位コネクタ５１０、プロセッサ５１５、ＲＯＭ５２０、ＲＡＭ５３０、下位コネクタ５３５を備える。実行ブロックの上位コネクタ５１０は、スタートブロックのコネクタ３２０及び他の実行ブロックの下位コネクタ５３５に接続することができる。例えば、実行ブロック１０５の上位コネクタ５１０は、スタートブロック１０２のコネクタ３２０に接続され、実行ブロック１０５の下位コネクタ５３５は、他の実行ブロック１１０の上位コネクタ５１０に接続される。実行ブロックのＲＯＭ５２０又はＲＡＭ５３０は、当該実行ブロックのブロック識別子を少なくとも記憶している。この場合、ＲＡＭ５３０は、不揮発性の記憶媒体とすることができる。これにより、ＲＡＭ５３０のブロック識別子は書き換えることができる。
【００２８】
実行ブロック１０５、１１０及び１１５がスタートブロック１０２に接続されると、スタートブロック１０２は、実行ブロック１０５、１１０及び１１５の接続順序を特定する命令を、各実行ブロックに送信する。例えば、実行ブロック１０５が接続順序を特定する命令を受信すると、それ自体のブロック識別子「０１０１」を下位のブロックである実行ブロック１１０に送信する。実行ブロック１１０は、ブロック識別子の情報「０１０１」を受信すると、それ自体のブロック識別子「０１０２」を付加して、ブロック識別子の情報「０１０１：０１０２」を下位のブロックである実行ブロック１１５に送信する。実行ブロック１１５は、下位コネクタ５３５に接続されている他の実行ブロックが無いことを検出すると、実行ブロック１１５より下位に接続が無いことを決定することができる。実行ブロック１１５は、ブロック識別子の情報「０１０１：０１０２」を受信すると、実行ブロック１１５より下位に接続が無いことに応じて、それ自体のブロック識別子「０１０３」を付加して、ブロック識別子の情報「０１０１：０１０２：０１０３」を実行ブロック１０５及び１１０を介してスタートブロック１０２に送信する。これにより、スタートブロック１０２は、受信したブロック識別子の情報「０１０１：０１０２：０１０３」に基づいて、接続順序として、ブロック識別子「０１０１」が１番目であり、ブロック識別子「０１０２」が２番目であり、及び、ブロック識別子「０１０３」が３番目であることを特定することができる。
【００２９】
上記の例において、コンテンツがコンピュータプログラムであることは例示であり、他の情報をコンテンツとすることができる。コンテンツは、例えば、音楽や、動画などとすることができる。
【００３０】
コンテンツが音楽や、動画などである場合、１曲や、１つのテレビ番組、１つの映画、１つの動画作品のようにコンテンツを１つの単位として区分けすることができる。このような例において、コンテンツ識別子テーブルは、１つの単位をテーブルの項目として追加してもよい。例えば、図６は、コンテンツ識別子テーブルの変形例を示す。図６において、コンテンツグループ「Ａ」は、コンテンツ識別子「００１」、「００２」及び「００３」に対応する３つのデータ「ＡＡＡ」、「ＢＢＢ」、「ＣＣＣ」で、１つの曲又は１つの動画となる。コンテンツ識別子「００１」、「００２」及び「００３」に対応するデータ「ＡＡＡ」、「ＢＢＢ」及び「ＣＣＣ」は、それぞれ、曲の１節（１フレーズ）や、動画における１つのチャプタに対応する。コンテンツグループ「Ｂ」及び「Ｃ」は、コンテンツグループ「Ａ」の曲又は動画とは別の作品であることを示す。他の実施例において、コンテンツデータは、音符又は音符に関する音、静止画など、コンテンツを構成する単位に基づくデータとすることができる。
【００３１】
コンテンツグループ「Ａ」は、コンテンツデータ「ＡＡＡ」、「ＢＢＢ」及び「ＣＣＣ」がこの順序で再生されると、正しい順序の曲又は動画として再生される。この場合、実行ブロックは、実行ブロック１０５、実行ブロック１１０、実行ブロック１１５の順序で接続されている。仮に、実行ブロックが、実行ブロック１１０、実行ブロック１０５、実行ブロック１１５の順序で接続された場合、コンテンツデータ「ＢＢＢ」、「ＡＡＡ」及び「ＣＣＣ」がこの順序で再生される。この場合、誤った順序の曲又は動画として再生される。他の実施例において、接続順序が誤っていることをユーザに通知してもよい。したがって、玩具のユーザは、コンテンツデータが正しい順序の曲又は動画を再生するようにブロックを接続して遊ぶことができる。一方で、コンテンツグループ「Ａ」のブロックを複数回遊ぶと、どのブロックがいずれのコンテンツデータと対応付けされているかが分かってしまう。すると、ユーザは、ブロックで遊ぶのに飽きてしまう。そこで、本発明の実施例では、ブロックで遊ぶたび、所定の回数遊んだとき、又は、ユーザの指示を受けたときに、識別子対応情報テーブルの対応関係を変更することによって、ブロックに割り当てるコンテンツデータを変更する。ブロックに割り当てるコンテンツデータを変更できるようにすることにより、ユーザに興味を掻き立てさせ、飽きさせないようにすることができる。図４では、ブロック識別子「０１０１」、「０１０２」及び「０１０３」は、それぞれ、コンテンツ識別子「００１」、「００２」及び「００３」に対応している。例えば、次にブロックで遊ぶなどのスタートブロック１０２に電源が投入するときなどに、ブロック識別子とコンテンツ識別子との対応付けを動的に変更されてもよい。例えば、ブロック識別子「０１０１」、「０１０２」及び「０１０３」は、それぞれ、コンテンツ識別子「００１」、「００３」及び「００２」に対応させる。これにより、実行ブロックに対応付けされたコンテンツデータを変更させることにより、ユーザは飽きることなく、ブロック玩具を末永く楽しむことができる。また、各実行ブロックには、他のコンテンツグループ「Ｂ」又は「Ｃ」のデータを対応付けしてもよい。
【００３２】
また、コンテンツがコンピュータプログラムであってもよい。ブロック識別子とコンピュータプログラムに係るコンテンツ識別子との対応付けを動的に変更することによって、コンピュータプログラムの作成において、よりゲーム性を高めて、ユーザが興味を掻き立てるようにすることができる。
【００３３】
実施例２
（制御ブロックを用いた例）
実行ブロックに加えて、制御ブロックを用いることによって、ユーザは、コンピュータプログラム作成の概念に近い考え方を身につけることができる。制御ブロックの例としては、繰り返し（ループ）や、条件分岐（ブランチ）、関数定義、関数呼び出し（ファンクションコール）機能などがある。本実施例において、各ブロックが、実行ブロック又は制御ブロックであるかを少なくとも識別できるようにする必要がある。一実施例において、制御ブロックは、実行ブロックと同様に、コネクタ、プロセッサ、ＲＡＭ及びＲＯＭを少なくとも有する。
【００３４】
図７は、識別子対応情報テーブルの変形例を示す。識別子対応情報テーブル７１０は、ブロック識別子及びコンテンツ識別子に加えて、ブロック種別を有する。ブロック種別は、ブロックが実行ブロックであるか制御ブロックであるかなどを示す。例えば、ブロックが実行ブロックである場合、ブロック種別は「７」とすることができる。ブロック種別が「０」、「２」〜「６」である場合、ブロックは制御ブロックとすることができる。各ブロックは、例えば、以下の通りとすることができる。
ブロック種別「０」：動作なし
ブロック種別「１」：スタート
ブロック種別「２」：関数定義
ブロック種別「３」：繰り返し（ループ）
ブロック種別「４」：条件分岐（ブランチ）
ブロック種別「５」：関数呼び出し（ファンクションコール）
ブロック種別「６」：設定
ブロック種別「７」：実行
【００３５】
（関数定義）
例えば、制御ブロックとして「関数定義」ブロックを用いる場合、接続は以下の順序で行うことができる。「関数定義」ブロックは、独立したコンテンツデータの実行又は再生の開始を定義するブロックである。
１．メインブロックグループ
（１−１）「スタート」ブロック
（１−２）第２の「実行」ブロック
（１−３）「関数呼び出し（ファンクションコール）」ブロック
２．関数定義ブロックグループ
（２−１）「関数定義」ブロック
（２−２）第１の「実行」ブロック
これにより、（２−１）「関数定義」ブロックの下に配置された（２−２）第１の「実行」ブロックは関数として定義される。（１−３）「関数呼び出し（ファンクションコール）」ブロックと（２−１）「関数定義」ブロックとは、予め関連付けされている。例えば、スタートブロック１０２が、関数呼び出し（ファンクションコール）ブロックの識別子と関数定義ブロックの識別子とを関連付けて記憶していてもよい。第１の関数定義ブロック及び第１の関数呼び出し（ファンクションコール）ブロックと第２の関数定義ブロック及び第２の関数呼び出し（ファンクションコール）ブロックとからなる関数定義ブロック及び関数呼び出し（ファンクションコール）ブロックの組を２つ準備することによって、複数の関数定義ブロックを定義することができる。組は３つ以上でもよい。関数呼び出し（ファンクションコール）ブロックと関数定義ブロックとの関連付けは、変更できてもよい。
【００３６】
（１−１）「スタート」ブロックと（２−１）「関数定義」ブロックとは、有線又は無線で接続することができる。例えば、図１７に示す通り、スタートブロック１０２及び関数定義ブロックは、それぞれ、図３、及び、図５又は１０に示した構成にコネクタ１７２０及び１７３０を加えた構成とすることができる。スタートブロック１０２は、関数定義用コネクタ１７２０を有し、関数定義ブロックは、第１の関数定義用コネクタ１７３０及び第２の関数定義用コネクタ１７４０を有する。スタートブロック１０２は、関数定義用コネクタ１７２０に接続されたブロックを関数定義ブロックとして認識する。当該関数定義ブロックは、第２の関数定義用コネクタ１７４０を介して他の関数定義ブロックの第１の関数定義用コネクタ１７３０に接続することができる。これにより、２以上の関数定義ブロックグループを接続することができる。
【００３７】
（１−１）「スタート」ブロックは、（１−２）第２の「実行」ブロックのコンテンツの実行又は再生を行う。そして、「スタート」ブロックは、（６）「関数呼び出し（ファンクションコール）」ブロックにおいて、関数定義ブロックグループで定義されている関数を実行する。関数定義ブロックグループにおける関数の内容は、上記で定義された（２−２）第１の「実行」ブロックのコンテンツの実行又は再生である。他の実施例において、（１−３）「関数呼び出し（ファンクションコール）」ブロックの後に、「動作なし」ブロックを配置してもよい。これにより、「スタート」ブロックは、関数を実行した後の復帰先を認識するように構成されていてもよい。
【００３８】
（繰り返し（ループ））
例えば、制御ブロックとして「繰り返し（ループ）」を用いる場合、接続は以下の順序で行うことができる。
（１）「スタート」ブロック
（２）「繰り返し（ループ）」ブロック
（３）「設定」ブロック
（４）第１の「実行」ブロック
（５）「動作なし」ブロック
これにより、（２）「繰り返し（ループ）」ブロック及び（３）「設定」ブロックと（５）「動作なし」ブロックとの間に配置された（４）第１の「実行」ブロックのコンテンツは、「設定」ブロックで引数として設定される値の数分繰り返して実行又は再生される。本実施例において、「設定」ブロックそれぞれは、対応する数値などの情報を予め有していてもよい。例えば、第１の「設定」ブロックは、値「１」を有し、第２の「設定」ブロックは、値「２」を有し、第３の「設定」ブロックは、値「３」を有していてもよい。
【００３９】
他の実施例において、「設定」ブロックに関し、ユーザが設定対象の値などの情報を入力可能にしてもよい。例えば、「設定」ブロックにボタンを設け、ユーザは、このボタンを用いて１、２、３・・・のいずれか一つの値を入力できる。本実施例では、図４に示したブロック接続情報テーブル４３０に「設定」の列（カラム）を追加してもよい。例えば、スタートブロック１０２は、各ブロックの情報を収集するときに、「設定」ブロックで入力された情報も収集し、ブロック接続情報テーブル４３０における当該「設定」のブロック識別子に対応するカラム「設定データ」の項目を収集した情報で更新する。他の実施例において、「設定」ブロックのボタンは、一例であり、「設定」ブロックは、ボタンに換えて又はボタンに加えて、他の形態の入力装置を有していても良い。他の実施例において、「設定」ブロックは、入力装置に換えて又は入力装置に加えて、他の装置から設定すべき情報を受信する受信装置を有していても良い。
【００４０】
上記の例において、設定ブロックは、繰り返し（ループ）ブロックの下に接続される。他の実施例において、繰り返し（ループ）ブロックの横面と設定ブロックの横面とがコネクタによって接続されてもよい。設定ブロックは、ループの回数を送ることができればよいので、送信される情報量は比較的小さい。したがって、コネクタは、光学送受信機でもよい。この場合、繰り返し（ループ）ブロックは光学受信機を有し、設定ブロックは、光学送信機を有する。これにより、設定ブロックは、設定すべき情報を光学的に繰り返し（ループ）ブロックに送信することができる。光学受信機の例としては、赤外線送受信機などがある。
【００４１】
（条件分岐（ブランチ））
例えば、制御ブロックとして「条件分岐（ブランチ）」ブロックを用いる場合、接続は以下の順序で行うことができる。
（１）「スタート」ブロック
（２）「条件分岐（ブランチ）」ブロック
（３）第１の「実行」ブロック
（４）「動作なし」ブロック
これにより、（２）「条件分岐（ブランチ）」ブロックと（４）「動作なし」ブロックとの間に配置された（３）第１の「実行」ブロックのコンテンツは、「条件分岐（ブランチ）」の条件を満たすときに実行又は再生される。「条件分岐（ブランチ）」の条件の例としては、所定の時刻のときに条件を満たすなどとすることができる（例えば、条件１２：００〜１５：００の間であれば、第１の「実行」ブロックのコンテンツが実行又は再生される）。
【００４２】
（繰り返し（ループ）及び条件分岐（ブランチ））
例えば、制御ブロックとして「繰り返し（ループ）」ブロック及び「条件分岐（ブランチ）」ブロックを用いる場合、接続は以下の順序で行うことができる。
（１）「スタート」ブロック
（２）「繰り返し（ループ）」ブロック（３回繰り返し）
（３）第１の「実行」ブロック
（４）「条件分岐（ブランチ）」ブロック
（５）第２の「実行」ブロック
（６）第２の「動作なし」ブロック
（７）第１の「動作なし」ブロック
これにより、（２）「繰り返し（ループ）」ブロック（３回繰り返し）と（７）第１の「動作なし」ブロックとの間に配置された（３）第１の「実行」ブロックのコンテンツは、３回繰り返して実行又は再生される。また、（４）「条件分岐（ブランチ）」ブロックは、３回繰り返して、条件の判断が行われる。（４）「条件分岐（ブランチ）」ブロックと（６）第２の「動作なし」ブロックとの間に配置された（５）第２の「実行」ブロックのコンテンツは、「条件分岐（ブランチ）」の条件を満たすときに実行又は再生される。「条件分岐（ブランチ）」の条件の例としては、ループの回数が１回目である場合に条件分岐（ブランチ）内の処理が実行又は再生される。本実施例では、第１の「実行」ブロック及び第２の「実行」ブロックのコンテンツデータが実行又は再生された後、第１の「実行」ブロックのコンテンツデータが２回繰り返して実行又は再生される。他の実施例において、「繰り返し（ループ）」ブロックの「３回繰り返し」における数値「３」及び「条件分岐（ブランチ）」の条件「ループの回数が１回目」における数値「１」は、それぞれ、設定ブロックによって設定されてもよい。
【００４３】
実施例３
（ブロックにインデントを適用する例）
上記の実施例２において、「関数定義」ブロック、「繰り返し（ループ）」ブロック及び「条件分岐（ブランチ）」ブロックの制御対象となる「実行」ブロックを特定するために、制御対象となる「実行」ブロックは、「関数定義」ブロック、「繰り返し（ループ）」ブロック及び「条件分岐（ブランチ）」ブロックと「動作なし」ブロックとに挟まれることによって特定されていた。本実施例において、制御対象となる「実行」ブロックにインデントを適用することによって、ビジュアル的に制御対象のブロックがどれであるかを容易に理解できるようにする。また、インデントを用いたブロックの配置は、ユーザが実際のコンピュータプログラムに近い文法をより簡単に習得することに役立たせることができる。さらに、コンピュータプログラムにおいて、インデントは、処理対象のステップなどを桁下げすることによって視覚的に推奨されている。また、最近のコンピュータ言語では、インデントは、処理対象のステップを定義するために必須とされている。したがって、インデントの使いかたの習得は、実際のコンピュータプログラムの習得にも役立たせることができる。ブロックにおけるインデントの例としては、並べた２以上のブロックにおいて、前のブロックに対してブロックを揃えて並べずに、例えば、ブロックを一定の長さ分ずらして配置することによって実現され得る。
【００４４】
図８（ａ）は、スタートブロックの内部の概要を示す。スタートブロック１０２は、図３において示した通り、プロセッサ３０５、ＲＯＭ３１０、ＲＡＭ３１５及びコネクタ３２０を有する。図８（ａ）におけるコネクタ３２０の位置は、図３におけるコネクタ３２０の位置と異なり、スタートブロック１０２の第２の面の長手方向中心に位置するのではなく左側に寄っている。
【００４５】
図８（ｂ）は、図８（ａ）におけるスタートブロック１０２を矢印８０５方向から見た様子を示しており、スタートブロック１０２の第２の面を示す。第２の面において、コネクタ３２０は、長手方向において左側に寄っており、短手方向において中心に位置する。図８（ａ）及び図８（ｂ）を結ぶ点線は、図８（ａ）におけるコネクタ３２０の位置がスタートブロック１０２の第２の面の長手方向で対応していることを示す。
【００４６】
図９（ｂ）は、実行ブロックの内部の概要を示す。実行ブロック１０５、１１０、１１５は、図５において示した通り、プロセッサ５１５、ＲＯＭ５２０、ＲＡＭ５３０及び下位コネクタ５３５を有する。本実施において、実行ブロック１０５、１１０、１１５は、図５における上位コネクタ５１０の代わりに、第１の上位コネクタ９０５及び第２の上位コネクタ９１０を有する。第１の上位コネクタ９０５は、実行ブロック第１の面の長手方向において左側に寄っている。第２の上位コネクタ９１０は、実行ブロック第１の面の長手方向において右側に寄っている。
【００４７】
図９（ａ）は、図９（ｂ）における実行ブロック１０５、１１０、１１５を矢印９５０方向から見た様子を示しており、実行ブロック１０５、１１０、１１５の第１の面を示す。第１の面において、第１の上位コネクタ９０５は、長手方向において左側に寄っており、第２の上位コネクタ９１０は、長手方向において右側に寄って位置している。第１の面において、第１の上位コネクタ９０５及び第２の上位コネクタ９１０は、共に、短手方向において中心に位置する。図９（ａ）及び図９（ｂ）を結ぶ点線は、図９（ｂ）における第１の上位コネクタ９０５及び第２の上位コネクタ９１０の位置が実行ブロック１０５、１１０、１１５の第１の面の長手方向で対応していることを示す。
【００４８】
図９（ｃ）は、図９（ｂ）における実行ブロック１０５、１１０、１１５を矢印９５５方向から見た様子を示しており、実行ブロック１０５、１１０、１１５の第２の面を示す。第２の面において、下位コネクタ５３５は、図５における下位コネクタ５３５の位置と異なり、長手方向において左側に寄って位置している。第２の面において、下位コネクタ５３５は、短手方向において中心に位置する。図９（ｂ）及び図９（ｃ）を結ぶ点線は、図９（ｂ）における下位コネクタ５３５の位置が実行ブロック１０５、１１０、１１５の第２の面の長手方向で対応していることを示す。
【００４９】
図１０（ｂ）は、制御ブロックの内部の概要を示す。制御ブロックは、少なくとも「関数定義」ブロックや、「関数呼び出し（ファンクションコール）」ブロック、「条件分岐（ブランチ）」ブロック、「繰り返し（ループ）」ブロックなどを含む。制御ブロック１００５は、第１の上位コネクタ１０１０、第２の上位コネクタ１０１５、プロセッサ１０２０、ＲＯＭ１０３０、ＲＡＭ１０４０及び下位コネクタ１０４５を少なくとも有する。
【００５０】
図１０（ａ）は、図１０（ｂ）における制御ブロック１００５を矢印１０６０方向から見た様子を示しており、制御ブロック１００５の第１の面を示す。第１の面において、第１の上位コネクタ１０１０は、長手方向において左側に寄っており、第２の上位コネクタ１０１５は、長手方向において右側に寄って位置している。第１の面において、第１の上位コネクタ１０１０及び第２の上位コネクタ１０１５は、共に、短手方向において中心に位置する。図１０（ａ）及び図１０（ｂ）を結ぶ点線は、図１０（ｂ）における第１の上位コネクタ１０１０及び第２の上位コネクタ１０１５の位置が制御ブロック１００５の第１の面の長手方向で対応していることを示す。
【００５１】
図１０（ｃ）は、図１０（ｂ）における制御ブロック１００５を矢印１０６５方向から見た様子を示しており、制御ブロック１００５の第２の面を示す。第２の面において、下位コネクタ１０４５は、長手方向において右側に寄って位置している。第２の面において、下位コネクタ１０４５は、短手方向において中心に位置する。図１０（ｂ）及び図１０（ｃ）を結ぶ点線は、図１０（ｂ）における下位コネクタ１０４５の位置が制御ブロック１００５の第２の面の長手方向で対応していることを示す。
【００５２】
図１１は、一つのスタートブロック及び３つの実行ブロックが接続されている状態を示す。スタートブロック１０２のコネクタ３２０は、第１の実行ブロック１０５の第１の上位コネクタ９０５に接続されている。第１の実行ブロック１０５の下位コネクタ５３５は、第２の実行ブロック１１０の第１の上位コネクタ９０５に接続されている。第２の実行ブロック１１０及び第３の実行ブロック１１５も、同様に、コネクタを用いて互いに接続される。
【００５３】
スタートブロック１０２は、第１の実行ブロック１０５、第２の実行ブロック１１０及び第３の実行ブロック１１５の接続により、各ブロックと通信し、各ブロックのブロック識別子及び位置情報を少なくとも取得することができる。これにより、スタートブロック１０２は、図４に示したようなブロック接続情報テーブル４３０を更新及び／又は作成することができる。スタートブロック１０２は、ブロック接続情報テーブル４３０及び識別子対応情報テーブル４２０に基づいて各ブロック識別子に対応するコンテンツ識別子を特定する。また、スタートブロック１０２は、識別子対応情報テーブル４２０及びコンテンツテーブル４１０に基づいて各コンテンツ識別子に対応するコンテンツデータを特定する。これにより、スタートブロック１０２は、位置情報による実行ブロックの接続順序と各実行ブロックに関連するコンテンツデータとを対応付けて特定し、当該接続順序でコンテンツデータを再生又は実行する（例えば、コンテンツデータ「ＡＡＡ」、「ＢＢＢ」、「ＣＣＣ」の順序でこれらデータを再生又は実行する）。
【００５４】
図１２は、図１１で示したブロックに加えて第４の実行ブロック１１０５を第３の実行ブロック１１５に対して右にずらして配置している状態を示す。この場合、第４の実行ブロック１１０５の第１の上記コネクタ９０５及び第２の上記コネクタ９１０は、いずれも、第３の実行ブロック１１５の下位コネクタに接続されていない。したがって、この実施例では、スタートブロック１０２を第４の実行ブロック１１０５に接続することはできない。これは、実行ブロックのコネクタの物理的位置により、接続を制御することができる。より具体的には、第４の実行ブロック１１０５は、第３の実行ブロック１１５に対してインデントを付加したように配置されるが、第４の実行ブロック１１０５の接続は認識されないので、ユーザは、第４の実行ブロック１１０５の配置が正しくないことを認識することができる。言い換えると、ユーザは、実行ブロック同士の配置に関し、インデントを付加した配置ができないことを知ることができる。ユーザは、コンピュータプログラムの文法（例えば、コンピュータプログラム言語「Pythonなどで用いられるようなインデントの使い方）をブロックの外観で及び／又はブロック同士の接続可否（物理的及び／又は電気的接続可否を含む）や、ブロック同士の接続における感触などで知ることができる。したがって、幼児などの子供向けのブロック玩具において、プログラミングを直感的に学ぶことができる。
【００５５】
図１３は、制御ブロックとして、関数定義ブロック及び関数呼び出し（ファンクションコール）ブロックを用いた例を示す。スタートブロック１０２のコネクタ３２０は、第２の実行ブロック１１０の第１の上位コネクタ９０５に接続される。第２の実行ブロック１１０の下位コネクタ５３５は、第２の制御ブロック（関数呼び出し（ファンクションコール））１００５の第１の上位ブロック１０１０に接続される。
【００５６】
スタートブロック及び関数定義ブロックは、図１７で示されているように、コネクタ１７２０及びコネクタ１７３０、１７４０をそれぞれ有する。スタートブロック１０２の関数定義用コネクタ１７２０は、第１の制御ブロック（関数定義）１３０５の第１の関数定義用コネクタ１７３０に接続される。なお、他の実施例において、第１の制御ブロック（関数定義）１３０５のコネクタ１７４０は、他の制御ブロック（関数定義）の第１の関数用コネクタ１７３０に接続されてもよい。これにより、２以上の関数を定義することができる。第１の制御ブロック１３０５の下位コネクタ１０４５は、第１の実行ブロック１０５の第２の上位コネクタ９１０に接続されている。これにより、関数として、第１の実行ブロック１０５のコンテンツが定義される。
【００５７】
図１７の変形例として、スタートブロック及び関数定義ブロックのコネクタは、同じ構成としてもよい。例えば、スタートブロックは、一又は二以上の上位コネクタを有していてもよい。他の実施例において、関数定義ブロックの下位コネクタは、スタートブロックのコネクタの位置に配置してもよい。すなわち、関数定義ブロックの下位コネクタは、スタートブロックと同様に、第２面における長手方向の左側に寄るように構成されてもよい。他の実施例において、スタートブロック及び関数定義ブロックは、コネクタ及び内部の構成などを同じとすることができる。
【００５８】
スタートブロック１０２は、第１及び第２の制御ブロック、第１及び第２の実行ブロックの接続により、各ブロックと通信し、各ブロックから、各ブロックのブロック識別子及び位置情報を少なくとも取得することができる。これにより、第１制御ブロック（関数定義）、第２制御ブロック（関数呼び出し（ファンクションコール））、第１の実行ブロック及び第２の実行ブロックのブロック識別子が、それぞれ、「０００３」、「０００６」、「０１０１」、「０１０２」とすると、以下のようなブロック接続情報テーブル４３０を更新及び／又は作成することができる。位置情報「２−１」及び「２−２」における「２−」は、同じ関数定義ブロックのグループであることを示し、「−１」及び「−２」は、接続順序を示す。
2019205903.tif 000003
【００５９】
スタートブロック１０２は、図７に示した識別子対応情報テーブル７１０を参照することにより、第１の制御ブロック（ブロック識別子：０００３）、第２の制御ブロック（ブロック識別子：０００６）、第１の実行ブロック（ブロック識別子：０１０１）及び第２の実行ブロック（ブロック識別子：０１０２）のブロック種別を、それぞれ、「２」、「５」、「７」及び「７」として特定する。すなわち、第１の制御ブロック、第２の制御ブロック、第１の実行ブロック及び第２の実行ブロックは、それぞれ、関数定義ブロック、関数呼び出し（ファンクションコール）を行うブロック、実行ブロック及び実行ブロックとして特定される。さらに、第１の実行ブロック（ブロック識別子：０１０１）及び第２の実行ブロック（ブロック識別子：０１０２）に対応するコンテンツ識別子は、それぞれ、識別子対応情報テーブル７１０に基づいて、「００１」及び「００２」として特定される。スタートブロック１０２は、図４に示したコンテンツテーブル４１０から、コンテンツ識別子「００１」及び「００２」に対応するコンテンツデータ（それぞれ、「ＡＡＡ」及び「ＢＢＢ」）を特定する。
【００６０】
第１の実行ブロック１０５の下位コネクタ５３５及び第２の制御ブロック１００５の下位コネクタ１０４５は、処理の終了（すなわち、ブロックが自身以降にブロックが接続されていないこと）を検出するセンサーとして機能してもよい。実行ブロック及び制御ブロックは、自身のブロックの下位コネクタに他のコネクタが接続されていないことを検出すると、処理の終了を検出したことをスタートブロック１０２に通知することができる。これにより、スタートブロック１０２は、処理の終了を特定する。
【００６１】
制御対象の実行ブロックに関し、例えば、（１）制御ブロックが関数定義ブロックである場合、制御対象の実行ブロックのコンテンツデータは関数として定義され、（２）制御ブロックが条件分岐（ブランチ）ブロックである場合、制御対象の実行ブロックのコンテンツデータは条件分岐（ブランチ）の条件を満たしたときに再生又は実行され、（３）制御ブロックがループブロックである場合、制御対象の実行ブロックのコンテンツデータは所定の数分繰り返して再生又は実行される。
【００６２】
スタートブロック１０２は、第２の制御ブロック１００５のブロック種別が「５」（関数呼び出し（ファンクションコール））であるかを特定する。ブロック種別が「５」である場合、関数呼び出し（ファンクションコール）の処理として、関数として定義されているコンテンツデータの再生又は実行が行われる。
【００６３】
以上により、図１３に示したブロックの配置から、スタートブロック１０２は、以下の処理順序でコンテンツデータの再生又は実行を行う。
（１）第１の制御ブロック（関数定義）１００５に接続される第１の実行ブロック１０５のコンテンツデータ「ＡＡＡ」を関数として定義する（第１の制御ブロック及び第１の実行ブロック）。
（２）第２の実行ブロック１１０のコンテンツデータ「ＢＢＢ」の実行又は再生を行う。（３）第２の制御ブロック１３０５が関数呼び出し（ファンクションコール）のブロックであると特定すると、関数として定義されているコンテンツデータ「ＡＡＡ」の実行又は再生を行う。
【００６４】
本実施例において、有線又は無線を用いて、スタートブロック及び関数定義ブロックは離れて接続及び配置されてもよい。これにより、関数定義ブロックグループが２以上ある場合であっても、関数定義ブロックグループ内で後述するインデントを付すことができる。他の実施例において、関数定義ブロックグループ内で、他の関数を呼び出すための他の関数呼び出し（ファンクションコール）ブロックが接続されてもよい。他の実施例において、スタートブロックは、関数定義ブロックと隣り合わせに接続されてもよい。この場合、スタートブロック及び関数定義ブロックの第１及び２面における長手方向の長さは、関数定義ブロック以外の制御ブロック及び実行ブロックの第１及び２面における長手方向の長さより長くすることができる。
【００６５】
他の実施例において、スタートブロックに接続される一又は二以上の関数定義ブロックは、並列に実行又は再生されるように制御されてもよい。これにより、スタートブロックのグループで定義される一又は二以上のコンテンツデータと一又は二以上の関数定義ブロックのグループで定義される一又は二以上のコンテンツデータとは、重畳的に実行又は演奏され、コンテンツが音楽である場合、輪唱や、複数楽器による演奏、作曲などが可能となる。他の実施例において、ブロック制御装置は、実行ブロックの接続順序に基づいて取得したコンテンツデータを合成して、新たなコンテンツを作成してもよい。
【００６６】
他の実施例において、関数呼び出し（ファンクションコール）のブロックが呼び出す関数定義ブロックは、設定ブロックによって定義されてもよい。２以上の関数定義ブロックを用いて、２以上の関数を定義した場合、関数呼び出し（ファンクションコール）が呼び出す関数定義ブロックは、設定ブロックを用いて変更することができる。他の実施例において、関数定義ブロックは、一又は二以上の関数呼び出し（ファンクションコール）ブロックによって２回以上呼び出されてもよい。
【００６７】
図１３に関し、スタートブロック１０２の下位コネクタ３２０は、当該ブロックの第２の面にける長手方向左側に配置されているが、下位コネクタ３２０は、当該長手方向右側に配置してもよい。他の実施例において、スタートブロック１０２に対して、下位コネクタ３２０以降に接続されるブロックにインデントを付し、最後のブロックとして動作なしブロックを置いてインデントを戻すことによって、スタートブロック１０２が制御する範囲を明確にすることができる。
【００６８】
関数定義ブロックも同様に、関数定義ブロック１００５の下位コネクタ１０４５と第１の実行ブロック１０５は実行ブロック１０５の長手方向右側の第２の上位コネクタ９１０を用いて接続されているが、長手方向左側の第１の上位コネクタ９０５を用いて接続することができる。これにより、関数定義ブロック１００５に対して、第１の実行ブロック１０５にインデントを付し、最後のブロックとして動作なしブロックを置いてインデントを戻すことによって、関数定義ブロック１００５が制御する範囲を明確にすることができる。図１３の関数定義ブロックが以降のブロックをインデントしない場合、下位コネクタ１０４５は長手方向左側に配置されても良い。
【００６９】
図１４は、制御ブロックとして、条件分岐（ブランチ）ブロックを用いた例を示す。スタートブロック１０２のコネクタ３２０は、第１の制御ブロック１００５の第１の上位コネクタ１０１０に接続されている。第１の制御ブロック１００５の下位コネクタ１０４５は、第１の実行ブロック１０５の第１の上位コネクタ９０５に接続されている。第１の実行ブロック１０５の下位ブロック５３５は、第２の実行ブロック１１０の第２の上位コネクタ９１０に接続される。すなわち、制御ブロックの後に接続される実行ブロックにおいて、第２の上位コネクタ９１０が接続に用いられると、スタートブロック１０２（及び／又は第２の実行ブロック１１０）は、第２の実行ブロック１１０が第１の実行ブロック１０５に対してインデントが戻されたことを検出する。これにより、第１の実行ブロック１０５は、第１の制御ブロック１００５に対してインデントが付され、第２の実行ブロック１１０は、第１の実行ブロック１０５に対してインデントが戻される。したがって、ユーザは、インデントを用いた条件分岐（ブランチ）の定義手法を理解することができる。
【００７０】
スタートブロック１０２は、第１の制御ブロック、第１及び第２の実行ブロックの接続により、各ブロックと通信し、各ブロックから、各ブロックのブロック識別子及び位置情報を少なくとも取得することができる。これにより、第１制御ブロック（条件分岐（ブランチ））、第１の実行ブロック及び第２の実行ブロックのブロック識別子が、それぞれ、「０００５」、「０１０１」、「０１０２」とすると、以下のようなブロック接続情報テーブル４３０を更新及び／又は作成することができる。
2019205903.tif 000004
【００７１】
スタートブロック１０２は、識別子対応情報テーブル７１０に基づいて、各ブロックのブロック種別を特定し、さらに、識別子対応情報テーブル７１０及びコンテンツテーブル４１０から、第１及び第２の実行ブロックのコンテンツ識別子「００１」及び「００２」に対応するコンテンツデータ（それぞれ、「ＡＡＡ」及び「ＢＢＢ」）を特定する。
【００７２】
以上により、図１４に示したブロックの配置から、スタートブロック１０２は、以下の処理順序でコンテンツデータの再生又は実行を行う。
（１）条件分岐（ブランチ）の条件を満たすとき（第１の制御ブロック）、インデントの終了を検出した第２の実行ブロック１０５の一つ上（前）の第１の実行ブロック１０５のコンテンツデータ「ＡＡＡ」を実行又は再生する（第１の実行ブロック）。条件分岐（ブランチ）の条件の例としては、現在時刻が所定の時刻（１２：００から１５：００）であるなどとすることができる。
（２）第２の実行ブロック１１０のコンテンツデータ「ＢＢＢ」の実行又は再生を行う。これにより、コンテンツデータ「ＢＢＢ」は、常に実行又は再生されるが、コンテンツデータ「ＡＡＡ」は条件を満たすときのみ実行又は再生される。
【００７３】
図１５は、制御ブロックとして、繰り返し（ループ）ブロックを用いた例を示す。スタートブロック１０２のコネクタ３２０は、第１の実行ブロック１０５の第１の上位コネクタ９０５に接続されている。第１の実行ブロック１０５の下位コネクタ５３５は、制御ブロック１００５の第１の上位コネクタ１０１０に接続されている。制御ブロック１００５の下位コネクタ１０４５は、第２の実行ブロック１１０の第１の上位コネクタ９０５に接続されている。また、制御ブロック１００５は、上述した通り、制御ブロック１００５の横面と設定ブロック１６０５の横面とがコネクタによって接続されてもよい。設定ブロック１６０５については、後述するが、設定ブロック１６０５は、制御ブロック１００５で用いられる情報を実行ブロック及び／又は制御ブロック１００５を介してスタートブロックに供給することができる。ここで、設定ブロック１６０５の情報は、制御ブロック１００５が繰り返し（ループ）の場合、ループする回数として定義してもよい。ループを３回実行する場合、設定ブロック１６０５の情報は「３」となる。一実施例において、ループを２回実行する場合、設定ブロックは省略されてもよい。この場合、省略されると、ループする回数は「２」として扱われる。第２の実行ブロック１１０の下位コネクタ５３５は、第３の実行ブロック１１５の第１の上位コネクタ９０５に接続される。
【００７４】
スタートブロック１０２は、制御ブロック１００５、設定ブロック１６０５、第１、第２及び第３の実行ブロック１０５、１１０、１１５の接続により、各ブロックと通信し、各ブロックから、各ブロックのブロック識別子及び位置情報を少なくとも取得することができる。これにより、制御ブロック（繰り返し（ループ））１００５、制御ブロック（設定）１６０５、第１の実行ブロック、第２の実行ブロック及び第３の実行ブロックのブロック識別子が、それぞれ、「０００４」、「０００７」、「０１０１」、「０１０２」、「０１０３」とすると、以下のようなブロック接続情報テーブル４３０を更新及び／又は作成することができる。なお、スタートブロック１０２は、制御ブロック（設定）１６０５が接続されていることを検出しなくてもよい。この場合、スタートブロック１０２は、制御ブロック（繰り返し（ループ））１００５を介して制御ブロック（設定）１６０５が有する設定情報を少なくとも取得できる。
2019205903.tif 000005
【００７５】
スタートブロック１０２は、上記ブロック識別子から、第１、第２、第３の実行ブロック１０５、１１０、１１５のコンテンツデータ「ＡＡＡ」、「ＢＢＢ」、「ＣＣＣ」をそれぞれ特定し、第２及び第３の実行ブロック１１０、１１５が制御ブロック（繰り返し（ループ））１００５の制御対象であることを特定する。また、スタートブロック１０２は、設定情報を設定ブロック１６０５から受ける、又は、制御ブロック（繰り返し（ループ））１００５が取得した設定情報を受ける。ここでは、設定情報は「３」と仮定する。
【００７６】
以上により、図１５に示したブロックの配置から、スタートブロック１０２は、以下の処理順序でコンテンツデータの再生又は実行を行う。
（１）第１の実行ブロック１０５のコンテンツデータ「ＡＡＡ」の実行又は再生を行う
（２）第２の実行ブロック１１０のコンテンツデータ「ＢＢＢ」及び第３の実行ブロック１１５のコンテンツデータ「ＣＣＣ」の実行又は再生を３回繰り返す。これにより、コンテンツデータ「ＡＡＡ」を１回実行又は再生した後、コンテンツデータ「ＢＢＢ」及び「ＣＣＣ」の実行又は再生が３回繰り返される。コンテンツデータが音楽である場合、特定のフレーズである「ＢＢＢ」及び「ＣＣＣ」が繰り返し再生される。
【００７７】
図１６は、設定ブロックの内部の概要を示す。設定ブロック１６０５は、プロセッサ１６１０、ＲＯＭ１６１５、ＲＡＭ１６２０及びコネクタ１６５０を備える。ＲＡＭ１６２０は、記憶媒体とすることができる。ＲＡＭ１６２０又はＲＯＭ１６１５は、自身のブロック識別子に加えて、設定ブロック自体が予め有する情報を記憶することができる。これにより、設定ブロックは、他のブロックに接続されたとき、設定すべき情報をスタートブロック１０２に供給することができる。他の実施例において、設定ブロックは、ユーザからの変数の値の入力を受ける入力装置を有していてもよい。入力装置は、例えば、ユーザが入力可能なダイヤル式入力装置、一又は二以上のボタン、タッチパネル式入力装置などとすることができる。これにより、ユーザは、設定ブロックの情報を変更することができる。コネクタ１６５０は、電気的接続、磁気的接続、光学的接続、及び、スイッチなどによる物理的接続の少なくとも一つによって制御ブロック１００５に接続することができる。他の実施例において、設定ブロックが設定する情報は、設定ブロックが置かれている方向によって定義されてもよい。
【００７８】
図１８は、制御ブロックとして、繰り返し（ループ）ブロック及び条件分岐（ブランチ）ブロックを用いた例を示す。スタートブロック１０２のコネクタ３２０は、第１の実行ブロック１０５の第１の上位コネクタ９０５に接続されている。第１の実行ブロック１０５の下位コネクタ５３５は、第１の制御ブロック（繰り返し（ループ））１８０５の第１の上位コネクタ１０１０に接続されている。
【００７９】
第１の制御ブロック１８０５の下位コネクタ１０４５は、第２の実行ブロック１１０の第１の上位コネクタ９０５に接続されている。これにより、第２の実行ブロック１１０は、第１の制御ブロック１８０５に対してインデントが付加される。また、第１の制御ブロック１８０５は、上述した通り、第１の制御ブロック１８０５の横面と第１の設定ブロック１６０５の横面とがコネクタによって接続されてもよい。本実施例では、第１の設定ブロック１６０５は、ループ回数が「３」であることを特定している。第２の実行ブロック１１０の下位コネクタ５３５は、第２の制御ブロック（第１の条件分岐（ブランチ））１８１０の第１の上位コネクタ１０１０に接続されている。
【００８０】
第２の制御ブロック（第１の条件分岐（ブランチ））１８１０の下位コネクタ１０４５は、第３の実行ブロック１１５の上位コネクタ９０５に接続されている。これにより、第３の実行ブロック１１５は、第２の制御ブロック１８１０に対してインデントが付加される。本実施例において、第２の制御ブロック１８１０の第１の条件分岐（ブランチ）の条件は、ループの回数が１回であることである。ループの回数が１回である条件は、第２の設定ブロック１８６０によって設定されてもよい。第３の実行ブロック１１５の下位コネクタ５３５は、第３の制御ブロック（第２の条件分岐（ブランチ））１８２０の第２の上位コネクタ１０１５に接続されている。第３の制御ブロック１８２０（及び／又はスタートブロック１０２）は、第１の上位コネクタ１０１０が上位ブロックに接続されておらず、第２の上位コネクタ１０１５が上位ブロックに接続されていることを検出する。すなわち、第３の制御ブロック１８２０（ブロック識別子「０００８」）は、シグナル情報が「１」であることを検出する。スタートブロック１０２（及び／又は第３の制御ブロック１８２０）は、この検出に応じて、第３の制御ブロック１８２０が上位ブロックである第３の実行ブロック１１５に対してインデントが戻されたことを判定することができる。
【００８１】
第３の制御ブロック（第２の条件分岐（ブランチ））１８２０の下位コネクタ１０４５は、第４の実行ブロック１８３０の上位コネクタ９０５に接続されている。これにより、第４の実行ブロック１８３０は、第３の制御ブロック１８２０に対してインデントが付加される。本実施例において、第３の制御ブロック１８２０の第２の条件分岐（ブランチ）の条件は、ループの回数が２回であることである。ループの回数が２回である条件は、第３の設定ブロック１８６５によって設定されてもよい。
【００８２】
第４の実行ブロック１８３０の下位コネクタ５３５は、第５の実行ブロック１８４０の第２の上位コネクタ９１０に接続されている。第５の実行ブロック１８４０（及び／又はスタートブロック１０２）は、第１の上位コネクタ９０５が上位ブロックに接続されておらず、第２の上位コネクタ９１０が上位ブロックに接続されていることを検出する。すなわち、第５の実行ブロック１８４０（ブロック識別子「０１０５」）は、シグナル情報が「１」であることを検出する。スタートブロック１０２（及び／又は第５の実行ブロック１８４０）は、この検出に応じて、第５の実行ブロック１８４０が上位ブロックである第４の実行ブロック１８３０に対してインデントが戻されたことを判定することができる。
【００８３】
第５の実行ブロック１８４０の下位コネクタ５３５は、第６の実行ブロック１８５０の第２の上位コネクタ９１０に接続されている。第６の実行ブロック１８５０（及び／又はスタートブロック１０２）は、第１の上位コネクタ９０５が上位ブロックに接続されておらず、第２の上位コネクタ９１０が上位ブロックに接続されていることを検出する。すなわち、第６の実行ブロック１８５０（ブロック識別子「０１０６」）は、シグナル情報が「１」であることを検出する。スタートブロック１０２（及び／又は第６の実行ブロック１８５０）は、この検出に応じて、第６の実行ブロック１８５０が上位ブロックである第５の実行ブロック１８４０に対してインデントが戻されたことを判定することができる。上記の各実施例のように、実行ブロック、制御ブロック共に長手方向左側の第１の上位コネクタの上位ブロックへの接続情報をシグナル情報とし、シグナル情報は、第１の上位コネクタにおいて接続が有る場合「０」、接続が無い場合「１」としている。この「シグナル情報」により、スタートブロック及び／又はスタートブロック以外の各ブロックは、「シグナル情報」が「０」のときに制御範囲のインデントを認識でき、そして、「シグナル情報」が「１」のときに、インデントからの戻りを認識できる。
【００８４】
スタートブロック１０２は、各実行ブロック、各制御ブロック１８０５、１８１０、１８２０及び設定ブロック１６０５、１８６０、１８６５の接続により、各ブロックと通信し、各ブロックから、各ブロックのブロック識別子及び位置情報を少なくとも取得することができる。これにより、第１の制御ブロック（繰り返し（ループ））１８０５、第１の設定ブロック１６０５、第２の設定ブロック１８６０、第３の設定ブロック１８６５、第２の制御ブロック（第１の条件分岐（ブランチ））１８１０、第３の制御ブロック（第２の条件分岐（ブランチ））１８２０、第１の実行ブロック１０５、第２の実行ブロック１１０、第３の実行ブロック１１５、第４の実行ブロック１８３０、第５の実行ブロック１８４０及び第６の実行ブロック１８５０のブロック識別子が、それぞれ、「０００４」、「０００７」、「０００９」、「００１０」、「０００５」、「０００８」、「０１０１」、「０１０２」、「０１０３」、「０１０４」、「０１０５」、「０１０６」とすると、以下のようなブロック接続情報テーブル４３０を更新及び／又は作成することができる。なお、スタートブロック１０２は、第１の設定ブロック１６０５が接続されていることを検出しなくてもよい。この場合、スタートブロック１０２は、第１の制御ブロック（繰り返し（ループ））１８０５を介して第１の設定ブロック１６０５が有する情報（ループ回数が「３」）を少なくとも取得できる。また、第２及び３の設定ブロック１８６０、１８６５が用いられている場合、スタートブロック１０２は、各設定ブロックに対応する制御ブロックを介して設定ブロックの情報を取得してもよい。
2019205903.tif 000006
【００８５】
スタートブロック１０２は、識別子対応情報テーブル７１０を参照し、接続されている各ブロックの種別を特定する。さらに、スタートブロック１０２は、実行ブロックに関し、コンテンツテーブル４１０を参照し、各実行ブロックに対応するコンテンツデータを特定する。本実施例において、制御ブロックにおけるループ回数や条件分岐（ブランチ）の条件などの制御ブロックのコンテンツは、識別子対応情報テーブル７１０又はコンテンツテーブル４１０に記憶されていてもよい。他の実施例において、制御ブロックのコンテンツは、各制御ブロックの記憶媒体に記憶されていてもよい。
【００８６】
以上により、図１８に示したブロックの配置から、スタートブロック１０２は、以下の処理順序でコンテンツデータの再生又は実行を行う。
（１）第１の実行ブロック１０５のコンテンツデータ「ＡＡＡ」の実行又は再生を行う。（２）第２の実行ブロック１１０から第５の実行ブロック１８４０までに関して、実行又は再生が３回繰り返される。
以下において、（２−Ｘ−Ｙ）における「Ｘ」は、ループの回数を示す。
（２−１−１）第２の実行ブロック１１０のコンテンツデータ「ＢＢＢ」の（１回目の）実行又は再生を行う。
（２−１−２）第２の制御ブロック１８１０において、ループの回数が１回目であることに応じて、第３の実行ブロック１１５のコンテンツデータ「ＣＣＣ」の実行又は再生を行う。
（２−１−３）第３の制御ブロック１８２０において、ループの回数が１回目であることに応じて、第４の実行ブロック１８３０のコンテンツデータは実行対象とされない。
（２−１−４）第５の実行ブロック１８４０のコンテンツデータ（例えば「ＥＥＥ」）の（１回目の）実行又は再生を行う。
（２−２−１）第２の実行ブロック１１０のコンテンツデータ「ＢＢＢ」の（２回目の）実行又は再生を行う。
（２−２−２）第２の制御ブロック１８１０において、ループの回数が２回目であることに応じて、第３の実行ブロック１１５のコンテンツデータは実行対象とされない。
（２−２−３）第３の制御ブロック１８２０において、ループの回数が２回目であることに応じて、第４の実行ブロック１８３０のコンテンツデータ（例えば「ＤＤＤ」）の実行又は再生を行う。
（２−２−４）第５の実行ブロック１８４０のコンテンツデータ「ＥＥＥ」の（２回目の）実行又は再生を行う。
（２−３−１）第２の実行ブロック１１０のコンテンツデータ「ＢＢＢ」の（３回目の）実行又は再生を行う。
（２−３−２）第２の制御ブロック１８１０において、ループの回数が３回目であることに応じて、第３の実行ブロック１１５のコンテンツデータは実行対象とされない。
（２−３−３）第３の制御ブロック１８２０において、ループの回数が３回目であることに応じて、第４の実行ブロック１８３０のコンテンツデータは実行対象とされない。
（２−３−４）第５の実行ブロック１８４０のコンテンツデータ「ＥＥＥ」の（３回目の）実行又は再生を行う。
（３）第１の制御ブロック１８０５に関するループの制御が終了する。
（４）第６の実行ブロック１８５０のコンテンツデータ（例えば「ＦＦＦ」）の実行又は再生を行う。
【００８７】
本実施例において、シグナル情報を用いてインデントの検出を説明したが、当業者であれば理解されるように、他の実施例においてもシグナル情報を用いることができる。
【００８８】
実施例４
（ブロックに割り当てたコンテンツデータの動的変更）
本実施例によれば、実行ブロック（又は、実行ブロックの識別子）に割り当てられているコンテンツデータを動的に変更することができる。これにより、本実施例は、音楽や、動画、そして、ロボットや、ドローンなどの制御を行うための制御信号などのブロックに関連付けされたコンテンツデータを動的に変更することによって、よりフレキシブルな遊び方を可能にし、ユーザが飽きにくい玩具を提供することができる。
【００８９】
（１）コンテンツデータの再割り当て
例えば、初めに、曲「Ａ」を分割したフレーズ「ＡＡＡ」、「ＢＢＢ、「ＣＣＣ」それぞれを、第１のブロック、第２のブロック、第３のブロックに割り当ていたとする。ユーザがブロックを複数回配置して、コンテンツデータを再生する。この場合、ユーザは、正しいフレーズの並び順（すなわち、ブロックの配置順序）が分かると、ゲーム性がなくなり飽きてしまう。このようなときに、各ブロックに割り当てている曲「Ａ」の一部であるフレーズを異なる実行ブロックへ再割り当てすることによって、ゲーム性を高めて、より魅力的な玩具を提供することができる。
【００９０】
本実施例では、再割り当ての実行は、ユーザが指示可能な再割り当てボタンをスタートブロック１０２に設ける、又は、他の装置から再割り当てについての指示を受ける回路をスタートブロック１０２に設けることによって実現される。他の装置とは、有線又は無線で接続することができる。スタートブロック１０２において、再割り当てボタンが押されると、又は、スタートブロック１０２が他の装置から再割り当てについての指示を受けると、再割り当てが実行される。
【００９１】
再割り当てが実行されると、図４で示したスタートブロック１０２におけるコンテンツテーブル４１０のコンテンツ識別子とコンテンツデータとの対応関係を入れ替える。これにより、各実行ブロックへのコンテンツデータの再割り当てが実現できる。他の実施例において、図６に示したコンテンツテーブル６１０を参照し、同一のコンテンツグループに対応するコンテンツ識別子に対して、コンテンツ識別子とコンテンツデータとの対応関係を入れ替えることによって再割り当てを行ってもよい。他の実施例において、図４に示した識別子対応情報テーブル４２０について、又は、図７で示した識別子対応情報テーブル７１０においてブロック種別（ブロック種別：７）が実行ブロックのものについて、ブロック識別子とコンテンツ識別子との対応関係を入れ替えることによって再割り当てを行ってもよい。
【００９２】
（２）新たなコンテンツの割り当て
スタートブロック１０２は、識別子対応情報テーブル４２０又は７１０において、コンテンツ識別子が割り当てられていないブロック識別子を特定する。スタートブロック１０２は、特定されたブロック識別子に新たなコンテンツのコンテンツ識別子を割り当てる。また、スタートブロック１０２は、新たに追加されるコンテンツのコンテンツ識別子及びコンテンツデータをコンテンツテーブルに追加する。一実施例において、特定されたブロック識別子の数に基づいて、コンテンツをどのように分割するかを決定することができる。コンテンツ識別子が割り当てられていないブロック識別子が存在しない場合、スタートブロック１０２は、コンテンツ識別子が既に割り当てられている所定のブロック識別子に新たなコンテンツのコンテンツ識別子を割り当てる。
【００９３】
（３）コンテンツの割り当てのタイミング
・スタートブロック１０２の電源をオンにしたときに、コンテンツの割り当てを行う。
・各ブロックの配置が完成したときにコンテンツの割り当てを行う。例えば、コンテンツが音楽である場合にブロックの配置により曲が完成したときにコンテンツの割り当てを行う。他の実施例において、各ブロックの配置が完成する途中で、誤りのある配置が所定の回数行われたことに応じて、コンテンツの割り当てを行ってもよい。
・電源が投入されてから（又は、先のコンテンツの割り当てが完了してから）、所定の時間経過したときにコンテンツの割り当てを行う。これにより、ブロックを配列させることの難易度を上げることができる。
・スタートブロック以外のブロックが、スタートブロック１０２に接続されたとき、接続されたブロックにコンテンツデータの割り当てが行われる。本実施例において、接続されるたびに、コンテンツデータの実行又は再生を行えるようにしてもよい。これにより、ユーザは、ブロックに割り当てられたコンテンツデータを認識することができる。ブロックの数が多い場合、コンテンツデータが割り当てられないブロックがあってもよい。この場合、コンテンツデータが割り当てられないブロック又はスタートブロック１０２において、音声装置や、表示装置を用いて、当該ブロックにコンテンツが割り当てられないことをユーザに通知してもよい（例えば、ビープ音など）。
【００９４】
上記の各実施例において、コンテンツが割り当てられるブロックは、実行ブロックのみとしたが、制御ブロックを含む全てのブロックとしてもよい。これにより、制御ブロック及び実行ブロックに関連付けされるコンテンツデータは、変更可能となる。この場合、ブロックに関連付けされるコンテンツデータは、コンテンツテーブル４１０（又は識別子対応テーブル７１０などの他のテーブル）において、ブロック識別子と関連付けされて記憶される。
【００９５】
実施例５
（スタートブロックの変形例）
上記の各実施例において、スタートブロック１０２が、各情報テーブルの保持や、各ブロックの制御などを実行しているが、これは一例であり、上記説明したスタートブロック１０２の一部は、一又は二以上の他の装置と共同して実現されてもよい。他の装置は、例として、スマートフォンや、タブレット、ノートパソコン、デスクトップパソコンなどでもよい。他の装置は、スタートブロック１０２と有線又は無線で接続することができる。スタートブロック１０２自体、又は、スタートブロック１０２及び他の装置の組み合わせは、ブロック制御装置と呼ぶことができる。ブロック制御装置は、インターネットを介して有線又は無線で、ブロック制御装置自体を制御するためのコンピュータプログラムや、実行ブロック、制御ブロック及び設定ブロックを制御するプログラム、実行ブロックに割り当てるコンテンツデータなどを外部サーバから取得できるようにしてもよい。上記説明したテーブルの一部又は全部は、スタートブロック１０２及び他の装置の一方が有していてもよい。他の実施例において、スタートブロック１０２の代わりに、スマートフォンや、タブレット、ノートパソコン、デスクトップパソコンなどのコンピュータ装置であるブロック制御装置が、スタートブロック１０２が行う機能を実現してもよい。他の実施例において、ブロック制御装置は、スタートブロック１０２及び／又はコンピュータ装置にコンテンツデータや各種のテーブルなどを供給する外部サーバを含んでいてもよい。他の実施例において、ブロック制御装置は、他のブロック制御装置と有線回線又は無線回線を介して通信を行うことができる。これにより、ブロック制御装置のそれぞれのユーザは、例えば、誰が早くブロックを正しく並べることができたかなどの競争を行うことができる。
【００９６】
上記の各実施例において、スタートブロック及び他の装置の一方又は両方からなるブロック制御装置は、コンテンツに適した出力装置を用いてコンテンツを再生又は実行できる。一例として、コンテンツが音楽あれば出力装置はスピーカであり、コンテンツが動画であれば出力装置はディスプレイ及び／又はスピーカであり、コンテンツがプログラムであればそれに適した装置とすることができる。ブロック制御装置が各ブロックから収集（準備）したコンテンツデータの実行又は再生は、例えば、ブロック制御装置や、スタートブロック及び他のブロック、又は、ロボットなどの外部装置などにおいて実現されてもよい。
【００９７】
上記の各実施例において、各ブロックの接続は、有線又は無線で接続される。有線の場合、第１のブロックの下位コネクタ及び第２の上位コネクタは、それぞれ、凸型及び凹型形状（又は、その逆）を有しており、一方のコネクタが他方のコネクタを受けるようにすることができる。また、無線の場合、各ブロックのコネクタの代わりに、無線通信送受信機を用いることができる。各ブロックは、無線通信送受信機を用いて無線通信を行う。無線通信送受信機は、例えば、ＲＦＩＤタグ／リーダ、ＷＩＦＩ通信回路、Bluetooth通信回路、ZigBee通信回路などを用いて実現される。
【００９８】
他の実施例において、各ブロックの接続は、ブロックの形状による物理的接続であってもよい。物理的接続は、例えば、一方のブロックの凸型又は凹型形状が他方のブロックの凹型又は凸型形状と組み合わせることによって実現される。他の例として、物理的接続は、磁力によって実現される。例えば、磁力による物理的接続は、一方のブロックの磁石のＳ極と他方のブロックの磁石のＮ極とが組み合わさって実現される。物理的接続が用いられる場合、ブロック制御装置は、各ブロックを赤外線センサーやカメラなどのイメージセンサによる光学的認識を用いて特定してもよい。
【００９９】
例えば、ブロック制御装置は、イメージセンサなどである光学的に読み取り可能な装置を備え、光学的に読み取り可能な装置は、各ブロックの図柄を検出し、各ブロックのブロック識別子及び配置を特定する。他の実施例において、ブロック制御装置は、各ブロックを、無線通信技術を用いて特定してもよい。この場合、ブロック制御装置及び各ブロックは、それぞれ、無線通信受信機／リーダ（又はリーダ・ライタ）及び無線通信送信機（又は無線通信送信機及び無線通信受信機／リーダ（又はリーダ・ライタ））を有する。例えば、無線通信技術がＲＦＩＤ技術を用いた通信の場合、各ブロックはＲＦＩＤタグを有し、ブロック制御装置のＲＦＩＤリーダ（又はリーダ・ライタ）がこれらのＲＦＩＤタグを読み出すことによって、各ブロックのブロック識別子及び配置を特定する。
【０１００】
他の実施例において、各ブロックを受けるボードによって物理的接続が実現されてもよい。例えば、ボードは、２以上のブロックを受け入れるように構成されている。各ブロックは、ブロック識別子を少なくとも記憶した電気的に読み取り可能なタグ、磁気的に読み取り可能なタグ、光学的に読み取り可能なタグの少なくとも一つを備え、ボードは、電気的に読み取り可能な装置、磁気的に読み取り可能な装置、光学的に読み取り可能な装置の少なくとも一つを備える。ボードは、受け入れたブロックのブロック識別子及び配置を、電気的読み取り装置、磁気的読み取り装置、光学的読み取り装置の少なくとも一つを用いて特定するように構成されている。
【０１０１】
実施例６
（各ブロックの変形例）
各ブロックは、電子ペーパーや、液晶ディスプレイ、有機ＥＬディスプレイなどの表示装置を備えていてもよい。表示装置は、各ブロックに関連付けされているコンテンツ又はコンテンツを表すしるしを表示することができる。例えば、コンテンツが音楽である場合、表示装置は、曲名、ブロックが有する音楽の秒数などを表示してもよい。
【０１０２】
他の実施例において、各ブロックは、表示装置を含む出力装置を備えていてもよい。出力装置は、各ブロックに関連付けされている凹凸、振動、音声、静止画、動画、匂いなどの一又は二以上を発生させることができる。これにより、ユーザは、触覚、聴覚、視覚、嗅覚により、各ブロックを識別することができる。ブロック制御装置は、出力装置が出力する情報を割り当て及び／又は供給を行っても良い。
【０１０３】
ブロック制御装置は、各ブロックのブロック識別子の書き換えができてもよい又は、ブロック識別子を拡張した識別子を作成し、各ブロックに記憶させてもよい。これにより、ブロックの遊び方や、ゲームの規則などの拡張が、より簡単に対応できる。
【０１０４】
実施例７
（設定ブロックの変形例）
設定ブロックで設定可能な情報は、各実施例で説明したように、ループの回数やＩＦ文の条件などを引数として設定可能な情報とすることができる。また、設定ブロックは、接続されたブロック群で使用可能な変数を設定できてもよい。さらに、所定の処理を行う命令に関する情報を変数として設定できてもよい。例えば、設定ブロックは、変数についての情報を各ブロックに提供する。また、設定ブロックは、当該変数の値が所定の値となったときに関数などの所定の処理を実行する命令を変数として各ブロックに設定できてもよい。所定の処理は、関数の実行の他、例えば、コンテンツの実行又は再生の停止や、各ブロックの出力装置の制御などとすることができる。
【０１０５】
コンテンツデータ
コンテンツデータのコンピュータプログラムの動作の対象は、自動車や、飛行機、船などの乗り物及びそれら乗り物のラジコン玩具や、ロボット、ドローンなどでもよい。
【０１０６】
コンテンツデータが音楽（音声）である場合、コンテンツデータは、フレーズより小さい単位のデータであってもよい。例えば、データの単位は、時間、小節、音符などとすることができる。
【０１０７】
コンテンツデータは、コンピュータプログラム、音声、音楽、動画などに加えて、一又は二以上の文字とすることができる。例えば、正しく、実行ブロックを並べると、ブロック制御装置は、各実行ブロックに関連付けされた文字に基づいて、単語又は文章を特定する。例えば、正しい順序で実行ブロックが並べられた場合、ブロック制御装置は、正解の単語や文章を映像や音声に基づいて出力する。
【０１０８】
図６に示したコンテンツテーブルのコンテンツグループ６１０に関し、実行ブロックに割り当てられるコンテンツデータは、異なるコンテンツグループのコンテンツデータでもよい。例えば、コンテンツグループ「Ａ」及び「Ｂ」に属する５つのコンテンツデータがそれぞれ５つの実行ブロックに割当てられてもよい。これにより、実行ブロックの組み合わせが複雑になり、ゲーム性がより向上する。
【０１０９】
各実行ブロックには、２以上のコンテンツデータが割当てられてもよい。例えば、同じ音楽のフレーズであるコンテンツデータであっても、各実行ブロックには、男声及び女声の２つのコンテンツデータが割り当てられてもよい。例えば、実行ブロックを設定ブロックを受け入れ可能に構成し、設定ブロックは、男声及び女声の一方又は両方が用いられるように切り替えるスイッチを備える。これにより、実行ブロックに割り当てられた男声及び女声の２つのコンテンツデータの切り替えが可能となり、男声及び女声の一方又は両方を用いて音楽が再生される。他の実施例において、各実行ブロックは、２以上のコンテンツデータのうちの一つを選択するための切り替え手段を有していてもよい。
【０１１０】
上記の各実施例において、各ブロックの上位又は下位コネクタの数は、一又は二以上として説明したが、それぞれ、二又は三以上でもよい。
【０１１１】
上記の各実施例において、各ブロックのコネクタは、所定の面において、短手方向の中心としたが、これは、例示であり、いずれかの方向によっていてもよい。
【０１１２】
上記の各実施例において、「動作なし」ブロックは、省略してもよい。
【０１１３】
他の実施例において、実施例３（ブロックにインデントを適用する例）などにおいて、「動作なし」ブロックは、インデントを戻す（インデントの解除）ために用いられてもよい。例えば、２以上のインデントが複数のブロックに付された場合、「動作なし」ブロック１つが、２以上のインデントを戻すように構成されていてもよい。本実施例において、「動作なし」ブロックの第１及び２の面における長手方向の長さは、２以上のインデントを戻すために十分な長さを有していてもよい。
【０１１４】
上記の実施例において、ハードウエアで実現するよう説明されたいくつかの要素の一部又は全ては、ソフトウエアで実現することができ、そして、ソフトウエアで実現するよう説明されたいくつかの要素の一部又は全ては、ハードウエアで実現することができることは理解されるであろう。
【０１１５】
以上に説明した玩具は、子供及び幼児用の玩具として説明したが、玩具は、１０〜２０歳代の学生用、大人用、老人用であってもよい。
【０１１６】
以上に説明した処理又は処理順序において、ある処理において、その処理ではまだ利用することができないはずのデータを利用しているなどの処理又は処理順序上の矛盾が生じない限りにおいて、処理又は処理順序を自由に変更することができる。
【０１１７】
以上に説明してきた各実施例に関し、各実施例の一部又は全部を組み合わせて一つの実施例として実現されてもよい。
【０１１８】
以上に説明してきた各実施例は、本発明を説明するための例示であり、本発明はこれらの実施例に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。
【符号の説明】
【０１１９】
１０２  スタートブロック
１０５、１１０、１１５  実行ブロック
１２５  有線回線及び／又は無線回線
１５０  コンピュータ装置
スタートブロック
３０５  プロセッサ
３１０  ＲＯＭ
３１５  ＲＡＭ
３２０  コネクタ
１７２０  関数定義用コネクタ
スタートブロックが有するテーブル
４１０、６１０  コンテンツテーブル
４２０、７１０  識別子対応情報テーブル
４３０  ブロック接続情報テーブル
実行ブロック
５１０  上位コネクタ
５１５  プロセッサ
５２０  ＲＯＭ
５３０  ＲＡＭ
５３５  下位コネクタ
９０５  第１の上位コネクタ
９１０  第２の上位コネクタ
関数定義ブロック
５１０  上位コネクタ
５１５  プロセッサ
５２０  ＲＯＭ
５３０  ＲＡＭ
５３５  下位コネクタ
１７３０  第１の関数定義用コネクタ
１７４０  第２の関数定義用コネクタ
制御ブロック
１００５  制御ブロック
１０１０  第１の上位コネクタ
１０１５  第２の上位コネクタ
１０２０  プロセッサ
１０３０  ＲＯＭ
１０４０  ＲＡＭ
１０４５  下位コネクタ
設定ブロック
１６０５  設定ブロック
１６１０  プロセッサ
１６１５  ＲＯＭ
１６２０  ＲＡＭ
１６５０  コネクタ
【図１】
2019205903.tif 000007
【図２】
2019205903.tif 000008
【図３】
2019205903.tif 000009
【図４】
2019205903.tif 000010
【図５】
2019205903.tif 000011
【図６】
2019205903.tif 000012
【図７】
2019205903.tif 000013
【図８】
2019205903.tif 000014
【図９】
2019205903.tif 000015
【図１０】
2019205903.tif 000016
【図１１】
2019205903.tif 000017
【図１２】
2019205903.tif 000018
【図１３】
2019205903.tif 000019
【図１４】
2019205903.tif 000020
【図１５】
2019205903.tif 000021
【図１６】
2019205903.tif 000022
【図１７】
2019205903.tif 000023
【図１８】
2019205903.tif 000024