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