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