(57)【要約】【課題】簡便な手法によってプログラム作成を学習する。【解決手段】  プログラム作成に際して、ユーザは、所定のシート３０に固有の絵柄を有する複数のチップ４０を配列する。サーバ１は、各チップの絵柄とプログラムの命令とを対応付けて登録する命令テーブル５０と、カメラ２０６で撮影された複数のチップの配列の画像から、チップが有する絵柄の画像を認識する画像処理部１０４と、命令テーブル５０を参照して、画像処理部１０４で認識された絵柄の画像に対応する命令を特定して、その特定された複数の命令から構成されるプログラムを生成するプログラム作成処理部１０３と、を有する。【選択図】  図１
2018136446.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを用いて、プログラムの作成を支援するプログラム作成支援システムであって、
複数の各物品が有する視認特性とプログラムの命令とを対応付けて登録する命令テーブルと、
プログラムの作成に際して並べられた複数の物品の配列を撮影するカメラと、
該カメラで取得された該物品の配列の画像から、複数の該物品に関係する該視認特性の画像を認識する画像処理部と、
前記命令テーブルを参照して、該画像処理部で認識された該物品の該視認特性の画像に対応する命令を特定して、該特定された該複数の命令から構成されるプログラムを生成するプログラム作成処理部と、
を有することを特徴とするプログラム作成支援システム。
【請求項２】
前記物品は絵柄の描かれた平面状のチップであり、
前記命令テーブルは、複数の各物品が固有に持つ絵柄とプログラムの命令とを対応付けて登録し、
プログラムの作成に際して複数の該チップが並べられるシートを更に有し、
前記カメラは該シート上に配列された複数のチップの配列を撮影し、
前記画像処理部は、該カメラで取得された該チップの配列の該画像から、該チップが有する該絵柄の画像を認識し、
前記プログラム作成処理部は、前記命令テーブルを参照して、該画像処理部で認識された該絵柄の画像に対応する命令を特定して、該特定された該複数の命令から構成されるプログラムを生成する
ことを特徴とする請求項１に記載のプログラム作成支援システム。
【請求項３】
前記プログラム作成支援システムは、サーバと、該サーバにネットワークを介して接続する携帯端末とを有して構成され、
前記コンピュータはサーバであり、
該サーバは、前記命令テーブルと、前記画像処理部と、前記プログラム作成処理部を有し、
前記携帯端末は、前記カメラと、入力部と、表示部と、プログラムを実行するプロセッサと、記憶部と、該ネットワークに接続するネットワーク接続部と、を有し、
前記プログラム作成処理部により作成された前記プログラムは該携帯端末へ送信されて、該携帯端末の該プロセッサは受信した前記プログラムを実行し、該表示部は前記プログラムの実行の様子を表示する
ことを特徴とする請求項１又は２のプログラム作成支援システム。
【請求項４】
前記プログラム作成支援システムは、サーバと、該サーバにネットワークを介して接続する携帯端末とを有して構成され、
前記携帯端末は、前記カメラと、入力部と、表示部と、プログラムを実行するプロセッサと、記憶部と、該ネットワークに接続するネットワーク接続部と、を有し、
該プロセッサは、前記画像処理部と、前記プログラム作成処理部を有し、
該記憶部は前記命令テーブルを保持し、
前記プログラム作成処理部により作成された前記プログラムは、該プロセッサで実行され、該実行の様子を該表示部に表示する
ことを特徴とする請求項１又は２のプログラム作成支援システム。
【請求項５】
前記プログラム作成支援システムは、
プログラミングための課題を表すカリキュラムを識別するカリキュラム識別情報と、該キャリキュラムに基づくプログラミングに使用される、前記命令テーブルから選択された複数の命令に関連する情報を登録するカリキュラム管理テーブルを有し、
前記シートは、前記カリキュラム管理テーブルに登録された前記カリキュラム識別情報を組み込んだ識別部を有する
ことを特徴とする請求項１乃至４の何れかの項記載のプログラム作成支援システム。
【請求項６】
前記携帯端末は、前記シートが有する前記識別部を読み取る読取手段を有し、
該読取手段によって取得された前記カリキュラム識別情報を基に、前記カリキュラム管理テーブルに登録された命令セットと関連付ける
ことを特徴とする請求項５記載のプログラム作成支援システム。
【請求項７】
プログラミングための課題を表すカリキュラムを識別するカリキュラム識別情報と、該キャリキュラムに基づくプログラミングに使用される、前記命令テーブルから選択された複数の命令に関連する情報を登録するカリキュラム管理テーブルと、
前記プログラム作成処理部により作成された前記プログラムのデータと、前記カリキュラム管理テーブルに登録されたカリキュラム識別情報とを関連付けて登録するプログラム管理テーブルと、を有する
ことを特徴とする請求項１乃至６のいずれかの項記載のプログラム作成支援システム。
【請求項８】
前記命令テーブルにおける該視認特性と該プログラムの命令との対応は、該コンピュータへの入力指示によって変更可能である、
ことを特徴とする請求項１乃至７のいずれかの項記載のプログラム作成支援システム。
【請求項９】
前記プログラム作成処理部により作成されたプログラムのデータを管理するプログラム管理テーブルと、該サーバに接続可能な複数の機器の情報を管理する接続機器管理テーブルと、を更に有し、
前記プログラム作成処理部は、前記プログラム管理テーブルに登録された前記プログラムを、前記接続機器管理テーブルを参照して選択された該機器において実行させる
ことを特徴とする請求項１乃至８のいずれかの項記載のプログラム作成支援システム。
【請求項１０】
前記シートは、平面状の前記チップを所定方向へ並べるための案内となるガイドラインを有する、請求項２乃至９の何れかの項記載のプログラム作成支援システムにおいて使用されるシート。
【請求項１１】
請求項２乃至１０何れかの項記載のプログラム作成支援システムにおいて使用されるチップ。
【請求項１２】
コンピュータを用いて、プログラムの作成を支援するプログラム作成支援方法であって、
固有の表示を有する複数の各部品の表示とプログラムの命令とを対応付けて登録する命令テーブルを記憶手段に用意するステップと、
プログラムの作成に際して並べられた複数の部品の配列であって、カメラで取得された該部品の配列の画像から、複数の該部品に関係する該表示の画像を認識する画像処理ステップと、
前記命令テーブルを参照して、該画像処理ステップで認識された該部品の該表示の画像に対応する命令を特定して、該特定された該複数の命令から構成されるプログラムを生成するプログラム作成処理ステップと、
該プログラム作成処理ステップにより作成されたプログラムを記憶手段に記憶するステップと、を有することを特徴とするプログラム作成支援方法。
【請求項１３】
コンピュータを用いて、プログラムの作成を支援するプログラム作成支援方法であって、
それぞれ固有の表示を有する複数のチップの該表示とプログラムの命令とを対応付けて登録する命令テーブルを記憶手段に用意するステップと、
所定のシート上に配列された複数のチップの画像をカメラで取得するステップと、
該命令テーブルを参照して、該カメラで取得された該複数のチップの該画像から該チップが有する該表示の画像を認識する画像処理ステップと、
前記命令テーブルを参照して、該画像処理ステップで認識された該表示の画像に対応する命令を特定して、該特定された該複数の命令から構成されるプログラムを生成するプログラム作成処理ステップと、
該プログラム作成処理ステップにより作成されたプログラムを記憶手段に記憶するステップと、を有することを特徴とするプログラム作成支援方法。
【請求項１４】
プログラミングための課題を表すカリキュラムを識別するカリキュラム識別情報と、該キャリキュラムに基づくプログラミングに使用される複数の命令を含む命令セットとを登録するカリキュラム管理テーブルを有し、
前記シートは、前記カリキュラム管理テーブルに登録された前記カリキュラム識別情報を組み込んだ識別部を有し、
前記シートが有する前記識別部を読み取るステップと、
該読取ステップによって取得された前記カリキュラム識別情報を基に、前記カリキュラム管理テーブルに登録された命令セットと関連付けるステップと、
を有することを特徴とする請求項１３に記載のプログラム作成支援方法。
【請求項１５】
前記プログラム作成処理ステップにより作成されたプログラムのデータを管理するプログラム管理テーブルと、該コンピュータに接続可能な複数の機器の情報を管理する接続機器管理テーブルと、を有し、
前記プログラム管理テーブルに登録された前記プログラムを、前記接続機器管理テーブルを参照して選択された該機器において実行させる
ことを特徴とする請求項１２乃至１４の何れかの項に記載のプログラム作成支援方法。
【請求項１６】
コンピュータに、プログラムの作成を支援する処理を実行させるプログラム作成支援用プログラムであって、
並べられた複数の部品の配列の画像から、複数の該部品に関係する該表示の画像を認識する画像処理ステップと、
複数の部品が有する該表示とプログラムの命令とを対応付けて登録する命令テーブルを参照して、該画像処理ステップで認識された該部品の該表示の画像に対応する命令コードを特定するステップと、
該特定された該複数の命令コードを整列させて、プログラムを生成するプログラム作成処理ステップと、
該プログラム作成処理ステップにより作成されたプログラムを記憶手段に記憶するステップと、
を含む処理をコンピュータに実行させるプログラム作成支援用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム作成支援システム及びその方法並びにそのプログラムに係り、特にプログラミング学習に好適なプログラム作成の支援技術に関するものである。
【背景技術】
【０００２】
ＡＩ（人工知能）や情報技術（ＩＴ）の更なる発展に伴い、ＩＴ技術者の不足が予想され、プログラミング人材育成の重要性が叫ばれている。プログラミング人材育成ための対応の１つとして、我が国では、文部科学省が子供向けのプログラミング教育の重要性を提唱し、２０２０年から小学校でプログラミング教育が必須となった。既に、子供向けのプログラミング教育のシステムや教育治具、玩具等がいろいろと提案されており、なかには実用化されているものもある。
【０００３】
その一つとして、コンピュータやインターネットを利用した初級者向けのプログラミング教育支援が提唱されている。例えば、特許文献１には、学習者用クライアントと、学習管理者用クライアントと、学習管理サーバを、ネットワークを通して接続して、学習者による課題の解答過程をオンラインでリアルタイムに把握してデータベース化し、記録したデータを基に任意の時間軸で解答過程を再現したりグラフによる可視化を行ったりして、各学習者のプログラミング習熟度を容易にかつ的確に把握できるプログラミング教育支援システムが開示されている。
【０００４】
また、コンピュータを利用した子供向けのプログラミングとして、文部科学省が開発した「プログラミン」（非特許文献１）と称する子供向けのサービスは、表示装置の画面にマウスを操作しながら、複数の絵（ブロック）を組み合わせることでプログラムを組み上げるものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２２７２１８号公報
【非特許文献】
【０００６】
【非特許文献１】文部科学省「プログラミン」２０１３年１０月２２日  http://www.mext.go.jp/programin/
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１に記載の技術は、学習管理サーバが学習者のプログラミング習熟度を容易にかつ的確に把握することを主題としており、如何にして学習者にプログラムを作成させるか、については詳述されていない。
【０００８】
また、非特許文献１で紹介されているプログラミングは画面上で操作するため、パソコン（ＰＣ）等の使用が前提となる。学校の授業でプログラミング学習を行うとなると、生徒数に応じたＰＣが必要となるので相当の費用がかかり、更に生徒はＰＣの画面を操作するための基本的な操作を習得する必要がある。  
そこで、余り費用がかからず、とりわけ子供が簡便にプログラムの作成を学習することができる仕組みないし教育具が望まれる。
【０００９】
本発明の目的は、簡便な手法によってプログラムの作成ができるプログラム作成支援システム及びその方法並びにそのプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明に係るプログラム作成支援システムは、好ましくは、コンピュータを用いて、プログラムの作成を支援するプログラム作成支援システムであって、
複数の各物品が有する視認特性とプログラムの命令とを対応付けて登録する命令テーブルと、
プログラムの作成に際して並べられた複数の物品の配列を撮影するカメラと、
該カメラで取得された該物品の配列の画像から、複数の該物品に関係する該視認特性の画像を認識する画像処理部と、
前記命令テーブルを参照して、該画像処理部で認識された該物品の該視認特性の画像に対応する命令を特定して、該特定された該複数の命令から構成されるプログラムを生成するプログラム作成処理部と、を有することを特徴とするプログラム作成支援システム、として構成される。
【００１１】
本発明に係るプログラム作成支援方法は、好ましくは、コンピュータを用いて、プログラムの作成を支援するプログラム作成支援方法であって、
固有の表示を有する複数の各部品の表示とプログラムの命令とを対応付けて登録する命令テーブルを記憶手段に用意するステップと、
プログラムの作成に際して並べられた複数の部品の配列であって、カメラで取得された該部品の配列の画像から、複数の該部品に関係する該表示の画像を認識する画像処理ステップと、
前記命令テーブルを参照して、該画像処理ステップで認識された該部品の該表示の画像に対応する命令を特定して、該特定された該複数の命令から構成されるプログラムを生成するプログラム作成処理ステップと、
該プログラム作成処理ステップにより作成されたプログラムを記憶手段に記憶するステップと、を有することを特徴とするプログラム作成支援方法、として構成される。
【００１２】
本発明はまた、上記プログラム作成支援方法をコンピュータに実行させるプログラム作成支援用プログラムとして把握される。
【発明の効果】
【００１３】
本発明によれば、簡便な手法によってプログラムの作成が可能となる。
【図面の簡単な説明】
【００１４】
【図１】一実施例によるプログラム作成支援システムの構成を示す図である。
【図２】携帯端末の構成例を示す図である。
【図３】プログラムシートの例を示す図である。
【図４】プログラムの作成に用いられるチップの例を示す図である。
【図５】プログラム命令の例を示す図である。
【図６】プログラム命令の例を示す図である。
【図７Ａ】プログラム作成におけるチップの配列例を示す図である。
【図７Ｂ】プログラム作成におけるチップの配列例を示す図である。
【図７Ｃ】プログラム作成におけるチップの配列例を示す図である。
【図８】カリキュラム管理テーブルの構成例を示す図である。
【図９】ユーザ管理テーブルの構成例を示す図である。
【図１０】先生管理テーブルの構成例を示す図である。
【図１１】プログラム管理テーブルの構成例を示す図である。
【図１２】プログラム作成の概略的な動作を示すフローチャートである。
【図１３】プログラム作成の処理動作を示すフローチャートである。
【図１４】プログラム作成の処理動作を示すフローチャートである。
【図１５】携帯端末の画面表示の例を示す図である。
【図１６】プログラム作成支援システムの接続構成を示す図である。
【図１７】他の例によるプログラム作成の概略的な動作を示すフローチャートである。
【発明を実施するための形態】
【００１５】
本発明の好ましい例は、コンピュータを用いたプログラム作成支援システムにより実現される。予め命令の定義された、絵柄の描かれた複数のチップと、チップを並べる所定のシートが用意される。ユーザは、目的に従って複数のチップを選択的にシート上に並べる。このチップの配列を、スマートファンのような携帯端末が備えるカメラで撮影する。プログラム作成支援システムにおける処理装置（例えばサーバ）が、カメラで取得されたチップの配列の画像から各チップの絵柄の画像を認識してプログラムを構成する命令コードを特定し、命令コードの配列からプログラムデータを作成する。作成されたプログラムデータは携帯端末へ送信されて実行される。プログラムの実行は例えば携帯端末の表示部の画面にキャラクタの動画として表示される。
【００１６】
好ましい例によれば、ユーザが多数の生徒から成る学校の授業において、先生が所持する１台の携帯端末があればプログラム作成の授業が可能となる。即ち、各生徒がチップの配列を終了する度に、携帯端末のカメラでチップの配列を順次撮影して、その画像をサーバへ送信して、サーバでプログラムを作成する。そして、プログラムの実行はその都度、携帯端末の画面で動画として見ることができるので、生徒ごとにプログラムの出来ばえがわかる。
【００１７】
本発明の好ましい例によれば、ユーザが１人でＰＣの画面を操作しながらプログラムを作成するという作業に比べて、シート上にチップを並べるという簡単な作業によってプログラムの作成することができる。そのため、プログラムの作成手順の習得が容易であり、プログラムの作成を教える先生も生徒も過度の負担が少ない。また、ユーザ１人１人にＰＣを用意する必要がないので多人数が同時に学習する場面に向いている。また、ユーザ毎にチップとシートのセットを用意することで対応できるので、低コストで実現できる。
【実施例１】
【００１８】
以下、図面を参照して、本発明の一実施例について詳細に説明する。
【００１９】
図１は、プログラム作成支援システムの全体構成例を示す。  
プログラム作成支援システムは、プログラムの作成を支援するサーバ１と、ユーザが使用する複数の携帯端末２とが、通信ネットワーク９を介して接続して構成される。
【００２０】
サーバ１は、利用者の情報を管理し、携帯端末との間でデータ通信し、プログラムを作成し実行する等、の種々のデータ処理を行うコンピュータである。その機能及び処理の詳細については後述する。なお、サーバ１のハードウェア構成は図示していないが、プログラムを実行する処理装置（プロセッサ）、メモリ、ハードディスクのような外部記憶装置、入力器、表示器等のハードウェア資源を有する。
【００２１】
プログラムの作成を支援するために、サーバ１は、携帯端末２のユーザや作業者の情報を登録する情報登録部１０２と、プログラムを作成するプログラム作成処理部１０３と、プログラムの作成に際してチップの画像を認識する画像処理部１０４を有する。また、データベース（ＤＢ）として、ユーザの情報やプログラミング学習の利用に関する種々の管理情報を登録する管理情報ＤＢ１０５と、プログラム作成に関する情報を記憶するプログラムＤＢ１０６を有する。これらの処理部及びＤＢの構成や機能については後で詳述する。なお図示の例では、管理情報ＤＢ１０５とプログラムＤＢ１０６とを別のＤＢとして構成しているが、これらは１つのＤＢで構成してもよい。
【００２２】
サーバ１はプログラム作成支援のためのサイトを有しており、携帯端末２からこのサイトに接続することで、プログラム作成支援を受けることができる。
携帯端末２は、例えばスマートフォン（以下単にスマホという）のような端末である。携帯端末２のハードウェア構成については、図２を参照して後述する。
【００２３】
図２は、携帯端末２のハードウェア構成を示す。  
携帯端末２は、例えばスマートフォン（以下単にスマホという）のような携帯端末であり、種々のアプリケーションプログラム等を実行するプロセッサ（ＣＰＵ）２０２と、データやプログラムを格納するメモリ２０３と、画面タッチ式の入力部２０４と、画面を表示する表示部２０５と、撮影機能であるカメラ２０６と、二次元バーコードを読み取るバーコードリーダ２０７と、ネットワーク９を通してサーバ１とデータ通信を行うネットワーク接続部２０８とを有する。スマホはインターネットを通して多くのサイトと接続することができて、ユーザが希望するアプリケーションがＣＰＵ２０２で実行される。また、スマホは上記以外に例えば音声入出力機能を始め種々の機能を有している。
【００２４】
［プログラムシート及びチップ］
図３は、プログラムシートの例を示す。  
プログラムシート（以下単にシートという）３０は、プログラムの作成に用いられる、例えばＡ４サイズの用紙である。学校の授業では、予め印刷されたシート３０を先生が各生徒に配布する。シート３０は普通の紙製というよりも、生徒が何回も使用できて、チップの配置に耐えられるように、プラスチック製が好ましい。
【００２５】
シート３０の中央の広いスペースにはプログラムエリア３０２が確保される。シート３０の上端にはタイトル３０１が印刷され、右上端には二次元バーコードを含む識別部３０５が印刷されている。タイトル３０１は例えばカリキュラムの名称である。識別部３０５の二次元バーコードはカリキュラムを識別するための識別情報を含んでいる。
【００２６】
プログラムエリア３０２には、複数の縦線と横線によりマトリクス状の罫線が印刷され、更にその左上端には、「スタート」マーク３０３が印刷され、そこから下へ向かって太い縦線のガイドライン３０４が印刷されている。マトリックス線やガイドライン３０４はチップを配列する案内となる。マトリクス状の縦線と横線はチップ絵柄の画像処理においてＸ／Ｙ座標となる。シート３０の原情報は画像としてプログラムＤＢ１０６に記憶されている。
【００２７】
作業者である生徒は、ガイドライン３０４に沿って上から下へ向かってチップを配置していく。またある時は、マトリックス線に沿って左から右へチップを配置していく。図７Ａから図７Ｃに、シート３０に複数のチップ４０を配置した例を示す。
【００２８】
図４は、プログラムの作成に用いられるチップの例を示す。  
チップ４０は、プログラムの命令が定義付けられた表示子である。例えば、命令の動作を絵柄で表現（印刷）した、縦２ｃｍ×横５ｃｍほどのプラスチック製矩形片である。それぞれの絵柄は命令ごとに相違する。チップ４０は、シート３０上に容易に固定できて容易に剥がれるように、その裏面に簡易的な粘着材が形成されているのが好ましい。なお、チップ４０の絵柄の原情報は画像としてプログラムＤＢ１０６に記憶されている。
【００２９】
図４には１７種類のチップの例が示されているが、命令の種類に応じてチップを更に増やすことができる。配布用の複数のチップ４０をチップセットということにする。シート３０やチップセット４０は、ユーザからの要求に応じてユーザへ販売、発送される。なお、携帯端末２からの要求に応じて、指定されたプリンタにシート３０やチップセット４０を印刷するサービスとすることもできる。
【００３０】
［プログラム命令の例］
図５は、プログラム命令の例（命令リスト）を示す。  
プログラム命令は、表示・動きを表す９つの命令と、制御文を表す２つの命令と、入出力を表す４つの命令と、パラメータ即ち１から９までの数値を表す命令と、その他の４つの命令から構成される。
【００３１】
各チップと命令は一意に対応しており、チップの絵柄と、命令の名称、命令動作、パラメータの関係は図示の通りである。備考は参考的な説明を表す。例えば、「表示・動き」命令において、右向きの絵（図５の一番目にある「動く:方向付き」命令）は、「指定された方向へ移動」を表す命令であり、この矢印が右へ向いているときは右へ移動、左を向いているときは左へ移動、を表す。パラメータは表示・動き命令の回数や向き、番号等を表す。命令との関係において、パラメータの指定が可能な命令についてパラメータの設定を可能とする。例えば、「動く:方向付き」命令はパラメータの回数設定が可能であるが、「拾う」命令はパラメータの設定ができない。
【００３２】
図６に例示するように、右向きの絵「動く：方向付き」命令で、パラメータが「３」のときは、「右へ３回動く」を意味する。ここで、ある命令を表す１つのチップ４０１の配列は必須であり、パラメータ４０２の配列は任意である。パラメータ４０２は命令の種類やその実行レベルに応じて変わる。
【００３３】
なお、「その他」の命令において、「ＳＴＡＲＴ」の命令は、シート３０に「スタート」が印刷されている場合は使用されない。「ＥＮＤ」の命令は、チップ配列の最後に配置される。演算子や条件文の命令は用意されているが、カリキュラムの内容によっては使用されない場合がある。
【００３４】
これら命令の、チップの絵柄（即ち絵柄の画像）と、動作等を示す名称と、動作の関係は、対応表である命令テーブル（符号５０で示す）に定義されてプログラムＤＢ１０６に記憶されている。ここで、命令テーブル５０の画面表示の例は図５のようになるが、プログラムＤＢ１０６に保管される命令テーブル５０には、絵柄の画像に対応した固有のコードデータ（命令コード）が含まれる。
【００３５】
一例では、カリキュラムに応じてこの命令テーブル５０から複数の命令（命令セットという）が選択される。また、新たなチップの絵柄や新たな命令を規定した場合や、既定の絵柄を削除又は変更したい場合には、命令テーブル５０の内容を変更することができる。それは、サーバ１が有する入力器（図示せず）又は携帯端末２からの管理者の入力指示によって、命令テーブル５０におけるチップの絵柄と命令との対応関係を変更することができる。
【００３６】
［各種のテーブルの説明］
次に、図８乃至図１１を参照して、プログラム作成支援のために使用される各種のテーブルの構成について説明する。各テーブル８０〜１１０は、管理情報ＤＢ１０５に記憶される。
【００３７】
図８は、カリキュラム管理テーブルの構成例を示す。  
カリキュラム管理テーブル８０は、ユーザに提供するプログラム作成のカリキュラムを管理するテーブルである。ここで、カリキュラムとはユーザがプログラミングするための問題或いは課題と言ってもよい。カリキュラムと、カリキュラムに対応する具体的な問題内容と、当該カリキュラムにおいて使用されるシートとは関連付けられている。これについては、図１５を参照して後述する。
【００３８】
カリキュラム管理テーブル８０は、カリキュラムを識別するカリキュラム番号と、当該カリキュラムによるアプリケーションを実行するアドレスと、当該アプリケーションにおいて使用されるキャラクタを表すキャラクタセットと、命令テーブル５０から選択された、当該カリキュラムで使用する全ての命令の参照番号（命令テーブル５０の参照番号）とを登録する。ここで、アプリケーションとは、カリキュラムの選択から始まって、携帯端末１からシート及びチップ配列の画像を取り込む処理、及びプログラムの作成処理に至る一連の処理を行うプログラムである。キャラクタとは、プログラムの実行において動画として使用される登場者であり例えばウサギや亀の画像、有名なアニメの画像である。
【００３９】
また、当該カリキュラムで使用する全ての命令の参照番号を命令セットに登録する理由はプログラム作成処理を速くするためである。即ち、プログラム作成処理に際して、命令テーブル５０を参照しながらチップ配列の画像から個々のチップの画像を認識する処理を行うが、このときに命令テーブル５０に登録された全てのチップ画像をスキャンすると多大な時間がかかる。これに対して、命令セットに登録された参照番号に対応する命令を対象にスキャンすれば、画像の認識にかかる時間は大幅に短くなる。
【００４０】
図９は、ユーザ管理テーブルの構成例を示す。  
ユーザ管理テーブル９０は、プログラムを作成するユーザの情報を管理するテーブルである。ユーザ管理テーブル９０は、ユーザの識別ＩＤである識別情報と、ユーザの名前と、プログラムデータを記憶しているアドレスを示すプログラムデータ格納先インデックス（ＩＤ）と、カリキュラム識別情報として、カリキュラム管理テーブルから選択されて利用されるカリキュラム番号と、更新日時と、個人情報としてユーザが所有する携帯端末のメールアドレス等、を登録する。カリキュラム識別情報には、過去に利用したカリキュラム番号がログとして逐次登録されていく。この例では、プログラムデータ格納先ＩＤは、作成されたプログラムデータを管理するプログラム管理テーブル１１０のアドレス或いはプログラム管理テーブル１１０を指定する情報を表す。
【００４１】
学校の授業や団体でプログラム学習をする場合には、先生が所持する携帯端末２を用いてサーバ１とデータ通信するので、先生管理テーブル１００が主に使用される。そのため、ユーザとしては、ユーザ管理テーブル９０に生徒を識別するＩＤを含む生徒に関する情報を登録しなくてもよい。これに対して全ての生徒が携帯端末２を有していて、各人が独立してプログラム作成を行う場合にはユーザ管理テーブル９０に全ての生徒のユーザ情報を登録する。
【００４２】
図１０は、先生管理テーブルの構成例を示す。  
先生管理テーブル１００は、学校の授業でプログラム学習をする場合、先生及びクラスを構成する生徒に関する情報を管理するテーブルである。先生管理テーブル１００は、先生を識別する先生ＩＤと、先生の名前と、プログラムデータを記憶しているアドレスを示すプログラムデータ格納先インデックス（ＩＤ）と、カリキュラム識別情報として、カリキュラム管理テーブルから選択されて利用されるカリキュラム番号と、ユーザ識別情報としてクラスの生徒識別ＩＤと、個人情報としての先生が所有する携帯端末のメールアドレス等、を登録する。ユーザ識別情報にはクラスを構成する全ての複数の生徒ＩＤが登録される。カリキュラム識別情報には、過去に利用したカリキュラム番号がログとして逐次登録されていく。
【００４３】
図１１は、プログラム管理テーブルの構成例を示す。  
プログラム管理テーブル１１０は、作成されたプログラムに関する情報を管理するテーブルである。プログラム管理テーブル１１０は、プログラムを作成したユーザ識別ＩＤと、カリキュラム番号と、作成されたプログラムデータと、プログラムの登録日時と、その修正日時と、を登録する。本実施例では、ユーザ識別ＩＤには生徒識別ＩＤが登録されることになる。プログラムデータとは、作成されたプログラムそのものであり、複数行のプログラムステップの場合その行数分が登録される。
【００４４】
［プログラム作成の概略動作］
次に、図１２を参照して、プログラム作成の概略的な動作について説明する。  
この例は、携帯端末２を所持している先生が、複数の生徒に対してプログラミングの授業を行う場合のフローを示している。図中、実線で示すステップは携帯端末又はサーバによる処理動作を表し、点線で示すステップは人間（先生又は生徒）の動作を表す。
【００４５】
まず、先生は携帯端末２を操作してアカウントとパスワードを入力してログインを行う（Ｓ１２０１）。そして、携帯端末２はネットワーク９を介してサーバ１と接続され、本件のプログラム作成のサイトに接続される。すると、携帯端末２にはカリキュラム選択用の画面が表示部２０５に表示される。先生は、表示された画面から目的のカリキュラムを選択する（Ｓ１２０２）。
【００４６】
ここで、カリキュラムの選択からシート３０の用意までの動作について説明する。カリキュラムの選択は、図１５（Ａ）に示すような、カリキュラム一覧表の画面が携帯端末２の表示部２０５に表示される。先生は、表示されたカリキュラム一覧表から目的とするカリキュラム（問題）を選択する。すると、図１５（Ｂ）に示すように、選択された問題の詳細を表す画面が表示される。先生は問題の詳細内容を確認して了解ならば、その画面の下にある「シート」を選択する。すると、図１５（Ｃ）に示すような、当該カリキュラムに対応したシートが印刷される。シートの印刷は予め指定されたプリンタを用いて行うことができる。なお、学校の授業でプログラミングを行う場合には、授業内容を予め理解しておく必要があるので、ここまでの動作を予め完了しておき、シートを事前に準備することができる。
【００４７】
なお、図１５（Ａ）〜（Ｃ）に示すような、画面の情報は管理情報ＤＢ１０５に記憶されていて、携帯端末２の入力指示に応じて携帯端末２へ送信されて表示される。
【００４８】
実際のプログラミンングの授業に際して、先生は、用意されたシート３０とチップセット４０を複数の生徒に配布して（Ｓ１２０３）、プログラミングの出題をする（Ｓ１２０４）。出題とは、図１５（Ｂ）に示された問題を説明することである。例えば、カリキュラムの「トレーニング１」に対応する設題「りんごをテーブルに置いて部屋から出ましょう」のような題目である。少し高度な出題（例えば「入門３」）としては、諸動作を一つ一つ言わずに「ウサギさんとカメさんが競争する運動会」というような設題もあり得る。
【００４９】
生徒は、プログラミング即ち、配布されたシート３０上にチップ４０を配列する作業を行う（Ｓ１２１１）。チップ４０の配列作業の結果、例えば図７Ａ〜図７Ｃのように、シート３０上にチップが配列される。実験例によれば、図７Ａ〜図７Ｃは、問題「りんごをテーブルに置いて部屋から出ましょう」について、複数の異なるチップの配列によって解答した例である。
【００５０】
シート３０上におけるチップ４０の配列作業が終了すると、先生は携帯端末２のカメラ２０６で作業済みのチップ配列シート４０を撮影して、その撮影した画像をサーバ１へ送信する（Ｓ１２０５）。
【００５１】
サーバ１では、受信した画像を基にプログラム作成処理を行う（Ｓ１２０６）。この処理については後で詳述する。サーバ１で作成されたプログラムは携帯端末２で実行される（Ｓ１２０７）。
【００５２】
［プログラム作成処理］
次に、図１３及び図１４を参照して、プログラムの作成処理について説明する。
【００５３】
図１３は、プログラムの作成処理の全体のフローチャートを示す。  
この処理に先立って、先生の携帯端末２からサーバ１が運営するサイトをアクセスして、ユーザ管理テーブル９０にはユーザ（生徒）の名前等を含む個人情報が登録されている。また、先生管理テーブル１００には、先生の名前や携帯端末２のメールアドレス、及びプログラミング授業に関わるクラスの生徒（ユーザ）の識別ＩＤが登録されている。
【００５４】
更に、図１２のカリキュラム選択処理（Ｓ１２０２）により、カリユラム選択画面（図１５）を用いてカリキュラムを選択して、カリキュラム管理テーブル８０から選択されたカリキュラム番号が、先生管理テーブル１００に登録される。なお、本例の処理では、生徒個人毎に異なるカリキュラムを選択しないので、ユーザ管理テーブル９０には選択されてカリキュラム番号を登録する必要がない。
【００５５】
また、図１２に示すように、シート３０と、選択されたカリキュラム番号に対応するチップセットが複数の生徒に配布され、プログラミング授業において生徒はシート３０上にチップ４０を配列する作業を完了した、とする。
【００５６】
ここで、図７Ａ〜図７Ｃを参照して、チップの配列の例について説明しておきたい。
このチップ配列の例は、問題「りんごをテーブルに置き部屋から出ましょう」に対して、３人の生徒がそれぞれ別のチップ配列を行った例である。図７Ａ〜図７Ｃの何れも同じ動作を行い、正解となる。因みに、図示のチップの配列に基づくプログラム命令による動作は、以下の通りになる。
・右に２歩
・下に３歩
・拾う
・左に２歩
・置く
・下に２歩
・扉を開ける。
【００５７】
説明を図１３に戻す。先生は、携帯端末２を操作してログインを行う（Ｓ１３０１）。この場合、サーバ１の情報管理部１０２は、先生管理テーブル１００を参照して、先生識別ＩＤを確認し、もしカリキュラム番号が登録されていない場合には、携帯端末１の表示部に、カリキュラムの選択を促す画面を表示して、図１２に基づく画面から上記のような処理を行わせる。そして、情報管理部１０２は、先生管理テーブル１００に登録されたカリユラム番号を基にカリユラム管理テーブル８０を参照して、カリユラム管理テーブル８０に登録されているアプリケーションを起動する。アプリケーションが起動されると、選択されたカリキュラム番号を登録したカリユラム管理テーブル８０の情報が携帯端末２のメモリに取り込まれて記憶される。
【００５８】
先生は、携帯端末２のバーコードリーダ２０７を用いてシート２の識別部３０５を読ませる。更に、カメラ２０６を用いてチップ４０が配列されたシート（チップ配列シート）３０を撮影する。識別部３０５の情報及びチップ配列シートの撮影された画像（チップ配列シート画像）は一時、メモリ２０３に格納される（Ｓ１３０３）。チップ配列シート画像をメモリ２０３に登録する場合、当該画像が特定のユーザ（生徒）によって作成された旨を表示するために、先生は入力部２０４からユーザ識別ＩＤ（この場合、生徒識別ＩＤ）を入力する。チップ配列シート画像にはユーザ識別ＩＤが付与されてメモリ２０３に格納される。
【００５９】
識別部３０５からの情報にはカリキュラムを識別する情報が含まれており、ＣＰＵ２０２がその識別情報とカリユラム管理テーブル８０に登録されたカリキュラム番号と比較する。比較の結果、両者が一致すると、使用されたシート３０が正しいと判断して、その後の処理を継続させる。一方、比較の結果正しくないと判断すると、ＣＰＵ２０２は表示部２０５にその旨を表示して、シート３０及びカリキュラム番号の確認を促す。
【００６０】
カリキュラム番号に対応した正規のシート３０が使用された場合、ＣＰＵ２０２はネットワーク接続部２０８を介して、チップ配列シート画像をサーバ１へ送信する（Ｓ１３０３）。チップ配列シート画像のサーバ１への送信は、生徒ごとのチップ配列シート画像を取得する度に行ってもよいし、複数の生徒のチップ配列シート画像がメモリ２０３に蓄積された時に行ってもよい。チップ配列シート画像には、先生識別ＩＤ、カリキュラム番号及びユーザ識別ＩＤ（この例では生徒識別ＩＤ）が付与されてサーバ１へ送信される。
【００６１】
サーバ１がチップ配列シート画像を受信すると、情報管理部１０２は、送信元のアドレスが先生管理テーブル１００に登録されたメールアドレスかを確認する。更に、受信したチップ配列シート画像に付与された生徒識別ＩＤ及び先生識別ＩＤを取得して、先生管理テーブル１００に登録されたものかを確認する。この確認の結果正しければ、画像処理及びプログラム作成処理に移る。（なお、ユーザ個人が自らの携帯端末からチップ配列シート画像をサーバへ送信する場合には、情報管理部１０２はユーザ管理テーブル９０を参照して、正規に登録されたメールアドレスかを確認することになる。）
プログラム作成処理に際して、まず画像処理部１０４が、取得した上記画像からチップの有する絵柄の画像を認識する処理を行う（Ｓ１３０４）。その後、プログラム作成処理部１０３が、認識結果に基づいてプログラムの生成処理を行う（Ｓ１３０５）。これらの処理については、図１４を参照して後述する。
【００６２】
プログラム作成処理部１０３で作成されたプログラムデータは、情報管理部１０２の処理に従って、プログラム管理テーブル１１０に格納される。即ち、プログラム管理テーブル１１０において、「ユーザＩＤ」には当該プログラムを作成したユーザである生徒ＩＤが、「カリキュラム番号」には先生管理テーブル１００に登録されたカリキュラム番号が、「プログラム」には作成されたプログラムデータが、「プログラムの登録日時」にはプログラムを格納した日時が、それぞれ登録される。
【００６３】
その後、プログラム管理テーブル１１０に登録されたプログラムを実行することができる（Ｓ１３０７）。一例では、プログラムの実行はその前段にプログラムのテスト及びその確認の処理を含んでいる。それは、チップ４０の配列において、制御文のチップやパラメータのチップが所定の規則に従って配列されていないとか、「ＥＮＤ」が無い等の場合があり、これらはプログラムの実行上エラーとしなければならないからである。テスト及び確認の処理においてそのようなエラーが発見されると、プログラムデータの修正作業に移る。
【００６４】
すなわち、プログラムのテスト及び確認のために、プログラム管理テーブル１１０に格納されたプログラムデータはネットワーク９を介して、送信元の携帯端末２へ送信され、ＣＰＵ２０２で実行される。ＣＰＵ２０２によるプログラムの実行は、例えばカリキュラム管理テーブル８０に登録されたキャラクタの動画として、表示部２０５に表示される。先生は、表示部２０５に表示される動画を見て、当初設定した「問題」とカメラで取得されたチップ配列シート画像におけるチップ配列を基に、表示された動画が正しいか、を判断する。その結果、正しくないと判断した場合には、そのプログラムを作成した生徒に対して口頭でプログラミングの修正を指示する。併せて、入力部２０４より当該プログラムの修正を指示すると、その指示はサーバ１へ送信されて、プログラム管理テーブル１１０に修正中のフラグ（図示せず）が記憶される。生徒によるプログラミングの修正が終わると、上述した動作と同様にして、修正されたチップ配列シート画像がサーバ１へ送信される。この場合、同様にして、プログラム管理テーブル１１０に修正された（修正版）プログラムデータが格納される。併せてプログラム管理テーブル１１０の修正日時が登録される。
【００６５】
修正版プログラムは、上記と同様にして、先生が所持する携帯端末２で実行される。その結果、エラーが無ければ、その旨がサーバ１へ送信されて、プログラム完成を示すフラグ（図示せず）がプログラム管理テーブル１１０に登録される。  
なお、完成後のプログラムの実行の例については、図１６を参照して後述する。
【００６６】
次に、図１４のフローチャートを参照して、画像処理（Ｓ１３０４）と、プログラム作成処理（Ｓ１３０４）を詳しく説明する。
【００６７】
画像処理（Ｓ１３０４）は、チップ配列シート画像から、個々のチップ４０に描かれた絵柄の画像を認識して切り出す処理である。カメラ２０６で撮影された画像が傾いていることがあるので、まず、画像補正（Ｓ１４０１）の処理において、シート３０の画像を基に画像の傾きを補正する。例えば、縦軸（Ｙ軸）対してシート３０のガイドライン３０４がある角度θ傾いていると判断したら、取得した画像全体を角度θ回転させて縦軸とガイドライン３０４を合せる。
【００６８】
次に、画像パターマッチング（Ｓ１４０２）において、命令テーブル５０を参照しながら、チップ配列を構成する各チップ４０が有する絵柄の画像が、命令テーブル５０に登録された絵柄と一致するかを判断する。この処理により、命令テーブル５０に登録された絵柄の画像に対応するコードデータが選択される。仮にもし、シート３０上に消しゴムやごみ等があっても、それらの画像は選択されない（除外される）。画像パターンマッチングにおいては、取得されたチップ配列画像について、命令テーブル５０に登録された全ての画像と比較することは行わず、カリユラム管理テーブル８０に当初登録された命令参照番号に対応するチップ画像のみを対象として比較することで、処理時間の高速化を図っている。画像パターンマッチングの結果出力されるコードデータ（命令コード）には、当該絵柄画像が認識された場所の座標情報（シート３０上のＸ／Ｙ座標情報）が付加される。
【００６９】
プログラム作成処理（Ｓ１３０４）おいては、上記画像処理により特定された絵柄の画像に対応する命令コードを整列させる（Ｓ１４０３）。命令コードを整列する理由は、パターンマッチングで認識された絵柄の画像は命令コードには変換されたが、その配列は未だチップ３０が配列された状態のままであるため、命令コードを並び直して整列させるためである。この整列は、命令コードに付加された座標情報を基に例えばＹ座標を基準として揃える。更にプログラムの生成に際して、命令テーブル５０を参照して命令コードの並び方が正しいかを確認する。例えば、上記画像処理の結果、「動く」の命令コードの右隣りにパラメータ「回数」の命令コードが並ぶ場合は正しいが、「拾う」や「置く」の命令コードの右隣りにパラメータ「回数」が並ぶ場合は、命令テーブル５０で許可していないので正しくないと判断する。並び方が正しくない場合、一例ではそのパラメータを無視する。また、命令コードに対するパラメータの並び方が正しい場合であっても、パラメータの命令コードが許容範囲を超えて右側にずれている場合には、その命令コードを左側に移動させて、例えば「動く」命令コードの右隣りに整列させる。
【００７０】
命令コードの整列及び確認が終了すると、整列された命令コードの順にプログラムコード化してプログラムデータを生成する（Ｓ１４０４）。作成されたプログラムのデータは、プログラム管理テーブル１１０の「プログラム」エリアに格納される。プログラム管理テーブル１１０には、ユーザ識別ＩＤ、カリキュラム番号、プログラム登録日時も併せて登録される。
【００７１】
上記の処理動作によりチップ４０の絵柄の配列に基づくプログラムが作成される。例えば、図７Ａから図７Ｃに示すように、同じ設題でありながらチップの配列が異なると、命令コードの配列も異なるので、プログラムとしては別のものとなる。然し、プログラムの実行によって表示部２０５の画面に表示されるキャラクタの動作は同じになる。
【００７２】
［プログラムの実行］
実施例１では、作成されたプログラムは、先生が所持する携帯端末２のＣＰＵ２０２で実行される。プログラムの実行は、キャラクタの動作を伴う動画として表示部２０５の画面に表示される、とした。しかし、これに限らず、プログラムは種々の機器で実行される。
【００７３】
図１６は、プログラム作成支援システムにおいてサーバ１に接続される機器（接続機器という）を示す。例えば、サーバ１にはネットワーク９を介して、スクリーンに動画や映像を投影するプロジェクタや大型表示装置１５１、音響機器１５２、ロボットやミニカー等の動作機器１５３、を含む機器が接続される。
【００７４】
プログラムが実行される接続機器は１つの限らず、複数の機器で可能である。例えば、図５に示す命令リストの入出力命令の中から「音を鳴らす」が用いられる場合、表示装置１５１にキャラクタの動作が表示され、さらに音響機器１５２から音声が発生される。他の例として、音声を発するロボットを使用する場合、図５に示す命令リストの入出力命令の中から、「音を鳴らす」と「接続機器を制御」が用いられると、指定された先のロボットがプログラムの実行通りに動作し、かつロボットが備えるスピーカから音声が発せられる。
【００７５】
接続機器はインターネットに接続可能な、ＩＰアドレスを有する全ての機器が対象となり得る。接続機器の管理は、サーバ１の管理情報ＤＢ１０５に、接続可能な機器のＩＰアドレス又はＵＲＬを登録する接続機器管理テーブルを用意しておき、接続機器管理テーブルを参照して出力先の接続機器を選択することで、プログラムが実行される機器への接続が可能である。接続機器の選択は、予め決めておいてもよいし、プログラムの完成した後に先生が所持する携帯端末２又は他の携帯端末から選択することができる。
【００７６】
［視覚障害者向けのプログラム作成支援システム］
上記実施例１は視覚正常者によるプログラム作成を前提としているが、本発明は視覚障害者がプログラム作成を行う場合にも有用である。その一例をあげれば、視覚障害者のためにシート３０及び各チップ４０には点字が施される。即ち、シート３０のマトリックス線やガイドライン３０４、及びタイトル３０１や「スタート」マーク３０３は、上記した印刷の他に点字が形成される。また、各チップ４０の所定の位置には上記した絵柄の他にチップの「名称」を表す点字が施される。さらに、命令テーブル５０には、図５に示す構成に加えて、各チップの「名称」に対応して音符データが登録される。
【００７７】
ユーザはシート３０及び各チップ４０の点字を頼りにして、シート３０上にチップ４０を並べてプログラミングする。チップ配列シート画像をカメラで取得してからプログラムデータの生成までの動作は上記実施例１と同様である。プログラムの実行においては、携帯端末２の表示機能と音声出力機能を有効にして、或いは図１６に示す音響機器１５２に接続して、プログラムを実行させることができる。プログラムの実行において、複数チップの配列の状態は音符による音の変化として出力されるので、視覚障害者はその音の変化を基にプログラムの出来ばえを把握することができる。
【００７８】
［他の例によるプログラム作成支援システム］
実施例１によるプログラム作成支援システムは、プログラム作成処理部１０３、画像処理部１０４、及び関連するテーブルや情報を記憶する管理情報ＤＢ１０５、プログラムＤＢ１０６を全てサーバ１が有する。しかし、他の例によるプログラム作成支援システムは、これらの処理機能やＤＢの全部又は一部を携帯端末２に持たせることができる。
【００７９】
例えば、全ての処理機能及び関連するテーブルや情報を携帯端末２に持たせる場合、最初にプログラミング作成のサービスを行うサイト（例えばサーバ１が運営するサイト）にアクセスして、関係するアプリケーション（プログラム作成機能や関連する管理情報）をダウンロードして、携帯端末２に保持させる。あとは、上記実施例と同様にしてプログラムを作成することができる。この場合、シート３０やチップ４０は携帯端末２からの印刷指示により指定したプリンタで印刷して作成することができる。図１３及び図１４に示す処理は、携帯端末２が有するＣＰＵ２０２においてプログラムで実行される。
【００８０】
［他の例によるプログラム作成の概略動作］
実施例１では、図１２に示すように、先生が所持する携帯端末２を使用して、生徒が作成したシート３０上のチップ４０の配列を撮影するとした。しかし、プログラムの学習は学校の授業のみで行なわれるわけはなく、ユーザが自ら１人で行うこともできる。この場合、ユーザが携帯端末を所持していて、自分でログイン動作等の基本的な操作ができることが好ましい。
【００８１】
図１７に示すように、ユーザは自ら携帯端末を用いてログインし（Ｓ１２０１）、カリキュラム選択（Ｓ１２０２）、シート及びチップセットの準備をして、プログラミングする（Ｓ１２１１´）。この場合、先生管理テーブル１００は使用されずに、ユーザ管理テーブル９０が使用される。それ以外の主な処理動作は実施例１と同様である。
【００８２】
また、このプログラム作成支援システムは、プログラム作成の学習以外にも、プログラムを作成するゲーム装置や、プログラムによる制御装置や玩具の制御のためのプログラム作成、等にも適用可能である。
【００８３】
［他の例によるプログラム作成支援処理フロー］
実施例１では、図１３を参照する処理フローにおいて、画像の取込み、送信（Ｓ１３０３）からプログラムの作成処理（Ｓ１３０５）、プログラムの実行（Ｓ１３０７）、を一連の処理として行うように説明した。しかし他の例によれば、これらの処理ステップを複数に分けてそれぞれ別のタイミングで行うことも可能である。例えば、学校の授業において、第１回目では、シート３０上にチップ４０を並べるまでを学習させ、複数の生徒がそれぞれ作成したチップ配列をカメラ２０６で撮影して、複数のチップ配列シート画像をメモリ２０３に格納するまでとし、第２回目でメモリ２０３に格納されたチップ配列シート画像をサーバ１へ送信して、サーバでプログラム作成処理して、作成されたプログラムを携帯端末２へ送信させてメモリ２０３に格納して、１人の生徒のプログラムをテスト実行させるまでとし、３回目で残りの生徒の作成したプログラムをテスト実行させて、その後、プログラムの修正作業をさせる等、複数回に分けて実施することが可能である。特に学校の授業では、全体の生徒の進捗を見ながら進めることが重要なので、上記のように、プログラムの作成過程を幾つかに分けて進めることが有意義である。
【００８４】
［他の例による管理テーブル］
実施例１では、カリキュラム管理テーブル８０には当該カリキュラムで使用される全ての命令の参照番号（図５の命令テーブル５０から選択された命令の参照番号）が登録されるとした。他の例においては、命令テーブル５０から選択された命令の、チップの画像、名称、動作、パラメータ、及び命令コードの各データを登録するようにしてもよい。さらに、携帯端末２にプログラム作成支援のためのアプリケーションをサーバ１からダウンロードしておくことで、チップ配列画像を基にプログラムを作成する処理を携帯端末２のＣＰＵ２０２で行える。
【００８５】
更に他の例として、ユーザの要求に応じて、命令テーブル５０から選択された複数の命令と、シート３０と、チップ４０を提供して、最終的にユーザによるプログラムの作成を支援するビジネスが考えられる。この場合、カリキュラム管理テーブル８０はユーザ毎の契約管理テーブルとなり、カリキュラム番号はユーザごとの契約識別番号となる。例えば、サーバ１の情報管理部１０２は、上記他の例を踏襲した、選択された命令の、チップの画像、名称、動作、パラメータ、及び命令コードの各データを登録した契約管理テーブルと、ユーザ管理テーブルと、プログラム管理テーブル、及びプログラム作成支援のためのアプリケーションをユーザの携帯端末２へ提供する。携帯端末２では、取得されたチップ配列画像を基にＣＰＵ２０２で、図１３及び図１４に示す処理によりプログラムの作成が行える。
【００８６】
［他の例によるシート］
シート３０は、図３に示したものに限定されない。チップ４０の配列の容易性、簡便性を考慮すれば、プログラムエリア３０２に「スタート」マークや罫線やガイドライン３０４が印刷されている方が好ましいが、代案によれば、それらは必ずしも必要とされない。チップ４０の配列の開始位置や配列方向が分れば、或いはある程度習熟したユーザならば、プログラムエリア３０２に罫線やガイドライン３０４は無くてもよいであろう。また、「スタート」マーク３０３は、「ＳＴＡＲＴ」のチップで代用できる。
【００８７】
また、他の例によれば、シート３０は必ずしも必要としない。要するに、チップ４０の配列の規則に従って開始位置や配列方向、終了位置を明確にして、チップ４０を白紙や机やテーブル上に配列し、その配列をカメラで撮影することで、上記実施例１と同様の作用ないし効果を得ることができる。カメラで取得される画像は、シート無しのチップ配列画像である。例えば、机上にチップを配列する場合、仮に机上に消しゴムや鉛筆等の異物があっても問題はない。それは、カメラで撮影した画像を基にした画像認識の過程において消しゴムや鉛筆の画像は除外されて、チップ固有の画像のみを認識して抽出することができるからである。
【００８８】
また、シートを用いない他の例として、例えば、チップ４０を縦横１〜２ｍ程の四辺形の厚紙カードで作成して、このカードを校庭に並べることでプログラミングして、そのカードの配列を、ドローンに搭載した無線通信機能付きのカメラで高所から撮影することで、チップ配列の画像を取得することも可能である。
【００８９】
［他の例によるチップ］
チップ４０に関する他の例として、チップ４０に施した絵柄や形状、大きさは、図４乃至図５に示したものに限定されない。絵柄に関して言えば、図４に示したような抽象的な絵や文字に限らず、例えば、ウサギが走ったり、回転したり、物を拾うような具体的な絵でもよい。その方が幼児にとっては絵と命令の意味との関係が理解し易いであろう。他の例としてトランプやカルタでもよい。また、チップの形状は四辺形に限らず、種々の形状であってよい。例えばウサギが走ったり、寝たり、飛んだりする絵を切り抜いた形状でもよい。
【００９０】
また、チップ３０の呼び名に関して上記実施例ではチップ３０と言ったが、これに限らない。例えば、カード、パーツ（part）、ピース（piece）、小片、紙片、エレメント（element）、総称して部品とか物品と呼んでもよい。
【００９１】
チップは、配列しその後に片付けて収納する都合上平面状カードが好ましいが、必ずしも平面状部材に限らない。要は、配列することができる物品であって、物品が持つ絵柄や形状の特性（視認特性という）と命令とが一意に対応付けられるものであれば実現可能である。なお、視認特性を有する物品を、固有の表示を有する部品と呼んでもよいであろう。
【００９２】
また、上記実施例ではチップ４０の絵柄を画像認識することで命令と関係つけているが、これに限定されない。例えば、各チップ４０に絵柄に加えて固有の数字やバーコードを付しておき、その数字やバーコードを認識することで、命令と対応付けすることも可能である。その場合、図５に示す命令テーブルには数字又はバーコードと命令との関係が登録されることになる。
【００９３】
また、チップ４０に関する他の例として、チップはユーザが自ら作成して使用することが可能である。例えば、ユーザは、図４と同じ形状及び絵柄のチップ４０を手製で又はコピーにより作成してチップの数を増やすことができる。この場合、ユーザが作製したチップの絵柄が予め決められたものと同じ又は許容の範囲であれば、サーバ１の画像処理においてユーザが作成したチップ４０の絵柄も同様の画像として認識するので問題はない。
【００９４】
［その他の代替例］
上記実施例では、携帯端末２が有するバーコードリーダ２０７によって、シート３０の識別部３０５を読み取るとした。代案では、カメラ２０６で識別部３０５を読み取って、画像認識機能により識別部３０５が有する識別情報を認識するようにすることもできる。
【００９５】
また、上記実施例では、携帯端末２が持つカメラ２０６でシートに並べられたチップの配列を撮影するとした。代替例によれば、携帯端末のカメラに限らず、通信機能を有するカメラや、或いは通常のデジタルカメラで撮影したチップ配列の画像をＵＳＢメモリやＳＤメモリに格納しておき、このメモリをプログラム作成用のサーバや端末に装填することでチップ配列の画像を取得することも可能である。  
本発明は上記実施例ないし代替例以外にも、種々変形、応用して実施することができる。
【符号の説明】
【００９６】
１：サーバ              ２：携帯端末                ９：ネットワーク
１０２：情報管理部      １０３：プログラム作成処理部
１０４：画像処理部      １０５：管理情報ＤＢ        １０６：プログラムＤＢ
２０２：ＣＰＵ          ２０３：メモリ              ２０４：入力部
２０５：表示部          ２０６：カメラ              ２０７：バーコードリーダ
２０８：ネットワーク接続部
３０：シート            ３０１：タイトル            ３０２：プログラムエリア
３０３：スタートマーク  ３０４ガイドライン          ３０５：識別部
４０：チップ            ５０：命令テーブル
８０：カリキュラム管理テーブル              ９０：ユーザ管理テーブル
１００：先生管理テーブル                    １１０：プログラム管理テーブル
【図１】
2018136446.tif 000003
【図２】
2018136446.tif 000004
【図３】
2018136446.tif 000005
【図４】
2018136446.tif 000006
【図５】
2018136446.tif 000007
【図６】
2018136446.tif 000008
【図７Ａ】
2018136446.tif 000009
【図７Ｂ】
2018136446.tif 000010
【図７Ｃ】
2018136446.tif 000011
【図８】
2018136446.tif 000012
【図９】
2018136446.tif 000013
【図１０】
2018136446.tif 000014
【図１１】
2018136446.tif 000015
【図１２】
2018136446.tif 000016
【図１３】
2018136446.tif 000017
【図１４】
2018136446.tif 000018
【図１５】
2018136446.tif 000019
【図１６】
2018136446.tif 000020
【図１７】
2018136446.tif 000021
【手続補正書】
【提出日】平成29年10月16日(2017.10.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータを用いて、プログラムの作成を支援するプログラム作成支援システムであって、
絵柄の描かれた平面状の複数のチップと、
前記複数のチップを配列するための案内となるガイドラインと、前記ガイドラインの上部に前記絵柄の１つとしてスタートマークが設けられたシートと、
前記複数のチップが有する前記絵柄の画像とプログラムの命令とを対応付けて登録する命令テーブルと、
前記スタートマークを起点として、前記ガイドラインに沿って前記シート上に並べられた前記複数のチップの配列を撮影するカメラと、
該カメラで取得された前記複数のチップの配列の画像から、前記複数のチップが有する前記絵柄の画像を認識する画像処理部と、
前記命令テーブルを参照して、該画像処理部で認識された前記絵柄の画像に対応する命令を特定して、特定された複数の該命令から構成されるプログラムを生成するプログラム作成処理部と、
を有することを特徴とするプログラム作成支援システム。
【請求項２】
前記シートには、前記ガイドラインに沿う複数の縦線と、複数の横線から構成されるマトリクス線が設けられ、
前記複数のチップは、前記マトリクス線の前記縦線の方向及び前記横線の方向へ配列可能であり、
前記カメラは、前記縦線の方向及び前記横線の方向へ並べられた前記複数のチップの配列を撮影する
ことを特徴とする請求項１のプログラム作成支援システム。
【請求項３】
前記画像処理部は、取得された前記複数のチップの画像の配列が傾いている場合、前記ガイドラインを基に前記複数のチップの画像の傾きを補正し、
前記プログラム作成処理部は、
補正された前記複数のチップの画像について、前記命令テーブルを参照して、前記命令テーブルに登録された画像に対応する命令コードを選択して、複数の命令コードを整列させ、
前記整列された命令コードの順にプログラムデータを生成する
ことを特徴とする請求項１又は２に記載のプログラム作成支援システム。
【請求項４】
前記プログラム作成支援システムは、サーバと、該サーバにネットワークを介して接続する携帯端末とを有して構成され、
前記コンピュータはサーバであり、
該サーバは、前記命令テーブルと、前記画像処理部と、前記プログラム作成処理部を有し、
前記携帯端末は、前記カメラと、入力部と、表示部と、プログラムを実行するプロセッサと、記憶部と、該ネットワークに接続するネットワーク接続部と、を有し、
前記プログラム作成処理部により作成された前記プログラムは該携帯端末へ送信されて、該携帯端末の該プロセッサは受信した前記プログラムを実行し、該表示部は前記プログラムの実行の様子を表示する
ことを特徴とする請求項１乃至３のいずれかの項に記載のプログラム作成支援システム。
【請求項５】
前記プログラム作成支援システムは、サーバにネットワークを介して接続される携帯端末を有して構成され、
前記携帯端末は、前記カメラと、入力部と、表示部と、プログラムを実行するプロセッサと、記憶部と、該ネットワークに接続するネットワーク接続部と、を有し、
該プロセッサは、前記画像処理部と、前記プログラム作成処理部を有し、
該記憶部は前記命令テーブルを保持し、
前記プログラム作成処理部により作成された前記プログラムは、該プロセッサで実行され、該実行の様子を該表示部に表示する
ことを特徴とする請求項１乃至３のいずれかの項に記載のプログラム作成支援システム。
【請求項６】
前記プログラム作成支援システムは、
プログラミングのカリキュラムを識別するカリキュラム識別情報と、該カリキュラムに基づくプログラミングに使用される、前記命令テーブルから選択された複数の命令に関する情報を登録するカリキュラム管理テーブルを有し、
前記シートは、前記カリキュラム管理テーブルに登録される前記カリキュラム識別情報を組み込んだ識別部を有し、
前記携帯端末は、前記シートの前記識別部を読み取る読取手段を有し、
前記携帯端末が有するプロセッサは、前記読取手段によって取得された前記カリキュラム識別情報を基に、前記カリキュラム管理テーブルにより参照される前記複数の命令と関連付ける
ことを特徴とする請求項４又は５のプログラム作成支援システム。
【請求項７】
前記命令テーブルにおける、前記チップが有する絵柄の画像と該プログラムの命令との対応は、該コンピュータへの入力指示によって変更可能である、
ことを特徴とする請求項１のプログラム作成支援システム。
【請求項８】
前記プログラム作成処理部により作成されたプログラムのデータを管理するプログラム管理テーブルと、該コンピュータに接続可能な複数の機器の情報を管理する接続機器管理テーブルと、を有し、
前記プログラム作成処理部は、前記プログラム管理テーブルに登録された前記プログラムを、前記接続機器管理テーブルを参照して選択された該機器において実行させる
ことを特徴とする請求項１のプログラム作成支援システム。
【請求項９】
コンピュータを用いて、プログラムの作成を支援するプログラム作成支援方法であって、
複数のチップが有する絵柄の画像とプログラムの命令とを対応付けて登録する命令テーブルを記憶手段に用意するステップと、
前記複数のチップを配列するための案内となるガイドラインと、前記ガイドラインの上部に前記絵柄の１つとしてスタートマークを有するシートに、前記スタートマークを起点として前記ガイドラインに沿って並べられた前記複数のチップの配列を、カメラが撮影するステップと、
該カメラで取得された前記複数のチップの配列の画像から、前記複数のチップが有する絵柄の画像を認識する画像処理ステップと、
前記命令テーブルを参照して、該画像処理ステップで認識された該絵柄の画像に対応する命令を特定して、特定された複数の該命令から構成されるプログラムを生成するプログラム作成処理ステップと、
該プログラム作成処理ステップにより作成されたプログラムを記憶手段に記憶するステップと、
を有することを特徴とするプログラム作成支援方法。
【請求項１０】
前記シートには、前記ガイドラインに沿う複数の縦線と、複数の横線から構成されるマトリクス線が設けられ、
前記複数のチップは、前記マトリクス線の前記縦線の方向及び前記横線の方向へ配列可能であり、
前記カメラは、前記縦線の方向及び前記横線の方向へ並べられた前記複数のチップの配列を撮影する
ことを特徴とする請求項９のプログラム作成支援方法。
【請求項１１】
前記画像処理ステップは、取得された前記複数のチップの画像の配列が傾いている場合、前記ガイドラインを基に前記複数のチップの画像の傾きを補正し、
前記プログラム作成処理ステップは、
補正された前記複数のチップの画像について、前記命令テーブルを参照して、前記命令テーブルに登録された画像に対応する命令コードを選択して、複数の命令コードを整列させ、
整列された命令コードの順にプログラムデータを生成する
ことを特徴とする請求項９のプログラム作成支援方法。
【請求項１２】
前記命令テーブルにおける、前記チップが有する絵柄の画像と該プログラムの命令との対応は、該コンピュータへの入力指示によって変更可能である、
ことを特徴とする請求項９のプログラム作成支援方法。
【請求項１３】
前記プログラム作成処理ステップにより作成されたプログラムのデータを管理するプログラム管理テーブルと、該コンピュータに接続可能な複数の機器の情報を管理する接続機器管理テーブルとを有し、
前記プログラム管理テーブルに登録された前記プログラムを、前記接続機器管理テーブルを参照して選択された該機器において実行させる
ことを特徴とする請求項９のプログラム作成支援方法。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、プログラム作成支援システム及びその方法に係り、特にプログラミング学習に好適なプログラム作成の支援技術に関するものである。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
本発明の目的は、簡便な手法によってプログラムの作成ができるプログラム作成支援システム及びその方法を提供することにある。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】削除
【補正の内容】