こどもプログラミング教室・オンライン講座/プログラミングアカデミー

こどもプログラミング教室・オンライン講座/プログラミングアカデミー

教育

2020/12/24

橿原市 プログラム、プログラミング言語の歴史について 後編

現在のプログラミングに繋がる1990年代 前半

1990年代に入るとパソコンも進化していきます。それまでのパソコンはCUIと呼ばれる、動きを命令するために文字を入力するようなインターフェースでした。1990年代では現在と同じようなGUIと呼ばれる、マウスや指などで指示するインターフェースへと移行したのです。現在であれば当たり前のUIはここで登場しました。そしてそれに合わせてより見た目に分かりやすい、美しい言語も登場してきます。現在でも現役で使用されているJavaやPythonなどです。これらはオブジェクト指向型の言語です。特にPythonは現在、AI開発に使用されており、注目され続けています。また、少し後にはPHPも誕生します。Webページの動的な動きを実装するためのスクリプト言語になります。C言語をベースにしています。当HPを含めたほとんどのWebページに使用されています。このように現在でも活躍している言語が多数生まれ、プログラミングの世界がワンステップ進んだ年代になります。

Windows95の誕生

1995年、Windows95が発売されました。こちらはカラー出力、ネットワーク接続機能が搭載されており、発売から4日ほどで400万本の売り上げを出すほど人気でした。これの登場によってインターネットは爆発的に普及しました。さらに同年、Rubyという言語が日本人まつもとゆきひろによって開発されました。様々な言語をブレンドしており、柔軟性が高く表現力も豊かです。こちらは日本だけではなく世界的に人気があり、現在でもWebサービスやアプリ開発で使用されています。また、この年からオブジェクト指向が主流となり、Javaが多くの業界で使用されていきます。人気ゲームであるマインクラフトもJavaによって構築されています。また、1997年にはJavaScriptが登場します。これによってクライアントサイドでの動的な動きを記述できるようになりました。ここまででWeb制作に必要な言語は一通りそろったことになります。

プログラミング近代、2000年代

2000年代に入り、まず大きな動きとしてMicrosoftがC#を開発しました。C++をメインにJavaを取り込んでいるため文法がJavaに似ており、Windowsとの相性も良いためこちらも現代で使われています。2003年にはScalaが登場します。こちらはオブジェクト指向型と関数型の両方の機能を備えたハイブリット言語であり、Javaと互換性を持つためJavaで使用していたライブラリをScalaでも使用することが出来ます。TwitterやPayPalに使用されています。国内での需要が特に高まっている言語の1つであり、新規に習得したいプログラマが増えています。さらに現在まだ有名ではありませんがすぐれた機能を持つ言語としてD言語というものが2007年に開発されました。C言語の置き換えを目的にこれまでの様々な言語の特徴を取り込んでいます。今後主流になる可能性も十分にあります。このようにこの年代から開発された言語は優れた物も多いのですがまだ主流にはなっていない、といったものが増えてきます。

スマホの登場する2010年代

スマートフォンも登場、普及したことで更にネットワークに接する時間が長くなり、頻度も上がってきました。そこでより機能性や安全性を考慮した言語の開発が盛んに行われるようになってきました。この年代に開発されたもので今後有力な言語はAppleによって開発され、iPhone用のアプリ等に用いられているSwiftやFacebookが開発したPHPを基にしている言語Hack等があります。さらに、Google社からはオブジェクト指向型であり、動的型付けと静的型付けの両方に対応している言語であるDartが開発されました。こちらはJavaScriptの代替えとして開発されているため、JavaScriptを学んでいると触りやすくなっております。しかしこれらの言語はまだ生まれて間もない為、どうしても既存の言語たちに比べると洗練されておらず、使い勝手がよくなかったりします。しかしその分成長の伸びしろがあるとも言えますので今のうちから学習する価値は

現在のプログラミング言語の状況

現在、プログラミング言語の主流はやはりオブジェクト指向型になります。よく、プログラミング言語を学ぶならC言語だ、と言った意見が出ますが就職や転職の際に有利になるのはやはり現場で実際に使われているオブジェクト指向型言語たちや、各業界ごとに人気のある言語になります。もちろんC言語を学ぶメリットもあります。プログラミングをより深く、根本的な部分を理解するにはC言語は必須になります。また、C言語は単純かつコンパクトなプログラムを書くことが出来ますので実は処理速度の面ではかなり優秀です。このように目的次第で様々な言語が役に立ちます。ただ、どの言語にも言える事ですが、まずは1つのものを集中して学習しましょう。どの言語でも基礎はほぼ同じです。その基礎をしっかりと身につけ、やりたいことがある程度出来るようになってから次の言語へ行くかどうか考えるとスムーズに学習できると思います。

2020/12/17

橿原市 プログラム、プログラミング言語の歴史について 前編

プログラムの歴史 1940年代

プログラムを活用したコンピューターは1930年代にイギリスの数学者「チャールズ・バベッジ」が最初に考案したとされています。彼が設計したコンピューターは解析機関と呼ばれています。これは記憶装置と演算装置から構成されています。プログラムを直接書き込む形ではなく、外部からパンチカードを読み込ませることでプログラムを制御する予定でした。50桁の数字を1000個格納でき、四則演算が可能です。更にそれぞれの比較や後付けで平方根の演算も可能となっていました。演算速度はおおよそ20桁同士の掛け算を3分以内に出来るだろうと言われています。この性能はムーアの法則と呼ばれるコンピューターの成長曲線を過去に向かって伸ばしてみると、その値よりもずっと高性能です。ただ、惜しむらくはこの解析機関、様々な要因が重なり、完成することが出来ませんでした。もし完成していたらコンピューターの世界はもっと違うものになっていたのかもしれません。

電子式コンピュータの登場

上記にて紹介した解析機関は機械式のコンピューターになります。機械的にスイッチを切り替えたりすることで演算を行っていました。しかし1940年代に入ると電子式のコンピューターが登場します。我々の知っているコンピューターの形にかなり近くなります。そして、そのコンピューターを制御するために誕生したのがプログラミングを行うための言語系統です。当時の電子式のコンピューターは0と1しか認識できないため、0と1の2進数で命令を記述します。この言語系統を機械語と呼びます。機械であるコンピューターが理解できる言語になります。しかしこの言語を人間が直接書くことはとても難しいです。そこで命令1つに対してニックネームのようなものを1つ設定し、人間に分かりやすくした言語が誕生しました。この言語のことをアセンブリ言語と呼びます。もちろんこの言語をそのままコンピューターに渡しても理解してくれません。アセンブリ言語を機械語に変換してからコンピューターに渡していました。

高水準言語の登場 数々のプログラミング言語の登場

1940年代までで機械語、アセンブリ言語と言った言語系統が生まれました。機械語は機械の動きをそのまま記述していますし、アセンブリ言語は機械語の命令1つ1つの記述を人間にわかる言葉に直したものです。これらは機械への命令をそのままの形で記述しているため、人間には少し分かりにくい言語になります。このような言語を低水準言語と呼びます。これに対してより人間に分かりやすく、記述しやすくした言語のことを高水準言語と呼びます。1950年に世界初の高水準言語であるFortranが誕生しました。また同時期にCobolやAlgol58も開発されています。CobolやFortranは現代でも使用されるシーンがあります。またAlgol58はこの後に生まれてくる数々のプログラミング言語に多大な影響を与えています。この時点でプログラミング言語の基礎は固まっていたと言っても過言ではありません。

C言語やオブジェクト指向型言語の誕生

1970年に入るとプログラミング言語の世界に一つの契機が訪れます。今でも多くの人が勉強し、現在のプログラミング界隈でも利用されることの多いC言語が計算機械学者「デニス・リッチー」を中心にして開発されます。このC言語の特徴は汎用性の高さにあります。それはコーディングやメンテナンス性によるシステムやアプリケーション開発等といった様々な分野に使える点に加え、対応している機器の多さにも言えます。パソコンはもちろんのこと、家電や自動車、果てはスパコンにまで、様々なハードウェアに対応できる、という点でも汎用性が高いです。また、同時期にはオブジェクト型言語の概念が誕生しました。それまでは手続き型と呼ばれる、上から順番に文章を読むようにしてソースを実行していく言語ばかりでしたが、このオブジェクト指向型言語はそれまでと違い、予め設計図のようなものを記述し、それに必要な要素を与えることで動きを組み立てていくように記述します。現代ではこのオブジェクト指向型言語が主流になっています。

進むプログラミング界隈

1980年代にはC言語を中心にプログラミング界隈は成長します。1983年にはC言語にオブジェクト指向の要素を組み込んだC++が開発されます。しかしこの時代はまだオブジェクト指向が認知されておらず、システム開発の中心はC言語が担っていました。オブジェクト指向が主流になるのはもう少しあとの話になります。また、C++が開発された時に同じくオブジェクト指向をメインに据えたObjective-Cが開発されます。こちらは後にSwiftが開発されるまでの間、iPhone等のMac製品の開発の主流を担っていました。更に1987年には、現在でもかなりの人気を誇るPerlが開発されました。こちらは開発効率の高さや対応言語の多さ、自由度の高さ、後付け機能の付けやすさ等々の理由から世界中で人気があります。また、それだけ人気があるので後付け機能も様々な人が開発されています。このように現在のプログラミング界隈に影響を及ぼすような言語が開発され始めました。

2020/12/12

橿原市 現在行っているプログラミングオンラインレッスンの方法

どのようなレッスンを行っているのか 内容について

当教室では小学生向けをメインにプログラミングについて指導しています。プログラミングに触れたことの無い生徒様には基本的にScratchから触ってもらい、独自に定めたカリキュラムを進めてもらいます。このカリキュラムではScratchプログラミングの基本的な考え方や動きを実現させる方法、簡単なゲーム作成の流れについて指導しております。カリキュラムを一通りしっかりと理解していればScratchのおおよそ基本的な使い方についてマスターできるようになっております。またScratchを通してプログラミングをしていく上で重要になってくる不具合があるか都度確認すること、不具合が出た場合に原因がどこかを探ることをそれぞれ習慣づける様指導しております。もちろんこちらから不具合の個所を指摘することもありますが、最初は必ず自分で考えてもらいます。それでもわからない場合は一緒に不具合の個所を見て、何がおかしいのか、その部分の動きを作っているのはどこかと言った解決までの道のりを示すよう心がけております。

オンラインでのレッスン内容について 教室との違いはあるのか

当教室では現在、教室でのレッスンとオンラインレッスンの両方を受け付けております。そしてその両方で受けて頂くレッスンの内容については差が無いように努めております。カリキュラムなどは全く同じものを使っておりますが、オンラインであるため、レッスン形態の違いからくる指導方法の違いが生まれてしまいます。また、環境の構築難易度から教室では受けられるレッスンでもオンラインでは厳しい、対処出来ないものも存在しております。例えば環境を構築するために料金が発生してしまうもの、教材に使用しているものが外部持ち出し禁止であるもの等が理由となっております。これらの差はいずれ埋めていきたいと考えておりますが、現在、対応が遅れている状態です。その他の違いとして教室でのレッスンでは他の生徒様の目があるので質問するのが恥ずかしい子でもオンラインだと1対1なので質問しやすいが逆に他の生徒様の目が無いことにより気が緩みすぎて集中出来ない、といったこともあり得ます。

実際のオンラインレッスンの流れ

まず、レッスン開始10分前にZoomミーティングを開始し、IDとパスワードを生徒様に伝えます。直前にお教えする理由としてはセキュリティ面を考慮したためです。その後、レッスン開始時に複数人の生徒様が居る場合、Zoomのブレークアウトセッション機能を利用します。こちらは本来、会議中にグループを作り、その中で話し合ってもらうための機能なのですが、これを私たちは生徒様一人一人に割り当てることで講師と生徒様の1対1の空間を作り出しています。そして最初に今回のレッスンの目的、内容を伝えて何をして欲しいかの指示を出します。そして一旦セッションを離れ、生徒様一人の状態にして作業を進めてもらいます。わからないことがある時や質問をしたい時、作業が修了したときは先生を呼ぶボタンを押してもらいます。このように疑似的にではありますが各生徒様と1対1の状況を作り出すことが出来ます。

オンラインレッスンと教室でのレッスンの両立

講師側の目線で行くと、正直な話教室でのレッスンとオンラインでのレッスンを同時に進行することはとても難しいです。教室の生徒様の場合、こちらの手が空いていない状態でも声だけで反応することが出来ます。対応できない場合でも「ちょっと待ってて」の一声をかけることが出来ます。なのである程度の人数を同時に見る事も出来ます。しかしオンラインの場合、当教室の方法では部屋を分けています。そしてその部屋に入っていない間、その生徒様一人に向けた声掛けの方法はチャットのみになってしまいます。チャット欄をまめに確認してくれる生徒様なら良いのですが、もちろん気付かない生徒様もいます。そうなった場合、先生に反応してもらえなかった経験を得てしまい、次から困ったときに呼びにくくなってしまいます。なので本来であればオンラインレッスンを行うならばオンラインレッスンを専属で行うスタッフを用意するべきです。

現状の方法の課題点

先ほども記述しましたが、教室でのレッスンとオンラインレッスンを同じスタッフが担当した場合、折角の疑似的な1対1を複数作ってもあまり意味がありません。今後よりオンラインレッスンが盛況になった場合、専属のスタッフを用意するべきだ、というのが課題点の一つです。次に、教材についてです。現在、教室でのレッスンと同じ教材を使用しておりますが、この教材は目の前で教えることを前提に作られたものなのでオンラインで教える際に不便な点があります。生徒様のパソコンを遠隔操作することも出来るのですがどうしてもラグが発生したり処理が重くて確認しずらかったりします。このあたりを解決できるような教材づくりんも課題の一つになります。また、レッスン内容と違うところで、各生徒様毎の自宅のネットワーク環境の違いについても課題があります。通信速度やカメラ画質等、上げればきりがありませんがこれらに対して柔軟に対応できるようなマニュアルを作成しなければならないのも課題です。

2020/12/02

かしはら市 子どもも大人も楽しめるロボットプログラミング

今人気のロボットプログラミングとは

近年よく話題に出てくるロボットプログラミングとは何なのか、解説していきます。ロボットプログラミングとは読んで字のごとく、ロボットにプログラミングしていくことになります。教室や講座によってはロボットははじめから用意されており、プログラミングだけしていくこともありますが、基本的には目標時に応じた動きをするロボットを自分で組み立てていき、それに合わせてプログラミングしていく流れになります。簡単なブロックで作るロボットから本格的なビス止めや電子回路を構成していくものまで多種多様です。子どもでも大人でも楽しむことが出来ます。普通のプログラミングとの違いは、プログラムを書き換えた際の変化が実際のロボットに反映されるため、見た目に分かりやすく、ロボット制作段階から動きを予想しながら作業を進められるのでプログラミングの方向性が明確で分かりやすいです。半面、ロボットによって対応している言語が違ったり、専用のソフトが必要だったりする可能性があります。

ロボットとプログラミングの関係性

ロボットとプログラミングは切っても切れない関係にあります。ロボットを思い描いた通りに動かそうとしたとき、モーターのオンオフだけではどうしても限界があります。例えば音を拾った時だけ動かしたり、黒い線を感知したときにモーターの回転方向を変えたりしようとするとそれを察知するためのセンサーが必要になり、そのセンサーから出される信号をきちんと認識しないといけません。この信号を認識し、それに合わせてモーターの出力を変えたりする部分がプログラムになります。プログラムがあるのと無いのとでは動きの自由度が天と地の差になります。なのでロボットを学んでいく際には一緒にプログラミングも学ぶことがほとんどになります。ロボットにさせたい仕事をしっかりと明確にし、それに必要なものを挙げていきます。センサーの読み取りやそれに対する返答等をプログラムでしっかりと組むことでロボットは完成するのです。

ロボット教室で学べる事

ロボット教室ではロボット制作を学ぶのはもちろん写真を見てどのようになっているのかを把握するための空間認識能力や説明文から実際の仕組みを把握するための読解力、途中でミスが無いかを確認する危機管理能力等を鍛えることが出来ます。また、もし間違っていたときにどこが間違っているのかを確認し、修正する力も見につきます。これらはロボット制作でも非常に重要になってきますが、他の作業でも十分に活用出来ます。より注意深く、確実に仕事をこなせるような能力を育てることが出来ます。空間認識能力も鍛えられるため、将来的に重機を扱ったり車の運転の際、死角を減らしたり、その部分が今どうなっているかを予想出来たりします。勿論ですが実際に指先を動かしてロボットを制作していくため手先の器用さも鍛えられます。これらを満遍なく鍛えらえれるロボット教室は将来、必ず役に立つスキルを提供していけると思います。

身の回りにあるロボットたち

私たちの身の回りにはたくさんのロボットが存在しています。自動車や電車、飛行機などの移動手段を担っているものや工場で働くアームロボット、ベルトコンベヤー、最近流行のルンバやドローンなど、多種多様なロボットが存在しています。それらのロボットにはすべて役割があり、その役割を果たすために効率よく動くように作られています。ギヤの組み方やモーターの取り付け位置、電源の配置や各ケーブルの配策等、物理的に調整できる箇所ではそのロボットの行動範囲の限界を広げることが出来ます。ですがどれだけ外側を改良してもそれをきちんと扱ってあげないと性能を発揮できません。どれだけいい車に乗っていても運転手が免許を取っていないとまともに運転できないようなものです。その運転技術に当たる部分が内部、プログラムになってきます。決められた性能の内、どれだけ引き出すことが出来るかを決めます。もちろんどれだけ効率よく動かせても元の性能が低ければ発揮される仕事の質も下がります。バランスが大事になってきます。

大人も楽しめるロボット

ロボット教室といえば子どもたちがワイワイと賑やかにロボットを作成したり競争したりしているイメージがあるかと思います。しかし昨今では大人の方がプログラミングを学ぶ手段としてのロボット教室も存在します。子ども向けの教室ではプログラミングは専用のアプリを使ったりするのですが大人向けの場合、Pythonと呼ばれるプログラミング言語を用いることが多いです。このPythonはAI技術等に使われている言語でJavaScriptやPHPのような目に見えるところで使われている言語は無く、システム面で多用されています。このような裏側で動くプログラムを作るエンジニアはバックエンドエンジニアと呼ばれています。本来でしたらPython習得の際にはプログラミングの結果がすぐにはわからないためハードルは高いのですが、ロボットですとすぐに動きに反映されるため、初心者の方でもとっつきやすくなっております。その為、大人向けロボット教室ではPythonを主流にしているのです。

2020/12/01

かしはら市 PGA プログラミング教室 Scratchレッスンについて

初めての方にScratchを勧める理由・1

プログラミングを初めてする方や小学校低学年の方にはScratchをまずは受講するようおすすめしております。いきなりJavaScriptやHTML、C言語等を学ぼうとすると考え方の基礎や処理の仕方を覚える前にまず立ちはだかる壁としてコーディング作業があります。コーディングとはプログラムを実際に各言語のルールに合わせて記述することなのですが、ほとんどの言語が英語ベースです。英語が苦手な人はこの時点でかなり心が折れそうになるかと思います。さらに、学校で教えてもらえるような英単語ではなく専門的な単語が多くあります。さらに普段PCで使わないような記号等も列挙しており、見ただけでしり込みしてしまいがちです。考え方や処理の順番など、プログラミングの基礎がわかってくれば一気に理解度は進むのですがそれまでが非常に遠いです。そこで活用されるのがScratchになります。こちらはプログラミングの基礎を学ぶために開発されたものになります。

初めての方にScratchを勧める理由・2

では何故Scratchがプログラミングの基礎を学ぶのに最適なのでしょうか。それは、Scratchにはコーティング、つまり文字を書く必要が無いからです。各種命令を実行するためのブロックを処理する順番に並べていくだけで簡単にプログラミングを行うことが来ます。さらに日本語にもしっかりと対応しているため、目標の動きをしっかりと把握し、文章にすることが出来ればその日本語の通りにブロックを用意し、順番に並べることでプログラムがほぼ完成します。この目標の動きを把握し、文章化するという作業がプログラミングで最も重要な作業であると言っても過言ではありません。なのでScratchでのレッスンではこの作業をしっかりと意識してもらえる様務めております。お手本を見てそれを再現するのが基本的な流れですが、そのお手本はどのような動きをしているのかを意識してもらい、実行するためにそれまでに学んだものを駆使していく、という作業に慣れてもらえたらと思っております。

Scratchで教える事 座標について

Scratchをまず教えることは座標の概念です。平面上の位置を確定させるために必要な情報が数字2つであると説明します。ここで大事なのは座標そのものではなく、あるものを確定させるために必要な情報が何なのかを意識s手貰うことです。プログラムでは様々な情報をもとに動きを決めます。最終的にさせたい動きに必要なものは何なのかをしっかりと意識してもらうために、まず位置を決める座標について解説しています。そのあとは座標の数字の変え方やコスチュームの変更のさせ方を指導し、スプライトを好きな位置に表示させられるようになってもらいます。位置を好きに変えられる、どのように変化させれば良いかを把握できるようになってもらうことで他の情報を触る際にも活かしていけるようになります。また、座標の考え方は実際にプログラミングをしていく上で頻出するのでここで慣れておいてほしいという思いもあります。

Scratchで教える事 メッセージについて

メッセージとは、Scratch上での各スプライト間での情報のやり取りになります。Scratchを知らない人にはちんぷんかんぷんだと思うので簡単に説明しますと、登場人物Aが何かをしたときに登場人物Bが何かをする、という命令を作りたい場合、Aが行動したあとに合図を出します。この合図がメッセージと呼ばれるものです。この合図は登場人物全員が同時に聴きます。Bも勿論その合図を聞きます。なのでBには合図を聞いたときに行動する、と命令しておきます。これで予定通りの動きになります。このメッセージはプログラミングにおいてすごく重要で、ある事象と別の事象を関連付けて考え、全体を通して命令を繋げていくやり方の練習になります。実現したい動きが1つで完結している場合は必要ありませんが、複数の要素が関係してくる場合も多々あります。その際にこのメッセージを使った処理を思い出していただけたらスムーズに記述できるかと思います。

Scratchレッスンの目標

Scratchを使ったレッスンの最終目標ですが、それはプログラミング的思考の習得です。目的に合わせて必要な命令や情報をそろえ、それらを適切な順番で処理出来る様に組み合わせていく流れを習得してもらうことがScratchレッスンの目標になります。必要な情報が何なのかを得る訓練が座標の流れになりますし、それらを適切に処理していく際に手段の一つとして使えるものがメッセージになります。その他にも多数の命令ブロックや条件ブロックをレッスンしていきますがそれらはすべて手段の一つです。最終的には自分で取捨選択し、最適な順番で処理するようになってもらえたらと思います。プログラミング的思考をマスターできたな、と感じた生徒様には引き続きより本格的なScratchでのゲーム製作に挑戦してもらったり、各種プログラミング言語の習得に進んでもらったりしています。逆に習得が不十分だなと感じた生徒様には足りない部分を復習として再度レッスンを受けなおしていただく場合もあります。

2020/11/28

橿原市 初心者・子どもにおすすめのプログラミング学習

今、プログラミングを学ぶ理由

現在、小学校や中学校等の義務教育期間内にプログラミング学習を必修化させる動きが来ています。それに合わせて就職や転職活動をされている方の間でもプログラミングを学び、習得したいという方が増えて来ています。理由はそれぞれで少し違ったりします。小学生に学んでもらう理由はプログラミング的思考の習得の意味合いが大きく、プログラミング学習という名前ですが実際にプログラミングをせずに考え方だけ学ぶ方針の学校もある程です。中学生以降ではちょっとずつプログラミングに触れていく内容の授業も出てくると思います。ただ、ここでも実際にプログラムを組んでいくのではなく身の回りに使われている技術を知る目的が大きいです。現在ではコンピュータを活用した機械が身の回りに溢れています。これらをより活用していくために最低限の知識を詰めていくのが中学校でのプログラミング学習になります。そして最後に大人の方々ですが、日本はAI技術が遅れています。特にプログラマーの不足が深刻化していますので求人は一杯あります。なので就職にとても有利になっています。

身の回りにあるプログラミング技術の結晶

先ほど述べたように現在、身の回りには様々なIT技術が活用されています。最もイメージしやすいのはパソコンです。またスマートフォンやゲーム機などもプログラムが組まれていることが分かりやすいかなと思います。意外と気付かないところでは各種家電や自動車等です。これらもある一定の動きが予めプログラミングされています。このように身の回りに存在するあらゆるものにプログラミング技術は使用されています。これらを普通に使う分には特に専用知識はいりません。しかしこれらのコンピュータは仕組みを理解することでより便利に、より快適になります。これからの社会ではさらに様々なコンピュータが増えていくのでそれらに対応できるよう今の内からしっかりとプログラミングについて把握していく必要があるのです。プログラミングを実際に出来るようになる必要はまだありません。どのようにプログラムが作られるのか、どのようにして動きを命令しているのかを把握しましょう。

子ども・初心者がプログラミングを学ぶには

プログラミングを学ぶ際にはまず目標を決めましょう。プログラミングをしっかりと理解し、プログラムを自作出来る様になるまで頑張るのか、プログラミング的思考の取得を目指し、将来に役立てる様にしていくのか、取り合えず流れだけつかんでみて楽しそうだったら続けようかな、等です。そしてその目標達成を目指していく際に自分がどの程度プログラミング的な考え方を出来るのかをチェックします。少しでも躓きそうだと感じたらまずはScratch等のプログラミング教育ツールから触るのがおすすめです。Scratchではプログラミングの中でも特に躓きやすい”英語での記述””文法”の2つが簡略化されています。文字を書いていくのではなく命令に応じたブロックを並べていくので視覚的、感覚的に分かりやすくなっています。実際のプログラムと同じく上から順番に処理し、ループや条件分岐などもしっかりと設定できますのでプログラミング初心者の方や子どもでもかなり本格的なプログラムを作成できます。

Scratchでプログラミングを学ぶ際に意識すること

プログラムを自作するのが目標の場合、Scratchを学び、ある程度プログラミングの流れをつかめたら次は本格的に自作プログラムの作成に入るはずです。その際に必要なプログラミング言語も確認しましょう。動きに合わせて最適な言語があるはずです。もしくはScratchで実現させる選択肢もあるでしょう。このように目的に合わせて必要なものを自分で選択していく必要があります。これはScratchを学ぶ際にも意識していくべき考え方になります。基本的にお手本を再現していくのがScrachのレッスンになります。お手本の動きをしっかりと確認し、どのような命令が必要なのか、どのような組み合わせをしていけばいいのか、どのような順番で実行していくのか等、プログラミングの基本的な考え方はScrachでも学べます。この流れをしっかりと掴むことで別の言語でもスムーズにプログラミングをしていくことが出来ます。

初心者の方におススメのプログラミング言語・JavaScript

上記ではプログラミングをまったく触ったことのない人向けのおすすめとしてScratchをお勧めしました。しかしScratchは元々が子ども向けですので中学生以上の方には少し子どもっぽいかもしれません。学べる内容的にはScratchでも問題ないのですが、考え方を分かっている人には実際のプログラミング言語を触っていく方が楽しいかと思います。その中でよくおススメされるのが”JavaScript”です。この言語は主にWebページに動きをつける際に利用されています。HTMLやCSS,PHPも並行して学べるとより良いのですが初心者にはさすがにヘビーですのでまずは一つJavaScriptに絞ってみましょう。おススメの理由ですが、開発環境を整えるのがとても簡単だということです。PCに元から入っているメモ帳でも作ることが出来ます。もちろんメモ帳では不便なのでより便利なテキストツールを探していくべきですが、最初のハードルが低いのは利点です。とにかくプログラミングをしてみたい、コーディングの雰囲気がつかみたいという方にはJavaScriptをおススメします。

2020/11/26

かしはら市 初心者がプログラミングを習得するためには

プログラミングに英語の知識は必要か

現在、世界ではIT産業及び情報化社会が急速に発達しています。ここ日本でもその傾向は変わらず、身の回りにはコンピュータを用いたものが増え、あらゆる情報が飛び交いそれらを自由に閲覧出来るような世の中になってきています。しかし、急速な発達に反して日本では優秀なIT技術者、プログラマーが不足しているという現状があります。理由はたくさんありますがその一つにプログラミング習得への苦手意識、ハードルの高さがあります。専門用語の数々やプログラミング言語のほとんどが英語ベースであるため、元来英語が苦手とされている日本人には特にハードルが高く感じてしまいます。ただ、実際にプログラミングに触れていくと英語の知識はそこまで必要では有りません。もちろん詳しい方が誤字脱字のミスが減ったり初見である程度理解出来るといったメリットがあります。ただ、分からない単語は調べればいいですし英語の文法なんかは全く必要ないです。

実際に必要なスキル その1

では実際に必要なスキルは何になるのかと言いますと、まず第一に国語力です。意外に思うかもしれませんがこれはかなり重要なスキルになります。何故ならば、実現したい目標には何が使われているのか、どのような動きなのかをしっかりと言葉にする必要があるからです。漠然とした指示ではコンピュータは動きません。1から10まですべてをしっかりと命令してあげる必要があります。そのためにもきちんと動きの説明が出来るような国語力が必要になってくるのです。常日頃から何がしたいのか、それをするために何が必要でどの順番で処理していくのか等を頭の中で考えたり実際に文章に起こしたりしてプログラミングに必要な国語力を鍛えていきましょう。また、この話はプログラミングだけではなく、人に説明するときや自分の意見をしっかりと通したい時等、様々な場面で必要となってきます。話しの分かりやすい人になれるような力を身に着けていきましょう。

実際に必要なスキル その2

上記に続いて必要なスキルを述べていきます。国語力に続いて必要なスキルとして数字を操る力が必要になります。これは計算が出来たらいいわけではありません。何せコンピュータですので計算自体は勝手にしてくれるのです。では数字を操るとはどういう意味かと申しますと、計算式そのものを作り、自分の思い描いた通りに数字を変化させることになります。コンピュータへ命令する際、様々な数字を使っていくことになりますがそれらは自分で考えた命令に適切な範囲で、適切な変化の仕方をしてもらう必要があります。その為の範囲の決め方だったり意味のある計算式の記述だったりをしっかりとこなせる力が必要になります。学校の授業だと記述式の文章問題を解く際に使う力です。そしてこの計算式の意味を決めたり、範囲を決めたりするときに先述した国語力を使う必要が出てくるのです。これも日々の勉強の際に毛再意識の意味を考えてみたり、自分で例題を思いうかべてそれに沿った式を作ってみたりして練習していきましょう。

実際に必要なスキル その3

ここまでは学校で鍛えれるスキルを書いていきました。勿論これらは大変重要なスキルですが、更に必要なスキルがあります。それは調べる力です。プログラミングの世界は日進月歩です。常に新しい便利なものが誰かによって作られています。最終的にはそのステージに立ちたいものですが最初の内は厳しいです。自分の目標に使えそうなものを探し出し、それを活用していくスキルを最初は養っていきましょう。ただし、見たままを何も考えずに真似していくだけでは力になりませんので、なぜそれが便利なのか、なぜこのような動きが出来るのか、どのような応用方法があるのか等しっかりと仕組みを把握していくようにしましょう。最初の内は検索に時間がかかったり、何度も同じことを調べてしまうことになりますが、経験を重ねていくうちにより効率のいい検索方法を見つけ、検索した内容を自分の力にしていけるようになっていくはずです。

プログラミングを習得するコツ

プログラミングを習得するには多くの努力が必要になってきます。そんな中で少しでも早く習得するためのコツがあります。それが上3つで述べたスキルを意識することです。例えば国語力をつけるために自分の起こした行動についての説明を頭の中でしてみたり、文章問題を読んで式を立てる練習をしてみたり、そしてこの2つをより効率よくできないかを検索してみたりです。特に検索は日ごろからたくさん行っている人も多いと思います。自分が欲しい情報を探し出す力を身に着けるのを優先すると、他のスキルもついてくるかと思います。専門用語や英単語等、わからないことがいっぱい出てくるかと思いますがそれらを逐一検索し、自分の中で納得できるまで調べてみましょう。納得できなければ他のページを見たり本を読んでみたり、人に聞くのもいいと思います。悩み続けるのではなく情報を集めていく癖をつけましょう。実際、命令のコマンドや文法を全て覚えている人は少ないと思います。検索すればいっぱい出てくるのでその中から欲しいものを選ぶ選択眼を養いましょう。

2020/11/25

橿原市 小学生から始めるプログラミング Scratchで出来る事

Scratchとは

小学生に限らず、プログラミングを触ったことが無い人におススメしたいものがScratchになります。こちらはMIT(マサチューセッツ工科大学)のメディアラボにて開発されました。その開発目的は子どもたちにより楽しく、分かりやすくプログラミングに触れてもらおうというものです。なのでプログラミングを行う際に特に難しいと感じるコーティングの作業がScratchでは必要ありません。また、見た目にも分かりやすくなっているためより感覚的にプログラミングを実施していくことが出来ます。また、子どもたちの将来のために作成されたため、Scratchは無料で利用することが出来ます。ネットの環境さえ整っていれば用途を問わずに誰でもいつでも、全ての機能を利用することが出来ます。これらの特徴から日本でも子ども向けのプログラミング用教材として様々な場所で活用されています。

Scratchで出来る事

Scratchでは自分のアイデア次第で様々なことを実現させることが出来ます。実現させたいな、と思ったことはほぼ実現できるといっても過言ではないかもしれません。しかしそのような素晴らしいアイデアはなかなか一人では思いつきません。そこでScratchでは他の人たちの作品を見たり、その中身を自分の作品に応用することが出来ます。それ以外にも作品を公開することで世界中の人に見てもらい、アドバイスをもらうことも出来ます。自分一人ではなく、様々な人たちと交流し、情報を共有しあうことでより素晴らしい作品を目指していきます。なので出来る事は非常に多岐にわたります。その中でも特に人気のあるものがゲーム製作及びストーリー制作です。実在するものを再現する人もいれば完全にオリジナルの作品を作る人もいます。当教室ではそんなゲーム製作を一つの目標として指導しています。もちろん生徒様が何かしたい、作りたいというものが出来た場合はそちらを最優先し、アイデアを出し合う形に移行していきます。

Scratchでプロジェクトを作る際のコツ 目標を定める

Scratchでプロジェクトを作る際、自分の頭の中には様々な<アイデアやしたいことが浮かんでいると思います。それらを全て詰め込んでいくことが出来れば一番なのですが、実際にはそれぞれで干渉してしまったり、効率があまり良くなかったり等、問題点があとから湧いてくることがよくあります。これらを未然にある程度防ぐためにもまずは作りたい作品のゴールを明確にしましょう。どんなものが作りたいのか、絶対に入れたい動きはどれなのかを予め決めておくことで実際に必要になる動きが少しずつわかってくるかと思います。明確にする際、文章にしてみるのも有効な手段です。文章に直す作業の中で自然に情報も整理していけるはずです。実際の現場でも仕様書と呼ばれる、目標を明確にして必要な物を列挙した資料をまず作成します。また、目標がわかっているので他の人の作品を参考にする際にもどのような作品を見ればよいのか、その作品のどの動きを参考にするべきかを絞ることが出来ます。

Scratchでプロジェクトを作る際のコツ 1つずつコツコツと

目標を決め、必要な物を洗い出したら、次はそれらを実現していきましょう。このとき最も気を付けなければいけないことは途中で動作の確認を挟むことです。最後まで確認せずに最後まで作った場合、エラーや動作不良の原因を探るために1つずつ見直していく必要があります。また、直したと思ったら別の不具合が発生する場合もあります。このような事態を防ぐためには1つ動きを完成させるたびにそれ単体で動作を確認し、問題が無いことを確認しましょう。そうして動作を作り終えてからそれらを組み合わせてチェックしていきます。このように段階を踏んで少しずつ進め、間にチェックを何回も挟んで作業を進めることで確実にゴールへと近づいていくことが出来ます。これはScratchに限らずプログラミングをしていく上でも重要になってきます。焦らず丁寧にチェックを重ねていき、完成を目指していきましょう。

作品が完成したら

上記の作業を何度も繰り返し、作品が完成したら他の人に見せてみましょう。いきなり公開するのが怖い場合はお友達や家族、学校の先生等に見せてみましょう。様々な反応をもらえるはずです。褒められたり笑顔になってもらえたら素晴らしい作品が出来た証拠です。もし次を作るなら特に喜んでもらえたところを意識しつつよりクオリティを上げるためにさらに試行錯誤していきましょう。また、あんまり楽しめてもらえなかった場合でも大丈夫です。何が面白くなかったのかをしっかりと聞きましょう。その部分を直せば素晴らしい作品になるはずです。こういった他の人の意見というのは非常に重要です。素晴らしい作品にしていくためにはどうしても必要になってきます。慣れてきたらScratch上の他の人にも公開したり、逆に他の人の作品にコメントをつけたりしてみましょう。お互いに切磋琢磨していく環境がしっかりと整っているのがScratchですので、有効活用していきましょう。

2020/11/24

かしはらし プログラミング的思考を小学生に求める理由

プログラミング的思考とは

プログラミングを行っていく際、基本的にはまず目標を定め、その目標に必要なものをしっかりと把握してから試行錯誤を開始していきます。どのような動きが必要なのか、組み合わせ方はこれでいいのか等、1つ1つの動きに対応した書き方をどのように組み合わせていけばより効率よく目標を達成できるのか、といったものをしっかりと論理的に考えていきます。この考え方をプログラミング的思考と呼び、文科省ではこれの習得を目指すような方針を立てています。難しく話しましたが要するに、何をしたいのかを明確にし、それに必要な物を考えてそれらを効率よく組み合わせていきましょう、ということになります。うまくいかなかった場合はもちろん試行錯誤するのですがその際にも何がダメだったのか、原因をしっかりと明らかにしてからそれの解決策を考えていくのが効率の良い思考錯誤方法になります。これらを繰り返して目標達成を目指していきます。

プログラマー以外でも必要なのか

プログラミング的思考はプログラミング以外にも、あらゆる場面で使用されます。例えば日常生活でも先に完成形を思い浮かべ、それに必要な物を準備し、最適な手順を踏んで行くといった工程を踏んだ行動は少なくありません。普段は特別に意識をしていないだけで、効率的な過程を求めているのです。そして、社会で生きていく中で目標をしっかりと定め、必要な過程を最適な手順で進めていくことはとても重要です。無駄を省き、効率を上げていくことでよりよい成果を上げられるためです。もし目標にたどり着けなかったとしても大丈夫です。必要な過程をしっかりと判別しているため、それぞれの内容がわかっているはずです。ミスの内容に対してどの過程が悪かったのか、改善するためにはどのようにすればよいのかが容易になってきます。失敗を恐れずに試行錯誤を繰り返し、目標達成に向かって論理的に進んでいくためのサポートとしてこの考え方をより深く身に着けていくことが重要になってきます。

プログラミング学習の内容とは

プログラミング的思考とは言いますが今まで説明してきた通り、必ずしもプログラミングのみでしか習得できないものではありません。常日頃からしっかりと意識して目標を決め、それに必要な物や効率的な過程を考えていけば自然と身につくはずです。しかし、逆に言うと意識していかないとなかなか身につかないものでもあります。さらに小学生くらいの子供に習得してもらおうと思うと一段と難しくなってきます。そこで出てくるのが小学校からのプログラミング学習の必修化です。小学校の内から意識してプログラミング的思考を使ってもらい、早期の習得を目指していく流れになります。実際にプログラミングをしてもらうことはほとんどなく、様々な科目でプログラミング的思考を意識した内容を取り入れていく形になっていきます。もちろん実際にプログラミングに触れていく学校もあると思いますが作業環境やPC台数の問題から少数になると考えられます。

プログラミング学習が必修になる前に出来る事

現在、プログラミング教育は急速に展開されています。お父様やお母様の中にはパソコンに不慣れな方や苦手意識を持つ方も少なくないと思います。そんな中でご自身のお子様に近い将来、プログラミング教育が必修になりますと多くの不安を抱えると思います。小学生にパソコンは早いんじゃないのか、プログラミングなんて難しそうなのに大丈夫なのか、下手に触って壊したらどうしよう等、数えだしたらキリがありません。プログラミング学習が始まるまでに出来る事は2つほどあります。1つはしっかりとプログラミング学習の内容について調べる事です。通われる学校によって内容は変わってきますので直接学校へ問い合わせるのもいいかと思いますし、熱心な学校ですとHP等に情報を挙げていたりします。情報収集をしっかりと行い、どのような教育が行われていくかを知るのが安心につながります。次にプログラミング学習が始まった背景を知ることです。上記で述べた通りプログラミング的思考の習得を目的としていますが何故そうなったのかまでしっかりと把握しますとより理解が増します。

これからの学習内容について

コロナウィルスの流行もあり、今年度からオンライン学習を本格的に取り入れる学校がかなり多くなりました。それに合わせて先生も生徒も父兄もパソコンに触れる機会が非常に多くなりました。つまりコンピューターに触れ、命令する機会が多くなったということです。その命令がどのように作られているのか、どのような仕組みになっているのかを知ることでよりコンピューターを活用できるようになります。その知識を得るきっかけにプログラミング学習はなってくれると期待されています。今までは専門性が強く、初心者にはハードルが高いようなイメージがありました。その原因にはプログラミングに慣れていないことが多分に含まれています。今後、社会はより情報化が進んでいきます。そのため、より優秀なプログラミング等のIT技術を持った人材が求められています。小学生の内からプログラミングに少しでも慣れ親しんでもらうことで将来、優秀なプログラマーやシステムエンジニアになってもらえたらと思います。

2020/11/21

かしはら市 様々なプログラミング言語について

プログラミング言語とは

プログラムを実行してくれるのはコンピュータです。なのでコンピュータに伝わるように命令をしてあげないといけません。しかしコンピュータは私たち人間の言葉を理解してくれません。その為、コンピュータに理解してもらえる言語として開発されたのがプログラミング言語になります。普段人間が使用している言語と比べると、人間同士だと言葉の裏の意味や行間などを読み取ってくれるためある程度曖昧な指示でも理解してくれます。しかしプログラミング言語は必要な情報が記載されていないとコンピュータは理解してくれず、エラーという形で返事をします。また、記述する順番や文法も重要になってきます。なのでプログラミング言語を記述する際はしっかりと実行したい動きを把握し、それに必要な情報を正しい文法で記述する技術が必要になります。最初は文法等に苦戦するかもしれませんが、それぞれの記述の意味をしっかりと確認しながら読んでいけばおのずと慣れていくと思います。

プログラミング言語の種類

現在、世界では様々なプログラミング言語が存在しております。すべてを合わせると200種類上になります。使用用途に応じて向き不向きがそれぞれの言語に存在します。例えばhtml言語はWebページの制作に向いてるなどです。また各個人の好みの問題も多少あります。言語によって書き方や文法も様々なので自分にとって分かりやすい言語を選択する人もいます。どのプログラミング言語を学習していくかはよく話題に上がりますが、何をしたいかによって変わってきます。まずは目標を決め、それに合わせた言語を選択し学習してくのが一番だと思います。プログラマーになって何がしたいのかをはっきりとしたり、逆にプログラマーは何が出来るのかを検索したりして目標をしっかりと定めてから学習に入ったほうがモチベーションも高まります。目標によっては複数の言語を使用する必要が出てくるかもしれませんがその場合は一つずつ丁寧に学習していきましょう。あれもこれもと手を出しているとどれも中途半端になりがちになります。

htmlとは

htmlとは厳密にはプログラミング言語ではありません。マークアップ言語と呼ばれ、文章及びその文章の性質を表現する言語になります。しかしその他多くのプログラミング言語と同列で語る場合が多いのでここで紹介します。主にWebページを作成する際に使用されており、私たちが普段見ているWebページのほとんどにhtmlが使用されています。その役割はWebページの骨の部分になります。この文章は見出しであるとかここで改行する、ここの文字にはリンクを繋ぐ等Webページの根幹部分を構成する非常に重要な言語になります。Webページの制作やWebライター等の職種の人には必須科目となっております。また、文字のフォントを弄ったり大きさを変えたり背景に色を設定したり等見た目を整える際はhtml言語ではなくcssと呼ばれる言語を組み合わせます。cssとhtmlを組み合わせることで見た目をきれいに整え、メンテナンス性も向上することが出来ます。この2つの言語は記述した結果がすぐに確認できますので初心者の方にもプログラミングの感覚がつかみやすく、お勧めできる言語になります。

JavaScriptとは

JavaScriptも代表的なプログラミング言語のひとつです。こちらはWebページ上での様々な動きをつけるために使用されています。Webページを構成しているオブジェクトのすべてに干渉し、操作することが出来るため、実は普段最も身近にあるプログラミング言語になります。Webページ上の便利な動きのほとんどはJavaScriptで実行されており、例えば入力フォームに適正な形で入力されているかのチェックや検索ページを開いた際に自動で検索ボックスに文字を打てるように準備をしておく等、普段何気なく活用している機能が多くあります。更にJavaScriptの開発には特別な環境は必要ありません。最悪PCに元から入っているメモ帳でも作成することが可能です。しかし、これだけ出来る事が多いため、少し言語としては複雑になりがちです。完全初心者の方はまずScratch等でプログラミング的思考や流れにある程度慣れてから学習をしていく方が身につきやすいです。

PHPとは

PHPはJavaScriptと同じくWebページに動作を付けたり、Webアプリを制作する際に使用される言語になります。JavaScriptとの一番の違いはJavaScriptがブラウザ上で動作しますがPHPはサーバ―上で動作します。そのためこれまでに述べた言語と違い、開発するためにはサーバー上にPHPがインストールされている必要があります。しかしその分サーバー上のデータベースとの連携が簡単だったり、書き込む際にはhtmlに直接埋め込むことが出来るので初心者の方でも簡単に動作のチェックが可能となっています。開発環境さえ整えることが出来れば学習自体は初心者向けであると言えます。PHPはWebページの動的な部分を作る際にほぼ必須となってきます。入力フォーム欄の内容のチェックやメールの自動送信等、お客様とのやり取りで重要になってくる部分にも使われています。HPを制作していく場合は是非とも習得しておきたい言語になります。