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

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

プログラミング

2021/01/12

橿原市 JavaScriptプログラミング 関数について

プログラミングにおける関数とは

学校で学ぶ関数とは、複数の数字の関係性について式に表したものを指します。たとえばy=ax+b(a,bはそれぞれ定数)といった式が与えられている場合、xの数字を一つ与えることで決められた数yを求めることが出来ます。このように何か数字を与えることで決められた何かを返すような式のことを関数と呼びます。これはプログラムの世界でも変わりません。予め自分で必要な要素を定め(先ほどの例で言うとxの部分になります)、それに対してどのような処理を行い(先ほどの例でいうとaを掛けたりbを足したりしている部分になります)、どのような値を返すのか(先ほどの例で言うとyの部分になります。)を記述します。こうすることで同じ処理を何度も繰り返す際に記述量を大幅に減らせたり、やることは毎回同じだけど数字が違うような処理を行う際に毎度書き直す手間を省くことが出来ます。プログラミングを効率良く行うためには関数の考え方をしっかりと把握し、活用していく必要があります。

関数を使うことのメリットについて

先ほどもさらっと記述しましたがプログラミングを行っていく上で関数を用いるメリットは大きく2つあります。1つ目はコードの再利用です。プログラムの中には同じ動きを何度も行う場合があります。その際に毎回同じコードを記述していると手間ですし見た目にも分かりにくくなってしまいます。そんな時にその部分を関数として記述することで大幅に記述量を減らすことが出来ます。また、ミスが見つかった際にも関数を記述した部分を直すだけで済みますのでメンテナンス性も高まります。微調整を行ったり、処理を増やしたりする際も同様に関数部分を直すだけになります。2つ目の理由として、他者との共有が容易になることです。たとえば自分で思いついた複雑な処理を他者に使ってもらう場合、記述されたコードそれぞれを理解し、調整方法等について説明しなければなりません。関数にしておくことで与える要素の意味のみ説明しておけば後はコピペで済みます。これらの理由から関数は重宝されているのです。

関数の記述方法

関数の記述方法についてですが、勿論各言語毎に違います。しかし、大まかな形や考え方は同じなのでその部分について解説します。まず、関数を記述するには関数名を定義します。行う処理をそのまま名前にすることが多いです。無名関数を定義するパターンもありますが少しややこしいのでここでは割愛します。次に与える要素の数を決めます。1つだけのパターンもありますし複数個の要素を与える関数も作ることが出来ます。ここでは要素に名前を与えますがこれはあくまでその関数内での仮名になります。実際の変数名とは関係ないので注意しましょう。分かりやすくする工夫として実際の変数名と同じにすることも多いです。その後、実際の処理を記述していきます。与えられた要素に対して何かしらの処理を行い、最終的に返すものを記述します。返すものは一つですが、その途中で行う処理に制限は有りません。また与えられたものとは関係のない処理をさせることも可能です。

関数の実行方法

関数は宣言し、記述しただけでは仕事をしません。実際に必要な要素を与えてあげることで初めて実行されます。実行方法も言語によってさまざまですが基本的には関数名を記述し、そのあとに与える要素を記述する形になります。この実行が無いとどれだけ素晴らしい関数を作成したとしても意味はありません。また、実際実行している部分と関数の中身を設定している部分は繋がっている必要は有りません。なので基本的に関数の宣言はソースの初めの方でまとめてしておき、必要な箇所で関数を呼び出していくことが多いです。こうすることで関数の宣言等の実際に動作していない部分を区分けることが出来ます。また、関数の中にその関数を実行するように記述することもできます。この場合、特に対策していなければ一瞬で無限ループを起こし、最悪クラッシュの危険性があります。しかし関数の実行を遅らせる処理を挟むことで安全に無限ループを起こしたり、関数を実行する回数に制限をつける事で繰り返す数を決めたり、関数を実行しなくする条件を付けることで途中で終わらせたり等、便利な使い方もあります。

自分が使う関数

上記までで関数のメリットや記述、実行方法等について解説してきました。ここでは私がよく使う関数について、簡単に述べていきたいと思います。ソースコードを直接は書かないのでこの説明を読んで、自分ならどう実現するかを考えてみてください。連続した数をランダムに並び替え、それぞれを配列に収納する関数です。必要な要素はどれだけの数が欲しいか、の1つだけです。その要素を与える事で0からスタートする要素の数だけ連続した数を用意し、それをランダムに並び替えた配列を作成する、と言った処理を行います。この関数は複数個の、被りの無いランダムな数を使用する際に用います。処理としてはまず与えられた要素の数分だけ連続した整数を配列に数字を格納していきます。その後、配列の中身をシャッフルする、と言う流れですがこの部分が少しややこしいです。私の場合は配列の最後の部分を、その手前までのランダムな箇所の要素と入れ替える、という処理を最初の部分まで順番に行っていくことでシャッフルを行っています。ただ、これはあくまで私の方法なのでぜひ皆様のご自身のやり方を見つけてみてください。

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/10

かしはらし Scratchプログラミングで学ぶ場所の表し方

場所を表す色々な方法

人に場所を説明する際、どのようにして相手に伝わるように表現するでしょうか。指をさして場所を指定する、今いる場所からどのような道筋で行くかを説明する、住所を教える、大体の方角と距離を伝える等々場所を説明する為の手段は数多く存在しています。それぞれ良い点、悪い点が存在しており、その時々に合わせて使い分けていく必要があります。しかしプログラムは違います。プログラムは1つの手段でのみ場所を表現します。この手段が座標です。基準となる地点を1つ設定し、そこから目標地点までの各方向の移動距離を指定することで目標地点を表す方法になります。基準や各方向の向き、数などは場合によって異なりますが基本的な考え方は同じです。そしてこの座標の考え方はScratchにも勿論使われています。Scratchでプログラミングを行っていくにはこの座標と言う考えかたをしっかりと把握しなければ自分の思い通りの動きを実現させることは難しいでしょう。

場所を表す重要性について

Scratchに限らず、プログラミングを行っていく上で自分の想像した通りの位置に要素を配置するスキルは必須になってきます。どのようなプログラムを作成する場合でも命令には場所の情報が必要になってきます。例えば自動販売機の場合、ボタンが押されたらその位置をまず把握し、指定された飲み物がある場所に対してそれを出すよう命令していく必要があります。ここだけで場所の情報を2回も使っています。車の場合、アクセルペダル、ブレーキペダルをどの位置まで踏んだのか、ハンドルをどれくらい回したのか等場所情報がかなりの頻度で使われます。このように機械はたくさんの位置情報を正確に把握し、それに対して動きを変えていかなければいけません。また、ゲームやWebサイト等、実際の動きが目に見えないものでも位置情報はたくさん使われています。例えばWebサイトですが、マウスポインタが上に来た時に画像が切り替わるような動きをつける場合、マウスポインタの位置や画像を切り替える範囲などを指定しなければいけません。プログラミングを行っていくうえで場所を示す情報は必須なのです。

プログラミングにおいて場所を示す方法

プログラミングを行っていくうえで様々な数字や情報を取り扱っていきます。その中に場所の情報もあります。最初に記述したように場所を示す方法は多数あります。直接指さす、道筋を説明する、住所を伝える等々…。プログラミングで一番使われる方法は座標を示す方法です。基準となる点を原点にし、その地点から各軸の方向にどれだけ離れているかで表します。この方法のメリットは2つです。1つは情報量が少ないことです。平面上であれば縦方向と横方向の2つの数字、立体であればそれに奥行きを足して3つの数字でそれぞれ決まった1つの点を表すことが出来ます。Scratchは平面なので基本的に2つの数字を使って場所を指定していきます。少し難しい計算をして応用すればScratchでも立体的な表現をすることが出来ますが今は省きます。Scratchに限らず、おおよそ平面上で座標を示す時は横方向の軸をX軸、縦方向の軸をY軸と呼び、それぞれの軸方向にどれだけ移動したかをX座標、Y座標と呼びます。この数字を操ることで好きな位置から好きな方向に好きな距離を移動させることが出来るようになります。

Scratchで座標を利用する方法

実際にScratch上でどのように座標を触っていくのかを説明していきます。まず、スプライトの表示位置を調節する時に座標を触ります。この場合、旗を押した際に表示させたい位置へ移動するようなプログラムを組みます。場所を変える、ということはつまり座標を弄るということです。これから先、何度も場所を変えたりすることがあると思いますが、場所関係の動きの場合はほぼ確実に座標を触るんだ、と理解しましょう。さて、どのようにして座標を弄るかと言いますとブロックに「X座標を~に、Y座標を~にする」というものがあります。このブロックの数字をそれぞれ指定してあげることでこの命令を実行した際にその座標の位置にスプライトが移動します。このようにScratchで座標を利用する方法はとても簡単で、ブロックに座標と書いてあるものを使うだけです。但し、ブロックが違えば動きは変わってきますのでそれぞれのブロックがどのように座標を変えるのかをしっかりと把握しなければいけません。

Scratch上での座標の基準

座標を決めるためには基準となる原点が必要になります。Scratchにももちろん原点が存在しております。原点の位置はステージの中心になります。そして各座標にも上限が存在します。その上限を超えるとステージからはみ出してしまうので基本的にこの上限値以内で各座標を触っていくことになります。その上限値ですがX座標の最大が280、Y座標お最大が180となります。また、それぞれの座標の数字ですが、X座標が大きくなれば右方向に、Y座標が大きくなれば上方向にずれていきます。ここで中心から左や下に行くにはどうすればよいか。それは先ほどとは逆のことをするので数字を小さくすればよいのです。0より小さい数字にすれば中心より左、下に指定することが出来ます。0より小さい数字とは負の数、つまりマイナスの数です。数字の手前に”ー”をつけるだけで大丈夫です。慣れるまでは計算など大変ですが、何度も触って慣れていきましょう。

2020/12/08

橿原市 一番近くのパソコン教室とオンラインレッスン

教室で習い事を受けるメリット

今まで、習い事といえば教室に通い、講師の方一人に対して複数人がレッスンを受けるか、少し高額になってくるとマンツーマンでレッスンを受ける、というのが一般的でした。教室に通う形での習い事は、講師の方と直接顔を合わせられ、何かあったときに助けてもらえる安心感がありますし、習い事によっては一般家庭では道具や環境を整えるのが難しい物でも教室に行けばそろっています。さらに同じ習い事に通う他の生徒様方との交流の機会もありますので交友の輪が広がるチャンスでもあります。習い事の種類によっては全国的な大会が開催されていたり、資格取得のための検定を受けさせてもらえるものもあります。これらは分かりやすい目標になりますので習い事を続けていけるモチベーションに繋がりますし、自分がどれ程のスキルを習得しているかの大まかな目安になります。検定を合格した、大会でいい結果を残せた、となれば自分に自信が持てますし、より上を目指す理由にもなっていくと思います。

オンラインレッスンを受けるメリット

次に、オンラインでレッスンを受けるメリットについて説明していきます。まず、移動時間が必要ありません。教室に通う場合、どれほど近くても数分は移動しなければいけませんが、オンラインレッスンの場合自宅で受けることが出来、移動する必要がなくなります。なのでその空いた時間を他の趣味や習い事の予習、復習等に充てることが出来ます。また、自宅で受ける場合、いつも過ごしている場所なのでリラックスしてレッスンを受講できます。飲食も基本的には自宅のルールに従いますので教室程気を遣わずに行うことが出来ます。教室で受講する場合、環境が完全に整えられているので自宅で同じことが出来ない場合がありますが、オンラインレッスンの場合、そもそも自宅などの実際の環境でレッスンを受けることが出来ます。その場で出来なかった場合、講師の方に現場での対応方法を教えてもらうことが出来ます。最後に今一番言われているメリットがコロナウィルスの感染防止です。オンラインですのでもちろん接触の可能性がありません。このメリットが最近オンラインレッスンが増えている一番の理由になります。

パソコン教室で学べる事

そんな数ある習い事ですが、その中でもパソコン教室について今回記述していきます。パソコン教室では基本的にパソコンで出来ることを幅広く教えています。例えばMicrosoftofficeのそれぞれの使い方やパソコンの各種設定の触り方、プログラミングレッスン等になります。これらは少し前まではすべて社会人の方向けが多数でした。その場合officeを使った資料作成や就職に有利なプログラミング言語検定の取得等が最終目標になります。しかし現在、子どもや初心者向けのレッスンが非常に増えています。理由としてはパソコンが非常に身近な存在になり、日常生活でも活用する人が増えたこと、義務教育期間内でのプログラミング学習が必修になったこと等が挙げられます。なので最近のパソコン教室では初心者の方から仕事に使う方まで幅広く学べるよう多数のコースを設けていることが多いです。

パソコン教室には通うべきかオンラインか

将来をどこまで見据えるかに寄りますが、パソコンに慣れたい、他の人より少し得意になりたい程度の場合や将来的にはがっつり学びたいけどパソコンの操作や設定には慣れていない場合は教室に通い、しっかりと整えられた環境で操作を憶えていくのがいいと思います。環境を整えるにはある程度操作を憶え、知識をつける必要があるため、オンラインレッスンでは最初の環境の構築の段階で躓く可能性があるためです。また、環境の構築は作業としてもあまり達成感もなく、面白くないと感じることが多いため、ここで飽きてしまう可能性もあるため、やはり少しでも操作に不安がある場合は教室にしっかりと通うことをお勧めします。逆に将来的にはプログラマーになりたい、パソコンをしっかりと使いこなしたい場合や操作にある程度慣れている、今まで教室に通っていた経験がある場合はオンラインでも問題なく受講できると思います。環境の構築は確かに少し難しいですがプログラミングを本格的に行う場合、必須のスキルになりますのでそこから教えてもらえる機会があるなら生かすべきだと思います。

近くのパソコン教室、オンラインパソコン教室

先ほど上記でも述べましたが自分の現在のスキルや目標に応じて教室に通うべきかどうかを決めるべきですが、例外的な要因もいくつかあります。例えば自分のパソコンを持っていない場合やご自宅の通信環境があまりよくない場合はオンラインレッスンの選択肢を選ぶのは大変難しいです。レッスンを受けるための準備が必要になります。教室に通う場合、移動に使う時間や費用などが掛かりますがレッスンは確実に受けることが出来ます。また、参考文献等を用意してくれている教室もありますので検索に不慣れな場合はそちらを参考にすることもできます。それに対してオンラインはやはり移動の手間がかからない点が大きいです。また、自分で調べる方法やコツなどをつかめればある程度オンラインレッスンで基礎を学び終えるとあとは自力でなんとかなります。教室では出来るけど家に変えると出来ない、という習い事にありがちな問題がオンラインレッスンでは起こりにくいのです。オンラインレッスンにすべきか、教室に通うべきかお悩みの場合は直接教室の方に連絡を取り、相談してみるのもいいでしょう。無料体験を開催している教室も多くありますので実際にレッスンを受けてみるのが一番かもしれませんね。

2020/12/04

橿原市 Scratchプログラミングで学ぶゲーム製作

Scratchとは

Scratchとはプログラミングに触ったことが無い人やコーディングに苦手意識を憶えてしまった人に向けて開発されたプログラミングアプリです。すべての機能が無料で仕様することが出来ます。プログラムを作っていくうえでアルゴリズムやフローチャートといった処理の順番や優先順位などを考えなければいけないのですがScratchはそれを視覚的、感覚的に分かりやすく表してくれます。なのでプログラミングに触ったことが無い人でもさせたい動きとそれに必要な処理さえ分かっていればプログラムを作ることが出来るのです。目標を決め、それに必要な動作や処理の順番をあれこれ試行錯誤する過程を感覚的に進めることが出来るのがScratchの良いところです。ゲームを自作する場合もまずはScratchから進めていき、より本格的なものを作りたくなったら別の言語やツールを使っていくことをお勧めします。

ゲームを作る準備

ゲームを作る為にはたくさんの準備が必要になります。まずはゲームのジャンル決めです。どのようなゲームにするのか、格闘ゲームなのかシューティングゲームなのかといったゲームの大まかなジャンルを決めます。その次に実際のゲームの動きについて決めていきます。ここで自分の個性を発揮していきましょう。ただし、あまりにも複雑にすると構築が大変になるので最初の内はシンプルなゲームを作ることをお勧めします。全体の動きを考えた後はその動きを実現するために必要な命令を考えていきます。この際に必要な命令と処理の順番、条件の分岐などを考えていく必要があります。言葉にするとすごく難しく聞こえますが要するにどんな時にどんな動きをさせるかをまとめる作業です。そして最後にゲームに使う画像や音楽などの素材の準備です。これはゲーム製作を始めてからでも大丈夫ですので出来たら準備しておいたほうがいい、程度に考えて大丈夫です。これらの準備を資料にしたものを仕様書と呼び、実際の制作現場では必ず最初に用意するものになります。この仕様書がどれだけ精密でしっかりと書けているかによって作品のクオリティも変わってきます。

実際にゲームを作成していく

仕様書が出来ましたら実際に作成していきます。仕様書にある必要な動きを実現していきます。この際、複数の動きを一気に作り、後でまとめてチェックしてしまうとどの部分で不具合が起きているのか、組み合わせの問題なのかがわからなくなってしまうので1つずつ作り、その都度動作チェックをしていきましょう。Scratchの場合、各動作ごとにプロジェクトを分けてしまうのもお勧めです。その時点で動きがおかしい場合、動きを実現させるためのプログラミングがそもそも間違っていると考えられます。その部分を直していきましょう。ある程度動きが出来てきたら複数を組み合わせましょう。どのように組み合わせればよいのか、処理の順番はどうなのか、分岐の条件は等、試行錯誤しつつ組み合わせていきます。ここで不具合が出てしまった場合、先ほどの組み合わせの部分や処理、条件分岐が間違っていると考えられますのでより良い方法を探りましょう。このサイクルを繰り返していき、目的の動作を実現させます。

他の人を参考にする

先ほどのやり方はすべて自分で考えて作る場合になります。実際にはほとんどの動きは他の人の手によって実現されています。Scratchでは他の人の作品を全て、中身まで見ることが出来ます。さらにその中から気に入ったものをバックパックに入れることで自分の作品に持っていくこともできます。なのでどうしてもアイデアが出ない時や動きの実現方法が思いつかない時は一旦他の人の作品を眺めてみましょう。それが出来るのもScratchを使用するメリットです。様々な作品の中から自分の気に入ったものを探し出し、どの部分がその動きなのかを見つけ出しましょう。もしくは作った本人に尋ねてみるのもいいかもしれません。予期せぬアドバイスをもらえるかもしれませんし、なによりアイデアというものは一人では限界があります。複数人でアイデアを出し合うことでより良い作品を作り出すことが出来ます。そういった交流関係を気付いていける環境がScratchには整っています。

完成した作品をどうするか

上記で述べた作業を何度も繰り返していくことで自分の納得できる作品が出来上がったかと思います。その作品をそのまま自分だけで楽しむものとして終わらせるのもいいですが、他の人と共有してみてはどうでしょうか。Scratchでは簡単に他の人と作品を共有できます。先ほど他の人の作品を参考に、と書きましたが今度は自分が参考にされる番になるのです。しかし、参考にされるだけでは終わりません。他の人が自分の作品を実際にプレイし、感想を言ってくれます。感想はクリエイターにとって一番うれしい反応になります。頂けた感想を糧に更に面白い作品を作るためのモチベーションにしていきましょう。もしくは完成した作品に手を加えてより面白くすることもできます。公開した作品を少しづつ改良していくことをバージョンアップと呼んだりもします。ゲーム製作の最終目標は面白いゲームを作ることです。完成した後もより面白くするための政策は続いていきます。

2020/12/03

橿原市 初心者が感じるプログラミングの壁を超えるには

プログラミングにはどのような壁があるのか

プログラミングに初めて触れる際、どうしても高いハードルを感じるシーンがいくつかあります。まず最初にプログラミングを行っていくうえで必要になる環境を整えていく作業に壁を感じてしまいます。例えばテキストツール等をPCにインストールしていく際、基本的にツール配布サイトは英語です。さらにPCのスペックに応じて適切なバージョンのツールを選択しないと起動すらしてくれないこともあります。そして環境を整え、プログラミングを学習していくと大量に出てくる英語もまた壁の一つになります。コーディングに使用するのはもちろん、プログラミングを行う上で出てくる専門用語もほとんどが英語です。そしてなんとか作り上げたプログラムには大体エラーが付いてきます。そのエラーの原因を探るためにメッセージを見るのですが、このメッセージも英語です。これらが主に初心者が感じる大きな壁だと思います。しかし、実際のところこれらは簡単に解決することが出来ます。以下に記述していきたいと思います。

プログラミングの環境を整える

プログラミングを学んでいく際、まず最初に行う作業が環境の構築です。ここでPCについてのある程度の知識が試されますが、学習したい種類によって難易度が変わってきます。例えばPHPを学びたい場合、動きを確認するためにサーバの準備が必要になってきます。コンパイラと変換用のソフトが必要な言語もあります。これらに比べてJavaScriptやHTMLは特別なソフトが必要ありません。最低限メモ帳アプリがあればコーディングし、プログラムを実行することが出来ます。ただし、メモ帳アプリはとても使いにくいので本格に学習していくならテキストツールをインストールすることになります。テキストツールはたくさんの種類がありますがそのほとんどが英語ベースです。さらにPCのスペックやOSのバージョンに応じてインストールする必要もあります。これも少し難しく感じてしまいます。これらの壁ですが、Google等で検索すると日本語で解説してくれているサイトがたくさんあります。これらを参考にすれば簡単に整えられます。

専門用語を理解していく

環境を整えた後、実際に色々な本やサイトを参考にしてプログラミングを学んでいくのですが次に来る壁として専門用語があります。プログラミングでは普段使わないような単語が頻出します。さらにそれらは英語がメインになっているのでなおさら馴染みがなく、意味が分からずに躓いてしまいがちです。ゲームやアニメの専門用語だと思って何とか一つずつ理解していきましょう。それぞれの意味や使いどころを知ることでプログラミングについて何かわからないことがあった際に参考にしたい文献内容をより理解しやすくなります。最終的にはすべて覚えてしまうのが最善ですが、最初から覚えようとするとそっちにばっかり意識が向いてしまい、肝心のプログラミングの知識まで覚えられなくなってしまいます。これでは本末転倒なので最初はそんな言葉があるんだなぁくらいに思っておき、出てくる度に検索を掛ける程度でいいと思います。それよりも実際のスキルに結び付くであろう知識を優先しましょう。何度も検索をしていく中で自然と単語は頭に入っていくはずです。

コーディングに使われる英語たち

さて、これで環境を整え、参考資料を読めるようになりました。ここから実際にプログラミング作業に入っていくのですがここでさらなる壁にぶち当たります。ほとんどのプログラミング言語では英語がベースになってます。そしてコーディングをしていく際にはその英語をアルファベットのまま打ち込んでいくのです。カタカナでは無く正真正銘の英文を打ち込んでいく印象を持ってしまいます。ここの壁が非常に高く感じやすいです。今まで日常的に英文を打ち込んでいた人は少ないと思います。また、学校で習うような普通の文章とは違い、プログラミング言語独自の文法が存在しています。これらも非常に話をややこしくしてしまいます。ただ、これらも実際に作業していけば気付くのですが決して難しい物ではありません。英語がずらっと並んでいますがそのほとんどは英単語の羅列です。そこに英文の文法は関係ありません。プログラミング言語毎の文法も決して難しくなく、むしろ通常の英文より簡単になっています。1つ1つの意味をしっかりと意識しながら記述していきましょう。

壁を感じてしまった時

プログラミングは慣れるまでに様々な壁が出てきます。上記に上げた以外にも感じたことのある壁は多数あるかと思います。そんなとき、どうすれば壁を越えられるのか、何をモチベーションにすればよいのか、それは最初に自分がプログラミングを学びたいと思った動機を思い出すことです。例えばプログラミングが楽しそうだと思った場合、ややこしい話を抜きにしてプログラミングを楽しめるScratchを触ってみる、他の人の作品を遊んでみる等してプログラミングの楽しさを思い出してみましょう。資格取得や就職のために学んでいる場合、本当に自分にとって必要なのかを考えてみましょう。流行っているから、なんか就職に有利そうだから、等では少し続けるのは難しいです。自分の将来に絶対役に立たせるんだ、という強い意志を持つか純粋にプログラミングに楽しさを見いだせるか、このどちらかが出来ていないと上記の壁を乗り越えることは厳しいです。しかしこれはプログラミングに限らずあらゆる学習に言えることですね。

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でのゲーム製作に挑戦してもらったり、各種プログラミング言語の習得に進んでもらったりしています。逆に習得が不十分だなと感じた生徒様には足りない部分を復習として再度レッスンを受けなおしていただく場合もあります。