昨年の4月から本格的にプログラミング教育が小学校でも始まりましたが、試験導入は数年前から始まっています。それ以前に高校の教育でのコンピューターの利用は、21世紀初頭から普通科でも始まっているので、カリキュラムとして本格導入されてい始めたのがここ数年の話という事になります。ちなみに、高校の情報のカリキュラムでのプログラミングは試験導入段階で、来年から正式導入という事ですから、幼稚園は別としても、小学校=>中学校=>高等学校の順に教科書の策定と最終的な調整と実施の流れで導入されていることになります。

 

 その為、プログラミング教育のカリキュラム自体は既に数年前から行われているので、それが教科書で何を行うのか?などを含めたものに変わっていく事になります。

 

 

 ログラミング                     

 

 このプログラミングと言う概念ですが、簡単に言うと自動処理を行う上での 【 手順や処理 】 になります。

 

 構造物を自動化する場合、処理の伝達とそれに伴う仕組みを用意する事になりますが、電気が何か解らない時代でも、人力よりも巨大な運動エネルギーを用いた物は多く存在しています。例えば、古代ローマ帝国時代の水路のソリューションは、【 水力 】 を 【 トルク 】 に変換してその軸回転の運動エネルギーを用いて動作させるという仕様の物ですが、多くの地域で水を使える場所ではそう言った物が存在しています。

 

 これは 【 地理的な特性を生かしたエネルギーの活用法 】 と言えますが、水流をせき止めた時にかかる水圧で水車を回して運動エネルギーを得る方法になります。この時に水車の直径が大きくなると軸を直接回すよりも小さな力で回転させることが出来るので、そう言った構造が用いられている訳です。水路を用いた場合にはこういったことができますが、地域によっては風が強いので、この運動エネルギーの選択が 【 風車 】 になっている地域もあります。風車とチューリップと言うとオランダ(オランダの風車は世界遺産になっています。)になりますが、昔から風車がある地域というのは、そう言った環境が存在する為、他のエネルギーよりも風を用いるとエネルギーを得やすいのでそう言った構造物を作る事で巨大な運動エネルギーを得る事が出来ていたわけです。

 

 風車の起源は、紀元前36世紀辺りに灌漑(水路を作って田畑に日通用な水を引きう、土地を潤す事)に使用されていたようですが、その後、1世紀あたりにアレクサンドリアのヘロンが風車を使ったオルガンを発明しています。その為、風力を使った物は紀元前から存在しています。風車の力で粉を引くウインドミルはペルシアで生まれ、それが広まったようです。

 

 オランダの風車は15世紀になってから登場したようですが、干拓地の排水用として使用さえていました。

 

 この風力のソリューションで発電に成功するのは、19世紀になってからで、1887年にイギリスのJ・ブライスが風車を使って二次電池(充電できる電池)への蓄電に成功しており、翌年には、アメリカのC.F.ブラッシュが直径17mの多翼型風車を用いた発電を行ってます。

 

 水車の歴史はこれよりも新しく、紀元前2世紀に中央アジアで見つかったものが最古とされえいます。

 

 こう言ったソリューションは、 【 エネルギーを得る手段 】 があり、それを入力として、 【 仕事 】 という結果を得る物になりますが、その為には、 【 仕事が成立するようにエネルギーの伝達を行う 】 必要があります。

 

 その為、水車や風車で発生した 【 運動エネルギー 】 を処理に必要な物に変換しておく必要があります。この時の構造が構造物を作る上で必要になるわけです。

 

 その為、書き換え不能な状態でロックをかけたROMのように一つの処理をするための構造物として完成したものが機械の構造になりますが、この中には、処理に必要な動作が実装されているので、これを実装しないと適正な処理が出来ません。

 

 その為、この 【 運動エネルギーの伝達の工程表 】 のような物が機械の仕組みになります。

 

 プログラムは、機械で使う 

 

【 入力と出力の間に存在する仕組みの部分 】

 

になりますから、出力と言う結果とそれに必要な入力を元に意図した結果になるような仕組みを実装する事になります。

 

 

■ 構造と仕組み                    

 

 動作をする上では、構造を考える必要がありますが、前述の風力のソリューションでは、 【 流体力学 】 に基づいた挙動を用いて運動エネルギーを得る事になります。

 

 風の力を知る場合、真逆の特性の物を用意すると分かりやすいのですが、上方向に働く 【 揚力 】 の特性を知る場合だと、

 

    飛行機

    フォーミュラーカー

 

の二つがあります。これは翼の部分の形状は同じですが、上下が逆になった物を用いています。

 

 飛行機が飛ぶためには下に働く力が必要なので、ハゼを用いて吹きおろしを作らなくてはなりません。それを用いる事で、揚力を生み出しているので飛行機の翼は上に向かう力を生み出しています。この時の量力は、空気の状態の差によるものですが、飛行機で使っているのは【 浮き上がる力 】 になります。

 

 揚力については、推力を高くするほど大きくなりますが、重たい物体を飛ばそうと思うと、それだけの前に押し出す力が必要になります。

 

 これに対し、レーシングカーの一つのカテゴリーとして風の力でマシンを押し付けているフォーミュラーカーでは、ウイングなどの空力パーツがこう言った特性を持っています。レーシングカーの場合、タイヤが地面をとらえておく必要があるので、 【 タイヤのグリップ 】 を得る必要がありますが、市販車とは異なるタイヤ(フォーミュラーEは違いますが..。)を用いています。その為、レーシングカーのタイヤというのは、市販車で使用するような物ではなく、高温で熱を入れて、ラバー状態になるような作りの物が用いられていますから、通常の市販車のタイヤとは構造が違うわけです。その作りで 【 タイヤ自体が吸着材として働くような作り 】 になっているので、グラベルに入っていしまうと、【 タイヤが一瞬にしたグラインダーのようになる 】 わけです。その為、 【 吸着要素がなくなるのでグリップしなくなる 】 わけです。

 

 タイヤの属性だけでも 【 地面をとらえる仕様 】 になっていますが、フォーミュラーカーでは推進力をグリップに帰る仕組みが用意されています。と言うよりもカテゴリーが違っても、グリップを得る為に空力パーツは使用されていますが、フォーミュラーカーはその影響が大きい仕様になっています。飛行機では揚力を得る為に吹きおろしの風を用意している訳ですが、ライト兄弟のフライヤーもそうしたものがつかわれていたのですが、これは湾曲した翼で飛ぶような仕組みになっています。その為、現在の飛行機のような物ではありませんが、空力を作る場合には、下方向の力を発生させる必要があります。

 

 フォーミュラーカーは、前後に巨大なウイングがあるので、これを見ると構造が分かりやすいのですが、カーブが多くストレートスピードが必要ないコースの場合、ウイングが立っていて斜面のようみえるはずです。

 

 これは、先程の飛行機の構造の逆の考え方で、増え方向への吹き上げの空気を作る事で、車体を押し付ける力を与えています。その為、マシンがコーナーを抜ける時に発生する強烈な遠心力などを空力で押さえつけることで抑制している訳ですが、推進力も同時に抑制されるので、同じ空力パッケージの同じ構造のマシンを使った場合、同条件で理想空間上で運動エネルギーを同じように与えると、同じように働くので、当然のように、この空力でも同様のことが発生します。つまり、押し付ける力があるという事はもともと発生させている推力自体は落ちているので、空力で押さえつける力を多くすると、直線での速度は遅くなります。これが 【 車両の構造をを定数化した場合における理想空間上での空力による変化 】 になります。ちなみに、この押さえつける力をダウンフォースと言いますが、コースレイアウトは短調ではないので複合的な構造になっているので、それに合わせた調整が行われています。また、空力を使うマシンでもどこを走るのか?で異なるので、オーバルのように傾いた場所を速く走るための構造とストリー―とサーキットのような場所を速く走るための構造では空力もそうですが、マシンの調整も含めて異なります。

 

 このように空気の力を伝達するためにはより効率的な力を得る必要があるので、 【 入力値を最適に得るための構造 】 が必要になります。

 

 飛行機の仕組みについては、YouTubeを見ると詳しく解説された動画がありますが、

 

 

 

のように、翼の仕組みも現在と過去では違っています。飛行機のパンタグラフの変化を見ると、 

 

【 グランツーリスモでそう言う動きをするリアウイングの車があった 】

 

事を思い出す人も居るかもしれませんが、GTSPORTのJAGAR VGT COUPEもそういた仕様になります。ランボルギーニ アヴェンタドール LP700-4も走行時の状態に応じてウイングが変化する仕様になっていますが、市販車でもこう言った可変リアウイングの構造の物が存在しています。

 

 空力のシミュレーションですが、3DCGツールやCADのツールではダイナミクスを実装しているので、個人でも簡単なシミュレーションは行えるようになっていますが、オンラインサービスでも空力などのシミュレーションを個人で気軽に行えるようになっています。

 

 

    SIMSCALE

      https://www.simscale.com/en/

 

 

では、無料でシミュレーションが行えるので、空気の流れなどもシミュレーションする事ができます。登録が必要ですが、現在はこう言った物が使用できます。

 

 風力発電についても揚力や推力で羽根を回している訳ですが、入力値が風力になりますが、これを回転運動に変換する為にギミックを用意する必要があります。その時に、より効率的な力を得る為に空力で使用する揚力や効力を得るための翼の構造を用意しています。

 

 こうした羽根の構造で風を得られるようにして、トルクを得ると、軸回転が発生しますが、モーターのようなコイルと磁石の構造物を用意すると電力を得ることができます。これが 【 エネルギーの変換 】 になりますが、この運動エネルギーをギミックを通じて別の仕事をする運動エネルギーに変換する場合、最終的に仕事で使う運動の条件を考える事になりますが、それが6DoFで見た場合にどれに該当し、それが単一の出力なのか、工程で動くものなのかで構造が違ってきます。

 

 古代の粉ひき期の場合、石臼の回転機構を歯車で軸回転の方向を変えて実現している物で、水車による石臼の構造は、オルゴールと同じ原理になります。

 

 構造物を作る場合、

 

【 入力値を使って、目的とする出力結果を得る 】

 

と言う事になりますが、この場合、入力、出力の双方でロスが少なくする必要があり、用意した命題に対してそれが実現できるあるごちズムを用意して 【 命題 = アルゴリズムの挙動 】 と言う等式を成立させる必要があります。

 

 理想空間上やテスト環境では定数処理の方程式や、外的要因の係数の影響を受けない恒等式として構造物を作ることになりますが、構造物を考える場合には、そうした条件に基づいて構築していく事になります。

 

 

■ 構造物とプログラム                

 

 構造物を作る場合、 

 

【 単一の構造物はその結果になるような仕組みになっている 】 

 

ので、処理が決まっている場合には、その挙動になるようなシステムを用意する事になります。こうした物を考える場合、簡素な作りで

 

 【 入力 】 => 【 処理 】 => 【 出力 】

 

の構造の物を考えると分かりやすいのですが、手回し式のドリルの構造を考えると解りやすいと思います。この構造では、入力は前述のウインドミルと同じで軸回転を用います。当然物体の硬さでトルクが変わるので、必要となる力も変化します。これを 【 人が加減して使っている 】 のですが、ハンドルとドリルの向きは違う方向にあるので、この時に異なる向きに変換する必要があります。この場合、はす歯のギアで向きを変えますが、構造的にはこう言った 【 目的の状態 】 になるような構造を用意します。

 

 こうした構造物は、 【 指定した構造 】 になりますが、この構造を電動にしたものが電動ドリルやリューターやボール盤などの工作機器になります。

 

 こうした構造物は、アタッチメントで目的に応じて処理を変換できますが、小さな工作を行う場合には、リューターを用いるわけですが、これを用いると、

 

    丸ノコ

    グラインダー

    サンダー

    ドリル

 

が同じ運動で使用できることが確認できます。つまり、切削、穴あけ、研磨については、回転運動をする装置で対応できるので、そう言ったアタッチメントが用意されています。

 

 この構造では、簡素な作りになっていますが、安全装置を用意すると、AND回路を使うことになるので、手回し式のドリルには実装されていない 【 条件分岐 】 と言う物が発生します。

 

 先日、小学校3年生の理科で

 

 

と言う電球の仕組みと、

 

 

という電子接点と電球の点灯と消灯について学習するという事を書きましたが、構造的には、

 

 

のような接点による変化を学習する事になります。

 

 この状態だとそのまま通電してしまうので、工作機器だと危険ですから、主電源と操作を行う部分を個別に実装する事になります。

 

 その場合、この直列回路にもう一つスイッチを入れる事になりますから、構造としては、

 

 

のようになります。この構造物に

 

 

のように通電させても動作しません。そして、主電源を入れたとしても、

 

 

のような条件ですから、回路が動くことはありません。主電源を入れた状態で回路との接続を行うスイッチを入れると、

 

 

のように動作します。

 

 これが安全装置付きの回路になりますが、電気の場合だと、通電と遮断で対応できるのでこう言った 【 電子接点 】 を使う事で実装する事ができます。

 

 この条件では、二つの入力が存在し、双方がオンの状態でなければ動作しない仕組みなので、高校の命題で登場する 【 論理積 】 の結果になります。つまり、AND回路になりますが、論理積を使った物は鍵がそう言う仕組みですが、自転車の盗難防止で使用するダイヤルロックは、これにパスワードを組み合わせ、配列の総数を増やす事でセキュリティーを高めたものになります。数値の組み合わせが合わないと外れないので、これはよういされた5つの変数の中の指定された数値で条件の判定を行い 【 一致 】 した時に一つが開く仕組みになっています。その為、AND回路の構造というのは、電気を使わない物でも実装できるのですが、判定が存在する場合には、論理演算を用いた処理を実装する事になります。

 

 この条件で見てみると、 【 数値が合う 】 【 手順がある 】 と言う条件では、内部処理として 【 全てが一致する必要性を持たせたもの 】 を実装する事になるので、この場合には 【 AND 】 を追加します。

 

 券売機も含めた自動販売機については、論理演算回路の集合体になりますが、 【 導入金額 】 で判定を行い、その金額に達している場合、対象の物が選択可能になります。という事は、指定した金額と言う定数が用意されており、その定数と入力値の判定を行い、超過と言う条件においてのみ購入可能にする条件式が存在しています。

 

 清涼飲料水の自動販売機だと、価格以上の購入代金を導入すると、

対象の商品が選択できるようになりますが、一部商品を除くと同一の価格になっているので、その中から商品を選択する事になります。

 

 この時に 【 任意の数の中から1つを選ぶ 】 事になりますが、購入後には指定した金額が投入金額から差し引かれます。この処理に関しては、 【 購入可能な商品のどれを押しても金額は代金分だけ差し引かれる 】 という処理なので、

 

 

のような構造で処理ができます。つまり、ボタンが異なっても同じ処理を行うわけですから、行先が同じなのでラインを統合する事ができます。その為、項構造にすると、

 

 

のようにどれを押しても同じ回路につながります。このいずれかの条件で信号が出るようなものがOR回路になりますが、高校の数学で登場する命題だと 【 論理和 】 になります。

 

 金額を引く処理とは別に、指定した商品を輩出する処理が発生しますが、これは個別のボタンに独立した処理が割り当てられているので異なる製品が排出される訳ですが、の構造を考えると、

 

 

のような並列回路にしないとその挙動になりません。下側を代金を差し引く処理と考えて、上側を商品の排出として考えた場合、ボタンの操作で

 

 

の条件が成立すればいいので、並列回路で複数の処理が実行されているという事になります。

 

 信号を扱う場合、並列化した場合には

 

 

のように同じ信号が出ますが、分岐をした状態で異なる信号を出す事もできます。この時に、信号を反転させる必要があるので、NOT回路を使用します。これは高校の数学の命題では 【 論理否定 】 に該当する物ですが、
 

 

のように信号が出ている場合に、スイッチを切り替えると、

 

 

のように別の回路に信号が移る物になります。これを用いる事で、入力信号の状態変化で使用する回路を切り替える事が出来るので、二種類の回路のセレクターを回路内部に実装する時にも使用できます。

 

 構造物の挙動を見ると、こう言った論理演算が行われているのですが、 【 操作 】 が存在する場合には 【 変数を用いた肯定式が存在している 】 ので、その肯定式の推移に対して定数で判定を行う必要があります。その時に、どう言った条件で判定をするのかを考える事になります。

 

 この三つの論理演算回路ですが、 【 ド・モルガンの法則 】 でこれを組み合わせることで全ての論理演算回路を作る事が出来るので、判定を行う回路はこうした条件を組み合わせた結果として導き出す事ができます。

 

 その為、構造物を考える場合、直列回路に論理演算を加えて並列回路に接続して制御すると色々な事が出来るようになります。

 

 

■ 信号とパターン                   

 

 簡単な構造の工作機器でも安全装置を入れると論理演算回路が必要になり、そう言った物は集積回路やアナログ回路が登場する前から使用されていました。

 

 ちなみに、論理演算回路はモーターとスイッチによる回路がある時代には、 【 ブール代数 】 が存在していたので、19世紀には論理演算による回路の制御をするための材料は存在していました。ただし、当時は、そうした物を関連付けて考えていなかった為、1936~1937年に発表された 【 継電器回路に於ける単部分路の等価変換の理論 】 によって始まり、その後、多くの論文は発表されています。ちなみに、この研究を始めたのは日本の技術者の中島章氏で、クロード・シャノンと並ぶ実績と言われています。

 

 ブール代数ですが、中学校で方程式を学ぶ時に 【 等式の法則性 】 を学習しますが、それを理解していると、 【 ブール代数 】 は同じような仕様の物なので理解しやすいと思います。

 

 この中の旧収束は見かけない特性になりますが、

 

    交換則

    結合則

    分配則

 

の三つは、中学校で学んだ部分が基礎として理解できていると構造が似ているので理解しやすく、その拡張として覚えるとそれほど難易度が高い物ではなくなります。初等数学では法則を学習しますが、こうした法則性は、ベクトルや行列などを使う場合にも使用しますから、基礎固めは重要になります。

 

 電気信号は二値なので、1bitのデータとして処理ができますが、それを用いると論理演算をそのまま適応できることができます。これを論理演算で判定をすることで条件分岐を実装して動作させることが出来るのですが、アナログ回路の場合だと電子部品でこの処理を実装する事ができます。

 

 この時の入力の値は二値ですが、ボタンの動作と同じように制御できるので、

 

 

のようなスイッチのオントオフを切り替えると、5種類の物を個別に扱うことができます。この回路の上側を自動販売機の構造ではなく、同時押しが可能な条件で考えた場合、 【 パターン 】 を作ることができますが、それを用いる事で、機械の制御を行う事ができます。この考え方を用いて、縦糸と横糸の制御をしたものがジャッカード織機になります。

 

 この構造は、YouTubeに動画がアップされていますが、

 

 

のようになっており、パターンで流れてくる意図を制御して、それで織物のパターンを制御するという仕組みになっています。

 

 織物には個別のパターンがありますが、このパターンは糸の選択と配列の法則によって構成されています。その為、かける糸の選択が出来ている場合、糸の選択の法則を決めることで模様を決める事が出来る訳です。

 

 この構造になると、個別のパターンをパンチカードで選択できるようになるので、パンチカードで模様を制御できるようになったわけです。

 

 こうした構造は、オルゴールが同様の仕組みになっていますが、レコードの登場以前にオートマタと組み合わせた工芸品が流通している時代に穴の情報で音楽を奏でる円盤式オルゴールがありましたが、これもパターンの入れ替えで曲を奏でる物になっています。

 

 同様にパターンを用意して曲を奏でる機材に手回しパイプオルガンなどがありますが、これは現在だとデジタルで処理をしているMIDIのピアノロールのような構造で、ノートの部分が穴になっています。

 

 

 

 このように動作するモジュールが存在し、並列化された構造物の場合、そのモジュールの動作を信号のオンとオフで制御できるわけですが、これを電気を用いない機材の構造で制御していたのが、この時代にもパターンで機材を制御するような物は多く存在しており、現役で動くものも存在しています。

 

 

■ 機械とプログラム                 

 

 

 前述のような構造になると、 

 

【 データを変更することで機材の制御をする 】

 

という事が可能になりますが、ジャッカード織機の登場後にこれを計算をする機材にするコンセプトが生まれます。それが、チャールズ・ベバッジの階差機関であり、解析機関になります。コンピューターの始まりは計算機になりますが、初期の物は歯車なので、

 

 

 これは多項式関数を機械で処理する計算機になりますが、ここで用いられているのが階差法になります。この後、解析機関のコンセプトが生まれますが、この時代に 【 プログラム 】 の概念が登場します。

 

 ジャッカード織木は 【 織木を制御するデータ 】 を扱う物なので、コンセプトとしては、音楽を制御するオルゴールや手廻し式のオルガンなどのように 【 アルゴリズムが機材側に実装された物をパターンで制御するコンセプト 】 の物でしたが、それが内部の論理演算回路などを実装することで、複雑な処理を行えるようにしたものがコンピューターになります。

 

 解析機関では、この制御をパンチカードで行うコンセプトになっていますが、 【 プログラムによってさまざまな処理を実行できる 】 と言う仕様の物がコンピューターになります。

 

 つまり、プログラムと言うのは、 【 制御をするための手段 】 になりますが、これを 【 実装機能を使うための流れを作って実装する 】 事になるので、これを切り替えることで様々な処理が出来るようになったわけです。

 

 このコンセプトが生まれたのが19世紀の話ですから、20世紀のデジタル方式の計算機や後のアセンブラを用いた処理で機材を制御するワンボードマイコンが登場するはるか昔に、論理演算回路を電子パーツを用いない状態で動かすようなコンセプトが存在していたわけです。

 

 

 ログラミング                    

 

 プログラミングを行うのは、コンピューター上になりますが、先日も書きましたが、あくまでもプログラムと言うのは制御部なので、何を制御するのかで条件が変わります。現在は、STEM学習が行われているので、 【 デバイスとコンピューターとプログラムの関係性 】 などについても、そう言う物は存在しない時代よりは理解しやすい時代になっていますが、小学校でMbotを使ってロボットを動かす場合に、ロボットとコンピューターは別の物であり、プログラムは制御をするものであることを学びます。これは、Micro:bitなどのワンボードマイコンを使った場合も同じですが、入出力とコントローラー部分が異なる事が確認できるはずです。このように 

 

【 デバイスが存在する場合にはコンピューターは

制御装置として使用する 】          

 

ので、処理の内容によって使う物が違ってきます。現在は、コンピューター上での処理を行うので、プログラムもファイルとして保存しますが、こうした 【 ファイル 】 単位で別の処理を用意して実行できるので、用意されたコンピューターの性能の範囲で行える処理が決まっていますが、出力した電気信号によって機材を制御するkとが出来るようになっています。

 

 

 ログラムと制御                  

 

 プログラムと処理ですが、プログラミング言語を使った時に最初に学習するのは、表示と演算などで、その後にループや分岐などの処理を学習します。現在のプログラミング言語だと関数で動いているので、関数の学習と関数の構造の理解やクラスを作る事などについても学習します。これは、あくまでも 【 コンピューターの内部処理をする為の知識 】 なので、 【 挙動を考える場合に必要な材量 】 になります。

 

 コンピューター単体の動作ですが、ワンボードマイコンとブレッドボードの構造で考えると、解りやすいのですが、基本的に、コンピューターが動作している状態は、信号の入出力になりますが、この制御系を電気工作用のダイオードなどのパーツで完結させたものがアナログコンピューターで、集積回路で動いている物がデジタル回路になります。

 

 電気工作で動くものを作る場合、ボタンの動作で機材が動くようにする場合だと、回路を組む事で実装できますが、この場合、挙動が異なる場合だと、調整できる回路を実装する必要が出てきます。例えば、

AボタンとBボタンを用意していたとします。この時に、個別の処理を行う時は、

 

 

のようになるので、電子接点に直結した処理を実行する事になりますが、 【 同時押し 】 のような条件を含む場合だと、

 

 

のような構造になります。これが、2ボタンのガジェットがある場合における処理の方法になりますが、この時に動作する物を考える場合には、その処理を行えるような構造物を作っておく必要がある訳です。

 

 例えば、4ボタンで、二つのボタンを同じ処理に割り当てて処理をする場合だと、考え方としては、

 

 

になりますから、構造としては、異なるボタンで同じ処理を実装する機能を追加すると、

 

 

のようになります。対角の部分は含めていませんが、別のボタンの同時押しをする場合だと、

 

 

のような処理になりますから、機能が増えると増やした分だけ回路が複雑になります。

 

 その為、 【 事前に実装機能を決めておかないと回路の設計がまとまらない 】 訳ですが、歯車を使った場合も同様ですが、挙動を実装する場合には、その挙動になるような回路を組む事になります。

 

 電気の基本は、

 

 

になりますから、接続されや状態でなければ信号は伝達されませんし、遮断されると信号が切れるので、ボタンを押して反応するような構造を作る場合、電子接点が接触した時に信号が伝達されるような仕組みにしておく必要があります。

 

 これがデバイス側の処理になりますが、回路側で信号の伝達経路と処理が実装されていれば、信号を制御できるわけですが、コンピューターも同じで、ボタンは電子接点ですから、基板上の通電の有無で挙動が変わる仕様になっています。この時に、デバイス側がその信号を処理できる構造になっているのでコンピューターの挙動が制御されている訳です。

 

 回路の全てをアナログ回路で作ると必要となる機能の全てを実装しないとダメなので、連続して処理をする場合にはクロック回路の実装も含めて行う事になりますが、ワンボードマイコンやシングルボードコンピューターを用いた場合だと、接続した物をコードで制御して処理を行う事ができます。例えば、LEDの点滅をする回路だと、コードでループ処理を実装し、その中に表示と非表示の指定をして、その時に時間を指定することで点滅を指定できますから、この時に必要なのは、ワンボードマイコン側からの電力供給とLEDの接続だけになります。

 

 その為、アナログ回路ですべてを制御する構造物とコントローラーに接続したアクチュエーターとセンサーを使った処理では、構造が異なります。学習する上では、構造と動作の仕組みを理解しないと何もわからないので、基礎を学んだ後に掘り下げて知識を高めていく事になりますが、小学校のMbotの学習などはこうしたコントローラーを使った制御で、センサーとアクチュエーター部分はロボット側にある状態の物を使っています。

 

 

 造を考える                    

 

 プログラミングでは数学を用いますが、そもそも、代数や幾何学や解析学の構造体が数学なので、コンピューターも計算を行って動いている物になりますから、これが数学で動いている構造物という事になります。

 

 物事を考える場合だと、カテゴライズが必要になりますが、カテゴリーの中に複数の項目が含まれているので、そのカテゴライズを行うと、相関関係が解ってきます。

 

 まず、小さなパーツで考えると、 【 数字 】 と言う物がありますが、これは 【 数列 】 と言う集合体に包含された物になります。ここに、実数や素数や整数などの区分けがありますが、ここでは、一旦、数字と言う物にとどめてい置きます。

 

 小学校低学年では、数字を学んだ後に 【 数式 】 を学びますが、ここでは、 【 数字 】 と 【 演算記号 】 が含まれています。

 

 そして、中学校に入ると、 【 方程式 】 と 【 恒等式 】 を学びますが、この中には、数式が含まれています。

 

 また、恒等式は 【 関数 】 ですから、この中には 【 数式 】 と 【 グラフ 】 の概念が存在しますが、プログラミングを行う場合には、処理の実装に 【 f(x) = 変数xの式 】 の形で登場するような関数と全く同じものを使用しますから、【 プログラム 】 の中には、前述のように 【 関数 】 と 【 変数 】 が含まれます。

 

 恒等式では、 【 関数 】 を使うので、変数xに何を代入しても変数を含めた数式の結果を出す事ができます。これが恒等式の特性ですが、恒等式のf(x)=xのような式で、f(1)の時の解は1つしかありません。これは、y = x と言う関数がある時に、x=1の時の解を出すのと同じ記述ですから、1になります。つまり、xに値を代入した時の解は決まっています。

 

 肯定式が扱えるという事は、方程式も扱えるので、変数だけではなく、数式上で 【 アラビア数字 】 で表記される 【 定数 】 も利用できるわけです。

 

 こうしてみてみると、プログラミングでは数学の多くの物を包含しているので、数学の知識がそのまま利用できるようになっています。

 

 

 御方法の違い                  

 

 デバイスを制御する場合、アナログ回路だけだけで動かす方法と、デジタルで制御する方法があります。プログラムで動かす場合、アナログ部分が物理的な回路部分になりますが、OSを実装したものとそうでないもので制御方法が違ってきます。OSがある場合、GPIO以外に汎用バスを使う事が出来るので、ワンボードマイコンを繋いで端子から制御する条件とは少し状況が違ってきます。ワンボードマイコンでデバイスを使いだ場合、ポートからの信号の制御になるので、この場合、アナログがデジタルの信号をコードの記述でどうするのかをけって指定実行します。つまり、接続するパーツに実装されている端子をどのポートに接続するのか?を決めて制御するような流れになりますが、OSを実装した環境で、デバイスを制御する場合には、ドライバーを読み込ませてそれを利用する事になります。その為、USBの製品では用意されたドライバーがインストールされると認識できるようになりますが、その上で、認識したデバイスを使う事が出来るようになります。USBのデバイスは、前の世紀からPlug And Playによって接続するとそのまま認識するような流れになっていますが、既にドライバーがある製品だとそんな感じで認識させてコードで制御する事ができます。

 

 デバイスを扱う場合にはSDKをインストールするとプログラミング言語で使用できるライブラリが増えるので、未実装の関数を追加して、それを用いて関数の記述によってデバイスの制御が出来るようになります。VR/AR/XRで使用するデバイスは、プログラミング言語の標準実装機能には存在しませんし、新しい技術だと、プログラミング言語自体が対応していない場合がありますが、こうした製品は、SDKが提供されるので、デベロッパはそれを使ってアプリケーション内で使用できるようになります。自作のデバイスを作る場合だと、どのバスで接続してどう言った制御をするのかを考える事になるので、ワンボードマイコンで電気工作を制御しているようなデバイスを作り、それをコンピューターで制御するような感じになるので、OSの有無で制御方法が異なります。

 

 その為、OSを実装し他製品だと、OS側で制御している物が多くあるので、端子の制御まで行わなくても動くので、ワンボードマイコンとは異なりますが、STEAM学習だとこの双方を使います。

 

 プログラミング教育のプログラミングと言うのは、STEMなので、プログラムを書くというのは、その一部でしかないので、実際にはさらに広域な学習になります。 

 

 また、コンピューターで記述するコードの部分はコントローラーの部分なので入出力が揃わないと構図汚物としてセリ対馬戦から、そうした部分も含めた学習を行います。その為、全体像を知るとコードの打ち込みというのは、部分的な物であり、そのコードを扱う上でも数学などの知識が必要になるので、関連した物は通常の5教科の中で登場する物になります。

 

 現在はチャットボットなども一般的になっており、それを使ったコンシェルジュサービスなどもありますが、この処理は自然言語の処理をプログラムを用いて行っています。その為、言語を推論を用いて適正な物として処理をするようなことが出来るのですが、コンピューターを用いて言語を使う処理も基本部分は数学になります。