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