(57)【要約】【課題】タンジブルなプログラミングによるプログラミング操作と、その操作により生成されたプログラムに応じた被制御部の移動方向との関連性を、ユーザにとってわかりやすくすることができるプログラミング装置を提供する。【解決手段】プログラミングブロック１２０とコアユニット１６０とからなるタンジブルなプログラム制御装置を用いて、始点となるスタートブロック１２０Ｓにプログラミングブロック１２０を順次連結接続するプログラミング操作により、スタートブロック１２０Ｓを基準とする、その全体配置形状の相対的な配置に基づいて仮想経路を決定し、この仮想経路によりターゲット機器２００の移動経路を規定する。また、ターゲット機器２００の移動経路上の任意の位置に対応する仮想経路のプログラミングブロック１２０に機能情報を設定するプログラミング操作により、当該位置でターゲット機器２００に特定の機能動作を実行させる。【選択図】図１
2018163546.tif 000002
【特許請求の範囲】
【請求項１】
タンジブルな複数の形状指示部がユーザ操作によって互いに相対的に配置されることで前記複数の形状支持部の相対位置が指示されたことに応じて、前記複数の形状支持部の相対位置に基づいて、第１形状を指示する第１形状指示部と、
前記第１形状指示部により指示された前記第１形状に対応させて被制御部を移動させる命令を生成する命令生成部と、
を備えることを特徴とするプログラミング装置。
【請求項２】
前記複数の形状指示部のうちのいずれかの形状指示部に対応付けて前記被制御部における機能を設定する機能設定部をさらに備え、
前記命令生成部は、
前記命令に応じて前記被制御部が前記いずれかの形状指示部に対応する位置へ移動したときに、前記機能設定部により設定された前記機能を前記被制御部に実行させる命令を生成することを特徴とする請求項１に記載のプログラミング装置。
【請求項３】
前記複数の形状指示部のうちのいずれかの形状指示部は、前記機能の設定を受け付ける機能受付部をさらに備え、
前記命令生成部は、
前記命令に応じて前記被制御部が前記いずれかの形状指示部に対応する位置へ移動したときに、前記機能受付部が受け付けた前記機能を該被制御部に実行させる命令を生成することを特徴とする請求項１又は２に記載のプログラミング装置。
【請求項４】
前記第１形状に対応して移動する前記被制御部を、さらに備えることを特徴とする請求項１乃至３に記載のプログラミング装置。
【請求項５】
タンジブルな複数の形状指示部がユーザ操作によって互いに相対的に配置されることで前記複数の形状支持部の相対位置が指示されたことに応じて、前記複数の形状支持部の相対位置に基づいて、第１形状を指示し、
前記指示された前記第１形状に対応させて被制御部を移動させる命令を生成する、
ことを特徴とするプログラミング方法。
【請求項６】
プログラミング装置を制御するための制御プログラムであって、
前記プログラミング装置は、第１形状指示部と命令生成部とを備え、
前記プログラミング装置を制御するコンピュータに、
タンジブルな複数の形状支持部がユーザ操作によって互いに相対的に配置されることで前記複数の形状支持部の相対位置が指示されたことに応じて、前記複数の形状支持部の相対位置に基づいて、前記第１形状指示部によって第１形状を指示させ、
指示された前記第１形状に対応させて被制御部を移動させる命令を、前記命令生成部によって生成させる、
ことを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラミング装置及びその制御プログラム、プログラミング方法に関する。
【背景技術】
【０００２】
従来、コンピュータやモバイル端末等の情報通信機器の普及や、これらを含む様々な機器の制御技術の発展に伴い、プログラムの開発技術の重要性が指摘されていた。近年においては、幼児期からのプログラミング教育の重要性が世界的に認知されてきており、義務教育段階からの必修科目として採用する国が増えてきている。我が国においてもプログラミング教育が政策に盛り込まれ、今後はプログラミング教育への関心がより低年齢層にも拡大していくことが予想される。
【０００３】
このようなプログラミング教育への関心の高まりを背景にして、様々なプログラミング教育ツールが開発されている。例えば特許文献１には、物理的なブロック（物体）をユーザが直接手に持って実際に動かすことにより、一次元的、又は、二次元的に連結することでプログラムを生成し、当該プログラムに基づいて実行装置の動作を制御する技術が記載されている。
【０００４】
また、非特許文献１には、所定のボード上に物理的なブロック（物体）をユーザが直接手に持って実際に動かすことにより、順番に組み付けていくことでプログラムを生成し、走行ロボットの動作を制御する技術が記載されている。また、非特許文献２には、タブレット等の情報端末の画面上でイラストアイコンからなる仮想ブロックを連結することによりプログラミングを行い、画面中のキャラクタの動きを制御する技術が記載されている。
【０００５】
これらに記載された技術によれば、連結又は組み付けられた各ブロックに設定された機能を、走行ロボットやキャラクタが順次実行していくことにより、プログラムの構成や実行状況を直感的に学習することができる。本明細書では、特許文献１や非特許文献１のように、物体を直接動かすことでプログラミングすることを、タンジブルなプログラミングという。一方、非特許文献２のように、液晶表示装置などの電子的なディスプレイの画面上に表示された仮想ブロック即ち仮想的なアイコンにタッチして動かすことでプログラミングすることを、ビジュアル・プログラミングという。また、本明細書において、タンジブルであるとは、実体があり、現実空間内において手で触れて実感することができる状態にあることを意味する。しかしながら、液晶表示装置などの電子的なディスプレイ自体はタンジブルであっても、そういったディスプレイ上に電子的に表示されたアイコンなどを、そのディスプレイ画面にタッチすることで操作することは、タンジブルな操作ではない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平５−２０４６２０号公報
【非特許文献】
【０００７】
【非特許文献１】“Cubetto: コーディングとプログラミングを教えてくれる子ども向けロボット”、［online］、2016、Primo Toys、［2016年11月22日検索］、インターネット＜URL：https://www.primotoys.com/ja/＞
【非特許文献２】“ScratchJr - Home”、［online］、2016年5月17日更新、MIT Media Lab、［2016年11月22日検索］、インターネット＜URL：https://www.scratchjr.org/＞
【発明の概要】
【発明が解決しようとする課題】
【０００８】
一般に、幼児等の年少者に対するプログラミング教育においては、知能の発達の観点から、タンジブルなプログラミング、即ち、現実空間内で実際に物体に触って移動、変形等の操作をしながらプログラミングを行わせる方が、学習効果が高いと考えられている。
【０００９】
しかしながら、上記の特許文献１や非特許文献１に記載されている技術は、タンジブルなプログラミングではあるものの、機能が設定されたブロックを所定の接合部で連結させたり、所定のボードに順次組み付けさせたりしてプログラミングを行う手法であるため、連結又は組み付けたブロック全体の形状や配置と、実際に動作する実行装置や走行ロボットの進行方向とが無関係になっている。そのため、幼児にはプログラミングの際の操作内容と実行装置の移動との関係が直感的に把握、理解しにくく、プログラミングの学習効果が十分に得られない場合がある。
【００１０】
また、上記の非特許文献２に記載されている技術は、タンジブルなプログラミングではなくビジュアル・プログラミング、即ち、タブレット等を用いて画面上の操作のみでプログラミングを行う手法であるため、ある程度年長（概ね５歳位以上）の学習者には適しているが、３歳位までの幼児にはプログラミングの際の操作方法や操作内容等が直感的に把握、理解しにくく、プログラミングの学習効果が十分に得られない場合がある。
【００１１】
このように、従来、幼児向けのプログラミング教育ツールとして、タンジブルなプログラミングを行うものやビジュアル・プログラミングを行うものが知られているが、いずれも、幼児にとってプログラミングの学習効果が十分に得られると言えるものではない。つまり、タンジブルなプログラミングによるプログラミング操作と、その操作により生成されたプログラムに応じた被制御部の移動方向との関連性を、ユーザにとってわかりやすくしたようなプログラミング教育ツールは未だ知られていない。
【００１２】
そこで、本発明は、上述したような課題に鑑みて、タンジブルなプログラミングによるプログラミング操作と、その操作により生成されたプログラムに応じた被制御部の移動方向との関連性を、ユーザにとってわかりやすくすることができるプログラミング装置及びその制御プログラム、プログラミング方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係るプログラミング装置は、
タンジブルな複数の形状指示部がユーザ操作によって互いに相対的に配置されることで前記複数の形状支持部の相対位置が指示されたことに応じて、前記複数の形状支持部の相対位置に基づいて、第１形状を指示する第１形状指示部と、
前記第１形状指示部により指示された前記第１形状に対応させて被制御部を移動させる命令を生成する命令生成部と、
を備えることを特徴とする。
【００１４】
本発明に係るプログラミング方法は、
タンジブルな複数の形状指示部がユーザ操作によって互いに相対的に配置されることで前記複数の形状支持部の相対位置が指示されたことに応じて、前記複数の形状支持部の相対位置に基づいて、第１形状を指示し、
前記指示された前記第１形状に対応させて被制御部を移動させる命令を生成する、
ことを特徴とする。
【００１５】
本発明に係る制御プログラムは、
プログラミング装置を制御するための制御プログラムであって、
前記プログラミング装置は、第１形状指示部と命令生成部とを備え、
前記プログラミング装置を制御するコンピュータに、
タンジブルな複数の形状支持部がユーザ操作によって互いに相対的に配置されることで前記複数の形状支持部の相対位置が指示されたことに応じて、前記複数の形状支持部の相対位置に基づいて、前記第１形状指示部によって第１形状を指示させ、
指示された前記第１形状に対応させて被制御部を移動させる命令を、前記命令生成部によって生成させる、
ことを特徴とする。
【発明の効果】
【００１６】
本発明によれば、タンジブルなプログラミングによるプログラミング操作と、その操作により生成されたプログラムに応じた被制御部の移動方向との関連性を、ユーザにとってわかりやすくすることができる。
【図面の簡単な説明】
【００１７】
【図１】本発明に係るプログラミング装置を適用したプログラミング教育装置の第１の実施形態を示す概略図である。
【図２】本実施形態に係るプログラミング教育装置に適用される構成例を示す機能ブロック図である。
【図３】本実施形態に係るプログラミング教育装置に適用される他の構成例を示す機能ブロック図である。
【図４】本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法の一例（ノーマルモード）を示すフローチャートである。
【図５】本実施形態に適用されるプログラミング操作処理（平面的配置）を説明するための概略図（その１）である。
【図６】本実施形態に適用されるプログラミング操作処理（平面的配置）を説明するための概略図（その２）である。
【図７】本実施形態に適用されるプログラム生成、実行処理（一括処理）を説明するための概略図（その１）である。
【図８】本実施形態に適用されるプログラム生成、実行処理（一括処理）を説明するための概略図（その２）である。
【図９】本実施形態に適用されるプログラム生成、実行処理（ステップ処理）を説明するための概略図（その１）である。
【図１０】本実施形態に適用されるプログラム生成、実行処理（ステップ処理）を説明するための概略図（その２）である。
【図１１】本実施形態に適用されるプログラミング操作処理（立体的配置）を説明するための概略図である。
【図１２】本実施形態に適用されるプログラム生成、実行処理（一括処理）の他の例を説明するための概略図である。
【図１３】本実施形態に適用されるスタートブロックの外観表記の一例を示す概略図である。
【図１４】本実施形態に適用されるターゲット機器の機能動作の設定方法の一例を示す概略図である。
【図１５】本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法の変形例（リアルタイムモード）を示すフローチャートである。
【図１６】本変形例に適用されるプログラミング操作処理及びプログラム生成、実行処理を説明するための概略図（その１）である。
【図１７】本変形例に適用されるプログラミング操作処理及びプログラム生成、実行処理を説明するための概略図（その２）である。
【図１８】本実施形態に係るプログラミング教育装置におけるプログラミング操作に適用される機能動作の変形例（条件分岐、繰り返し、関数、イベント）を示す概略図である。
【図１９】本実施形態に係るプログラミング教育装置に適用される構成の変形例を示す機能ブロック図である。
【図２０】本変形例に適用されるプログラム生成、実行処理の一例を説明するための概略図である。
【発明を実施するための形態】
【００１８】
以下、本発明に係るプログラミング装置及びその制御プログラム、プログラミング方法について、実施形態を示して詳しく説明する。ここでは、説明を簡明にするために、本発明に係るプログラミング装置を適用したプログラミング教育装置を用いて、移動体であるターゲット機器の動作状態を制御するプログラムを生成する場合について説明する。
【００１９】
＜第１の実施形態＞
（プログラミング教育装置）
図１は、本発明に係るプログラミング装置を適用したプログラミング教育装置の第１の実施形態を示す概略図である。また、図２は、本実施形態に係るプログラミング教育装置に適用される構成例を示す機能ブロック図であり、図３は、本実施形態に係るプログラミング教育装置に適用される他の構成例を示す機能ブロック図である。
【００２０】
第１の実施形態に係るプログラミング教育装置は、例えば図１に示すように、大別して、プログラム制御装置１００と、ターゲット機器２００とを有している。プログラム制御装置１００は、プログラミング教育の対象者であるユーザによる入力操作を受け付け、受け付けた入力操作に応じた情報を取得して、ターゲット機器２００の動作状態を制御するプログラムを生成する。また、ターゲット機器２００は、タンジブルな、又はタンジブルでない移動体であって、プログラム制御装置１００から転送されたプログラムを実行することにより、移動を含む動作状態が制御される以下、プログラム制御装置１００及びターゲット機器２００について、詳しく説明する。
【００２１】
（プログラム制御装置）
プログラム制御装置１００は、例えば図１に示すように、いずれもタンジブルである、複数のプログラミングブロック１２０と、コアユニット１６０と、を有している。
【００２２】
（プログラミングブロック１２０）
プログラミングブロック１２０は、例えば図１に示すように、現実空間内において物理的に直接触れることができるタンジブルな物体であり、略立方体（又は、略直方体）形状を有し、後述するように、当該立方体形状の各面を介して他のプログラミングブロック１２０が連結接続される。このプログラミングブロック１２０を複数個、連結接続することにより形成される集合体の全体配置形状は、ターゲット機器２００の移動経路を規定する。すなわち、プログラミングブロック１２０は、ターゲット機器２００を動作させる際の、ターゲット機器２００の移動経路を規定するための入力装置として機能する。ここで、複数のプログラミングブロック１２０の全体配置形状は、二次元形状（すなわち、平面的に配置された形状）を有しているものであってもよいし、三次元形状（すなわち、立体的に配置された形状）を有しているものであってもよい。また、プログラミングブロック１２０は、ターゲット機器２００を動作させる際に、上記の移動経路上でターゲット機器２００が実行する特定の機能動作を設定するための入力装置としても機能する。
【００２３】
なお、プログラミングブロック１２０は、他のプログラミングブロック１２０を連結接続した際に、プログラミングブロック１２０相互間、又は、コアユニット１６０との間で、後述するブロック情報や連結特定情報の送受信や駆動用の電力の授受を確実に行うことができる程度に、当該接続状態が強固かつ安定して保持されるものであることが好ましい。そのために、例えばプログラミングブロック１２０相互の接触面となる両面が凹凸形状を有し、互いに着脱可能に係止する構造を有しているものであってもよいし、両面が磁力等により吸着する構造を有しているものであってもよい。
【００２４】
また、本実施形態においては、説明を簡明にするために、プログラミングブロック１２０が立方体形状を有しているものとして説明するが、本発明はこれに限定されるものではなく、上記のような接続状態を保持できるものであれば、任意の多面体形状を有するものであってもよいし、この例に限られないが略円柱形状や略円錐形状、略裁頭円錐形状、略球形状、略半球形状などのように表面の一部が曲面であるものであってもよい。また、本実施形態においては、ターゲット機器２００の移動動作時の始点から終点までの経路（移動経路）を規定する、連結接続された複数のプログラミングブロック１２０のうち、始点となるプログラミングブロック１２０を他のプログラミングブロック１２０と区別するために、便宜的に「スタートブロック１２０Ｓ」と記す。
【００２５】
プログラミングブロック１２０は、例えば図２に示すように、ブロックＩ／Ｆ部１２２と、識別変移部１２４と、記憶部１２６と、制御部１２８と、を有している。また、スタートブロック１２０Ｓは、プログラミングブロック１２０の上記の構成に加え、外部インターフェース部（以下、「外部Ｉ／Ｆ部」と略記する）１３０を、さらに有している。
【００２６】
ブロックＩ／Ｆ部１２２は、連結検知部と、受信部と、送信部とを有している。
連結検知部は、自己のプログラミングブロック１２０又はスタートブロック１２０Ｓと、他のプログラミングブロック１２０との連結状態を検知する。具体的には、連結検知部は、立方体の６面（便宜的に、前後左右上下の６面とする）のうちのどの面、又は、どの方向に他のプログラミングブロック１２０が連結接続されているか、という連結状態を特定する情報（連結特定情報）を取得する。ここで、スタートブロック１２０Ｓは、立方体の６面のうち特定の一面側の方向が、ターゲット機器２００の進行方向に対応する基準方向として設定されていて、他のプログラミングブロック１２０が連結接続されている面について、当該基準方向（ターゲット機器２００の進行方向）に対する相対的な配置（方向や位置関係）が検知される。連結検知部により取得された連結特定情報は、記憶部１２６の記憶領域に記憶される。
【００２７】
受信部は、自己のプログラミングブロック１２０に対して、ターゲット機器２００の移動経路の終点側となる方向側（以下、便宜的に「後方側」と記す）に連結接続された他のプログラミングブロック１２０（すなわち、後方側のプログラミングブロック１２０）から、当該後方側のプログラミングブロック１２０が有するブロック情報を受信する。ここで、ブロック情報は、プログラミングブロック１２０に固有の識別情報（ＩＤ情報）や、ターゲット機器２００に実行させる特定の機能動作を規定する機能情報を有している。また、後方側のプログラミングブロック１２０が連結特定情報を有している場合、すなわち、後方側のプログラミングブロック１２０のさらに後方側に他のプログラミングブロック１２０が連結接続されている場合には、受信部は、当該後方側のプログラミングブロック１２０が有する連結特定情報を受信する。受信部により受信したブロック情報や連結特定情報は、記憶部１２６の記憶領域に記憶される。
【００２８】
送信部は、自己のプログラミングブロック１２０に対して、ターゲット機器２００の移動経路の始点側となる方向側（以下、便宜的に「前方側」と記す）に連結接続された他のプログラミングブロック１２０（すなわち、前方側のプログラミングブロック１２０）、又は、スタートブロック１２０Ｓに、自己のプログラミングブロック１２０が有するブロック情報を送信する。また、自己のプログラミングブロック１２０の後方側に他のプログラミングブロック１２０が連結接続されている場合には、当該後方側のプログラミングブロック１２０から受信したブロック情報、及び、連結検知部により取得された、後方側のプログラミングブロック１２０との連結状態を特定する連結特定情報を、前方側のプログラミングブロック１２０、又は、スタートブロック１２０Ｓに送信する。
【００２９】
また、各プログラミングブロック１２０が駆動用の電力を供給する電源部を有していない場合には、ブロックＩ／Ｆ部１２２は、上記の各構成に加え、給電及び受電機構を有し、複数のプログラミングブロック１２０を連結接続する際の始点となるスタートブロック１２０Ｓから受電した駆動用の電力を後方側のプログラミングブロック１２０に順次給電する。この場合、スタートブロック１２０ＳのブロックＩ／Ｆ部１２２は、上記の各構成に加え、給電機構を有している。
【００３０】
このようなブロックＩ／Ｆ部１２２は、他のプログラミングブロック１２０やスタートブロック１２０Ｓとの間で、上記のブロック情報や連結特定情報を送受信するために、非接触型、又は、接触型のインターフェースを有している。ここで、ブロックＩ／Ｆ部１２２として、非接触型のインターフェースを適用する場合には、例えば電子マネーカード等に用いられているＮＦＣ（Near Field Communication）等の近距離無線通信技術による方式や、赤外線等を用いた光通信方式を適用することができ、また、接触型のインターフェースを適用する場合には、端子電極相互を直接接続する方式を適用することができる。なお、ブロックＩ／Ｆ部１２２に適用されるインターフェースは、立方体の６面全て（前後左右上下の６面）に個別に設けられるものであってもよいし、６面全てに共通して設けられているものであってもよい。
【００３１】
識別変移部１２４は、例えば発光部あるいは表示部を有し、プログラミングブロック１２０を用いたプログラミング操作の際に、ブロックＩ／Ｆ部１２２により自己のプログラミングブロック１２０が他のプログラミングブロック１２０やスタートブロック１２０Ｓに連結接続された状態が検知されると、発光部を所定の発光状態で発光させたり、表示部に表示される画像を変化させたりすることにより、当該プログラミングブロック１２０を識別可能な状態にする。
【００３２】
なお、この識別変移部１２４に適用される表示部は、電力を使用せずに表示される画像を変化させるものであってもよい。例えば、各プログラミングブロック１２０の内部には永久磁石が設置され、プログラミングブロック１２０相互を連結接続することに伴い、それぞれのプログラミングブロック１２０内の永久磁石間に生じる引力又は反発力によって、表示部が回転することで画像を変化させるというように、磁力を利用したものであってもよい。また、プログラミングブロック１２０のうち少なくとも他のプログラミングブロック１２０に連結接続される側に、プログラミングブロック１２０の内部へ向けて押圧変位される凸部を設けておいてもよい。そして、プログラミングブロック１２０相互を連結接続することに伴い、プログラミングブロック１２０の凸部が内方へ押圧変位され、その変位に連動して表示部が回転することで画像を変化させるというように、メカニカルな機構を有するものであってもよい。
【００３３】
また、識別変移部１２４は、プログラミング操作に基づいて生成されたプログラムを実行して、ターゲット機器２００に移動動作させたり、予め設定された特定の機能動作を実行させたりする際に、当該ターゲット機器２００の移動位置や機能動作を規定したプログラミングブロック１２０の発光部を所定の発光状態で発光させたり、表示部に表示される画像を変化させたりすることにより、ターゲット機器２００の動作状態に対応するプログラミングブロック１２０を識別可能な状態にする。
【００３４】
ここで、識別変移部１２４に適用される発光部は、例えば発光ダイオード（ＬＥＤ）を適用することができ、表示部は、例えば液晶や有機ＥＬ素子による表示方式を適用することができる。そして、識別変移部１２４は、プログラミング操作の際やプログラムの実行時に、発光部を所定の発光色や発光強度、発光パターンで発光させたり、表示部に表示される画像を変化させたりすることにより、視覚的に識別可能な状態に変移させる。
【００３５】
なお、図２においては、識別変移部１２４として発光部又は表示部を設けた形態を示したが、本発明はこの形態に限定されるものではなく、音響部や振動部をさらに備え、発音や振動させる形態や、当該発音や振動の繰り返し時間や振幅、周波数、パターンを変化させる形態を有しているものであってもよい。これによれば、ユーザの視覚に加え聴覚や触覚を通して、プログラミング操作の対象になっているプログラミングブロック１２０や、ターゲット機器２００の動作状態に対応するプログラミングブロック１２０が、より確実に識別可能になる。
【００３６】
記憶部１２６は、自己のプログラミングブロック１２０又はスタートブロック１２０Ｓに固有のブロック情報を記憶するとともに、後方側に他のプログラミングブロック１２０が連結接続されている場合には、当該後方側のプログラミングブロック１２０が有するブロック情報、及び、当該後方側のプログラミングブロック１２０との連結状態を特定する連結特定情報を記憶する。
【００３７】
ここで、記憶部１２６は、ブロック情報として、自己のプログラミングブロック１２０又はスタートブロック１２０Ｓに固有の識別情報、及び、ターゲット機器２００の機能動作を規定する機能情報を記憶する。また、記憶部１２６は、後方側に他のプログラミングブロック１２０が連結接続されている場合には、全ての後方側のプログラミングブロック１２０が有するブロック情報、及び、全ての後方側のプログラミングブロック１２０の連結状態を特定する連結特定情報を記憶する。本実施形態においては、これらの自己及び後方側に連結接続された全てのプログラミングブロック１２０に関するブロック情報と連結特定情報とを「入力操作情報」と総称する。したがって、スタートブロック１２０Ｓの記憶部１２６には、連結接続された全てのプログラミングブロック１２０に関する入力操作情報が記憶されることになる。
【００３８】
また、記憶部１２６は、当該プログラミングブロック１２０に連結接続された他のプログラミングブロック１２０から送信された入力操作情報を一時的に記憶領域に記憶する。さらに、記憶部１２６は、後述する制御部１２８においてプログラミングブロック１２０の各部の動作を制御するためのプログラムや各種の情報を記憶するものであってもよい。すなわち、記憶部１２６は、ＲＡＭ及びＲＯＭを有するものである。
【００３９】
外部Ｉ／Ｆ部１３０は、スタートブロック１２０Ｓにのみ設けられ、スタートブロック１２０Ｓと後述するコアユニット１６０との間で通信を行い、記憶部１２６の記憶領域に記憶された入力操作情報（連結接続された全てのプログラミングブロック１２０が有するブロック情報、及び、連結接続された全てのプログラミングブロック１２０相互の連結状態を特定する連結特定情報）をコアユニット１６０に送信する。また、スタートブロック１２０Ｓが駆動用の電力を供給する電源部を有していない場合には、外部Ｉ／Ｆ部１３０は、受電機構を有し、後述するコアユニット１６０から受電した駆動用の電力を、ブロックＩ／Ｆ部１２２を介して後方側のプログラミングブロック１２０に給電する。
【００４０】
このような外部Ｉ／Ｆ部１３０は、非接触型、又は、接触型のインターフェースを有している。ここで、外部Ｉ／Ｆ部１３０として、非接触型のインターフェースを適用する場合には、例えばＮＦＣやBluetooth（登録商標）、Wi-Fi（Wireless Fidelity；登録商標）等の無線通信方式や、赤外線等を用いた光通信方式を適用することができ、また、接触型のインターフェースを適用する場合には、各種の通信ケーブルを用いた有線通信方式や、端子電極相互を直接接続する方式を適用することができる。
【００４１】
制御部１２８は、上記のブロックＩ／Ｆ部１２２、識別変移部１２４、記憶部１２６、外部Ｉ／Ｆ部１３０を有するプログラミングブロック１２０の各部の動作を制御するコンピュータのプロセッサである。特に、プログラミングブロック１２０の制御部１２８は、ブロックＩ／Ｆ部１２２により後方側に他のプログラミングブロック１２０が連結接続された状態を検知した場合には、当該後方側のプログラミングブロック１２０が有するブロック情報を受信するとともに、当該後方側のプログラミングブロック１２０との連結状態を特定する連結特定情報を取得して記憶部１２６の記憶領域に記憶する。また、プログラミングブロック１２０の制御部１２８は、ブロックＩ／Ｆ部１２２により前方側の他のプログラミングブロック１２０やスタートブロック１２０Ｓに連結接続された状態を検知した場合には、記憶部１２６の記憶領域に記憶されたブロック情報や連結特定情報を、当該前方側のプログラミングブロック１２０やスタートブロック１２０Ｓに送信するとともに、識別変移部１２４により自己のプログラミングブロック１２０を所定の発光状態で発光させたり、表示画像を変化させたりして識別可能な状態にする。
【００４２】
一方、スタートブロック１２０Ｓの制御部１２８は、ブロックＩ／Ｆ部１２２によりプログラミングブロック１２０が連結接続された状態を検知した場合には、連結接続された全ての後方側のプログラミングブロック１２０が有するブロック情報、及び、連結接続された全ての後方側のプログラミングブロック１２０の連結状態を特定する連結特定情報を受信して記憶部１２６の記憶領域に記憶する。さらに、制御部１２８は、外部Ｉ／Ｆ部１３０を介してプログラミング操作により記憶部１２６の記憶領域に記憶された各種情報をコアユニット１６０へ送信する。
【００４３】
（コアユニット１６０）
コアユニット１６０は、例えば図１に示すように、一面側（図面、上面）に操作スイッチが配置された直方体形状や平板形状を有している。このコアユニット１６０は、プログラミングブロック１２０を用いたプログラミング操作により取得された情報に基づいて、ターゲット機器２００を動作させるためのプログラムを生成するとともに、当該プログラムを実行して、ターゲット機器２００の動作状態を制御するコントロール装置として機能する。
【００４４】
コアユニット１６０は、具体的には、例えば図２に示すように、操作部１６２と、外部Ｉ／Ｆ部１６４と、記憶部１６６と、通信インターフェース部(以下、「通信Ｉ／Ｆ部」と略記する) １６８と、制御部１７０と、電源部１７２と、を有している。
【００４５】
操作部１６２は、ユーザが操作を行うことにより上述したプログラミングブロック１２０を用いたプログラミング操作により取得された情報に基づいてプログラムを生成するとともに、当該プログラムの実行状態を指示する。具体的には、操作部１６２は、生成したプログラムの実行状態を選択する複数のプッシュスイッチやタッチセンサ、あるいは、タッチパネルを有している。ここで、操作部１６２には、例えば図１に示すように、後述する制御部１７０により生成されたプログラム全体を一括して実行する一括実行スイッチ１８２や、当該プログラムの命令を１ステップずつ実行するステップ実行スイッチ１８４、実行されているプログラムを停止する実行停止スイッチ１８６、ターゲット機器２００を初期位置（スタート地点）まで戻すホームスイッチ１８８等のプッシュスイッチが配置されている。そして、操作部１６２は、ユーザがいずれかのスイッチを押下した状態、又は、スイッチに接触した状態を検出すると、当該スイッチ操作に応じてプログラムの生成及び実行状態を指示する制御信号を後述する制御部１７０に出力する。
【００４６】
外部Ｉ／Ｆ部１６４は、コアユニット１６０とスタートブロック１２０Ｓとの間で通信を行い、スタートブロック１２０Ｓから送信された入力操作情報を受信する。また、記憶部１６６は、スタートブロック１２０Ｓから外部Ｉ／Ｆ部１６４を介して受信した入力操作情報を所定の記憶領域に記憶するとともに、これらの情報に基づいて、後述する制御部１７０により生成されたプログラムを別の記憶領域に記憶する。また、記憶部１６６は、制御部１７０において受信した入力操作情報に基づいてターゲット機器２００の動作状態を制御するためのプログラムを生成するためのプログラムや、コアユニット１６０の各部の動作を制御するためのプログラム、その他、各種の情報を記憶するものであってもよい。すなわち、記憶部１６６は、ＲＡＭ及びＲＯＭを有するものである。
【００４７】
通信Ｉ／Ｆ部１６８は、コアユニット１６０とターゲット機器２００との間で通信を行い、記憶部１６６の記憶領域に記憶されたプログラムをターゲット機器２００に送信する。具体的には、通信Ｉ／Ｆ部１６８は、非接触型、又は、接触型のインターフェースを有し、非接触型のインターフェースを適用する場合には、例えばWi-Fi（登録商標）やBluetooth（登録商標）等の無線通信方式や、赤外線等を用いた光通信方式を適用することができ、また、接触型のインターフェースを適用する場合には、通信ケーブルを用いた有線通信方式を適用することができる。
【００４８】
制御部１７０は、上記の操作部１６２、外部Ｉ／Ｆ部１６４、記憶部１６６、通信Ｉ／Ｆ部１６８、及び、後述する電源部１７２を有するコアユニット１６０の各部の動作を制御するコンピュータのプロセッサである。特に、制御部１７０は、操作部１６２によりプログラムの生成、実行に関するユーザの指示を検出した場合には、スタートブロック１２０Ｓから送信される入力操作情報に基づいて、ターゲット機器２００の動作状態を制御するプログラムを生成する。
【００４９】
具体的には、制御部１７０は、操作部１６２において、一括実行スイッチ１８２又はステップ実行スイッチ１８４が操作されて押下又は接触状態を検出すると、スタートブロック１２０Ｓから送信された入力操作情報（連結接続された全てのプログラミングブロック１２０のブロック情報及び連結特定情報）に基づいて、ターゲット機器２００の動作状態（移動動作及び機能動作）を制御するための命令を有するプログラムを生成する。ここで、プログラミング操作により取得された上記の各情報はプログラムのソースコードに対応し、制御部１７０は、このソースコードをターゲット機器２００において実行可能な機械語からなるプログラムに変換（コンパイル）して、記憶部１６６の記憶領域に記憶する。なお、この変換処理は、プログラム全体を一括して行うものであってもよいし、プログラムの１ステップの命令ごとに行うものであってもよい。
【００５０】
なお、本実施形態においては、コアユニット１６０に設けた制御部１７０により、プログラミング操作により取得した入力操作情報に基づいて、ターゲット機器２００を動作させるためのプログラムを生成する場合について説明した。本発明はこれに限定されるものではなく、例えば後述するターゲット機器２００に設けられた制御部により、コアユニット１６０から送信される入力操作情報に基づいて、ターゲット機器２００内でプログラムを生成するものであってもよい。
【００５１】
また、制御部１７０は、操作部１６２におけるスイッチ操作に応じて、生成されたプログラムをターゲット機器２００に送信してターゲット機器２００の動作状態を制御する。さらに、制御部１７０は、電源部１７２によりコアユニット１６０内の各部、及び、スタートブロック１２０Ｓ、プログラミングブロック１２０への駆動用の電力の供給状態を制御する。
【００５２】
電源部１７２は、コアユニット１６０内の各部に駆動用の電力を供給する。また、電源部１７２は、コアユニット１６０とスタートブロック１２０Ｓとを接続することにより外部Ｉ／Ｆ部１６４、１３０を介して、スタートブロック１２０Ｓ内の各部に駆動用の電力を供給する。スタートブロック１２０Ｓに供給された電力は、ブロックＩ／Ｆ部１２２を介して、スタートブロック１２０Ｓに連結接続された複数のプログラミングブロック１２０に順次供給される。ここで、電源部１７２は、例えば商用交流電源から電力が供給されるものであってもよいし、乾電池等の一次電池やリチウムイオン電池等の二次電池を備えるものであってもよいし、環境発電技術による発電部と二次電池を備えるものであってもよい。
【００５３】
なお、本実施形態においては、コアユニット１６０にのみ電源部１７２を備え、スタートブロック１２０Ｓ及びプログラミングブロック１２０には電源部を備えていない形態を示した。この形態においては、コアユニット１６０とスタートブロック１２０Ｓとを接続することにより双方の外部Ｉ／Ｆ部１６４、１３０に設けられた給電及び受電機構を介して、コアユニット１６０からスタートブロック１２０Ｓへ駆動用の電力が供給される。さらに、スタートブロック１２０Ｓにプログラミングブロック１２０が連結接続されることにより双方のブロックＩ／Ｆ部１２２に設けられた給電及び受電機構を介して、スタートブロック１２０Ｓからプログラミングブロック１２０へ駆動用の電力が供給される。ここで、外部Ｉ／Ｆ部１３０、１６４や、ブロックＩ／Ｆ部１２２に設けられる給電及び受電機構としては、電磁誘導方式等の非接触型、又は、ケーブルや端子電極を直接接続する接触型の機構を適用することができる。
【００５４】
また、本発明に適用可能な他の形態としては、例えば図３に示すように、スタートブロック１２０Ｓ及びプログラミングブロック１２０に各々固有の電源部１３２を有するものであってもよいし、スタートブロック１２０Ｓにのみ固有の電源部１３２を有するものであってもよい。スタートブロック１２０Ｓにのみ固有の電源部１３２を有する形態においては、ブロックＩ／Ｆ部１２２に設けられた給電及び受電機構を介して、スタートブロック１２０Ｓから連結接続された複数のプログラミングブロック１２０へ駆動用の電力が順次供給される。ここで、電源部１３２は、例えばボタン電池等の一次電池やリチウムイオン電池等の二次電池を備えるものであってもよいし、環境発電技術による発電部と二次電池を備えるものであってもよい。
【００５５】
さらに、本発明に適用可能な他の形態としては、例えば、図２に示したように、コアユニット１６０にのみ電源部１７２を備えた形態や、スタートブロック１２０Ｓにのみ電源部１３２を備えた形態において、スタートブロック１２０Ｓに連結接続される複数のプログラミングブロック１２０のうちの、任意のプログラミングブロック１２０に昇圧回路を備えたものであってもよいし、昇圧機能のみを有するブロックをプログラミングブロック１２０間に適宜連結接続するものであってもよい。これにより、スタートブロック１２０Ｓに複数のプログラミングブロック１２０が連結接続されている場合であっても、終端側のプログラミングブロック１２０にまで十分な電力を供給することができる。
【００５６】
少なくともスタートブロック１２０Ｓが固有の電源部１３２を有する形態においては、スタートブロック１２０Ｓにコアユニット１６０を接続しない状態においても、ユーザはスタートブロック１２０Ｓ及びプログラミングブロック１２０を用いてプログラミング操作を行うことができる。また、コアユニット１６０をスタートブロック１２０Ｓ及びプログラミングブロック１２０から離間させて独立した状態で（すなわち、コアユニット１６０単体で）、操作部１６２の各スイッチを操作することにより、入力操作情報に基づくプログラム生成処理や、ターゲット機器２００の動作状態の制御を行うことができる。
【００５７】
（ターゲット機器２００）
ターゲット機器２００は、ユーザによる入力操作に基づいてプログラム制御装置１００により生成されたプログラムの実行対象である。本実施形態ではターゲット機器２００として、例えば図１に示すように、現実空間内において地上を走行する実体のある自走式の玩具や、ドローン等の飛行体を適用した場合について示す。しかしながら、ターゲット機器２００は当該生成されたプログラムに基づいて動作状態が制御されるものであればよく、タンジブルな移動体の他に、スマートフォンやタブレット等のモバイル端末、パーソナルコンピュータ等の情報通信機器において実行されるアプリケーションソフトウェア、又は、当該アプリケーションソフトウェアにより実現される仮想空間内のオブジェクト、すなわち、タンジブルでない移動体であってもよい。
【００５８】
ターゲット機器２００は、プログラミングブロック１２０を用いたプログラミング操作において、スタートブロック１２０Ｓに連結接続された複数のプログラミングブロック１２０の集合体の全体配置形状により決定された仮想経路に対応する移動経路に沿って移動する。ここで、ターゲット機器２００は、仮想経路を形成する複数のプログラミングブロック１２０の全体配置形状を第１形状とした場合、当該第１形状を拡大した相似形状である第２形状を有する経路を移動経路として移動する。また、ターゲット機器２００は、機能動作が設定されたプログラミングブロック１２０の連結位置に対応する位置で、当該プログラミングブロック１２０に設定された機能動作を実行する。
【００５９】
ターゲット機器２００は、具体的には、例えば図２に示すように、駆動部２０２と、機能部２０４と、通信Ｉ／Ｆ部２０６と、記憶部２０８と、制御部２１０と、電源部２１２と、を有している。
【００６０】
駆動部２０２は、ターゲット機器２００を移動動作させるための駆動輪（タイヤ）やプロペラ等であって、プログラミングブロック１２０を用いたプログラミング操作において決定された仮想経路に対応する移動経路に沿ってターゲット機器２００を移動させる。
【００６１】
機能部２０４は、発光部や表示部、音響部、振動部、撮像部、各種センサ等であって、プログラミング操作においてプログラミングブロック１２０に設定された機能情報に基づいて特定の機能動作を実行する。ここで、ターゲット機器２００に設定される機能動作としては、例えば発光部を所定の発光状態で発光させる動作や、表示部に表示される画像を変化させる動作、音響部により所定の音や楽音を発生する動作、振動部を所定のパターンで振動させる動作、ターゲット機器２００を当該位置で回転させたりジャンプさせたりする動作、撮像部により周囲を撮影する動作、各種のセンサによりセンシングする動作等を有する。これらに代表される機能動作は、ターゲット機器２００の移動経路のうち、当該機能情報を記憶したプログラミングブロック１２０の連結位置に対応する位置で、移動経路の進行方向又は逆行方向への移動を伴わない動作（いわゆる、アクション）である。なお、機能情報は、これらの機能動作を単独で実行することを規定するものであってもよいし、複数の機能動作を組み合わせて実行することを規定するものであってもよい。
【００６２】
通信Ｉ／Ｆ部２０６は、ターゲット機器２００とコアユニット１６０との間で通信を行い、コアユニット１６０の制御部１７０により生成されたプログラムを受信する。また、記憶部２０８は、コアユニット１６０から通信Ｉ／Ｆ部２０６を介して受信したプログラムを所定の記憶領域に記憶する。
【００６３】
制御部２１０は、上記の駆動部２０２、機能部２０４、通信Ｉ／Ｆ部２０６、記憶部２０８、及び、後述する電源部２１２の各部の動作を制御するコンピュータのプロセッサである。特に、制御部２１０は、コアユニット１６０から通信Ｉ／Ｆ部２０６を介して受信し、記憶部２０８の記憶領域に記憶されたプログラムを実行することにより、駆動部２０２を制御してプログラミング操作により決定された仮想経路に対応する移動経路に沿ってターゲット機器２００を移動させるとともに、機能部２０４を制御してプログラミング操作により設定された機能動作を実行させる。また、制御部２１０は、コアユニット１６０における操作部１６２のスイッチ操作に応じてプログラムの実行状態を制御する。さらに、制御部１７０は、電源部２１２によりターゲット機器２００内の各部への駆動用の電力の供給状態を制御する。
【００６４】
電源部２１２は、ターゲット機器２００内の各部に駆動用の電力を供給する。電源部２１２は、例えば商用交流電源から電力が供給されるものであってもよいし、乾電池等の一次電池やリチウムイオン電池等の二次電池を備えるものであってもよいし、環境発電技術による発電部と二次電池を備えるものであってもよい。
【００６５】
なお、本実施形態に適用されるターゲット機器２００は、図１に示したように、二次元空間である地上を走行する自走式の玩具や、三次元空間である空中を飛行するドローン等の飛行体に限定されるものではなく、水上を移動する船体であってもよいし、水中を移動する潜水体であってもよい。ここで、ターゲット機器２００が飛行体や潜水体の場合には、移動経路の始点で当該ターゲット機器２００が地上から一定の高度に上昇、又は、水面から一定の水深に潜水し、移動経路の終点で地上に下降、又は、水面に浮上する動作を行うものであってもよい。
【００６６】
また、ターゲット機器２００として、モバイル端末や情報通信機器において実行されるアプリケーションソフトウェアを適用する場合には、当該アプリケーションソフトウェアにより実現される仮想空間内において、前述のオブジェクト（例えばゲーム画面内のキャラクタやアイテム等）の動作状態を制御して当該仮想空間内の任意の経路で移動させたり、任意の機能を実行させたりする。
【００６７】
（プログラミング操作及びプログラム生成、実行方法）
次に、本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法（プログラミング方法）について説明する。
【００６８】
図４は、本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法の一例（ノーマルモード）を示すフローチャートである。図５、図６は、本実施形態に適用されるプログラミング操作処理（平面的配置）を説明するための概略図である。図５（ａ）、（ｂ）及び図６の左図はプログラミング操作を説明するための斜視図であり、同右図はプログラミング操作時のプログラミングブロックの配置形状を示す平面図である。また、図７、図８は、本実施形態に適用されるプログラム生成、実行処理（一括処理）を説明するための概略図であり、図９、図１０は、本実施形態に適用されるプログラム生成、実行処理（ステップ処理）を説明するための概略図である。なお、図４に示すフローチャートのうちの、モードの切り換え設定に係る処理動作（ステップＳ１０４）については、後述する変形例１において詳しく述べるため、本実施形態では説明を適宜省略する。
【００６９】
本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法においては、大別して、プログラミングブロック１２０を用いたタンジブルな入力操作によるプログラミング操作処理と、当該プログラミング操作により取得した入力操作情報に基づくプログラム生成処理と、コアユニット１６０とターゲット機器２００とを用いたプログラム実行処理と、が実行される。プログラミング教育装置における、これらの各制御処理は、上述したプログラミングブロック１２０やコアユニット１６０、ターゲット機器２００に設けられた各制御部において、独立して又は相互に連携して特定の制御プログラムを実行することにより実現されるものである。
【００７０】
（プログラミング操作処理）
本実施形態に係るプログラミング教育装置におけるプログラミング操作処理においては、図４のフローチャート及び図５（ａ）に示すように、まず、ユーザは、プログラミング教育装置のスタートブロック１２０Ｓとコアユニット１６０とを接続した状態でコアユニット１６０の電源を投入することによりプログラム制御装置１００を起動するとともに、ターゲット機器２００の電源を投入して起動する（ステップＳ１０２）。
【００７１】
次いで、プログラミングブロック１２０を用いてプログラミング操作処理を実行する。まず、図５（ａ）、（ｂ）に示すように、ユーザが、ターゲット機器２００を動作させる際の移動経路をイメージして、コアユニット１６０に接続されたスタートブロック１２０Ｓを移動経路に対応する仮想経路の始点（スタート）として、当該始点と終点（ゴール）を含む２以上のプログラミングブロック１２０を順次連結接続する。
【００７２】
ここで、図５（ａ）、（ｂ）、図６に示すように、スタートブロック１２０Ｓを始点として、移動経路の終点側となる方向に、後方側のプログラミングブロック１２０を順次連結接続し、複数のプログラミングブロック１２０を二次元空間に平面的に配置する場合には、スタートブロック１２０Ｓやプログラミングブロック１２０の立方体形状の６面のうち、前後左右に相当する側面（図５（ａ）、（ｂ）、図６右側の平面図における上下左右の４面）のいずれかの面にプログラミングブロック１２０が連結接続される。これにより、図６に示すように、スタートブロック１２０Ｓを始点として終点まで連結接続された複数のプログラミングブロック１２０の配置形状により、ターゲット機器２００の移動経路を規定する平面的な仮想経路が決定される（ステップＳ１０６）。なお、本実施形態においては、スタートブロック１２０Ｓを始点として連結接続される複数のプログラミングブロック１２０のうち、終点となるプログラミングブロック１２０を便宜的に「終端ブロック１２０Ｇ」と記す。
【００７３】
また、ターゲット機器２００の移動経路の任意の位置において特定の機能動作を実行させる設定をする場合には、ユーザは、移動経路に対応する仮想経路を形成する複数のプログラミングブロック１２０のうち、当該機能動作を実行する位置に対応するプログラミングブロック１２０に、所望の機能動作に関する機能情報を設定する（ステップＳ１０８）。ここで、ターゲット機器２００の機能動作を設定する手法としては、例えば図５（ｂ）、図６に示すように、予め特定の機能動作に関する機能情報が設定されたプログラミングブロック（以下、「機能設定ブロック」と記す）１２０Ｆを用意して、仮想経路を形成する複数のプログラミングブロック１２０のうちの、当該機能動作を実行する位置に対応するプログラミングブロック１２０として、上記の機能設定ブロック１２０Ｆを連結接続する。なお、ターゲット機器２００の機能動作を設定する手法については、この手法に限定されるものではなく、様々な形態を適用することができる。機能動作を設定する他の手法については、詳しくは後述する。
【００７４】
なお、プログラミング操作処理において、複数のプログラミングブロック１２０を連結接続して、ターゲット機器２００の移動経路に対応する仮想経路のみを決定し、移動経路上でターゲット機器２００に特定の機能動作を実行させない場合には、上記のステップＳ１０８の処理動作は省略される。
【００７５】
上記のステップＳ１０６、Ｓ１０８に示したプログラミング操作処理においては、具体的には次のような処理動作が実行される。
図５（ａ）、（ｂ）、図６に示したように、スタートブロック１２０Ｓを始点としてターゲット機器２００の移動経路に対応する仮想経路を形成する複数のプログラミングブロック１２０を連結接続した場合、スタートブロック１２０Ｓにおいては、まず、スタートブロック１２０Ｓの制御部１２８がブロックＩ／Ｆ部１２２の連結検知部により、スタートブロック１２０Ｓの立方体形状の側面にプログラミングブロック１２０が連結接続されているか否かを検知する。プログラミングブロック１２０が連結接続されている場合には、スタートブロック１２０Ｓの制御部１２８は当該プログラミングブロック１２０が連結接続されている面について、スタートブロック１２０Ｓに対する相対的な配置（すなわち、スタートブロック１２０Ｓと後方側のプログラミングブロック１２０との連結状態）を特定して連結特定情報を取得する。取得した連結特定情報は記憶部１２６の記憶領域に記憶される。
【００７６】
次いで、スタートブロック１２０Ｓの制御部１２８は、検知した後方側のプログラミングブロック１２０に対して、ブロックＩ／Ｆ部１２２を介してスタートブロック１２０Ｓが有するブロック情報（スタートブロックであることを示す固有の識別情報を含む）を送信する。さらに、スタートブロック１２０Ｓの制御部１２８は、後方側のプログラミングブロック１２０に対して、当該プログラミングブロック１２０が有するブロック情報や連結特定情報の送信を要求する命令信号を送信して、後方側のプログラミングブロック１２０からの応答を待機する状態に移行する。次いで、後方側のプログラミングブロック１２０から応答があり、当該プログラミングブロック１２０が有するブロック情報や連結特定情報を受信した場合には、スタートブロック１２０Ｓの制御部１２８は、当該プログラミングブロック１２０のブロック情報や連結特定情報を記憶部１２６の記憶領域に記憶する。
【００７７】
一方、スタートブロック１２０Ｓ又は他のプログラミングブロック１２０に連結接続された後方側のプログラミングブロック１２０においては、スタートブロック１２０Ｓ又は前方側のプログラミングブロックから、当該後方側のプログラミングブロック１２０が有するブロック情報や連結特定情報の送信を要求する命令信号を受信した場合には、当該後方側のプログラミングブロック１２０の制御部１２８は、当該後方側のプログラミングブロック１２０のさらに後方側にプログラミングブロック１２０が連結接続されているか否かを検知する。さらに後方側にプログラミングブロック１２０が連結接続されている場合には、当該後方側のプログラミングブロック１２０の制御部１２８は、当該後方側のプログラミングブロック１２０とさらに後方側のプログラミングブロック１２０との連結状態を特定して、取得した連結特定情報を記憶部１２６の記憶領域に記憶する。
【００７８】
次いで、後方側のプログラミングブロック１２０の制御部１２８は、検知したさらに後方側のプログラミングブロック１２０に対して、ブロックＩ／Ｆ部１２２を介して当該後方側のプログラミングブロック１２０が有するブロック情報（当該プログラミングブロック１２０であることを示す固有の識別情報を含む）、及び、全ての前方側のプログラミングブロック１２０に関するブロック情報を送信する。さらに、当該後方側のプログラミングブロック１２０の制御部１２８は、さらに後方側のプログラミングブロック１２０に対して、当該プログラミングブロック１２０が有するブロック情報や連結特定情報の送信を要求する命令信号を送信して、さらに後方側のプログラミングブロック１２０からの応答を待機する状態に移行する。次いで、さらに後方側のプログラミングブロック１２０から応答があり、当該プログラミングブロック１２０が有するブロック情報や連結特定情報を受信した場合には、後方側のプログラミングブロック１２０の制御部１２８は、当該プログラミングブロック１２０のブロック情報や連結特定情報、さらに後方側のプログラミングブロック１２０から受信した、全ての後方側のプログラミングブロック１２０に関するブロック情報及び連結特定情報を、スタートブロック１２０Ｓ又は前方側のプログラミングブロック１２０へ送信する。
【００７９】
また、後方側のプログラミングブロック１２０のさらに後方側にプログラミングブロック１２０が連結接続されていない場合には、当該後方側のプログラミングブロック１２０が終端ブロック１２０Ｇ（すなわち、仮想経路の終点）であるので、当該プログラミングブロック１２０が有するブロック情報（終端ブロック１２０Ｇであることを示す固有の識別情報を含む）や連結特定情報を、スタートブロック１２０Ｓ又は前方側のプログラミングブロック１２０へ送信する。
【００８０】
これにより、スタートブロック１２０Ｓは、連結接続された全ての後方側のプログラミングブロック１２０に関するブロック情報及び連結特定情報を受信して記憶部１２６の記憶領域に記憶する。そして、スタートブロック１２０Ｓが有するブロック情報や連結特定情報、後方側のプログラミングブロック１２０から受信した、全ての後方側のプログラミングブロック１２０に関するブロック情報及び連結特定情報は、所定のタイミングで外部Ｉ／Ｆ部１３０を介してコアユニット１６０へ送信される。
【００８１】
このとき、スタートブロック１２０Ｓとの間で通信を行い、各種情報や信号の送受信を行っている後方側のプログラミングブロック１２０において、当該プログラミングブロック１２０の制御部１２８は、識別変移部１２４を所定の発光状態で発光させたり、表示画像を変化させたりして、当該プログラミングブロック１２０の動作状態を視覚的に識別可能な状態に変移させる（図５（ｂ）中では便宜的に濃いハーフトーンで表記）。なお、このとき、スタートブロック１２０Ｓにおいても、識別変移部１２４を所定の発光状態で発光させたり、表示画像を変化させたりして、当該スタートブロック１２０Ｓの動作状態を視覚的に識別可能な状態に変移させるものであってもよい。
【００８２】
ここで、スタートブロック１２０Ｓ及び各プログラミングブロック１２０の識別変移部１２４が発光部を有する場合には、スタートブロック１２０Ｓ及び各プログラミングブロック１２０の制御部１２８は、例えば、連結接続された各プログラミングブロック１２０の発光部を所定の発光色や発光強度で常時発光（点灯）させたり、発光色を変化させたり、所定の発光パターンで発光（点減）させたりする動作を継続（保持）する。また、制御部１２８は、プログラミング操作処理中に、コアユニット１６０の操作部１６２に設けられたプログラム確認スイッチ（図示を省略）等を操作したり、一定時間プログラミング操作がなかったりした場合や定期的等の条件をトリガーとして、連結接続されて既に決定された移動経路の順番にしたがって、スタートブロック１２０Ｓ及び各プログラミングブロック１２０の発光部を時分割で順次発光させる動作を実行する。このように、スタートブロック１２０Ｓ及び各プログラミングブロック１２０における識別変移部１２４の変移状態（この場合は発光状態）を保持、又は、特定の条件をトリガーとして所定の変移状態を提示することにより、プログラミング操作の内容や進行状況、当該プログラミング操作により決定された現時点までの移動経路やターゲット機器２００の移動順序、機能動作等を視覚的に把握、理解し易くなる。
【００８３】
また、制御部１２８は、プログラミング操作処理中に連結接続したプログラミングブロック１２０間で正常に情報や信号の送受信が行えない場合や、予め連結接続が禁止されたプログラミングブロック１２０同士を接続させた場合等、プログラム制御装置１００の動作に異常が発生した場合には、スタートブロック１２０Ｓや各プログラミングブロック１２０の発光部を発光させないようにしたり、通常とは異なる発光色や発光パターンで発光させたりする制御を行う。これにより、プログラミング操作時の誤り等をユーザに報知する。さらに、制御部１２８は、スタートブロック１２０Ｓや各プログラミングブロック１２０の識別変移部１２４が音響部や振動部を備えている場合には、上記の発光部における発光動作に加え、あるいは、当該発光動作に替えて、音響部や振動部における発音や振動の振幅や周波数、パターンを変化させて、プログラミング操作時の誤り等をユーザに報知するものであってもよい。
【００８４】
本実施形態においては、複数のプログラミングブロック１２０を連結接続した際の配置形状により、ターゲット機器２００の全移動経路に対応する仮想経路を決定し、かつ、仮想経路上の任意の位置に機能設定ブロックを連結接続することにより、移動経路上で実行する全ての機能動作を設定するプログラミング操作が終了するまで、上記のステップＳ１０６、Ｓ１０８を繰り返し実行する（ステップＳ１１０のＮｏ）。
【００８５】
なお、ステップＳ１０６、Ｓ１０８に示したプログラミング操作は、ターゲット機器２００の移動経路を順次決定しつつ、ターゲット機器２００における機能動作を順次設定するものであってもよいし、後述する機能動作の設定方法に示すように、ターゲット機器２００の全移動経路を決定した後、ターゲット機器２００における全ての機能動作を設定するものであってもよい。
【００８６】
そして、図６に示すように、プログラミングブロック１２０を用いたプログラミング操作処理を終了した状態においては、スタートブロック１２０Ｓ及び各プログラミングブロック１２０の制御部１２８は、上記のステップＳ１０６、Ｓ１０８に示したように、プログラミング操作により決定された全移動経路に対応し、さらに、ターゲット機器２００における機能動作を設定するスタートブロック１２０Ｓ及び各プログラミングブロック１２０の識別変移部１２４の変移状態を保持したり、特定の条件をトリガーとして所定の変移状態を提示したりする。これにより、プログラミング操作により決定されたターゲット機器２００の全移動経路やその移動順序、全ての機能動作やその実行順序等を視覚的に把握、理解し易くなる。
【００８７】
また、上記のプログラミング操作処理を終了すると（ステップＳ１１０のＹｅｓ）、プログラミングブロック１２０及びコアユニット１６０を用いたプログラム生成処理の実行が可能な待機状態に設定される。
【００８８】
そして、図７（ａ）に示すように、ユーザが、コアユニット１６０の操作部１６２に設けられたプログラム実行スイッチ（一括実行スイッチ１８２又はステップ実行スイッチ１８４）を操作すると（ステップＳ１１２）、ステップＳ１１４〜Ｓ１２０のプログラム一括生成、実行処理、又は、ステップＳ１２２〜Ｓ１３０のプログラムステップ生成、実行処理が実行される。
【００８９】
（プログラム一括生成、実行処理）
上記のステップＳ１１２において、図７（ａ）に示すように、ユーザが、コアユニット１６０に設けられた一括実行スイッチ１８２をオン操作すると、プログラム一括生成、実行処理が実行される。プログラム一括生成、実行処理においては、まず、コアユニット１６０の制御部１７０が、スタートブロック１２０Ｓの制御部１２８に制御信号を送信して、上記のプログラミング操作処理により取得したブロック情報や連結特定情報を有する入力操作情報を一括してスタートブロック１２０Ｓから受信する（ステップＳ１１４）。受信した入力操作情報は、記憶部１６６の記憶領域に記憶される。
【００９０】
次いで、制御部１７０は、スタートブロック１２０Ｓから受信した入力操作情報をソースコードとして、ターゲット機器２００の動作状態（移動動作及び機能動作）を制御するための命令を有するプログラムを一括して生成する（ステップＳ１１６）。具体的には、制御部１７０は、入力操作情報に含まれる連結特定情報に基づいて、連結接続された複数のプログラミングブロック１２０の全体配置形状を特定するとともに、入力操作情報に含まれるブロック情報（機能情報）に基づいて、連結接続された各プログラミングブロック１２０の任意の位置で実行される機能動作を特定する。ここで、連結接続された複数のプログラミングブロック１２０の全体配置形状は、ターゲット機器２００の移動経路を規定する。制御部１７０は、特定した内容に基づいて、ターゲット機器２００が実行可能な形式のプログラムを生成する。制御部１７０において生成されたプログラムは、コアユニット１６０の記憶部１６６の所定の記憶領域に記憶される。
【００９１】
次いで、制御部１７０は、図７（ａ）に示すように、生成されたプログラムを、通信Ｉ／Ｆ部１６８を介して、ターゲット機器２００に一括して転送する（ステップＳ１１８）。ターゲット機器２００の制御部２１０は、転送されたプログラムを実行して、駆動部２０２及び機能部２０４を動作させることにより、図７（ａ）、（ｂ）、図８に示すように、上述したプログラミングブロック１２０を用いたプログラミング操作処理において決定された平面的な仮想経路に対応する移動経路（図中、太点線で表記）に沿って順次移動する全体動作を行う（ステップＳ１２０）。
【００９２】
このとき、コアユニット１６０の制御部１７０は、通信Ｉ／Ｆ部１６８を介して、ターゲット機器２００からプログラムの実行状態（すなわち、ターゲット機器２００の移動位置や機能動作の実行状態）に関する情報を随時受信し、スタートブロック１２０Ｓ及び各プログラミングブロック１２０の制御部１２８にプログラム実行情報として送信する。各制御部１２８は、コアユニット１６０から受信したプログラム実行情報に基づいて、図７（ａ）、（ｂ）、図８に示すように、現在時点におけるターゲット機器２００の移動経路上での位置に対応する各プログラミングブロック１２０の識別変移部１２４を特定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる（図７（ａ）、（ｂ）中では便宜的に濃いハーフトーン、図８中では便宜的に濃いハッチングで表記）。
【００９３】
また、図８に示すように、ターゲット機器２００が、プログラミング操作において特定の機能動作を設定した位置に移動し、当該機能動作を実行している場合には、当該機能動作を設定した機能設定ブロック１２０Ｆの制御部１２８は、ターゲット機器２００から受信したプログラム実行情報に基づいて、識別変移部１２４を特定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる。なお、図８においては、ターゲット機器２００の機能動作として特定の楽音を発生する場合を示し、当該機能動作に対応する機能設定ブロック１２０Ｆを濃いハッチングで表記した。
【００９４】
ここで、プログラミングブロック１２０の識別変移部１２４が発光部を有する場合には、プログラミングブロック１２０の制御部１２８は、例えば次のように発光状態を制御することにより、ターゲット機器２００におけるプログラムの実行状態を視覚的に識別可能にする。これにより、ターゲット機器２００におけるプログラムの実行状態等を視覚的に把握、理解し易くなる。
【００９５】
制御部１２８は、例えば、プログラミング操作により決定された移動経路及び機能動作に対応する全てのプログラミングブロック１２０の発光部を所定の発光色や発光強度で常時発光させた状態で、プログラム実行情報に基づいて、現在時点におけるターゲット機器２００の位置や、ターゲット機器２００が実行している機能動作に対応するプログラミングブロック１２０の発光部を、他のプログラミングブロック１２０とは異なる発光色や、より高い発光強度、あるいは、発光パターン（例えば、点滅）で発光させる。
【００９６】
また、他の形態として、制御部１２８は、例えば、プログラム実行情報に基づいて、現在時点におけるターゲット機器２００の位置や、ターゲット機器２００が実行している機能動作に対応するプログラミングブロック１２０の発光部を所定の発光色や発光強度で発光させ、他のプログラミングブロック１２０の発光部を発光させない（消灯させる）。
【００９７】
さらに他の形態として、例えば、各プログラミングブロック１２０の識別変移部１２４はいずれも、プログラミング操作時の状況を示す第１の発光部とプログラム実行時の状況を示す第２の発光部とを別個に備え、制御部１２８は、現在時点におけるターゲット機器２００の位置や、ターゲット機器２００が実行している機能動作に対応するプログラミングブロック１２０では第１及び第２の発光部をともに発光させ、他のプログラミングブロック１２０では第１の発光部のみを発光させる。
【００９８】
また、ターゲット機器２００において実行されているプログラムにエラーやバグが発生した場合には、制御部１２８は、ターゲット機器２００から受信したプログラム実行情報に基づいて、当該エラーやバグが発生したプログラミングブロック１２０を、上記の通常の実行状態とは異なる発光色や発光パターンで発光させる制御を行う。これにより、プログラム実行時の異常をユーザに報知する。ここで、プログラム実行時のエラーやバグとは、例えばターゲット機器２００が撮像部を備えていないにも関わらず、撮影を行う命令が実行された場合や、ターゲット機器２００がプログラミング操作時には想定されていなかった障害物等に進行方向が阻まれているにも関わらず、障害物の方向にさらに移動する命令が実行された場合等である。
【００９９】
（プログラムステップ生成、実行処理）
上述したステップＳ１１２において、図９（ａ）に示すように、ユーザが、コアユニット１６０に設けられたステップ実行スイッチ１８４をオン操作すると、プログラムステップ生成、実行処理が実行される。プログラムステップ生成、実行処理においては、まず、コアユニット１６０の制御部１７０が、スタートブロック１２０Ｓの制御部１２８に制御信号を送信して、上記のプログラミング操作処理により取得したブロック情報や連結特定情報を有する入力操作情報を一括して、又は、プログラミング操作の一操作（ステップ）ごとに、スタートブロック１２０Ｓから受信し（ステップＳ１２２）、記憶部１６６の記憶領域に記憶する。
【０１００】
次いで、制御部１７０は、受信した入力操作情報に基づいてターゲット機器２００の動作状態（移動動作及び機能動作）を制御するための命令を有するプログラムを一括して、又は、プログラミング操作の一操作ごとに生成し（ステップＳ１２４）、記憶部１６６の所定の記憶領域に記憶する。ここで、プログラミング操作の一操作とは、１つのプログラミングブロック１２０を連結接続する操作のことであり、本実施形態のプログラムステップ生成、実行処理における一ステップとは、この一操作により指定されるステップのまとまりのことである。ただし、後述するように、プログラミングブロック１２０が複数段積み重ねられて、且つ、これらのプログラミングブロック１２０により指定された複数の機能を同時に実行することが指示されている場合には、それらすべての機能を同時に実行するステップが一ステップとなる。
【０１０１】
次いで、制御部１７０は、図９（ａ）に示すように、生成されたプログラムを一操作分（ステップ単位）のプログラムごとに、通信Ｉ／Ｆ部１６８を介して、ターゲット機器２００に転送する（ステップＳ１２６）。ターゲット機器２００は、転送された一操作分のプログラムを実行して、駆動部２０２及び機能部２０４を動作させることにより、上述したプログラミング操作処理において決定された仮想経路に対応する移動経路（図中、太点線で表記）に沿って一操作分だけ移動したり、一操作分だけ機能を実行したりするステップ動作を行う（ステップＳ１２８）。
【０１０２】
このとき、コアユニット１６０の制御部１７０は、ターゲット機器２００に転送した一操作分のプログラムに関する情報（すなわち、ターゲット機器２００の移動やターゲット機器２００が実行する機能を規定する情報）を、スタートブロック１２０Ｓ及び各プログラミングブロック１２０の制御部１２８にプログラム実行情報として送信する。各制御部１２８は、このプログラム実行情報に基づいて、図９（ａ）に示すように、現在時点におけるターゲット機器２００の移動経路上での位置に対応する各プログラミングブロック１２０を特定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる（図９（ａ）中では便宜的に濃いハーフトーンで表記）。
【０１０３】
また、図１０（ａ）、（ｂ）に示すように、ターゲット機器２００が、プログラミング操作において特定の機能動作を設定した位置に移動し、当該機能動作を実行している場合には、当該機能動作を設定した機能設定ブロック１２０Ｆの制御部１２８は、プログラム実行情報に基づいて、当該機能設定ブロック１２０Ｆを特定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる。なお、図１０（ｂ）においては、ターゲット機器２００の機能動作として特定の楽音を発生する場合を示し、当該機能動作に対応する機能設定ブロック１２０Ｆを便宜的に濃いハッチングで表記した。
【０１０４】
ステップＳ１２８の処理動作を実行した後、コアユニット１６０の制御部１７０は、ステップＳ１２８においてターゲット機器２００に実行させたステップ動作が、プログラミング操作処理により取得した入力操作情報のうちの最後の入力操作情報に対応するものであるか否かを判定する（ステップＳ１３０）。すなわち、コアユニット１６０の制御部１７０は、ターゲット機器２００が移動経路の終点位置まで移動し、且つ、当該終点位置のプログラミングブロック１２０に設定された機能をターゲット機器２００が実行し終わっているか否かを判定する。
【０１０５】
コアユニット１６０の制御部１７０が、ステップＳ１２８においてターゲット機器２００に実行させたステップ動作が最後の入力操作情報に対応するものであると判定した場合（ステップＳ１３０のＹｅｓ）には、図４のフローチャートに示したプログラミング操作及びプログラム生成、実行方法に係る一連の処理動作が終了する。一方、制御部１７０が、ステップＳ１２８においてターゲット機器２００に実行させたステップ動作が最後の入力操作情報に対応するものでないと判定した場合（ステップＳ１３０のＮｏ）には、前述のステップＳ１１２へ遷移する。このステップＳ１１２では、ユーザが、コアユニット１６０に設けられた一括実行スイッチ１８２、又は、ステップ実行スイッチ１８４のいずれをオン操作したかを判定する。
【０１０６】
一括実行スイッチ１８２がオン操作されたと判定した場合、コアユニット１６０の制御部１７０は、プログラミング操作処理により取得した入力操作情報のうち、まだ実行していないすべての入力操作情報について、前述のプログラム一括生成、実行処理を行う（ステップＳ１１４〜Ｓ１２０）。すべての入力操作情報に対応する動作を行った後、図４のフローチャートに示したプログラミング操作及びプログラム生成、実行方法に係る一連の処理動作が終了する。また、ステップ実行スイッチ１８４がオン操作されたと判定した場合、コアユニット１６０の制御部１７０は、前述のステップＳ１２２〜Ｓ１３０に従って、プログラムステップ生成、実行処理が実行される。なお、本実施形態においては、図４に示した一連の処理動作を、便宜的に「ノーマルモード」と呼称する。
【０１０７】
このように、本実施形態においては、プログラミングブロック１２０とコアユニット１６０とからなるタンジブルなプログラム制御装置を用いて、始点となるスタートブロック１２０Ｓにプログラミングブロック１２０を順次連結接続するプログラミング操作により、スタートブロック１２０Ｓを基準とする、その全体配置形状の相対的な配置に基づいて仮想経路を決定することができ、この仮想経路によりターゲット機器２００の移動経路を規定することができる。また、ターゲット機器２００の移動経路上の任意の位置に対応する仮想経路のプログラミングブロック１２０に機能情報を設定するプログラミング操作により、当該位置でターゲット機器２００に特定の機能動作を実行させることができる。
【０１０８】
また、本実施形態においては、プログラミング操作時に連結接続された複数のプログラミングブロック１２０の全体配置形状が、ターゲット機器２００の移動経路に対応しているので、当該配置形状により移動経路を直感的に把握することができる。さらに、プログラミング操作に基づいて生成されたプログラムの実行時に、又は、プログラムの実行の前後（例えば、プログラミング操作中）に、連結接続された複数のプログラミングブロック１２０のうち、プログラミング操作やプログラム実行の対象となっているプログラミングブロック１２０を、視覚的に識別可能な状態に変移させることができる。
【０１０９】
したがって、本実施形態によれば、幼児等の年少者であっても、タンジブルなプログラム制御装置を用いてプログラミングブロック１２０を平面的に連結接続する簡易な操作により、ターゲット機器２００の移動経路を決定することができるとともに、当該移動経路上の任意の位置でターゲット機器２００に機能動作を設定するプログラミングを容易に行うことができる。また、プログラミング時の操作内容やターゲット機器２００の動作状態を視覚を通して直感的に把握することができ、プログラミングの学習効果の向上を期待することができる。
【０１１０】
なお、上述したプログラミング操作及びプログラム生成、実行方法においては、プログラミング操作処理の終了後、ユーザが、コアユニット１６０の操作部１６２に設けられたプログラム実行スイッチ（一括実行スイッチ１８２又はステップ実行スイッチ１８４）を操作することにより、プログラミング操作処理により取得した入力操作情報を、スタートブロック１２０Ｓからコアユニット１６０に送信する形態を示した。本発明はこれに限定されるものではなく、例えば、プログラミング操作処理中にプログラミングブロック１２０を連結接続することにより新たな入力操作情報を取得するたびに、随時、又は、所定のタイミングや定期的に、当該入力操作情報をコアユニット１６０に送信するものであってもよい。
【０１１１】
また、上述したプログラミング操作及びプログラム生成、実行方法においては、プログラミング操作処理において、スタートブロック１２０Ｓを始点として、移動経路の終点側となる方向に、後方側のプログラミングブロック１２０を順次連結接続し、複数のプログラミングブロック１２０を二次元空間に平面的に配置する場合（図５、図６参照）を示した。本発明はこれに限定されるものではなく、複数のプログラミングブロック１２０を三次元空間に立体的に配置するものであってもよい。
【０１１２】
図１１は、本実施形態に適用されるプログラミング操作処理（立体的配置）を説明するための概略図であり、図１２は、本実施形態に適用されるプログラム生成、実行処理（一括処理）の他の例を説明するための概略図である。
【０１１３】
上述したプログラミング操作処理において、スタートブロック１２０Ｓを始点として、連結接続される複数のプログラミングブロック１２０を三次元空間に立体的に配置する場合には、スタートブロック１２０Ｓやプログラミングブロック１２０の立方体形状の全６面（前後左右上下の６面）のいずれかの面にプログラミングブロック１２０が連結接続される。これにより、図１１（ａ）、（ｂ）に示すように、スタートブロック１２０Ｓを始点として連結接続されたプログラミングブロック１２０が、水平面上だけでなく上下（天地）方向にも配置され、この配置形状に基づいてターゲット機器２００の移動経路を規定する立体的な仮想経路が決定される。
【０１１４】
また、ターゲット機器２００の移動経路の任意の位置において特定の機能動作を実行させる設定をする場合には、図１１（ａ）、（ｂ）に示すように、複数のプログラミングブロック１２０からなる仮想経路のうちの、当該機能動作を実行する位置に対応するプログラミングブロック１２０として、当該機能動作に関する機能情報が設定された機能設定ブロック１２０Ｆを連結接続する。
【０１１５】
そして、図１２（ａ）に示すように、ユーザが、コアユニット１６０の操作部１６２に設けられたプログラム実行スイッチ（例えば、一括実行スイッチ１８２）を操作すると、プログラム生成、実行処理が実行される。プログラム生成、実行処理においては、まず、コアユニット１６０がプログラミング操作処理により取得した入力操作情報をスタートブロック１２０Ｓから受信し、当該入力操作情報に基づいてターゲット機器２００の動作状態（移動動作及び機能動作）を制御するプログラムを生成する。
【０１１６】
生成されたプログラムをコアユニット１６０からターゲット機器２００に転送して実行することにより、図１２（ａ）、（ｂ）に示すように、ドローン等のターゲット機器２００が上述したプログラミング操作処理において決定された立体的な仮想経路に対応する移動経路（図中、太点線で表記）に沿って順次移動する全体動作を行う（ステップＳ１２０）。
【０１１７】
このとき、ターゲット機器２００の移動経路上での位置に対応する各プログラミングブロック１２０は、例えば特定の発光状態で発光して視覚的に識別可能な状態に変移する（図１２（ａ）中では便宜的に濃いハーフトーンで表記）。また、図１２（ｂ）に示すように、ターゲット機器２００が移動経路上の所定の位置で機能動作を実行している場合には、当該位置に対応するプログラミングブロック１２０は、例えば特定の発光状態で発光して視覚的に識別可能な状態に変移する。なお、図１２（ｂ）においては、ターゲット機器２００の機能動作として特定の位置で旋回する場合を示し、当該機能動作に対応する機能設定ブロック１２０Ｆを便宜的に濃いハッチングで表記した。
【０１１８】
これによれば、幼児等の年少者であっても、タンジブルなプログラム制御装置を用いてプログラミングブロック１２０を立体的に連結接続する簡易な操作により、ターゲット機器２００の移動経路を決定することができるとともに、当該移動経路上の任意の位置でターゲット機器２００に機能動作を設定するプログラミングを容易に行うことができる。また、三次元空間内での動作を対象とする高度なプログラミング技術であっても、プログラミング時の操作内容やターゲット機器２００の動作状態を視覚を通して直感的に把握することができ、プログラミングの学習効果の向上を期待することができる。
【０１１９】
なお、上述したプログラミングブロック１２０を用いたプログラミング操作処理においては、始点となるスタートブロック１２０Ｓについて、立方体の６面のうち特定の一面側の方向が基準方向として設定され、他のプログラミングブロック１２０が連結接続されている面について、当該基準方向に対する相対的な配置が検知されて、連結特定情報として取得されることを示した。
【０１２０】
そのため、連結接続された複数のプログラミングブロック１２０により決定される仮想経路は、スタートブロック１２０Ｓを基準とする相対的な配置を有している。ここで、プログラミング操作により決定される仮想経路と、ターゲット機器２００の実際の移動経路とを対応付けるためには、スタートブロック１２０Ｓの基準方向とターゲット機器２００の進行方向（又は、前後方向）との関係を明確にしておく必要がある。
【０１２１】
図１３は、本実施形態に適用されるスタートブロックの外観表記の一例を示す概略図である。
このような仮想経路と移動経路との対応付けを支援、誘導する手段として、例えば図１３（ａ）、（ｂ）に示すように、スタートブロック１２０Ｓの立方体の各面に、ターゲット機器２００の外観を模し、ターゲット機器２００の進行方向を基準方向として明確にしたイラストが表記されている。図１３（ｂ）においては、スタートブロック１２０Ｓの立方体の６面のうち、例えば上面と前後左右の側面にターゲット機器２００である自走式の玩具の上面図と前後側面図、左右側面図がイラストとして表記された例を示す。なお、スタートブロック１２０Ｓの外観表記については、ターゲット機器２００の進行方向を基準方向として示すものであれば、上記のイラストに限らず、写真画像や記号、文字等を表記するものであってもよい。
【０１２２】
これにより、スタートブロック１２０Ｓの外観表記を視認することにより、ターゲット機器の進行方向との対応付けが直感的に可能になるので、年少者であっても、プログラミング操作の際にスタートブロック１２０Ｓに連結接続するプログラミングブロック１２０の配置（方向や位置関係）を正確に把握、理解して、効率的なプログラミング学習を実現することができる。
【０１２３】
なお、上述したプログラミング操作及びプログラム生成、実行方法においては、ターゲット機器２００の機能動作の設定方法として、ターゲット機器２００の移動経路に対応する仮想経路を形成する複数のプログラミングブロック１２０のうち、当該機能動作を実行する位置に対応するプログラミングブロック１２０に、予め所望の機能動作に関する機能情報を設定する手法を示した。本発明はこの形態に限定されるものではなく、次のような設定方法を適用することができる。
【０１２４】
図１４は、本実施形態に適用されるターゲット機器の機能動作の設定方法の一例を示す概略図である。
ターゲット機器の機能動作の設定方法の一例としては、図１４（ａ）、（ｂ）に示すように、スタートブロック１２０Ｓに複数のプログラミングブロック１２０を順次連結接続することにより、ターゲット機器２００の移動経路を規定する仮想経路が決定され、当該複数のプログラミングブロック１２０のうちの、所望の機能動作を実行する位置に対応するプログラミングブロック１２０上に、当該機能動作が設定された機能設定ブロック１２０Ｆが１又は複数個積み重なるように連結接続される。ここで、スタートブロック１２０Ｓに連結接続される複数のプログラミングブロック１２０は、仮想経路を決定するためだけに使用され、プログラミングブロック１２０上に積み重なるように連結接続される機能設定ブロック１２０Ｆは、機能動作を設定するためだけに使用される。また、機能設定ブロック１２０Ｆは、連結接続されるプログラミングブロック１２０と同一又は同等の外形形状及び寸法を有している。
【０１２５】
このような機能動作の設定方法においては、上述した実施形態と同様に、プログラミング操作処理において、スタートブロック１２０Ｓにプログラミングブロック１２０が連結接続されることにより、ブロックＩ／Ｆ部１２２を介して後方側のプログラミングブロック１２０が有するブロック情報や連結特定情報がスタートブロック１２０Ｓに送信される。
【０１２６】
また、所望の機能動作を実行する位置に対応するプログラミングブロック１２０上に、１又は複数の機能設定ブロック１２０Ｆが積み重なるように連結接続されることにより、連結接続されたプログラミングブロック１２０のブロックＩ／Ｆ部１２２を介して当該機能設定ブロック１２０Ｆが有する機能情報がスタートブロック１２０Ｓに送信される。
【０１２７】
これにより、プログラム生成、実行処理において、複数のプログラミングブロック１２０により決定された仮想経路に対応する移動経路に沿ってターゲット機器２００が移動し、機能設定ブロック１２０Ｆが積み重ねられたプログラミングブロック１２０の位置に対応する移動経路上の位置にターゲット機器２００が到達すると、機能設定ブロック１２０Ｆに設定された１又は複数の機能動作を実行する。ここで、図１４（ａ）においては、一のプログラミングブロック１２０上に１個の機能設定ブロック１２０Ｆが積み重ねられて、ターゲット機器２００の機能動作として特定の楽音を発生する場合を示し、図１４（ｂ）においては、一のプログラミングブロック１２０上に２個の機能設定ブロック１２０Ｆが積み重ねられて、ターゲット機器２００の機能動作として特定の発光色で発光するとともに、特定の位置で回転する場合を示す。
【０１２８】
なお、図１４に示したターゲット機器の機能動作の設定方法においては、仮想経路を形成する任意のプログラミングブロック１２０上に、同一の外形形状及び寸法を有するとともに、所望の機能動作が設定された機能設定ブロック１２０Ｆを積み重ねて連結接続する形態を示した。本発明はこれに限定されるものではなく、プログラミングブロック１２０上に積み重ねて連結接続される機能設定ブロック１２０Ｆと同等の、機能動作を設定する機能を有しているものであれば、プログラミングブロック１２０と同一の外形形状や寸法を有していないものであってもよい。すなわち、１以上の任意の機能動作を設定するための機能情報と固有の識別情報とを有するとともに、プログラミングブロック１２０の立方体の各面に対して良好に密着又は吸着して接続され、かつ、視覚的に識別可能な形状や色彩等を有するマーカ等を適用するものであってもよい。
【０１２９】
また、上記のマーカを利用した形態の他の例として、マーカは固有の識別情報のみを有し、また、仮想経路を形成する複数のプログラミングブロック１２０とは別の場所に、当該マーカに対応付けて１以上の任意の機能動作を設定するための機能情報を用意しておき、スタートブロック１２０Ｓやコアユニット１６０においてマーカの識別情報を認識することにより、用意された機能情報を受信して、プログラムの生成に使用するものであってもよい。さらに、他の形態として、上記のマーカは実体のある物品でもよいし、例えば任意のプログラミングブロック１２０の立方体の各面への接触又は押下により、識別変移部１２４が変移すること（例えば発光や画像の表示）により認識される実体のないものであってもよい。
【０１３０】
また、ターゲット機器の機能動作の設定方法の他の例としては、機能設定ブロック１２０Ｆとなるプログラミングブロック１２０の記憶部１２６に、複数の機能動作を規定する機能情報を予め記憶し、ソフトウェアによる設定変更やプログラミングブロック１２０の外面に設けられた切替スイッチの操作、重力センサや加速度センサによる傾きや衝撃の検知等により、当該複数の機能動作のうちから所望の機能動作を選択して実行可能なように設定するものであってもよい。なお、この形態においては、各プログラミングブロック１２０は、図示を省略した切替スイッチや上記の各種センサを予め備えている。
【０１３１】
ここで、複数の機能動作から所望の機能動作を選択して設定する手法としては、例えば、プログラミングブロック１２０の外面にボタンスイッチやタッチセンサを設け、ユーザによる当該スイッチやセンサへの接触又は押下の回数や、その時間に応じて、機能動作をトグル切り換え（例えば、１つの機能動作のオン、オフ、又は、２つ以上の異なる機能動作の順次切り換え）をする形態を適用することができる。また、他の形態として、ユーザによる外面のボタンスイッチやタッチセンサへの接触又は押下の際の力の大きさや、ダブルクリックなどの操作の種類に応じて、機能動作を切り換えて設定するものであってもよい。
【０１３２】
また、さらに他の形態として、例えば立方体形状を有するプログラミングブロック１２０において、立方体の６面の各々に異なる機能動作を対応付けて、各機能動作を規定する機能情報を記憶部１２６の記憶領域に記憶した形態を有するものであってもよい。そして、ユーザが当該プログラミングブロック１２０の任意の面を、前方側のプログラミングブロック１２０又はスタートブロック１２０Ｓに連結接続した状態を、ブロックＩ／Ｆ部１２２の連結検知部により検知することにより、複数種類の機能動作の中から当該面に対応付けられた機能動作を設定するものであってもよい。
【０１３３】
なお、本実施形態においては、コアユニット１６０にスタートブロック１２０Ｓを接続し、当該スタートブロック１２０Ｓを始点として、ターゲット機器２００の移動経路に対応させて複数のプログラミングブロック１２０を二次元形状（平面的配置）又は三次元形状（立体的配置）に連結接続する場合について説明した。本発明はこの形態に限定されるものではなく、仮想経路を形成する複数のプログラミングブロック１２０が直接コアユニット１６０に接続されているものであってもよい。但し、この場合には、連結接続される複数のプログラミングブロック１２０の配置形状がコアユニット１６０に干渉しないことを前提とする。
【０１３４】
なお、本実施形態においては、図１に示したように、コアユニット１６０としてプログラミングブロック１２０に非接触型又は接触型のインターフェースを介して接続される専用の装置を適用した場合について説明したが、本発明はこの形態に限定されるものではなく、スマートフォンやタブレット等の汎用のモバイル端末を適用するものであってもよい。すなわち、近年市販されている汎用のモバイル端末は、上述したコアユニット１６０が有する全ての構成（操作部１６２、外部Ｉ／Ｆ部１６４、記憶部１６６、通信Ｉ／Ｆ部１６８、制御部１７０、電源部１７２）を備えている。したがって、このようなモバイル端末に、スタートブロック１２０Ｓ及びプログラミングブロック１２０により取得された入力操作情報に基づいて、ターゲット機器２００の動作状態を制御するためのプログラムを生成するための専用のアプリケーションソフトウェア（コンパイラ）をインストールすることにより、汎用のモバイル端末（命令生成部）を上述したコアユニット１６０として適用することができる。ここで、コアユニット１６０として汎用のモバイル端末を適用する場合には、上記のコンパイラに加え、プログラミングブロック１２０（機能設定ブロック１２０Ｆを含む）やターゲット機器２００の各種のパラメータを設定するためのソフトウェアや、上記の入力操作情報を汎用言語（テキスト）にコード変換するソフトウェア等をインストールするものであってもよい。
【０１３５】
次に、上述した実施形態に係るプログラム制御装置を有するプログラミング教育装置の各種の変形例について説明する。
＜変形例１＞
図１５は、本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法の変形例（リアルタイムモード）を示すフローチャートである。図１６、図１７は、本変形例に適用されるプログラミング操作処理及びプログラム生成、実行処理を説明するための概略図である。ここで、上述した実施形態と同等の構成についてはその説明を簡略化する。
【０１３６】
上述した実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法においては、プログラミング操作処理において、ターゲット機器２００の全移動経路を決定するとともに、全ての機能動作を設定した後、プログラム生成処理及びプログラム実行処理を実行するノーマルモードについて説明した。本変形例においては、上述したノーマルモードに加え、プログラミング操作処理において、一操作分の入力操作を行うたびに、当該一操作分のプログラムを生成してターゲット機器２００に転送して実行するリアルタイムモードを有し、ユーザが任意のモードを選択してプログラミング学習を行う。
【０１３７】
（プログラミング操作処理）
本変形例に係るプログラミング教育装置におけるプログラミング操作処理においては、図１５のフローチャートに示すように、まず、ユーザは、スタートブロック１２０Ｓとコアユニット１６０とを接続してプログラム制御装置１００を起動するとともに、ターゲット機器２００を起動する（ステップＳ２０２）。
【０１３８】
次いで、コアユニット１６０の制御部１７０は、ユーザにより図１６（ａ）に示すようなモード切換スイッチ１１９が操作されて、ノーマルモードに設定されたか、リアルタイムモードに設定されたかを判定する（ステップＳ２０４）。ここで、モード切換スイッチ１１９は、上述した実施形態に示したノーマルモードでの処理動作、又は、後述するリアルタイムモードでの処理動作のいずれを実行するかを選択するスイッチであって、例えばプッシュスイッチやスライドスイッチが適用される。ここで、モード切換スイッチ１１９としてプッシュスイッチを適用した場合には、ユーザがモード切換スイッチ１１９を押下操作しない場合（ステップＳ２０４のＮｏ）には、初期設定（デフォルト）であるノーマルモードが保持され、押下操作した場合（ステップＳ２０４のＹｅｓ）には、ノーマルモードからリアルタイムモードに切り換え設定される。また、モード切換スイッチ１１９は、リアルタイムモードに切り換え設定された状態で、ユーザが押下操作した場合には、リアルタイムモードから再度ノーマルモードに切り換え設定される。すなわち、モード切換スイッチ１１９は、押下操作のたびにノーマルモードとリアルタイムモードとが交互に切り換え設定される。
【０１３９】
制御部１７０は、モード切換スイッチ１１９によりノーマルモードが設定されたと判定した場合には、上述した実施形態において図４に示したフローチャートのステップＳ１０６以降の処理動作を実行する。一方、制御部１７０は、モード切換スイッチ１１９によりリアルタイムモードが設定されたと判定した場合には、ステップＳ２０６以降の処理動作を実行する。
【０１４０】
なお、このステップＳ２０４におけるモードの切り換え設定に係る処理動作は、上述した実施形態に示した図４のフローチャートにおいても同様に実行され、ステップＳ１０４においてユーザがモード切換スイッチ１１９を押下操作しない場合には、初期設定であるノーマルモードが保持されてステップＳ１０６以降の処理動作が実行され、ユーザがモード切換スイッチ１１９を押下操作して、ノーマルモードからリアルタイムモードに切り換え設定された場合には、以下のステップＳ２０６以降の処理動作が実行される。
【０１４１】
リアルタイムモードが設定された場合には、ユーザは、プログラミングブロック１２０を用いて、ターゲット機器２００の移動経路を決定し、又は、ターゲット機器２００における機能動作を設定するプログラミング操作処理を実行する（ステップＳ２０６）。
【０１４２】
具体的には、ターゲット機器２００の移動経路を決定するプログラミング操作処理においては、図１６（ａ）に示すように、ユーザが、ターゲット機器２００を動作させる際の移動経路をイメージして、コアユニット１６０に接続されたスタートブロック１２０Ｓを移動経路に対応する仮想経路の始点（スタート）として、移動経路の終点側となる方向に、ターゲット機器２００を一操作分だけ動作させるための移動経路に対応するプログラミングブロック１２０を連結接続する。また、ターゲット機器２００における機能動作を設定するプログラミング操作処理においては、図１７（ｂ）に示すように、ユーザが、ターゲット機器２００により特定の機能動作を実行する位置に、当該機能動作が設定された機能設定ブロック１２０Ｆを連結接続する。
【０１４３】
ユーザが、上記のようなプログラミング操作を行うと、スタートブロック１２０ＳのブロックＩ／Ｆ部１２２により、プログラミングブロック１２０が連結接続されているか否かを検知し、スタートブロック１２０Ｓとプログラミングブロック１２０との連結状態を特定する連結特定情報を取得することにより、図１６（ａ）に示すように、ターゲット機器２００の移動経路の一操作分に対応する仮想経路が決定される。また、スタートブロック１２０Ｓ又は前方側のプログラミングブロック１２０のブロックＩ／Ｆ部１２２により、機能設定ブロック１２０Ｆが連結接続されているか否かを検知し、機能設定ブロック１２０Ｆとの連結状態を特定する連結特定情報、及び、機能設定ブロック１２０Ｆが有する機能情報を取得することにより、図１７（ｂ）に示すように、ターゲット機器２００の移動経路の一操作分に対応する仮想経路が決定されるとともに、ターゲット機器２００の機能動作が設定される。
【０１４４】
このとき、スタートブロック１２０Ｓの制御部１２８は、ブロックＩ／Ｆ部１２２により取得された一操作分のプログラミングブロック１２０が有するブロック情報と連結特定情報、又は、機能設定ブロック１２０Ｆが有するブロック情報と連結特定情報を取得して記憶部１２６の記憶領域に記憶する。また、制御部１２８は、当該プログラミングブロック１２０又は機能設定ブロック１２０Ｆの識別変移部１２４を所定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる（図１６（ａ）中では便宜的に濃いハーフトーン、図１７（ｂ）中では便宜的に濃いハッチングで表記）。
【０１４５】
（プログラム生成、実行処理）
次いで、プログラム生成、実行処理においては、コアユニット１６０の制御部１７０が、上述したプログラミング操作処理においてスタートブロック１２０Ｓにより取得された一操作分のブロック情報と連結特定情報とを有する入力操作情報を、プログラミング操作の一操作（ステップ）ごとに受信する（ステップＳ２０８）。
【０１４６】
次いで、コアユニット１６０の制御部１７０は、受信した一操作分の入力操作情報に基づいて、ターゲット機器２００の動作状態（移動又は機能動作）を制御するための命令を有する一操作分のプログラムを生成する（ステップＳ２１０）。
【０１４７】
次いで、図１６（ａ）、図１７（ｂ）に示すように、制御部１７０が、生成された一操作分のプログラムをターゲット機器２００に転送することにより（ステップＳ２１２）、ターゲット機器２００において、当該一操作分のプログラムが実行されて、ターゲット機器２００が移動経路に沿って一操作分だけ移動するステップ動作、又は、ターゲット機器２００が移動経路上の特定の位置で一操作分の機能動作を実行するステップ動作が行われる（ステップＳ２１４）。
【０１４８】
このようなターゲット機器２００の動作状態を制御するためのプログラミング操作処理、及び、プログラム生成、実行処理は、ターゲット機器２００が移動経路の終点位置に移動してプログラミング操作が終了するまで、図１５（ａ）、（ｂ）及び図１６（ａ）、（ｂ）に示すように、一操作ごとに繰り返し実行される。（ステップＳ２１６）。なお、制御部１７０は、移動経路の終点（ゴール）が指示されたり、終端ブロック１２０Ｇが連結接続されたりしたことに応じて、プログラミング操作が終了したと判定する。他の例では、制御部１７０は、プログラミング操作中の任意のタイミングで、コアユニット１６０の実行停止スイッチ１８６の押下操作を受け付けたことに応じて、プログラミング操作が終了したと判定してもよい。
【０１４９】
このように、本変形例によれば、ノーマルモードとリアルタイムモードとを任意に切り換えることにより、ターゲット機器２００の動作状態を制御するためのプログラミング操作処理における操作内容や、プログラムの実行状態を一括して、又は、一操作ごとに視覚を通して把握することができるので、直感的かつ多面的に理解し易くなり、プログラミングの学習効果の向上を期待することができる。
【０１５０】
＜変形例２＞
図１８は、本実施形態に係るプログラミング教育装置におけるプログラミング操作に適用される機能動作の変形例（条件分岐、繰り返し、関数、イベント）を示す概略図である。ここで、上述した実施形態と同等の構成についてはその説明を簡略化する。
【０１５１】
上述した実施形態においては、ターゲット機器２００に実行させる機能動作として、移動経路上での移動を伴わない機能動作（アクション）を設定する場合について説明した。本変形例においては、アクション以外の他の機能動作に関する機能情報を、仮想経路上のプログラミングブロック１２０に設定することにより、ターゲット機器２００を多様な動作状態で制御するプログラミング学習を行う。
【０１５２】
本変形例に係るプログラミング操作に適用されるプログラミングブロック１２０には、上述した実施形態に示した機能動作である「アクション」の他に、「条件分岐」、「繰り返し」、「関数」、「イベント」の４種類の機能動作が設定される。以下、各機能動作について説明する。
【０１５３】
「条件分岐」が機能動作として設定されたプログラミングブロック（以下、「条件分岐ブロック」と記す）１２０Ａは、図１８（ａ）に示すように、仮想経路を形成する任意のプログラミングブロック１２０に直接、又は、条件分岐ブロック１２０Ａを任意のプログラミングブロック１２０上に積み重ねて連結接続して、当該機能動作に関する機能情報を設定することにより、当該プログラミングブロック１２０に対応する移動経路上の位置におけるターゲット機器２００が条件分岐の機能動作を実行するように設定される。ここで、条件分岐とは、当該機能動作に関連して予め指定された条件により、条件分岐ブロック１２０Ａが連結接続された位置以降のプログラムの実行状態が異なるような動作である。例えば図１８（ａ）では、条件に応じて、ターゲット機器２００が移動する経路が分岐する。
【０１５４】
条件としては、例えば、ターゲット機器２００に備えられた照度センサにより検出された照度が予め定めた値よりも大きいか否かに応じて、異なる動作を行うものであってよい。また、条件分岐ブロック１２０Ａが連結接続されたプログラミングブロック１２０に対応する位置までターゲット機器２００が移動すると、そこでターゲット機器２００が一時停止するようにしてもよい。また、ターゲット機器２００がマイクロフォンを備えており、その一時停止中にユーザが手を叩いた音を検出し、検出した音の回数に応じて、異なる動作を行うものであってよい。なお、これらは一例に過ぎず、他の条件を適用してよいことは言うまでもない。
【０１５５】
なお、条件の設定方法は、次のようなものを適用することができる。  例えば、条件分岐ブロック１２０Ａ自体がプログラマブルな構造であり、そこに条件を設定できるような機器、具体的には音を検知するのか光を検知するのか、また音であれば回数に応じてどう動作を行うのかを設定できる機器を用いる。  また、例えば、条件分岐ブロック１２０Ａの上にさらに、上述のような様々な条件のうちのいずれかの条件が予め指定された、別のプログラミングブロック１２０を積み重ねる。  また、例えば、条件分岐ブロック１２０Ａ自体に、上述のいずれかの条件が組み込まれているものを用いる。
【０１５６】
「繰り返し」が機能動作として設定されたプログラミングブロック（以下、「繰り返しブロック」と記す）は、仮想経路を形成する任意のプログラミングブロック１２０に直接、又は、繰り返しブロックを任意のプログラミングブロック１２０上に積み重ねて連結接続して、当該機能動作に関する機能情報を設定することにより、当該プログラミングブロック１２０に対応する移動経路上の位置におけるターゲット機器２００が繰り返しの機能動作を実行するように設定される。ここで、繰り返しとは、同じ経路を指定回数だけ繰り返し移動する動作である。
【０１５７】
なお、繰り返しブロックの構成や設定方法は、次のようなものを適用することができる。  例えば、図１８（ｂ）に示すように、繰り返し元ブロック１２０Ｂと繰り返し先ブロック１２０Ｃとを用い、仮想経路を形成する任意のプログラミングブロック１２０に直接、又は、当該機能動作に関する機能情報を設定した繰り返し元ブロック１２０Ｂと繰り返し先ブロック１２０Ｃを任意のプログラミングブロック１２０上に積み重ねて連結接続することにより、ターゲット機器２００が移動経路上の繰り返し元位置まで進んだら、繰り返し先位置へ戻る動作を、指定回数（例えば３回）だけ行う。
【０１５８】
また、例えば、繰り返し元ブロック１２０Ｂのみを用い、仮想経路を形成する任意のプログラミングブロック１２０を繰り返し元に設定することにより、ターゲット機器２００が移動経路上の繰り返し元位置まで進んだら、無条件でスタート位置に戻る動作を、指定回数だけ行う。
【０１５９】
なお、繰り返し回数の指定方法としては、例えば、予め繰返し回数の規定されている繰り返しブロックを用いる形態や、繰り返しの回数を規定する回数ブロックを用い、繰り返し元ブロック１２０Ｂの上に回数ブロックを積み重ねる形態を適用することができる。さらに、別の繰り返し回数の指定方法としては、繰り返しブロックに設けられたダイヤルにより、繰り返し回数を指定する形態や、繰り返しブロックにテンキーと表示画面を設け、繰り返し回数を指定する形態、繰り返しブロックにカウンターボタンと表示画面を設け、カウンターボタンを押下することにより、繰り返し回数を指定する形態等を適用することができる。
【０１６０】
「関数」が機能動作として設定されたプログラミングブロック（以下、「関数ブロック」と記す）１２０Ｄは、図１８（ｃ）に示すように、仮想経路を形成する任意のプログラミングブロック１２０に直接、又は、関数ブロック１２０Ｄを任意のプログラミングブロック１２０上に積み重ねて連結接続して、当該機能動作に関する機能情報を設定することにより、当該プログラミングブロック１２０に対応する移動経路上の位置におけるターゲット機器２００が関数の機能動作を実行するように設定される。ここで、「関数」とは例えば、上述した実施形態に示したような様々な「アクション」の１つ以上をひとまとまりにしたものである。関数の機能動作の実行が設定されたプログラミングブロック１２０に対応する移動経路上の位置へターゲット機器２００が移動したときに、その位置において、そのひとまとまりの「アクション」がまとめて実行される。具体的には、例えば、「その場で９０°右へ回転する」、「予め定めた楽音を鳴らす」、「撮影する」、「その場で９０°左へ回転する」という４つの「アクション」がひとまとまりになって一つの「関数」が構成されていて、ターゲット機器２００が上記の位置へ移動すると、その位置でこれら４つの「アクション」を順次実行する。
【０１６１】
このような「関数」の具体的内容は、例えば図１８（ｃ）に示すように、連結接続されたプログラミングブロック１２０の集合体とは別の場所で、任意の「アクション」が設定された１以上の機能設定ブロック１２０Ｆを接続（連結配置）するというプログラミング操作により指定される。このように別の場所で連結配置されたひとまとまりの１以上のプログラミングブロック１２０のことを、関数本体１４２という。関数本体１４２は、始点ブロックＢＬｓと終点ブロックＢＬｅとを含み、それらの間に、ユーザが所望する「アクション」を指定する１以上の機能設定ブロック１２０Ｆが連結配置されている。プログラミング実行時にはターゲット機器２００は、始点ブロックＢＬｓと終点ブロックＢＬｅとの間に配置された「アクション」をそれらの並び順に実行する。
【０１６２】
なお、図１８（ｃ）に示すように、プログラミング操作により仮想経路を形成する、連結接続された複数のプログラミングブロック１２０のうちの２以上のプログラミングブロック１２０に、同一の関数ブロック１２０Ｄを連結接続してもよい。これにより、プログラミング実行時に移動経路上の異なる位置で複数回にわたって、同じひとまとまりのアクションをターゲット機器２００に実行させたい場合、一つの関数をプログラミングして、且つ、上記の異なる位置に対応する複数のプログラミングブロック１２０に、そのひとまとまりのアクションに対応する関数ブロック１２０Ｄを連結接続するだけでよい。このため、同じひとまとまりのアクションを複数回プログラミング操作する必要がなく、プログラミング時の操作量が低減されるとともに、関数を使ったプログラミングの学習効果の向上を期待することができる。
【０１６３】
また、互いに異なる内容を指定する二種以上の関数ブロック１２０Ｄを、仮想経路を形成する２以上のプログラミングブロック１２０にそれぞれ連結接続してもよいし、一つのプログラミングブロック１２０に同じ又は異なる関数ブロック１２０Ｄを複数連結接続してもよい。上述のように二種以上の関数ブロック１２０Ｄを用いてプログラミング操作を行う場合は、プログラミング操作時に、各関数ブロック１２０Ｄと少なくとも各始点ブロックＢＬｓとを互いに無線又は有線によりペアリングする操作を行う。これにより、プログラミング実行時に、各関数ブロック１２０Ｄにペアリングされた始点ブロックＢＬｓを含む関数本体１４２の機能設定ブロック１２０Ｆにより指定されたひとまとまりのアクションを、ターゲット機器２００に実行させることができる。
【０１６４】
なお、仮想経路を形成する複数のプログラミングブロック１２０と、これらのプログラミングブロック１２０とは別の場所に配置される関数本体１４２の機能設定ブロック１２０Ｆとは非接触型又は接触型のインターフェースを介して接続されて、関数本体１４２の機能情報がプログラミングブロック１２０又はスタートブロック１２０Ｓに送信される。そして、コアユニット１６０において、プログラミングブロック１２０を用いたプログラミング操作により取得した入力操作情報とともに、当該機能情報を加味したプログラムが生成される。
【０１６５】
「イベント処理」は割り込み処理とも言われ、ターゲット機器２００の動作状態を制御するプログラムの実行中の任意のタイミングで、何らかのイベントが発生したことに応じて、ターゲット機器２００が実行する処理のことである。そのようなイベントとしては、例えば、ターゲット機器２００がプログラム通り動いている途中で障害物等にぶつかったことや、ユーザが「止まれ。」や「進め。」などの音声を発したこと、又は、ターゲット機器２００の周囲が急に暗くなったことなどが挙げられるが、これらの例に限られるものではないことは言うまでもない。これら例示したような様々なイベントのいずれかが発生したことをターゲット機器２００が検出したことをトリガーとして、そのイベントに対応させて予め設定した機能動作を、ターゲット機器２００が実行する。なお、ターゲット機器２００だけに限らず、プログラミングブロック１２０やコアユニット１６０のいずれかによりイベントの発生を検出する構成であってもよい。
【０１６６】
イベント処理は、図１８（ｄ）に示すように、仮想経路を形成する複数のプログラミングブロック１２０とは別の場所で、任意の「アクション」が設定された複数の機能設定ブロック１２０Ｆを連結接続するプログラミング操作により実現される。ここで、図１８（ｄ）においては、ターゲット機器２００がユーザの拍手を検出するとＬＥＤ等の発光部を点灯させるイベント処理を示す。このように別の場所で連結配置されたひとまとまりの１以上のプログラミングブロック１２０のことを、イベント処理本体１４４という。このイベント処理本体１４４の具体的構成は、上述した関数本体１４２と同様であるので詳細な説明を省略する。関数ブロック１２０Ｄの場合と同様に、互いに異なる内容を指定する二種以上のイベントブロック１２０Ｅを、仮想経路を形成する２以上のプログラミングブロック１２０にそれぞれ連結接続してもよいし、一つのプログラミングブロック１２０に同じ又は異なるイベントブロック１２０Ｅを複数連結接続してもよい。
【０１６７】
なお、仮想経路を形成する複数のプログラミングブロック１２０と、これらのプログラミングブロック１２０とは別の場所に配置されるイベント処理本体１４４の機能設定ブロック１２０Ｆとは非接触型又は接触型のインターフェースを介して接続されて、イベント処理本体１４４の機能情報がプログラミングブロック１２０又はスタートブロック１２０Ｓに送信される。そして、コアユニット１６０において、プログラミングブロック１２０を用いたプログラミング操作により取得した入力操作情報とともに、当該機能情報を加味したプログラムが生成される。
【０１６８】
このように、本変形例によれば、プログラミングブロック１２０を用いたプログラミング操作において、仮想経路を形成する任意のプログラミングブロック１２０に直接、又は、上記の機能動作が設定された各ブロック１２０Ａ〜１２Ｆを任意のプログラミングブロック１２０上に積み重ねて連結接続する簡易な操作により、「アクション」の「逐次実行」に加え、「条件分岐」、「繰り返し」、「関数」、「イベント」の抽象度がより高い各機能動作をターゲット機器２００に実行させるように設定することができる。
【０１６９】
これにより、幼児等の年少者であっても、ターゲット機器２００の移動と各種の機能動作を組み合わせたプログラミングを、タンジブルなプログラム制御装置を用いて容易に行うことができるとともに、その操作内容やターゲット機器２００の動作状態を視覚を通して直感的に把握し易くすることができ、抽象度がより高いプログラミングの学習効果の向上を期待することができる。
【０１７０】
なお、本変形例においては、プログラミングブロック１２０に設定される機能動作として、「条件分岐」、「繰り返し」、「関数」、「イベント」を個別に示して説明したが、これらは任意に組み合わせて設定するものであってもよい。
【０１７１】
＜変形例３＞
図１９は、本実施形態に係るプログラミング教育装置に適用される構成の変形例を示す機能ブロック図であり、図２０は、本変形例に適用されるプログラム生成、実行処理の一例を説明するための概略図である。ここで、上述した実施形態と同等の構成についてはその説明を簡略化する。
【０１７２】
上述した実施形態においては、スタートブロック１２０Ｓを始点として、複数のプログラミングブロック１２０を順次連結接続するプログラミング操作処理により取得した入力操作情報（ブロック情報や連結特定情報）に基づいて、ターゲット機器２００の動作状態を制御するプログラムが生成される。そして、このプログラムを実行することにより、プログラミング操作時に連結接続されたプログラミングブロック１２０の集合体の全体配置形状により決定された仮想経路に対応する移動経路に沿って、ターゲット機器２００を移動させる制御方法について説明した。本変形例においては、上述した実施形態に示した制御方法により生成されたプログラムを実行することにより、移動経路に沿って移動するターゲット機器２００に対して、当該プログラムの実行中に連結接続されたプログラミングブロック１２０の集合体の傾きや角度（方向）を変化させることにより、ターゲット機器２００をより複雑な動作状態で制御するプログラミング学習を行う。
【０１７３】
本変形例に係るプログラミング教育装置においては、例えば図１９に示すように、上述した実施形態に示したプログラム制御装置１００のスタートブロック１２０Ｓが、加速度センサ１３４をさらに備えた形態を有している。ここで、加速度センサ１３４は、スタートブロック１２０Ｓの傾きや角度（方向）を随時検出する。スタートブロック１２０Ｓの制御部１２８は、加速度センサ１３４からの検出信号の変化を監視して、スタートブロック１２０Ｓの傾きや角度（方向）に関するブロック傾斜情報を生成して記憶部１２６の記憶領域に記憶する。
【０１７４】
本変形例に係るプログラミング操作処理においては、上述した実施形態と同様に、ユーザがターゲット機器２００の移動経路をイメージして、始点となるスタートブロック１２０Ｓに対して複数のプログラミングブロック１２０を順次連結接続する。これにより、スタートブロック１２０Ｓの制御部１２８は、連結接続された全てのプログラミングブロック１２０に関するブロック情報及び連結特定情報を受信して記憶部１２６の記憶領域に記憶する。
【０１７５】
このプログラミング操作処理においては、スタートブロック１２０Ｓの制御部１２８は、加速度センサ１３４からの検出信号を監視しない状態、又は、加速度センサ１３４の検出動作自体を停止した状態を保持する。これにより、ユーザがスタートブロック１２０Ｓにプログラミングブロック１２０を連結接続する際に、スタートブロック１２０Ｓを持ち上げたり、移動させたりすることによりスタートブロック１２０Ｓの傾きや角度（方向）が著しく変化する状態を検出しないようにする。
【０１７６】
次いで、プログラム生成、実行処理においては、プログラミング操作処理により取得された入力操作情報に基づいて、コアユニット１６０の制御部１７０によりターゲット機器２００の動作状態を制御するプログラムを生成して、ターゲットに転送する。ターゲット機器２００は、転送されたプログラムを実行して、図２０（ａ）に示すように、プログラミング操作処理において決定された仮想経路に対応する移動経路Ａ（図中、細い点線で表記）に沿って移動する。また、ターゲット機器２００の移動経路上での移動に伴って、現在時点の移動位置に対応するプログラミングブロック１２０が発光して視覚的に識別可能な状態になる。
【０１７７】
このプログラム実行処理においては、スタートブロック１２０Ｓの制御部１２８は、加速度センサ１３４からの検出信号を監視し、検出信号に変化が生じた場合には、スタートブロック１２０Ｓの傾きや角度（方向）の変化量を含むブロック傾斜情報を生成してコアユニット１６０に送信する。コアユニット１６０の制御部１７０は、ブロック傾斜情報を受信すると、当該ブロック傾斜情報に含まれるスタートブロック１２０Ｓの傾きや角度（方向）の変化量を加味した新たなプログラム、又は、修正プログラムを生成してターゲットに転送する。ターゲット機器２００は、現在実行中のプログラムを転送されたプログラムに更新することにより、図２０（ｂ）に示すように、現在実行中のプログラムで設定されていた移動経路Ａから、現在時点以降、更新後のプログラムで設定される移動経路Ｂ（図中、太い点線で表記）に沿って移動する。
【０１７８】
なお、スタートブロック１２０Ｓの傾きや角度（方向）に変化がない場合には、ターゲット機器２００は、現在実行中のプログラムを継続して、図２０（ａ）に示したように、当該プログラムで設定された移動経路Ａに沿って終点位置まで移動する。
【０１７９】
ここで、本変形例に示した制御方法は、ターゲット機器２００においてプログラム実行中に、スタートブロック１２０Ｓに連結接続された複数のプログラミングブロック１２０の集合体の傾きや角度（方向）が変化した場合に、ターゲット機器２００の動作状態をどのように変化させるかという処理動作を行うものであり、これは上述した変形例２に示したイベント処理の機能動作に相当するものである。この場合は、イベント処理本体として、加速度センサによるスタートブロック１２０Ｓの傾きや角度（方向）の変化の検出、当該変化量に応じたプログラムの生成、ターゲット機器２００における実行プログラムの更新、の各機能動作が予め設定されることになる。
【０１８０】
このように、本変形例によれば、ターゲット機器２００のプログラム実行中に、仮想経路を形成する複数のプログラミングブロック１２０の集合体を持ち上げたり移動させたりして、その傾きや角度（方向）を変化させることにより、ターゲット機器２００の移動経路を含む動作状態を変化させることができる。このとき、イベント処理等の高度な機能動作を含むプログラミングを、タンジブルなプログラム制御装置を用いて容易に行うことができるとともに、その操作内容やターゲット機器２００の動作状態を視覚を通して直感的に把握し易くすることができ、プログラミングの学習効果の向上を期待することができる。
【０１８１】
なお、上述した各実施形態においては、年少の幼児を対象とするプログラミング教育装置について説明したが、本発明はこれに限定されるものではない。本発明は、タンジブルな入力操作、及び、視覚を通して操作内容やターゲット機器の動作状態を把握、理解できる特徴を有していることから、例えばプログラミングの初心者を対象とするものであってもよいし、身体の機能回復のためのリハビリテーションを必要とする人を対象とするものであってもよい。
【０１８２】
以上、本発明のいくつかの実施形態について説明したが、本発明は、上述した実施形態に限定されるものではなく、特許請求の範囲に記載された発明とその均等の範囲とを含むものである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【０１８３】
（付記）
［１］
タンジブルな複数の形状指示部がユーザ操作によって互いに相対的に配置されることで前記複数の形状支持部の相対位置が指示されたことに応じて、前記複数の形状支持部の相対位置に基づいて、第１形状を指示する第１形状指示部と、
前記第１形状指示部により指示された前記第１形状に対応させて被制御部を移動させる命令を生成する命令生成部と、
を備えることを特徴とするプログラミング装置。
【０１８４】
［２］
前記複数の形状指示部のうちのいずれかの形状指示部に対応付けて前記被制御部における機能を設定する機能設定部をさらに備え、
前記命令生成部は、
前記命令に応じて前記被制御部が前記いずれかの形状指示部に対応する位置へ移動したときに、前記機能設定部により設定された前記機能を前記被制御部に実行させる命令を生成することを特徴とする［１］に記載のプログラミング装置。
【０１８５】
［３］
前記複数の形状指示部のうちのいずれかの形状指示部は、前記機能の設定を受け付ける機能受付部をさらに備え、
前記命令生成部は、
前記命令に応じて前記被制御部が前記いずれかの形状指示部に対応する位置へ移動したときに、前記機能受付部が受け付けた前記機能を該被制御部に実行させる命令を生成することを特徴とする［１］又は［２］に記載のプログラミング装置。
【０１８６】
［４］
前記第１形状に対応して移動する前記被制御部を、さらに備えることを特徴とする［１］乃至［３］に記載のプログラミング装置。
【０１８７】
［５］
タンジブルな複数の形状指示部がユーザ操作によって互いに相対的に配置されることで前記複数の形状支持部の相対位置が指示されたことに応じて、前記複数の形状支持部の相対位置に基づいて、第１形状を指示し、
前記指示された前記第１形状に対応させて被制御部を移動させる命令を生成する、
ことを特徴とするプログラミング方法。
【０１８８】
［６］
プログラミング装置を制御するための制御プログラムであって、
前記プログラミング装置は、第１形状指示部と命令生成部とを備え、
前記プログラミング装置を制御するコンピュータに、
タンジブルな複数の形状支持部がユーザ操作によって互いに相対的に配置されることで前記複数の形状支持部の相対位置が指示されたことに応じて、前記複数の形状支持部の相対位置に基づいて、前記第１形状指示部によって第１形状を指示させ、
指示された前記第１形状に対応させて被制御部を移動させる命令を、前記命令生成部によって生成させる、
ことを特徴とする制御プログラム。
【符号の説明】
【０１８９】
１００    プログラム制御装置
１２０    プログラミングブロック（形状指示部、第１形状指示部）
１２０Ｆ    機能設定ブロック（機能設定部）
１２０Ｓ    スタートブロック（第１形状指示部）
１２０Ｇ    終端ブロック
１２２    ブロックＩ／Ｆ部（機能受付部）
１２４    識別変移部
１２６    記憶部
１２８    制御部
１３０    外部Ｉ／Ｆ部
１３２    電源部
１３４    加速度センサ
１６０    コアユニット（命令生成部）
１６２    操作部
１６４    外部Ｉ／Ｆ部
１６６    記憶部
１６８    通信Ｉ／Ｆ部
１７０    制御部
２００    ターゲット機器（被制御部）
２０２    駆動部
２０４    機能部
２０６    通信Ｉ／Ｆ部
２０８    記憶部
２１０    制御部
【図１】
2018163546.tif 000003
【図２】
2018163546.tif 000004
【図３】
2018163546.tif 000005
【図４】
2018163546.tif 000006
【図５】
2018163546.tif 000007
【図６】
2018163546.tif 000008
【図７】
2018163546.tif 000009
【図８】
2018163546.tif 000010
【図９】
2018163546.tif 000011
【図１０】
2018163546.tif 000012
【図１１】
2018163546.tif 000013
【図１２】
2018163546.tif 000014
【図１３】
2018163546.tif 000015
【図１４】
2018163546.tif 000016
【図１５】
2018163546.tif 000017
【図１６】
2018163546.tif 000018
【図１７】
2018163546.tif 000019
【図１８】
2018163546.tif 000020
【図１９】
2018163546.tif 000021
【図２０】
2018163546.tif 000022