(57)【要約】【課題】願発明の課題は、従来技術が抱える問題を解決することであり、すなわち、低年齢層にとって容易に取り組むことができるプログラミング教育、つまりコンピュータを使用することなく実施できるプログラミング教育を実現可能とする、プログラム作成システム、プログラミング育成方法、及びプログラム作成プログラムを提供することである。【解決手段】本願発明のプログラム作成システムは、識別子が付された識別子表示体を認識するとともに、要素プログラムを組み合わせることによって全体プログラムを作成するシステムであり、要素プログラム記憶手段とプログラム作成手段を備えたものである。プログラム作成手段は、画像を読み出し、この画像に含まれる識別子に対応づけられた要素プログラムを要素プログラム記憶手段から抽出し、この要素プログラムと画像上の識別子表示体の配列に基づいて全体プログラムを作成するものである。【選択図】図１
2018031895.tif 000002
【特許請求の範囲】
【請求項１】
識別子が付された識別子表示体を認識するとともに、所定の指令をコンピュータに実行させる要素プログラムを組み合わせることで、所定の指令をコンピュータに実行させる全体プログラムを作成するシステムであって、
２以上の前記要素プログラムを記憶する要素プログラム記憶手段と、
２以上の前記識別子表示体を含む画像を読み出し、該画像に含まれる前記識別子表示体の前記識別子に対応づけられた前記要素プログラムを前記要素プログラム記憶手段から抽出するとともに、抽出された前記要素プログラムと前記画像上の前記識別子表示体の配列とに基づいて前記全体プログラムを作成するプログラム作成手段と、
を備えた、ことを特徴とするプログラム作成システム。
【請求項２】
コンピュータによって実行された前記全体プログラムの実行内容を表示する表示手段を、
さらに備えた、ことを特徴とする請求項１記載のプログラム作成システム。
【請求項３】
前記識別子が、前記識別子表示体に付された色、前記識別子表示体に記された模様、もしくは前記識別子表示体の形状、又はこれらの組み合わせである、ことを特徴とする請求項１又は請求項２記載のプログラム作成システム。
【請求項４】
前記識別子表示体に、前記要素プログラムによる実行内容を把握することができる実行情報が記載された、ことを特徴とする請求項１乃至請求項３のいずれかに記載のプログラム作成システム。
【請求項５】
プログラム種別選定手段をさらに備え、
前記プログラム種別選定手段によって要素プログラムが指定されたときは、前記プログラム作成手段は、前記画像上の前記識別子と前記識別子表示体の配列とに基づいて前記要素プログラムを作成し、該要素プログラムが前記要素プログラム記憶手段に記憶される、ことを特徴とする請求項１乃至請求項４のいずれかに記載のプログラム作成システム。
【請求項６】
前記要素プログラム記憶手段が、反復要素プログラムを記憶し、
前記反復要素プログラムを抽出したときは、前記プログラム作成手段は、該反復要素プログラムに対応する前記識別子表示体の周辺に配置された前記識別子表示体に対応する前記要素プログラムを、繰り返しコンピュータに実行させる前記全体プログラムを作成する、ことを特徴とする請求項１乃至請求項５のいずれかに記載のプログラム作成システム。
【請求項７】
前記要素プログラム記憶手段が、条件要素プログラムを記憶し、
前記条件要素プログラムには、あらかじめ定められた条件と該条件に応じた指令内容が設定され、
前記条件要素プログラムを抽出したときは、前記プログラム作成手段は、与えられた条件に応じた指令をコンピュータに実行させる前記全体プログラムを作成する、ことを特徴とする請求項１乃至請求項６のいずれかに記載のプログラム作成システム。
【請求項８】
与えられた問題に対してユーザが配列した前記識別子表示体の前記画像に基づいて作成された前記全体プログラムと、あらかじめ用意された問題の答である正答プログラムとを照らし合わせるとともに、照合した結果をユーザに通知する検定手段を、さらに備えた、ことを特徴とする請求項１乃至請求項７のいずれかに記載のプログラム作成システム。
【請求項９】
ユーザが、所定の指令をコンピュータに実行させる要素プログラムを組み合わせることで、所定の指令をコンピュータに実行させる答案プログラムを作成し、該答案プログラムと、あらかじめ用意された問題の答であって所定の指令をコンピュータに実行させる正答プログラムとを照らし合わせ、照合した結果をユーザに通知することでユーザのプログラミング技術を育成する方法であって、
ユーザが、与えられた問題に対して識別子が付された識別子表示体を配列する配列工程と、
配列された２以上の該識別子表示体を含む画像を取得する画像取得工程と、
前記画像に含まれる前記識別子表示体の前記識別子に対応づけられた前記要素プログラムを抽出するとともに、抽出された前記要素プログラムと前記画像上の前記識別子表示体の配列とに基づいて所定の指令をコンピュータに実行させる前記答案プログラムを作成するプログラム作成工程と、
前記答案プログラムと前記正答プログラムを照らし合わせるとともに、正誤をユーザに通知する検定工程と、
を備えた、ことを特徴とするプログラミング育成方法。
【請求項１０】
識別子が付された識別子表示体を認識するとともに、所定の指令をコンピュータに実行させる要素プログラムを組み合わせることで、所定の指令をコンピュータに実行させる全体プログラムを作成する処理をコンピュータに実行させるプログラムであって、
２以上の前記識別子表示体を含む画像中にある前記識別子表示体の前記識別子に対応づけられた前記要素プログラムを、２以上の前記要素プログラムを記憶する要素プログラム記憶手段から抽出するとともに、抽出された前記要素プログラムと前記画像上の前記識別子表示体の配列とに基づいて前記全体プログラムを作成するプログラム作成処理を、
コンピュータに実行させる、ことを特徴とするプログラム作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、プログラムを作成する技術に関するものであり、より具体的には、識別子を所望の配列としたうえで画像を取得し、この画像を認識することによってプログラムを作成することができる、プログラム作成システム、プログラミング育成方法、及びプログラム作成プログラムに関するものである。
【背景技術】
【０００２】
現在、情報技術（ＩＴ：ｉｎｆｏｒｍａｔｉｏｎ  ｔｅｃｈｎｏｌｏｇｙ）はあらゆる分野で欠かせないものとなり、このＩＴを支えるプログラムの作成技術、すなわちプログラミング技術を有する人材が、いま世界中から求められている。なおプログラムという語は種々の分野で様々な意味として用いられているが、ここでいうプログラムとは、人が意図した動作をコンピュータに実行させるためのものである。またプログラミングとは、人工言語であるプログラム言語によってソースコードを記述するコーディングのみを指すものではなく、基本的な構想の策定や、コンピュータの処理手順等を定めたアルゴリズムの作成、あるいはソースコードから機械言語であるオブジェクトコードへの変換など、いくつかの工程を含む行為を指すこともある。
【０００３】
米国などいくつかの国では、早くから幼児期へのプログラミング教育に取り組んだ結果、今やＩＴ先進国として大きな成果を上げている。近年、我が国でもプログラミング教育が重視され、２０１２年には中学校でのプログラミング学習が必修となり、さらには２０２０年度から小学校でのプログラミング教育を必修化する方向で検討されている。
【０００４】
プログラミング教育は、プログラミングの技術を習得できるばかりでなく、論理的な思考能力が鍛えられるうえ、「答えが一つでない」ことを学び、さらに試行錯誤で問題を解く訓練や、未来を予測して考える訓練が体験できるといった理由から、昨今、幼児や小学校低学年生（以下、「低年齢層」という。）を中心に大きな広がりを見せている。
【０００５】
低年齢層向けのプログラミング教育は、ワークショップ形式のものが主流であり、基本的な要素技術を教えた後は、各自が自由にプログラムを作成する形式で進められている。しかしながらこのワークショップ形式は、意欲がある者にとっては適しているものの、意欲に乏しい者にとっては難しい面がある。自ら積極的に学習しない生徒に対しては、段階的に難易度が上がる練習問題を解かせるなど、飽きないよう徐々に技術を向上させていく手法が適している。
【０００６】
また低年齢層にとって、早い段階からコーディングを行うことは困難なことである。プログラム言語を覚えることも難しいし、キーボードを使用して英数字を入力することでさえ低年齢層にとっては困難なことである。そこで、まずはアルゴリズムの学習を中心に行うことが考えられる。生徒にアルゴリズムを作成させ、そのアルゴリズムに基づくプログラムを実行して確認することで、正しいアルゴリズムの作成を学ぶわけである。特許文献１でも、フローチャートを作成することでアルゴリズムを表現し、さらにそのフローチャートに基づくプログラムを実行して確認するという技術を提案している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平８−１１０７５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１は、専用のソフトウェアを用いてフローチャートを作成する技術であり、したがってコンピュータを使用することが前提である。また、近時行われているプログラミング教育でも、パーソナルコンピュータ（ＰＣ）やスマートフォン、ｉＰａｄ（登録商標）などのタブレットＰＣといったコンピュータの使用が不可欠となっている。しかしながら、プログラミングの学習を始めようとする低年齢層にとって、コンピュータを操作することは困難であり、その結果、早い時期にプログラミング教育から脱落し、あるいは初めからプログラミング教育を諦めるケースも少なくなかった。
【０００９】
本願発明の課題は、従来技術が抱える問題を解決することであり、すなわち、低年齢層にとって容易に取り組むことができるプログラミング教育、つまりコンピュータを直接操作することなく実施できるプログラミング教育を実現可能とする、プログラム作成システム、プログラミング育成方法、及びプログラム作成プログラムを提供することである。
【課題を解決するための手段】
【００１０】
本願発明は、意図を持って配置した識別子を画像に収め、その画像を認識することによって意図したプログラムを作成するという点に着目して開発されたものであり、従来にはない発想に基づいてなされた発明である。
【００１１】
本願発明のプログラム作成システムは、識別子が付された識別子表示体を認識するとともに、要素プログラムを組み合わせることによって全体プログラムを作成するシステムであり、要素プログラム記憶手段とプログラム作成手段を備えたものである。このうち要素プログラム記憶手段は、２以上の要素プログラムを記憶するものである。そしてプログラム作成手段は、画像（２以上の識別子表示体を含む）を読み出し、この画像に含まれる識別子に対応づけられた要素プログラムを要素プログラム記憶手段から抽出し、この抽出された要素プログラムと画像上の識別子表示体の配列に基づいて全体プログラムを作成するものである。
【００１２】
本願発明のプログラム作成システムは、コンピュータによって実行された全体プログラムの実行内容を表示する表示手段をさらに備えたものとすることもできる。
【００１３】
本願発明のプログラム作成システムは、識別子表示体に付された色が識別子、識別子表示体に記された模様が識別子、もしくは識別子表示体の形状、又はこれらの組み合わせであるものとすることもできる。
【００１４】
本願発明のプログラム作成システムは、実行情報（要素プログラムによる実行内容を把握することができる情報）が記載された識別子表示体を用いるものとすることもできる。
【００１５】
本願発明のプログラム作成システムは、プログラム種別選定手段をさらに備えたものとすることもできる。プログラム種別選定手段は、プログラム作成手段が作成するプログラムの種別を指定するものであり、ユーザが種別を要素プログラムと指定したとき、プログラム作成手段は要素プログラムとして作成し、この要素プログラムは要素プログラム記憶手段に記憶される。
【００１６】
本願発明のプログラム作成システムは、要素プログラム記憶手段が反復要素プログラムを記憶したものとすることもできる。プログラム作成手段が反復要素プログラムを抽出したときは、この反復要素プログラムに対応する識別子表示体の周辺に配置された識別子表示体に対応する要素プログラムを繰り返しコンピュータに実行させる全体プログラムを作成する。
【００１７】
本願発明のプログラム作成システムは、要素プログラム記憶手段が条件要素プログラムを記憶したものとすることもできる。この条件要素プログラムには、あらかじめ定められた条件と、この条件に応じた指令内容が設定されている。そしてプログラム作成手段が条件要素プログラムを抽出したときは、与えられた条件に応じた指令をコンピュータに実行させる全体プログラムを作成する。
【００１８】
本願発明のプログラム作成システムは、検定手段をさらに備えたものとすることもできる。この検定手段は、与えられた問題に対してユーザが配列した識別子表示体の画像に基づいて作成された全体プログラムと、正答プログラム（あらかじめ用意された問題の答であるプログラム）を照らし合わせ、この照合結果をユーザに通知するものである。
【００１９】
本願発明のプログラミング育成方法は、ユーザが要素プログラムを組み合わせることで答案プログラムを作成し、この答案プログラムと正答プログラム（あらかじめ用意された問題の答であるプログラム）を照らし合わせ、この照合結果をユーザに通知することでユーザのプログラミング技術を育成する方法であり、配列工程と、画像取得工程、プログラム作成工程、検定工程を備えた方法である。このうち配列工程では、与えられた問題に対してユーザが識別子表示体を配列し、画像取得工程では、配列された２以上の識別子表示体を含む画像を取得する。プログラム作成工程では、画像に含まれる識別子表示体の識別子に対応づけられた要素プログラムを抽出し、この抽出された要素プログラムと画像上の識別子表示体の配列に基づいて答案プログラムを作成する。そして検定工程では、答案プログラムと正答プログラムを照らし合わせ、この照合結果をユーザに通知する。
【００２０】
本願発明のプログラム作成プログラムは、識別子表示体を認識し、要素プログラムを組み合わせることで、全体プログラムを作成する処理（プログラム作成処理）をコンピュータに実行させるプログラムである。プログラム作成処理は、画像中にある識別子表示体の識別子に対応づけられた要素プログラムを、要素プログラム記憶手段から抽出し、この抽出された要素プログラムと画像上の識別子表示体の配列に基づいて全体プログラムを作成する処理である。
【発明の効果】
【００２１】
本願発明のログラム作成システム、プログラミング育成方法、及びプログラム作成プログラムには、次のような効果がある。
（１）識別子が収められた画像を認識させることでプログラムが作成されることから、コーディングする必要も、プログラム言語を習得する必要さえもなく、想定したプログラムを容易に得ることができる。
（２）生徒には識別子を配置させるだけとし、教育者がその画像を取得してこれに基づくプログラムを実行して見せるという形式を採れば、生徒がコンピュータを操作する必要がなく、特に低年齢層の生徒にとっても抵抗なく学習することができる。
（３）プログラムを作成する手段を中央側に配置し、取得した画像を送信する手段を端末側に配置し、中央側と端末側を通信可能とすれば、通信教育が可能となり、遠隔地にある者でも手軽に学習することができ、また時間に制約されることなく学習することができる。
（４）ドリル形式の練習問題を用意し、段階的に難易度が上がる練習問題を順に解かせることによって、意欲に乏しい者でも飽きることなく学習でき、その結果、着実にプログラミング技術を習得することができる。
（５）本願発明を利用したプログラミング教育を受けることで、ＩＴの動作原理が理解できるうえ、論理的思考能力が鍛えられるとともに、未来を予測する力を身に付けることができる。
【図面の簡単な説明】
【００２２】
【図１】本願発明の基本的な構成を示すモデル図。
【図２】（ａ）は迷路ゲームの問題を示すモデル図、（ｂ）は画像取得手段で識別子の画像を取得する状況を示すモデル図、（ｃ）は作成された全体プログラムを実行した状況を示すモデル図。
【図３】与えられた問題に対して、シールの識別子表示体を選択して、台紙上に並べていく状況を示す説明図
【図４】（ａ）は文字からなる識別子と実行情報が付された識別子表示体を示すモデル図、（ｂ）は標識からなる識別子と実行情報が付された識別子表示体を示すモデル図、（ｃ）は色と模様の組み合わせからなる識別子と実行情報が付された識別子表示体を示すモデル図。
【図５】本願発明のプログラム作成システムの構成を示す説明図。
【図６】本願発明のプログラム作成システムを示すブロック図。
【図７】標準的な要素プログラムの組み合わせからなる全体プログラムを説明するモデル図。
【図８】反復要素プログラムを含む要素プログラムの組み合わせからなる全体プログラムを説明するモデル図。
【図９】２段階の反復要素プログラムを含む要素プログラムの組み合わせからなる全体プログラムを説明するモデル図。
【図１０】旗の有無を条件とした条件要素プログラムを含む要素プログラムの組み合わせからなる全体プログラムを説明するモデル図。
【図１１】穴の有無を条件とした条件要素プログラムを含む要素プログラムの組み合わせからなる全体プログラムを説明するモデル図。
【図１２】時間とともに変化する状況に対応するように要素プログラムを組み合わせた全体プログラムを説明するモデル図。
【図１３】プログラム種別選択手段を備えた本願発明のプログラム作成システムを示すブロック図。
【図１４】（ａ）は「カップ麺を作る」という動作を実行する要素プログラムを作成する状況を説明するモデル図、（ｂ）は「カップ麺を作る」要素プログラムを３回繰り返す全体プログラムを作成する状況を説明するモデル図。
【図１５】本願発明のプログラミング育成方法の主な工程の流れを示すフロー図。
【発明を実施するための形態】
【００２３】
本願発明のプログラム作成システム、プログラミング育成方法、及びプログラム作成プログラムの例を図に基づいて説明する。
【００２４】
１．定義
本願発明の実施形態の例を説明するにあたって、はじめにここで用いる用語の定義を示しておく。
【００２５】
（プログラム）
プログラムという語は、カリキュラムやスケジュールといった意味で用いられることもあるが、ここでいうプログラムとは、人が意図した動作をコンピュータに実行させるためのものである。
【００２６】
（要素プログラム）
要素プログラムは、完成させようとするプログラムを構成する部分的な（ブロックの）プログラムであり、換言するとこの要素プログラムを組み合わせることによって意図するプログラムを作成することができる。したがって要素プログラムは、例えば迷路を進むゲームのプログラムであれば、「前に進む」あるいは「右に曲がる」といった、基本動作（単位動作）を記述したものとするとよい。なお、要素プログラムはあらかじめ用意することができるものであり、要素プログラムは要素プログラム記憶手段に記憶される。
【００２７】
（全体プログラム）
全体プログラムは、要素プログラムを組み合わせることによって完成されるプログラムのことであり、要素プログラムと区別する意味でここでは全体プログラムということとする。したがって、先の迷路を進むゲームのプログラムの例であれば、「前に進む」や「右に曲がる」といった要素プログラムを組み合わせて完成された（例えば、スタート地点から種々経由してゴールにたどり着く）プログラムが、全体プログラムである。
【００２８】
（反復要素プログラムと条件要素プログラム）
反復要素プログラムと条件要素プログラムは、それぞれ要素プログラムの一種である。後に詳しく説明するように、反復要素プログラムは、１又は２以上の他の要素プログラムを、所定回数（無限回数含む）繰り返し実行させるという指令が記述されたものである。一方の条件要素プログラムは、対応する条件と動作が記述されており、全体プログラムの進行中その条件に合致した場合にその動作を実行させるという指令が記述されたものである。
【００２９】
（答案プログラムと正答プログラム）
答案プログラムと正答プログラムは、それぞれ全体プログラムの一種である。後に詳しく説明するように、答案プログラムは、問題に対して解答すべくユーザが作成した全体プログラムである。一方の正答プログラムは、問題の答えとなる全体プログラムであって、あらかじめ用意されたものである。例えば、ある迷路の問題が提出されたとすると、これに対しユーザが意図して作成したいわば答案が答案プログラムであり、最短コースでゴールまでたどり着くことができるなどあらかじめ用意された答えが正答プログラムである。
【００３０】
（識別子と識別子表示体）
識別子は、他の識別子と区別できるものであり、いわゆるＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）である。識別子は、要素プログラム記憶手段にあらかじめ記憶されたいずれかの要素プログラムと対応付けられており、つまり識別子は複数の要素プログラムの中から所定の要素プログラムを特定することができるものである。一方の識別子表示体は、識別子が付されたものである。この識別子表示体の画像を取得すると、その画像中に識別子が含まれる必要があり、したがって識別子は識別子表示体の表面に付されることが望ましく、また一の識別子表示体には一の識別子が付されるとよい。なお識別子表示体は、板状のものとすることも、ブロック状のものとすることも、あるいは識別子が付された紙とすることもでき、できれば持ち運びやすいものが望ましい。あるいは、磁石を利用するなど固定しやすいものとすることもできる。特に、識別子が付されたシール（識別子表示体）と台紙を用意し、そのシールを台紙に貼っていく方式にすると便宜である。
【００３１】
２．全体概要
図１を参考に本願発明の全体概要について説明する。図１は、本願発明の基本的な構成を示すモデル図である。この図に示すように本願発明は、読み込んだ画像ＰＨの情報に基づいてプログラムを作成するというのが基本的な構成である。つまりプログラム作成手段が、画像ＰＨから識別子表示体１１０に表示された識別子１２０を認識し、その識別子１２０をもって要素プログラム記憶手段３０５に問い合わせ、目的の要素プログラムを抽出し、そして画像ＰＨから認識した識別子表示体１１０（つまり識別子１２０）の配列（つまり並び順）に基づいて、抽出した要素プログラムを組み合わせることで全体プログラムを作成する。なお、要素プログラム記憶手段３０５にはあらかじめ種々の要素プログラムが記憶されており、プログラム作成手段によって作成された全体プログラムは全体プログラム記憶手段３０７に記憶される。
【００３２】
図２を参照しながら、より具体的に説明する。図２は、迷路ゲームを例に本願発明の全体概要について説明するモデル図であり、（ａ）は問題となる迷路を示し、（ｂ）は画像取得手段３０１で識別子１２０を含む画像ＰＨを取得する状況を示し、（ｃ）は作成された全体プログラムを実行した状況を示している。図２（ａ）に示す迷路ゲームは、スタートから１マスずつ進んでゴールまでたどり着くもので、前進や左折などの指令を組み合わせたプログラムを実行すると、キャラクタ（この場合は子供）がその指令どおり進んでいく。ただし、網がけしたマスには侵入できないことになっている。
【００３３】
図２（ｂ）では、ユーザが４つの識別子表示体１１０を選択して順に並べ、これをカメラやスマートフォンといった画像取得手段３０１で撮影して画像ＰＨを取得している。先に説明したシール（識別子表示体１１０）と台紙が用意されたケースでは、図３に示すように、与えられた問題に対してユーザが適切と思うシール（識別子表示体１１０）を選択し、それらのシールを台紙上に並べていき、その状態（配置）のシールを撮影する。この画像ＰＨには、識別子表示体１１０に表示された識別子１２０が収められている。そして、従来から用いられている画像認識の技術を利用してこの画像ＰＨから、識別子１２０及びその配列を認識する。図１や図２に示すように識別子１２０が文字情報であれば、従来から用いられているＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）などの識字技術が利用できる。
【００３４】
さらに認識された４つの識別子１２０を要素プログラム記憶手段３０５に照会し、対応する要素プログラムを抽出する。この場合、「右に進む」処理を実行する要素プログラムと、「左に曲がる」処理を実行する要素プログラム、「上に進む」処理を実行する要素プログラムを抽出している。なお、「右に進む」の要素プログラムは２つ抽出している。
【００３５】
目的の要素プログラムが抽出できると、識別子１２０の並び順にしたがって４つの要素プログラムを組み合わせ、全体プログラムを作成する。そしてユーザがこの全体プログラムを実行すると、図２（ｃ）に示すように、ユーザが意図したとおりキャラクタがスタートからゴールまで進んでいき、その様子がディスプレイといった表示手段２０４に表示されるわけである。
【００３６】
ところで、図１や図２に示すように意味を持たない文字（２桁のアルファベットと４桁の数字）からなる識別子１２０では、その識別子１２０によってどのような動作が実行されるのか理解することは難しい。識別子１２０と動作が対応した対応表のようなものを用意しておけば理解することはできるものの、識別子表示体１１０の選別に手間と時間がかかるし、低年齢層にとっては対応表を見ること自体が困難な作業である。そこで識別子１２０とは別に、要素プログラムによって実行される内容（動作）を把握することができる情報（以下、「実行情報１３０」という。）を識別子表示体１１０に表示しておくとよい。例えば、図４（ａ）では識別子１２０とは別に「ふたを開ける」という実行情報１３０が識別子表示体１１０に記されており、ユーザはこの識別子１２０に対応する要素プログラムが、「キャラクタがふたを開ける」という動作を実行することが直感的に理解できるわけである。同様に、図４（ｂ）では「キャラクタがお湯を入れる」という動作、図４（ｃ）では「キャラクタは３分待つ」という動作が実行されることが容易に把握できる。なお実行情報１３０は、要素プログラムによる実行内容を理解できる情報であれば、必ずしも文字情報に限らず、図（マンガ）や写真、矢印などの記号で構成することもできる。
【００３７】
また識別子１２０は、他の識別子１２０と区別できるものであって画像認識できるものであれば、文字以外のものを利用することができる。例えば、図４（ｂ）に示すようにＱＲコード（登録商標）やビジュアル・マーカーといった標識を識別子１２０とすることもできる。また、図４（ｃ）に示すように識別子表示体１１０に付された色と模様の組み合わせを識別子１２０とすることもできるし、多種の色を用意しておけば色そのものを識別子１２０とすることもできる。この場合、ＲＧＢや、ＣＭＹＫ、ＮＣＳといった色を表す物理量を用いて、識別子１２０を認識するとよい。この他、多種の形状を用意しておけば識別子表示体１１０の形状を識別子１２０とすることもできる。この場合、種々の形状のテンプレートを用意しておき、このテンプレートとマッチング（いわゆるパターンマッチング）することで、識別子表示体１１０の識別子１２０を特定するわけである。
【００３８】
さらに、要素プログラムの実行内容を理解できる情報を識別子１２０とすることもできる。つまり、識別子１２０を実行情報１３０とするわけである。図４ではいずれも識別子表示体１１０には識別子１２０と実行情報１３０が併記されているが、識別子１２０を実行情報１３０とすれば、識別子表示体１１０には識別子１２０のみ（つまり実行情報１３０のみ）を付すだけで足りる。この場合、識別子１２０（つまり実行情報１３０）が文字情報であれば、従来から用いられているＯＣＲなどの技術が利用でき、図形等の情報であれば従来から用いられているパターンマッチング等の技術が利用できる。
【００３９】
３．プログラム作成システム、及びプログラム作成プログラム
次に、本願発明のプログラム作成システム、及びプログラム作成プログラムの例について、図を参照しながら説明する。図５は、本願発明のプログラム作成システムの構成を示す説明図である。この図に示すように本願発明のプログラム作成システムは、複数のユーザ側装置２００とサーバ側装置３００が通信回線等を介して接続される構成とすることができる。もちろん、ユーザ側装置２００とサーバ側装置３００を分けることなく、一体のものとして本願発明のプログラム作成システムを構成することもできる。ここでは便宜上、図５に示すようにユーザ側装置２００とサーバ側装置３００を分けた例で説明する。
【００４０】
（ユーザ側装置）
図６は、本願発明のプログラム作成システムを示すブロック図である。この図を参照しながら、本願発明のプログラム作成システムについて詳しく説明する。この図に示すようにユーザ側装置２００は、画像取得手段２０１や送信手段２０２、実行指令手段２０３、ディスプレイといった表示手段２０４、検定依頼手段２０５、受信手段２０６を含んで構成することができる。この他、図１３に示すようにプログラム種別選択手段２０７を含んで構成することもできる。なおユーザ側装置２００は、デジタルカメラ（画像取得手段２０１）とＰＣ、あるいはスマートフォンやタブレットＰＣを利用して構成するとよい。
【００４１】
（サーバ側装置）
一方のサーバ側装置３００は、受信手段３０１や画像読出し手段３０２、画像認識手段３０３、要素プログラム抽出手段３０４、要素プログラム記憶手段３０５、プログラム構築手段３０６、全体プログラム記憶手段３０７、プログラム実行手段３０８、検定手段３０９、正答プログラム記憶手段３１０を含んで構成することができる。なおサーバ側装置３００は、コンピュータを利用して構成するとよい。
【００４２】
（プログラム作成システムの流れ）
本願発明のプログラム作成システムによる処理の流れを、ユーザが練習問題に回答するケースを例として図６を参照しながら説明する。まずユーザが、練習問題に対して最適と思う答えを構想し、これに基づいて識別子表示体１１０を選出するとともに、これら識別子表示体１１０を所望の順で並べる。例えば図３では、左側に識別子表示体１１０としてのシールが複数用意され、右側に練習問題が記載された台紙が用意されており、この問題に対してユーザが適切と思うシール（識別子表示体１１０）を選択して、それらのシールを適切と思う順で台紙上に並べていく。識別子表示体１１０を配置したユーザは、画像取得手段２０１を用いて識別子表示体１１０の画像ＰＨを取得し、送信手段２０２を利用してサーバ側装置３００にその画像ＰＨを送信する。
【００４３】
サーバ側装置３００では受信手段３０１が画像ＰＨを受信し、画像読出し手段３０２がその画像ＰＨを読み出すとともに、画像認識手段３０３が画像ＰＨに含まれる識別子１２０とその配列を認識する。このとき、ＯＣＲやパターンマッチング、ＲＧＢ等による識別など、従来から用いられている画像認識技術が利用できることは既述のとおりである。識別子１２０が認識できると、要素プログラム抽出手段３０４が要素プログラム記憶手段３０５に照会し、認識された識別子１２０に対応する要素プログラムを読み出す（抽出する）。プログラム構築手段３０６は、画像認識手段３０３が認識した識別子１２０の配列に基づいて要素プログラムが実行される順（以下、「実行手順」という。）を設定し、さらに抽出された要素プログラムをこの実行手順にしたがって組み合わせることで全体プログラムを作成する。要素プログラム抽出手段３０４とプログラム構築手段３０６が行う処理をコンピュータに実行させるプログラムが、本願発明のプログラム作成プログラムである。プログラム構築手段３０６が作成した全体プログラムは、全体プログラム記憶手段３０７に記憶される。
【００４４】
一方、画像ＰＨを送信したユーザは、その画像ＰＨ、つまり識別子表示体１１０の選択と配列によって作成される全体プログラムの実行内容を確認することもある。この場合、実行指令手段２０３を利用して全体プログラムを実行し、その内容を確認することができる。具体的には、プログラム（実行指令手段２０３の処理をコンピュータに実行させるもの）をユーザが操作する（例えば、実行ボタンをクリックする）ことで、プログラム実行手段３０８に実行指令を送り、プログラム実行手段３０８は該当する（ユーザが意図する）全体プログラムを全体プログラム記憶手段３０７から読出してコンピュータに実行させる。この実行内容は表示手段２０４で表示され、ユーザは意図した実行内容となっているか確認することができる。
【００４５】
また、練習問題に対してユーザが意図した全体プログラム（つまり、答案プログラム）が作成されたとしても、あらかじめ用意された練習問題の答えである正答プログラムとは異なることもある。一般的にプログラムは、同じ答えを出力するものであっても、その内容（つまり結果出力までの経過）が異なることは珍しくなく、工夫を凝らすことでプログラムを短くすることもできるし、また結果出力までの時間を短縮することもできる。つまり、プログラミングを学習する上では、出力結果のみを考えるのではなく、出力までの過程を重視することが重要であるといえる。そこでユーザが作成した答案プログラムを正答プログラムと照らし合わせることができれば、自身のプログラミング技術の改善点を見出すことができ、ひいてはより高度な技術を習得することができるわけである。
【００４６】
答案プログラムを正答プログラムと照らし合わせる場合、検定依頼手段２０４を利用する。具体的には、プログラム（検定依頼手段２０４の処理をコンピュータに実行させるもの）をユーザが操作する（例えば、実行ボタンをクリックする）ことで、検定手段３０９に検定指令を送り、検定手段３０９は該当する（ユーザが意図する）全体プログラム（つまり、答案プログラム）を全体プログラム記憶手段３０７から読出すとともに、同一の練習問題に対する正答プログラムを正答プログラム記憶手段３１０から読出す。さらに検定手段３０９は、答案プログラムと正答プログラムを照らし合わせ、その照合結果（検定結果）をユーザ側装置２００の受信手段２０６に送信する。検定結果としては、プログラムのうち相違する部分や、改善すべき個所の解説、正誤のみの情報、あるいは正答プログラムとなる識別子表示体１１０の選択と配列などとすることができる。
【００４７】
（標準的な要素プログラムからなる全体プログラム）
以下、練習問題が迷路ゲームの例で、種々の要素プログラムと全体プログラムについて具体的に説明する。図７は、標準的な要素プログラムの組み合わせからなる全体プログラムを説明するモデル図である。この図で提示された練習問題では、スタート地点を出発したキャラクタが３マスだけ前進し、そこで左折し、さらに２マスだけ前進すればゴールにたどり着くことができる。そこでユーザは、「前進する」という識別子１２０（実行情報１３０）が表示された識別子表示体１１０を順に３つ並べ、その右列に「左に曲がる」という識別子１２０が表示された識別子表示体１１０と、「前進する」という識別子１２０が表示された識別子表示体１１０を順に並べ、その状態で識別子表示体１１０の画像ＰＨを取得する。
【００４８】
この画像ＰＨを認識すると、「キャラクタが前進する」という動作をコンピュータに実行させる要素プログラムと、「キャラクタが左に曲がる」という動作をコンピュータに実行させる要素プログラムをそれぞれ読み出す。また、プログラム構築手段３０６は、画像認識手段３０３が認識した識別子１２０の配列に基づいて要素プログラムの実行手順を設定する。このとき、画像ＰＨ中に配列された識別子１２０の実行順を規定する基準（以下、「実行基準」という。）をあらかじめ定めておくとよい。例えば実行基準を、縦列を優先することとし、１列だけ並んでいる場合は上から下へ（あるいは、下から上へ）順に実行し、２列以上並んでいる場合は左列（あるいは、右列）から先に上から下へ実行すると定めておく。横列を優先するケースでは、１列だけ並んでいる場合は左から右へ（あるいは、右から左へ）順に実行し、２列以上並んでいる場合は上列（あるいは、下列）から先に左から右へ実行するなどと定めておく。あらかじめ実行基準を定めることなく、全体プログラムを作成する都度、オペレータが実行基準を入力して指定することとしてもよい。
【００４９】
ここまで説明した内容に基づいて、プログラム構築手段３０６は実行基準に従った実行手順を設定するとともに、抽出された要素プログラムを組み合わせる（実行手順で連結する）ことで全体プログラムを作成する。その結果、図７に示すように「前進→前進→前進→左折→前進→前進」というキャラクタの動作が実行される。
【００５０】
（反復要素プログラムからなる全体プログラム）
図８は、反復要素プログラムを含む要素プログラムの組み合わせからなる全体プログラムを説明するモデル図である。この図で提示された練習問題では、スタート地点を出発したキャラクタが７マスだけ前進し、そこで左折し、さらに４マスだけ前進すればゴールにたどり着くことができる。７マスだけ前進させるためには、「前進する」という識別子１２０が表示された識別子表示体１１０を７つ連続して並べるとよいが、識別子表示体１１０の数が不足している、あるいは１枚の画像に収まらない、といった不都合も予想される。このような場合、反復要素プログラムを利用するとよい。この反復要素プログラムは、後続の要素プログラムを所定回数だけ繰り返し実行させるもので、例えば図８のケースでは、「７回反復する」反復要素プログラムによって、「前進する」動作が７回繰り返されるわけである。
【００５１】
反復要素プログラムを利用する場合、この反復要素プログラムに対応する識別子１２０が表示された識別子表示体１１０（以下、特に「反復識別子表示体１１１」という。）を配置する。そして、反復要素プログラムによって繰り返すべき要素プログラムに対応する識別子１２０が表示された識別子表示体１１０を、反復識別子表示体１１１の周辺に配置し、その状態で画像ＰＨを取得する。例えば、実行基準が上から下と規定されている場合は、反復すべき識別子表示体１１０を反復識別子表示体１１１の直下に配置し、実行基準が左から右と規定されている場合は、反復すべき識別子表示体１１０を反復識別子表示体１１１のすぐ右に配置する。
【００５２】
繰り返すべき要素プログラムは１つでもよいし、２以上でもよい。２以上の要素プログラムを繰り返す場合は、これらの識別子表示体１１０を反復識別子表示体１１１の周辺に連続して配置することになるが、繰り返すべき要素プログラムと、そうでない要素プログラムは区別されなければならない。この区別は、例えば隣接する識別子表示体１１０間の距離で判断することができる。あらかじめ閾値を定めておき、識別子表示体１１０間の距離がこの閾値を下回るほど接近している場合は、反復要素プログラムによって繰り返し実行される要素プログラムの識別子表示体１１０として判断し、識別子表示体１１０間の距離がこの閾値を上回るほど離れている場合は、繰り返し実行されない要素プログラムの識別子表示体１１０として判断する。図８では、「前進する」の識別子表示体１１０ａは「７回反復」の反復識別子表示体１１１の周辺に配置されたと判断され、「左に曲がる」の識別子表示体１１０ｂは上方の「前進する」の識別子表示体１１０ａから離れていることから反復識別子表示体１１１の周辺ではないと判断され、この結果、「前進する」動作のみが７回繰り返されるわけである。
【００５３】
ここまで説明した内容に基づいて、プログラム構築手段３０６は実行基準に従った実行手順を設定するとともに、抽出された要素プログラムを組み合わせることで全体プログラムを作成する。その結果、図８に示すように「前進」を７回繰り返し、「左折」した後、「前進」を４回繰り返すというキャラクタの動作が実行される。
【００５４】
図９は、２段階の反復要素プログラムを含む要素プログラムの組み合わせからなる全体プログラムを説明するモデル図である。この図で提示された練習問題では、スタート地点を出発したキャラクタが、「右への前進を２回繰り返した後、上への前進を２回繰り返す」という動作をさらに３回繰り返すとゴールにたどり着くことができる。この場合も、反復要素プログラムを利用するとよい。ただし、反復動作をさらに反復させるという２段階の反復処理が必要であることから、いわゆる「入れ子ループ」の手法を採用することが考えられる。
【００５５】
この場合、反復要素プログラムにレベルを設定するとよい。例えば図９のケースでは、「３回反復」の反復要素プログラムがレベル１であり、２つの「２回反復」の反復要素プログラムはレベル２とされている。このレベルの設定は、要素プログラム内に記述しておいてもよいし、画像ＰＨ内の配置（例えば、左寄りにあるほどレベルが高い、など）からその都度判断してもよい。そして、自身のレベルより低い反復要素プログラムは、自身の繰り返し実行として対象となるが、自身と同等（あるいはそれ以上）のレベルの反復要素プログラムは、自身の繰り返し実行として対象としない、などの規約をあらかじめ定めておく。こうすることで、「右に進む」の識別子表示体１１０の直下に近接して配置された「２回反復」の反復識別子表示体１１１ｃは、これより上方に位置する反復識別子表示体１１１ｂの繰り返し実行には含まれないこととなる。つまり、「右に進む」を２回繰り返した後、「上に進む」を２回繰り返し、さらにこれらの動作（右進×２と上進×２）が３回繰り返されることになる。
【００５６】
ここまで説明した内容に基づいて、プログラム構築手段３０６は実行基準に従った実行手順を設定するとともに、抽出された要素プログラムを組み合わせることで全体プログラムを作成する。その結果、図９に示すように「右への前進を２回繰り返した後、上への前進を２回繰り返す、という動作をさらに３回繰り返す」というキャラクタの動作が実行される。
【００５７】
（条件要素プログラムからなる全体プログラム）
図１０は、旗の有無を条件とした条件要素プログラムを含む要素プログラムの組み合わせからなる全体プログラムを説明するモデル図である。この図で提示された練習問題では、スタート地点を出発したキャラクタが３マスだけ前進し、Ｌと表示された旗（以下、「Ｌ旗」という。）があるマスで左折し、さらに２マスだけ前進して今度はＲと表示された旗（以下、「Ｒ旗」という。）のマスで右折し、４マスだけ前進して再びＬ旗のマスで左折して２マスだけ前進すればゴールにたどり着くことができる。このように、左折と右折を繰り返すなど複雑な動作を表すためには、無限回数繰り返す反復要素プログラムと条件要素プログラムを利用するとよい。
【００５８】
既述のとおり条件要素プログラムは、対応する条件と動作との組み合わせが記述されており、全体プログラムの進行中その条件に合致した場合にその動作を実行させるという指令が記述されたものである。例えば図１０の場合、「Ｒ旗があるマス」という条件と「そのときは右折する」という動作が組み合わされた条件要素プログラムと、「Ｌ旗があるマス」という条件と「そのときは左折する」という動作が組み合わされた条件要素プログラムが用いられている。そして条件要素プログラムを利用する場合、この条件要素プログラムに対応する識別子１２０が表示された識別子表示体１１０（以下、特に「条件識別子表示体１１２」という。）を配置する。図１０では、「Ｒ旗がある？」という識別子１２０には「Ｒ旗があるときは右折する」という条件要素プログラムが対応付けられており、「Ｌ旗がある？」という識別子１２０には「Ｌ旗があるときは左折する」という条件要素プログラムが対応付けられている。さらに「Ｒ旗がある？」が表示された条件識別子表示体１１２ａと「Ｌ旗がある？」が表示された条件識別子表示体１１２ｂは、「前進する」の識別子表示体１１０に近接して配置されていることから、「無限反復」の反復識別子表示体１１１ｄの反復要素プログラムによって繰り返し実行される要素プログラムとして判断されている。したがって、原則としては繰り返し前進するが、Ｒ旗があるときは右折し、Ｌ旗があるときは右折する動作が実行されることとなる。
【００５９】
ここまで説明した内容に基づいて、プログラム構築手段３０６は実行基準に従った実行手順を設定するとともに、抽出された要素プログラムを組み合わせることで全体プログラムを作成する。その結果、図１０に示すように「Ｌ旗があるマスまで前進して左折し、Ｒ旗があるマスまで前進して右折し、さらにＬ旗があるマスまで前進して左折する」というキャラクタの動作が実行される。
【００６０】
図１１は、穴の有無を条件とした条件要素プログラムを含む要素プログラムの組み合わせからなる全体プログラムを説明するモデル図である。この図で提示された練習問題は、スタート地点を出発したキャラクタは前進を続けていくが、穴があるときはジャンプさせるというものである。したがって図１１では、「穴がある」という条件と「そのときはジャンプする」という動作が組み合わされた条件要素プログラムを用い、そしてこの条件要素プログラムに対応付けられ、「穴がある？」という識別子１２０が表示された条件識別子表示体１１２ｃを配置し、その画像ＰＨを取得する。
【００６１】
この場合も図１０と同様、「前進する」の識別子表示体１１０と「穴がある？」の条件識別子表示体１１２ｃが、「無限反復」の反復識別子表示体１１１ｄに接近して配置されていることから、これらの識別子表示体１１０は反復要素プログラムによって繰り返し実行されるものとして判断される。したがって、原則としては繰り返し前進するが、穴があるときはジャンプするというキャラクタの動作が実行される。
【００６２】
（時間変化に対応する全体プログラム）
図１２は、時間とともに状況が変化するゲームの例であり、状況変化に対応するように要素プログラムを組み合わせた全体プログラムを説明するモデル図である。この図で提示された練習問題は、定期的に上方から落下してくる矢を交わしながら前進していくというものである。つまり、キャラクタに適切な行動をとらせるよう先を予測しながら全体プログラムを作成することを狙いとした練習問題である。したがって、前進に掛かる時間と矢が落ちてくるタイミングを試行錯誤しながら把握し、一時停止という要素プログラムを「どこで」、「いくつ」配置すればよいかを見出す必要がある。この場合、実行指令手段２０３を利用してひとまず作成した全体プログラムを実行し、その実行内容を表示手段２０４で確認することで、前進にかかる時間と矢が落ちてくるタイミングを把握することができる。
【００６３】
（要素プログラムの作成）
ここまで、要素プログラムはあらかじめ要素プログラム記憶手段３０５に記憶されていると説明してきたが、この要素プログラムをユーザが任意に作成することもできる。図１３は、プログラム種別選択手段２０７を備えた本願発明のプログラム作成システムを示すブロック図である。この図に示すように、この場合のユーザ側装置２００は、図６で説明した各手段に加えプログラム種別選択手段２０７を含んで構成される。以下、プログラム種別選択手段２０７を備えたプログラム作成システムによる処理の流れを、図１３を参照しながら説明する。
【００６４】
これまで説明したようにユーザは、所望の識別子表示体１１０を選出するとともに、これら識別子表示体１１０を所望の順で並べる。そして識別子表示体１１０の画像ＰＨを取得し、送信手段２０２を利用してサーバ側装置３００にその画像ＰＨを送信する。このとき、ユーザがプログラム種別選択手段２０７を操作することで、プログラム構築手段３０６が作成するプログラムの種別を指定することができる。具体的には、サーバ側装置３００に画像ＰＨを送信するときに、プログラム（プログラム種別選択手段２０７の処理をコンピュータに実行させるもの）をユーザが操作する（例えば、種別ボタンをクリックする）ことで、プログラム構築手段３０６が作成するプログラムの種別を指定する。つまり、ユーザがプログラム種別選択手段２０７を操作して「要素プログラム」と指定したときは、プログラム構築手段３０６が作成したプログラムは「要素プログラム」として要素プログラム記憶手段３０５に記憶され、「全体プログラム」と指定したとき、あるいは何も指定しない（いわゆるデフォルト）ときは、プログラム構築手段３０６が作成したプログラムは「全体プログラム」として全体プログラム記憶手段３０７に記憶されるわけである。
【００６５】
図１４は、要素プログラムを作成する具体例を説明するモデル図であり、（ａ）は「カップ麺を作る」という動作を実行する要素プログラムを作成する状況を示し、（ｂ）は「カップ麺を作る」要素プログラムを３回繰り返す全体プログラムを作成する状況を示している。図１４に提示された練習問題は、「ふたを開ける→お湯を入れる→ふたを閉める→３分待つ→ふたを開ける」という一連の動作をキャラクタに３回繰り返し行わせるものである。もちろん、５つの動作を実行する要素プログラムに対応する識別子表示体１１０（識別子１２０）を３回繰り返して配置（つまり１５枚の識別子表示体１１０を配置）してもよいが、これでは識別子表示体１１０の数が不足している、あるいは１枚の画像に収まらない、といった不都合も予想される。
【００６６】
この場合、ユーザは、「ふたを開ける→お湯を入れる→ふたを閉める→３分待つ→ふたを開ける」の順で配置した識別子表示体１１０の画像ＰＨを取得し、プログラム種別選択手段２０７で「要素プログラム」と指定したうえで、その画像ＰＨをサーバ側装置３００に送信する。このとき、ユーザがプログラム種別選択手段２０７を操作することで、作成する要素プログラムの実行情報１３０を「カップ麺を作る」と入力することもできる。作成するプログラムの種別（＝要素プログラム）とともに画像ＰＨを受信したサーバ側装置３００では、プログラム構築手段３０６がこの画像ＰＨの情報に基づいてプログラムを作成し、ここで作成されたプログラは「要素プログラム」として要素プログラム記憶手段３０５に記憶される（図１４（ａ））。
【００６７】
そしてユーザは、「カップ麺を作る」という要素プログラムに対応する識別子１２０（例えば、「カップ麺を作る」という実行情報１３０）が表示された識別子表示体１１０を用意し、「３回反復」の反復要素プログラムの反復識別子表示体１１１と組み合わせて配置し、その画像ＰＨを取得する。そしてユーザは、プログラム種別選択手段２０７で種別を指定することなく（あるいは、「全体プログラム」と指定したうえで）、その画像ＰＨをサーバ側装置３００に送信する。画像ＰＨを受信したサーバ側装置３００では、プログラム構築手段３０６がこの画像ＰＨの情報に基づいて通常どおり全体プログラムを作成し、この全体プログラムは全体プログラム記憶手段３０７に記憶される（図１４（ｂ））。その結果、この全体プログラムを実行すると、「３個のカップ麺を作る」というキャラクタの動作が実行される。
【００６８】
４．プログラミング育成方法
続いて、本願発明のプログラミング育成方法の例について、図１５を参照しながら説明する。なお本願発明のプログラミング育成方法は、ここまで説明した本願発明のプログラム作成システムを利用して行う方法であり、したがってプログラム作成システムと同じ内容に関する説明はここでは割愛し、プログラミング育成方法に特有の内容について説明することとする。すなわち、ここで説明しない内容は、既に説明したプログラム作成システムの内容と同様である。
【００６９】
はじめにユーザは提示された練習問題を確認し、これに対して最適と思う答えを構想する（Ｓｔｅｐ１０１）。この構想に基づいてユーザは、適切と思う識別子表示体１１０を選出するとともに、これら識別子表示体１１０を所望の順で並べ（Ｓｔｅｐ１０２）、画像取得手段２０１を用いて識別子表示体１１０（識別子１２０）の画像ＰＨを取得し（Ｓｔｅｐ１０３）、送信手段２０２を利用してプログラム作成システム（サーバ側装置３００）にその画像ＰＨを送信する（Ｓｔｅｐ１０４）。
【００７０】
プログラム作成システムが画像ＰＨを受信すると（Ｓｔｅｐ２０１）、画像認識手段３０３が画像ＰＨに含まれる識別子１２０とその配列を認識し（Ｓｔｅｐ２０２）、要素プログラム抽出手段３０４が認識された識別子１２０を要素プログラム記憶手段３０５に照会して対応する要素プログラムを抽出する（Ｓｔｅｐ２０３）。必要な要素プログラムを抽出すると、プログラム構築手段３０６が認識された識別子１２０の配列に基づいて「実行手順」を設定し、抽出された要素プログラムをこの実行手順にしたがって組み合わせることでユーザの答案プログラムを作成する（Ｓｔｅｐ２０４）。
【００７１】
画像ＰＨを送信したユーザは、実行指令手段２０３を操作することで自身の答案プログラムを実行するよう依頼し（Ｓｔｅｐ１０５）、この依頼を受けたプログラム実行手段３０８は該当する（ユーザが意図する）答案プログラムを全体プログラム記憶手段３０７から読出してコンピュータに実行させ（Ｓｔｅｐ２０５）、ユーザは表示手段２０４で表示されたその実行内容を確認する（Ｓｔｅｐ１０６）。確認した結果、その答案プログラムがユーザの意図したものと異なれば、構想を修正したうえで再度、識別子表示体１１０の選択と配列を行って（Ｓｔｅｐ１０２）答案グラムを作成し（Ｓｔｅｐ２０４）、実行内容を確認する（Ｓｔｅｐ１０６）。
【００７２】
答案プログラムがユーザの意図したものとなれば、ユーザが検定依頼手段２０４を操作することで、検定手段３０９に検定指令を送る（Ｓｔｅｐ１０７）。そして検定手段３０９は、該当する（ユーザが意図する）答案プログラムを全体プログラム記憶手段３０７から読出すとともに、同一の練習問題に対する正答プログラムを正答プログラム記憶手段３１０から抽出する（Ｓｔｅｐ２０６）。さらに検定手段３０９は、答案プログラムと正答プログラムを照らし合わせ、その照合結果（検定結果）をユーザに送信し（Ｓｔｅｐ２０７）、これを受け取ったユーザは、プログラムのうち相違する部分や、改善すべき個所の解説、正誤のみの情報、あるいは正答プログラムとなる識別子表示体１１０の選択と配列といった検定結果を確認する（Ｓｔｅｐ１０８）。
【産業上の利用可能性】
【００７３】
プログラム作成システム、プログラミング育成方法、及びプログラム作成プログラムは、学校や私塾での教育や企業での社員教育など幅広い教育現場で利用でき、また通信教育に限らず対面学習など様々な形態で実施することができる。本願発明が、プロミング技術を備えた人材を数多く輩出する一助になることを考えれば、産業上利用できるばかりでなく社会的にも大きな貢献を期待し得る発明である。
【符号の説明】
【００７４】
１１０  識別子表示体
１１１  反復識別子表示体
１１２  条件識別子表示体
１２０  識別子
１３０  実行情報
２００  ユーザ側装置
２０１  （ユーザ側装置の）画像取得手段
２０２  （ユーザ側装置の）送信手段
２０３  （ユーザ側装置の）実行指令手段
２０４  （ユーザ側装置の）表示手段
２０５  （ユーザ側装置の）検定依頼手段
２０６  （ユーザ側装置の）受信手段
２０７  （ユーザ側装置の）プログラム種別選択手段
３００  サーバ側装置
３０１  （サーバ側装置の）受信手段
３０２  （サーバ側装置の）画像読出し手段
３０３  （サーバ側装置の）画像認識手段
３０４  （サーバ側装置の）要素プログラム抽出手段
３０５  （サーバ側装置の）要素プログラム記憶手段
３０６  （サーバ側装置の）プログラム構築手段
３０７  （サーバ側装置の）全体プログラム記憶手段
３０８  （サーバ側装置の）プログラム実行手段
３０９  （サーバ側装置の）検定手段
３１０  （サーバ側装置の）正答プログラム記憶手段
ＰＨ    画像
【図１】
2018031895.tif 000003
【図２】
2018031895.tif 000004
【図３】
2018031895.tif 000005
【図４】
2018031895.tif 000006
【図５】
2018031895.tif 000007
【図６】
2018031895.tif 000008
【図７】
2018031895.tif 000009
【図８】
2018031895.tif 000010
【図９】
2018031895.tif 000011
【図１０】
2018031895.tif 000012
【図１１】
2018031895.tif 000013
【図１２】
2018031895.tif 000014
【図１３】
2018031895.tif 000015
【図１４】
2018031895.tif 000016
【図１５】
2018031895.tif 000017