個別指導塾、学習塾のヒーローズ。植田(名古屋市天白区)、赤池(日進市)の口コミで評判!成績が上がる勉強方法が身につく!振替、自習も便利!
// 条件1に該当しない場合の処理

スクラッチ

夏休みの自由研究 かけ算とわり算の原理をプログラミング

塾長です。

いよいよ夏休みも後半です。

学生のキミたち、そろそろ読書感想文や自由研究に着手しましょう。

ということで、自由研究ネタを1つご提供します。

算数の研究です。

しかし、内容が深くてプログラミングもありますから、きっと中学生でも使えるでしょう。

算数や数学で「文章問題が苦手」という人には、特にチャレンジして欲しいです。

そもそも「かけ算」や「わり算」の意味とは?

もしも小学1年生や2年生から、次のように質問されたら、どのように答えますか?

  • 「かけ算」とは何ですか?
  • 「わり算」とは何ですか?

塾長は、次のように答えます。

  • 「かけ算」とは「たし算の繰り返し」です
  • 「わり算」とは「ひき算の繰り返し」です

なぜなら、

人類で初めて「かけ算」や「わり算」を発明した人は、きっと上のように考えたに違いない!

塾長は、そうに思うからです。

これをプログラミングで確かめていきたいと思います。

「たし算」で「かけ算」をプログラミングする

もしも「かけ算」が「たし算の繰り返し」なら、その通りに計算ができるはずです。
やってみましょう。

具体的な例から「かけ算」のパターンを考える

5×3の場合

例えば、5×3の計算を考えましょう。

5×3=5+5+5=「5を3個たす」=15(積)
ここで「たし算」の「+」記号は2個です。

つまり、

5を「3個」たすときは、たし算を「2回」使います。
たし算の回数は3-1=2回です。

7×6の場合

もう1つの例、7×6の計算ではどうでしょう。

7×6=7+7+7+7+7+7=「7を6個たす」=42(積)
ここで「たし算」の「+」記号は5個です。

つまり、

7を「6個」たすときは、たし算を「5回」使います。
たし算の回数は6-1=5回です。

「かける数」は「たした個数」

まとめます。

m×nの場合

一般化して、m×nの積を計算する方法を考えます。

上の2つの例から、これは「mをn個たす」です。
そして、たし算を使う回数は(n-1)回です。

つまり、

m×nとは、mに(nー1)回だけmをたし算すること

まとまりました。

スクラッチでプログラミング

それでは上のm×nの手順をプログラムにしてみましょう。

mにmをnー1回たす

これをプログラミングしたのが次です。

たし算でかけ算をプログラミングした図

  1. 「積」という変数を用意して、それにmを代入
  2. 「積にmをたす」という処理を(nー1)回くりかえす
  3. 「積」を表示

試しに、4×9でプログラムを実行しました。結果は36で正しいです。

つまり「たし算」を繰り返せば、確かに「かけ算」を計算できることが分かりました。

そしてこのプログラムは、どんな自然数どうしのかけ算でも計算できます。

プログラムのカイゼン

ところで、このプログラムは1つ分かりにくい所があります。

「×n」なのに、繰り返す回数が「n-1回」です。
「かける数」と「回数」が1つズレています。

これを同じにできれば、もっとプログラムが分かり易くなります。

そこで、こう考えたらどうでしょうか。

変更前: 最初に「積」という変数を用意して、それにmを代入します。
変更後: 最初に「積」という変数を用意して、それに0を代入します。

こうすれば、繰り返し回数もnになります。
つまりプログラムがこうなります。

プログラムがシンプルで見やすくなりました。

「かける数」は「0にたした回数」だった!?

プログラムを見やすくするために、上のように改善しました。

逆に、このプログラムが行っている処理を式で表すと、どうなるでしょうか。

例えば、7×6の場合に戻れば、こうなります。

変更前: 7×6=  7+7+7+7+7+7+7
変更後: 7×6=0+7+7+7+7+7+7+7

単に「かける数」と「たす回数」が同じになるように工夫しただけですが、実は、こうした方が数学的にも良いことが分かっています。

それは「かける数」を3、2、1、0と小さくしていけば分かります。
変更前の考え方では、

7×3=「7に7を2回たす」
7×2=「7に7を1回たす」
7×1=「7に7を0回たす」
7×0=「7に7を?回たす」

となってしまい、7×0を考えることができません。
一方、変更後の考え方ならば、

7×3=「0に7を3回たす」
7×2=「0に7を2回たす」
7×1=「0に7を1回たす」
7×0=「0に7を0回たす」

となりますから、ちゃんと7×0=0も計算できます。

ちなみに0という数も人類が「発明」した数なのだそうです。

「ひき算」で「わり算」をプログラミングする

たし算と同じように、わり算についても考えてみましょう。

もしも「わり算」が「ひき算の繰り返し」なら、その通りに計算ができるはずです。

やってみましょう。

具体的な例から計算のパターンを考える

9÷3の場合

例えば、9÷3の計算を考えましょう。

9÷3=「9の中に3がいくつあるか?」=「9-3-3-3=0だから9から3を3回ひけた」=3(商)
ここで「ひき算」の「-」記号は3個です。

つまり、

9から3を「3回」ひき算できたから、商は3です。

12÷5の場合

もう1つの例、12÷5の計算ではどうでしょう。

14÷5=「14の中に5はいくつ?」=14-5-5=2だから2回ひけて4あまった」=2(商)あまり4
ここで「ひき算」の「-」記号は2個です。
まだ4余っていますが、3回目の引き算まではできません。

つまり、

14から5を「2回」ひき算できて4余るから、商は2あまりは4です。

「商」とは「引くことができた回数」

まとめます。

m÷nの場合

一般化して、m÷nの商とあまりを計算する方法を考えます。

上の2つの例から、商は「mからnを引ける回数」です。
しかし、ひき算できる回数は、計算してみなければ分かりません。
1回引いてみて、まだ引けそうならもう1回引いてみて・・・という計算を繰り返します。

m-n=〇 もしも 〇>n ならば もう1回引ける・・・

という判断を繰り返してい良く計算です。
ですから、

わり算で商と余りを求めるとは、

m-n-n・・・-n=△ かつ 0≦△<n
k回引けたので商がk、余りが△

という処理をすること

まとまりました。

スクラッチでプログラミング

それでは上のm÷nの手順をプログラムにしてみましょう。
それが次です。

ひき算でわり算をプログラミングした例

  1. 商(引けた回数)を0回に設定、余り(引き算の残り)をmに設定
  2. 余り に 余り―n を代入し、商に1をたす(引いた回数を数える)
    これを 余り<n になるまで繰り返す
  3. 商と余りを表示

「あまり」は文字通り「余りもの」だった!?

上の処理からわかるように、余りは文字通りの余りでね。

mからnを何度もひき算して、もうこれ以上はひき算できない。
けれども中途半端に数が残っている。

それが余りです。

「わり算」を「お茶くみ」の手順で考えれば、商が小数でも解ける!?

ところで、これまで「わり算」の意味を

m÷n=「mの中にnがいくつあるか?」

としていました。
しかし、m÷mの意味は、もう1つあります。

m÷n=「mをn当分したら、1つあたりいくつになるか?」

これは、お茶くみの手順で考えれば、解くことができます。

mミリリットルのお茶をn個のコップに入れていくと、1人あたり何ミリリットル?

mミリリットルを全て急須にいれて、n個のコップを並べます。
急須から少しずつn個のコップへお茶を注いでいき、均等になるようにしますよね。

そして、急須の中の量が少なくなるにつれて、分配するお茶の量も少なくしていきますよね。
最後の1周は1滴ずつとか(そこまでやらないか)。

この手順をプログラムにすればよいのです。

  • まず、1ミリリットルずつ順番にn個のコップに入れていきます。
  • そして、余りが1×nミリリットル未満になったら、今度は0.1ミリリットルずつ入れていきます。
  • そして、余りが0.1×nミリリットル未満になったら、今度は0.01ミリリットルずつ入れていきます。
  • そして、余りが0.01×nミリリットル未満になったら、今度は0.001ミリリットルずつ入れていきます。

・・・これを繰り返していき、最後に1つのコップに入っているお茶の量が商になります。

このようにすると、商が小数になるようなわり算でも「ひき算」の繰り返しで計算できることが分かるでしょう。

プログラミングは、みなさんの宿題にしたいと思います。

たし算の記号「+」と、かけ算の記号「×」が似ている理由

上で見たように、かけ算はたし算で計算できます。

そう考えると、かけ算の記号「×」と、たし算の「+」が似ているのも納得ですよね。

「+」を少しだけ変えて「×」が作られています。
というか、角度を45度かたむけただけですね。

似ているどころか、形は何も変わっていません。

よく考えられていますね。

ひき算の記号「-」と、わり算の記号「÷」が似ている理由

わり算は、ひき算の繰り返しでしたから、

わり算の記号「÷」と、ひき算の「-」が似ているのも納得です。

ただ、形も変わっています。
真ん中の横線は共通ですが、それに上下の「・」マークが追加されています。

これは「わり算」=「分数」だからでしょう。

m÷n=$ \frac{n}{m} $

と書けることは、小学5年生の算数の単元「等しい分数」で習います。
分数の形をデフォルメすれば、正に「÷」というピクトグラムになりますね。

よく考えられています。

わり算のもう1つの記号「/」

ところで、エクセルやプログラミングの計算式では、わり算の記号を「/」で表しています。

たし算の記号「+」を傾けて、かけ算の記号を「×」としたように、
ひき算の記号「-」を傾けて、わり算の記号を「/」とした方が、統一感があります。

グーグル検索で調べてみると、海外の学校や教科書では、むしろ「/」を採用している方が普通のようです。

さらにコロン「:」を使っている国もあるそうですよ。
なるほど、その手もありますね。

これからコンピューターの利用が進んでくると、わざわざキーボードにない「÷」を使うのはめんどうですね。
もしかしたら日本も将来は「/」になるのかもしれません。

ちなみにプログラミング言語 Pythonでは、

  • m/n ・・・ m÷nの商(小数)
  • m//n ・・・ m÷nの商(整数)
  • m%n ・・・ m÷nの余り(整数)

という使い分けをしています。

コンピューターは「たし算」と「ひき算」しかできない!?

今から10年以上前に、塾長は趣味で望遠鏡を動かすプログラミングをしていました。

乾電池で動くような、とても小さなコンピューターを動かすプログラムでした。
このような小さなコンピューターは「マイコン」と呼ばれています。

マイコンにも色々ありますが、指先に載るような小さなものになると、使える命令がとても少ないです。

そのとき使っのは、PIC16Fなんちゃら、というマイコンでした。
それには四則計算の命令が「たし算」と「ひき算」の2つしかありませんでした。

「かけ算」と「わり算」が無いのです。

電卓を買ったら「×」と「÷」のボタンがなかった・・・というくらい衝撃でした。

「かけ算」や「わり算」が1回で計算できるコンピューターは高級品なのだと、そのとき知りました。
逆に、そのような高性能なコンピューターでも、中身は「たし算」と「ひき算」の組み合わせだけで作られているのだと実感しました。

考えてもみれば、これは当然です。

コンピューターはデジタルですから、0と1の数字をたくさん並べて計算しています。

0に1をたしたら1で、1から1を引いたら0です。
そのような処理を、膨大な数だけこなして、結果的にたくさん複雑な処理をしています。

だから究極的には、たし算とひき算しかしていません。

そう考えると今回は、

コンピューターの原理だけを使って「かけ算」や「わり算」をプログラミングした

とも言えます。
ちょっと大袈裟ですかね。

何はともあれ、計算には意味があります。
上のように「かけ算」や「わり算」の意味を深く理解してしまえば、文章題も怖くはありません。

あとがき

教科書が分かりやすくなり、一部はデジタル化しました。
無料で多くの分かりやすい解説動画が視聴できるようになりました。

分かりやすい教材があふれている今日ですが、だからといって、昔に比べて優秀な生徒が増えたという印象はありません。
つまり今も昔も、相変わらず

計算はできるけど文章題ができない

というのが、多くの生徒たちの悩みです。

計算の「やり方」はドリルで訓練しやすいです。
早く計算する「テクニック」も指導の良いネタです。

その一方で、

計算の「意味」や本質を考えさせるようなコンテンツは、なかなかウケません。
むしろ眠くなります。

しかし、それらにこだわって勉強しなければ、なかなか文章問題が得意にはならないでしょう。
そこが腕の見せどころ、と言ったところでしょうか。
きっとベテランの先生は、そういうのが得意なのだと思います。

ですから、より本質をつくようで、なおかつ面白くて飽きさせないようなコンテンツが、
きっとこれから先、どんどん登場してくることでしょう。

もしもプログラミングを活用した上のような事例が、その好例になるのなら幸いです。

 


生徒・保護者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
【会員限定】お子様の成績と可能性を伸ばす18個のノウハウ

友だち追加


塾関係者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
「zoomで簡単。オンライン授業移行の教科書」
または個別対談も可

友だち追加

 


名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!

★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL

プログラミング教育 なぜパイソンが人気でオススメなのか?

pythonって知ってる?

宇宙とコンピューターが大好きな塾長です。

学校の先生や塾の先生が知っておくべき3大プログラミング言語といえば、

  1. Scratch(スクラッチ)
  2. python(パイソン)
  3. JavaScript(ジャバスクリプト)

ですね!(塾長の偏見です)。

冗談を抜きにしても名前くらいは知っておくべきで、けっこう重要なキーワードだとは思います。

中でもpythonの人気はずっと上昇傾向ですね。

先日はプロコースの生徒たちを指導しましたが、python(パイソン)を使っています。プログラミング教室「マイクラミング」の話です。
そして先週、新規面談をした中学生も独学でpythonを学び始めたと言っていました。なぜかドヤ顔。最近は単に「プログラミングを勉強している」というより「pythonをやっている」という方がマウントをとれるのでしょうか。
また別の会議では、とあるプロバイダーのとある技術者さんが「python本格的にやりたいなー」とおっしゃってました。

そんな感じで私の身の回りでもpythonが盛り上がってきています。

ということで、今回は

  • なぜ、python は人気上昇中なのか?
  • なぜ、python がおすすめなのか?

について書きます。

ただし、どうしても塾長の感想を含んでしまうので、そこはごめんなさい。

pythonの対象年齢(対象レベル)とは

人気があるとはいえ、pythonは「テキストプログラム」のプログラミング言語です。そのため、どうしても次のハードルが出てきます。

  • 英単語をたくさん使う
  • 1文字でもタイプミスをしたら動かない

確かにpythonの文法はシンプルですが、それでも直ちに「小学生にもわかりやすい」とはなりません。少なくとも上の2つのハードルをクリアできる精神年齢が必要です。

もしも上の2点が心配ならば、スクラッチ(Scratch)から始めるのが無難だと思います。

例えば、1文字でもタイプミスをすれば動きません。カンマとピリオドを間違えただけでもエラーです。次の2つの例を見比べてみてください。

name = "太郎"
print( "私の名前は{}です。",format( name ) )
name = "太郎"
print( "私の名前は{}です。".format( name ) )

上のプログラムは間違っていて動きませんが、下のは正しいです。

たったの1文字の差です。

こうした1文字の間違えでも冷静かつ前向きに対処できる精神年齢(IQ的な能力)が必要です。

学年や年齢ではなく、次のような感覚で判断した方が無難だと思います。

プログラミングが初めての場合

  • 学力が平均点くらいの中学1年生
  • ミスに対して前向きで、ミスの原因を調べたり予想したりするのが得意な小学5年生
  • 英語で作文が得意な小学3年生

くらいが対象の下限になると思います。

プログラミング経験がある場合

  • マイクラミングのハイコース卒業者
  • スクラッチで「自分で考えて」一通りのプログラミングができる人
  • 他のテキストプログラミング言語で「自分で考えて」一通りの制御構文をプログラミングできる人

必ずしも文法の詳細を暗記している必要はなく、調べながらでも良いですが、「自分で考えて」プログラミングしてきたことが必須です。

考えなしに教科書やネットからコピー&ペーストしただけでは、たとえそれが動いたとしても、プログラミングを経験したことにはなりません。
たまにそういう人がいるので注意してください。

pythonが人気の理由

ネット上でpythonが人気だーと話題になるのは主に2つです。

  1. 人気ランキングでpythonが上位
  2. pythonの求人は年収が高い

ランキング上位について

人気ランキングというのは、プログラマーからの人気投票の結果です。どんな理由でも1票は1票ですから「なんとなく人気があって上位」ということです。
とにかく大雑把に「pythonが好き」という人の割合が高いよ、ということくらいしか分かりません。

後半で塾長がpythonを使ってみた感想を書いておきますので、参考にしてみてください。

年収が高い件について

これは人材の人数が少ないという意味で、確かに高収入になりやすいです。

pythonの求人内容は、主に情報解析や人工知能を使ったプログラミングです。

  • 情報処理や人工知能を扱える高度な数学を身に着けている!
    なおかつ、
  • pythonでプログラミングができる!

そんな高い能力を持った人なんて、そもそも人数が少ないです。
人にできないことができるのですから給料が高くなります。

今のところ、その種の仕事は数が少ないです。
しかし今後は増えていくと見込まれていますから、学生の皆さんは希望を持って良いと思います。

とはいえ、3年後、5年後にどうなるかは分かりません。
工業的なニーズや商業的なニーズは、就職する時が来たら、その時に流行っているもので考えた方が実用的です。

もしも就職がずっと先であるならば、

「できるだけ学校の勉強をプログラミングに生かす」

という姿勢で「基礎」をしっかり鍛えておくのが良いと思います。
そういう意味では業界色の薄いpythonやScratchが無難ですね。

プログラミング言語 python の特徴

次にプログラミング言語としての特徴を挙げてみました。

pythonの特長

  1. 文法がシンプルかつ十分(短い文で済む、カッコ不要など)
  2. 高機能(高度な技術、トレンドば技術にすぐ対応)
  3. マルチプラットフォーム(WindowsでもMacでもLinuxでも富岳でも)
  4. 書いたらすぐ実行できる(コンパイル不要)
  5. 基本的に全て無料
  6. すぐに調べられる(解説ページやサンプルプログラムが多い)

pythonの得意分野

  1. 統計の全般
  2. 科学シミュレーション
  3. 人工知能の利用や開発
  4. 画像処理
  5. Webサーバー
  6. ゲーム(遅くても良い分野)

およそ何でもOKです。
日本のスーパーコンピューター「富岳」でも、ちゃんとpythonでプログラミングができますよ。

pythonの苦手分野

  1. 高速処理が必要なゲームプログラム
  2. 高速で高スループットな処理が必要なサーバープログラム

書いたらすぐに実行できる「インタープリター言語」であるため、どうしても計算スピードが犠牲になります。
そのため極端に計算スピードを要求されてしまうような処理には向きません。

フォートナイトやファイナルファンタジーのような本格的なCGのゲーム開発は無理です。
また動画編集ソフトや高度な画像編集ソフトも、pythonで開発するには無理があるでしょう。
pythonでは性能不足です。

CPUやGPUの性能を限界まで使いきるような超高速処理のプログラムを作るなら、C言語やC++、あるいはそのWindows版であるC#がおすすめです。
ほんの少しだけ性能を妥協する代わりに、マルチプラットフォームで動くアプリを作るならJavaがおすすめです。マルチプラットフォームの中ではJavaが最速です。

ただし、そのようなアプりの中で「作業を自動化するためのプログラミング言語」としてpythonが採用されている場合もあります。例えばBlenderというCGを作るアプリです。

性能を抜きにすれば、pythonはトップレベルに強力なプログラミング言語と言えます。

実際にpythonを使ってみた感想

塾長はこれまで、仕事やバイトなどで、C言語、C++、Objective C、Visual C++、Visual Basic、BASIC、Java、JavaScript、PHP、python、SQL(どこまでプログラミング言語とみなすか悩ましいですが)などを使ってきました。

結論から言えば、それらの中で pythonがダントツに良かったです。

書きやすいし、読みやすいし、思ったことがすぐできる!

という意味で、とにかく使いやすいです。初めてpythonを使ってみたときは、本当に衝撃でしたよ。

プログラマーの視点で優れていること

まず「プログラマーの視点」から見て、使いやすいです。

簡潔で読みやすくて無駄がない。それなのに、奥が深い!

そんな文法です。

きっと、プログラミングに関する「先人の知恵」が、ふんだんに組み込まれているから、そんなエレガントな文法になったのでしょう。

例えば「デザインパターン」研究されてきた知恵の一部が、言語の仕様として最初から組み込まれています。デコレーターやイテレーションなどです。
他にも、標準で用意されているオブジェクトの型の種類がちょうど良いです。細かすぎず、粗すぎず、それでいて、順序付けできるか否か、イテレーティブか否か、変更できるか否か、というカテゴライズの全てを網羅しているラインナップです。

ちょっと細かい話になってしまいましたが、要するに、本当によく考えこまれた言語だなぁと思います。

こうした言語仕様の何がすごいかと言えば、pythonで良いプログラムを書くだけで、良い設計をしたのと同じ価値が生まれるということです。
コーディングと設計の区別が、もはや無くなってきたということです。
優れた言語仕様と読みやすさが相まって、pythonのプログラムは仕様書としての価値も高いと言えます。

実際 pythonには、プログラムから仕様書を自動生成してしまうツールがいくつか用意されています。

とはいえ、こうした「プログラマーの視点」から見たエレガントさは、他の新しいプログラミング言語も負けてはいません。いろいろなプログラミング言語がタケノコのように、あちこちで生まれている時代です。

しかし、それでもなお、pythonが凄いと言いたいです。その理由は次の通りです。

科学技術の視点で優れていること

pythonは、なんと「数学や物理の視点」から見ても使いやすいのです!

他のプログラミング言語と一線を画す理由が、正にこれだと塾長は思います。

これまでのプログラミング言語は、数学や物理を取るか、アプリを取るか、のどちらかでした。
数学や物理が得意になれば、アプリを作るのが苦手になります。
アプリを作るのが得意になれば、数学や物理が苦手になります。

ところがpythonは最初から両方できます。

数学や物理が使いやすいので、pythonは大学の研究室や企業の研究開発で、よく使われています。

かつて理系の研究室ではC言語やC++(以降、まとめて単にCと略記します)を使って、研究に使う数学や物理の公式をプログラミングしていました。Cは何でも作ることができて、しかもプログラムが爆速で動作する、という最強のプログラミング言語ですが、その代わりに、何でも自分たちで用意する必要があります。先輩から後輩へプログラムを引き継いで、改良したり機能を拡張したりして、多くのコストと時間をかけてプログラムをメンテナンスしていく必要がありました。

しかし今は pythonのおかげで、そんな苦労の大部分が不要になってしまいました。pythonではたいていのことが最初からできるからです。

よっぽど計算スピードが重要になる研究でもしない限り、もう研究室でCをやる必要はありません。Pythonのお手軽さを1度でも味わってしまったら、もうCには戻れないでしょう。

そして実は、pythonはCと仲良しです。python自身がCで作られているからです。そのためスピードが重要な部分だけCで作り、残りをpythonでつくる、というハイブリッドな開発もできてしまいます。実際に高速なライブラリーも多く提供されています。

さて、数学や物理のプログラミングがしやすいということは、数学や理科の教科書の延長線上でpythonが利用しやすい、ということです。つまり、これからは高校生や大学1年生の教育でもPytnonの利用が増えると思います。

Pytnonのプログラミングに慣れてしまうと、もう他の言語が「めんどう」「ムダが多い」などと思えてしまいます。

人気の秘密はこうしたエレガントさにあるのだろうと勝手に想像しています。

忘れても問題ない文法とは?

誤解をしてほしくないので、最後にテキストプログラムの文法について補足しておきます。

今回のブログでは、pythonのメリットを語るために、文法や言語仕様について多く書きました。

でも誤解をしないでください。実際には文法を細かく「暗記」する必要はありません。しかも、これはpythonに限ったことではありません。

プロの世界でさえも、細かい文法は調べながらプログラミングしています。

意外でしょうか?

でも、これは常識です。例えば、

「C言語で仕事するのは2年ぶりだな。if 文の書き方はJavaとどう違うんだっけ?」

「PHPひさしぶり。文字と文字を連結する演算子は何だっけ?」

みたいなことは、プロでもよくあります。

プロの世界では1人が7~8種類のプログラミング言語を扱うのが普通です。C言語だけ、pythonだけ、というプログラマーなんて新人くらいです。
とはいえ1つのプロジェクトに使うプログラム言語は1~3種類くらいで済みます。ですから1つのプロジェクトに従事している間は、残りの使っていないプログラミング言語の細かいことは、忘れてしまいます。

たいていのプログラミング言語は似ていますが、細かいところで違います。そのような

プログラミング言語によって異なる部分

については、いちいち細かく覚えていられませんし、そこの暗記にこだわる必要もありません。
代わりに、

  • 標準で使えるオブジェクトの型は言語によって違う
  • 変数の初期化、参照、代入の作法が言語によって違う
  • 分岐は if – else が基本だが、細かいルールや switch を使えるかなどは言語によって違う
  • 繰り返しは for や while が基本だが、細かいルールは言語によって違う
    ・・・

みたいな勘所が、経験とともに蓄積していくものです。

「何を暗記しなければならないか」という項目は十分に知っておく必要はあります。
だからと言って、今すぐに暗記している必要があるか否かは別問題です。

細かいことは、必要になったら調べて暗記します。そしてプロジェクトが完了するまでは暗記の状態を保ちます。
しかしプロジェクトが終わって使わなくなれば、また忘れてしまうでしょう。

そんな感じで良いです。その方が、

「今回、また新しいプログラミング言語を使うことになった。」

と言われても、びっくりせずに済みます。
ほかの言語との違いを調べて使いこなすことには、変わりがないからです。

逆に、少しでも記憶があいまいなら、じゃんじゃん調べて確認します。
不確かな記憶のままプログラミングを進めてしまう人の方が信用できません。

プログラミングで大切なのは、

× 文法の知識が完璧であること
○ 全て説明できること

です。

プログラムの1行1行について、

「なぜ、そう書いたのか」

を1文字も漏らさず説明できる必要があります。
1文字でもあいまいだったら、すぐに調べる必要があります。

不明なことは、すぐ調べて確かめる!

これ、大切です。

勉強も同じ

細かい知識を忘れても、大した問題ではない。

これは数学や国語でも同じなのではないでしょうか?

社会や理科は、もっとそうですよね!

例えば歴史。

細かいことは、レポートを書いているときは覚えているかもしれません。
しかし、それが終われば忘れてしまいます。
相変わらず社会の定期テストや入試問題の多くは「暗記の詰込み」ですが、受験が終わったら忘れます(※)。

それでも、歴史の流れや国際関係の背景は、いつでも語ることができるだけの素養が身につくでしょう。

・・・みたいな感じですね。

よく、カリスマ的な人がプログラミングの実況動画を出しています。

すらすらと軽快にプログラムを書いて見せています。
そんな風にできるのは、たまたま業務でよく使っているか、リハーサルを十分にしているからです。

そういう人でも、違うプログラミング言語で同じものを作れと言われたり、違うジャンルのアプリを作れと言われたら、しばらくの間は、調べながらプログラミングしていくことになります。

だからといって、その人の能力が低いことにはなりません。

すらすらプログラムを書ける場面は、自分にとって、ある程度プロジェクトが乗ってきた時期です。

プログラミングの経験が蓄積できていれば、たとえ最初の数百行が遅くても、残りの数千行から数万行のプログラムはすらすら書けます。

逆にコンピューターを使いこなせるはずのプログラマーが、文法の暗記で消耗しているようでは先が思いやられます。
暗記で苦労する「暇」があったら、どんどん調べまくって仕事を先に進めましょう。そうするうちに勝手に頭に入ります。

※ 最近の入試問題は、理科や社会でも暗記の詰込み要素が無くなってきました。
多くの資料でヒントがたくさん与えられている問題形式が多くなってきました。そのため暗記がうろ覚えだとしても、今まで調べたり学んだりしてきた経験が十分にあれば、ちゃんと解けるように工夫されています。

まとめ

今回はpythonの魅力について書きました。

そのためにpythonの文法や言語仕様について少し詳しく書いたところもありました。だからと言って文法の詳細を覚えてほしいと言っているのではありません。

1つのプログラミング言語について、特徴をよく調べて使いこなすことが大切です。

そして少し時間がたって細かい文法を忘れたとしても、気にすることはありませ。細かい文法は、使う時に調べて確認すればよいです。

大切なことは、

「なぜ、そう書いたのか」

を1文字も漏らさず説明できることです。

あいまいなことや不明なことを放置せず、すぐに調べて確認する姿勢が大切です。

このことは勉強も同じだと思います。

 


ヒーローズ植田一本松校の進学実績

卒塾生(進路が確定するまで在籍していた生徒)が入学した学校の一覧です。
ちなみに合格実績だけであれば更に多岐・多数にわたりますが、当塾の理念に反するので生徒が入学しなかった学校名は公開しておりません。

国公立大学

名古屋大学、千葉大学、滋賀大学、愛知県立大学、鹿児島大学

私立大学

中央大学、南山大学、名城大学、中京大学、中部大学、愛知淑徳大学、椙山女学園大学、愛知大学、愛知学院大学、愛知東邦大学、同朋大学、帝京大学、藤田保健衛生大学、日本福祉大学

公立高校

菊里高校、名東高校、昭和高校、松陰高校、天白高校、名古屋西高校、熱田高校、緑高校、日進西高校、豊明高校、東郷高校、山田高校、鳴海高校、三好高校、惟信高校、日進高校、守山高校、愛知総合工科高校、愛知商業高校、名古屋商業高校、若宮商業高校、名古屋市工芸高校、桜台高校、名南工業高校

私立高校

中京大中京高校、愛工大名電高校、星城高校、東邦高校、桜花学園高校、東海学園高校、名経高蔵高校、栄徳高校、名古屋女子高校、中部第一高校、名古屋大谷高校、至学館高校、聖カピタニオ高校、享栄高校、菊華高校、黎明高校、愛知みずほ高校、豊田大谷高校、杜若高校、大同高校、愛産大工業高校、愛知工業高校、名古屋工業高校、黎明高校、岡崎城西高校、大垣日大高校

(番外編)学年1位または成績優秀者を輩出した高校

天白高校、日進西高校、愛工大名電高校、名古屋大谷高校

※ 成績優秀者・・・成績が学年トップクラスで、なおかつ卒業生代表などに選ばれた生徒

 


生徒・保護者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
【会員限定】お子様の成績と可能性を伸ばす18個のノウハウ

友だち追加


塾関係者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
「zoomで簡単。オンライン授業移行の教科書」
または個別対談も可

友だち追加

 


名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!

★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL

マインクラフト「プログラム」と「コマンド」の違いとは?

プログラムとコマンドの区別

宇宙とコンピューターが好きな塾長です。

マインクラフトのプログラミング教室をやってきて、今年で4年目くらいです。

プログラミングとは何か?

まだまだ、これを説明する必要性があるのですが、ちょっとした課題も感じています。
みなさんは

「コマンド」と「プログラム」の区別

言えますか?

作業頭になっている危険性

マイクラのコマンド。
Windows のプロンプトのコマンド。
何かのゲームで裏技的に使うコマンド。

そのようなコマンドを「打つ」ことが「プログラミング」なのだと思い込んでいる人たちがいるのです。

もちろんプログラミング経験が無くて何だかわからずにそう思うのは仕方がありません。
知らないで、あてずっぽうに想像しているだけならば問題ないです。

問題なのは、プログラミングを経験してもなお、そう思い続けている人たちです。

何が問題かと言えば、

「作業頭」

になってしまっていることです。
「作業」は必要なことですが、多くの場合は工夫して、減らしたり無くしたりできます。
それをせずに、ただ同じ作業を繰り返すだけ、つまり考えることを放棄している状態を

「作業頭」

と私は呼んでいます。
創造力を発揮するのとは逆の意味です。そうなっている危険性があります。
ゲーム依存症の人たちに多いです。

「めんどくさい」

が口癖です。
工夫をしないし、考えることを拒むので、
傍から見ると、面倒な行動をわざわざ好んでやっているように見えます。

そういう人たちに「プログラミングの良さ」を伝えるのって、すごく難しいんですよね。

どうしたら伝わるのか。

それが最近感じている課題です。

コマンドとプログラムの区別がつかない子供や大人たち

私のプログラミング教室ではマインクラフトを使っています。
プリンターやディスプレイの代わりです。

プログラミングの結果が真っ黒な画面に表示されても、何も面白くありません。
だから結果の表示先をマインクラフトにしているワケです。

そのマインクラフトには「コマンド」と呼ばれる機能があります。

詳細はあとで説明しますが、そのコマンドをプログラムだと勘違いしている人をたまに見かけます。
お子さんだけではなくて、大人でも勘違いしている人がいます。

なぜ区別できないとマズイのか?

初めての人なら、この勘違いは仕方がありません。
「あるある」です。

しかし、ずっと勘違いしたままではマズイです。

特に、社会人でこの区別がつかないのは、かなり深刻です。
「作業」と「仕組み」の区別がついていないってことです。

生産性に直結します。

マイクラの豆腐建築で考えてみる

ここでマインクラフトのコマンドについて少し説明します。

例えば、下のような豆腐建築を考えてみます。
1辺が5ブロックの立方体で、中をくり抜いただけ。そういう単純な建築です。
(マイクラの世界では直方体の単純な建て物のことを豆腐建築と呼ぶそうです)

豆腐建築

普通に作業するなら、プレイヤーはブロックを1つ1つ置いて建築します。
1辺が5ブロックの大きさなら、必要なブロックの数は82個です。

これを1つ1つ置いて建築を進めます・・・めんどうですね。

そこでコマンドを使えば、たった3行です。

① コマンドで豆腐建築

/fill ~1 ~ ~1 ~5 ~4 ~5 stone
/fill ~2 ~ ~2 ~4 ~3 ~4 air
/fill ~3 ~ ~1 ~3 ~1 ~1 air

この例ではマイクラのfillコマンドを使っています。
fill コマンドは「2つの座標を対角とする直方体」を石や空気で埋めつくしてくれます。
(高校数学で習う立体空間の座標ですから、少し慣れが必要です。塾生は小学生でも理解しています。)

そして紛らわしいことに、プログラミングでも同様に3行です。

② プログラムで豆腐建築(スクラッチの場合)

マイクラ豆腐建築_スクラッチ

やっていることはfillコマンドと一緒です。
ちなみに、Pythonでプログラミングすると、こうなります。

③ プログラムで豆腐建築(Pythonの場合)

mc.setBlocks(1,0,1,5,4,5,1,0)
mc.setBlocks(2,0,2,4,3,4,0,0)
mc.setBlocks(3,0,1,3,1,1,0,0)

おやまぁ。

コマンドとプログラム。
①も②も③も、確かに似ています。
結果も同じ。

  • コマンドもプログラムも形が似ている
  • 手数も同じ
  • コマンドもPythonも英語で、なんか上級っぽい

これだけ共通していれば、勘違いしてしまうのも無理がありません。
でも口を酸っぱくして言わなければなりません。

全く違います!

コマンドは「作業」ですが、プログラムは「仕組み」です。

逆に、この2つの違いが言えるようになることが

プログラミングって何?

を理解する第一歩なのかもしれませんね。

コマンドとプログラムの違いを挙げてみよう!

コマンドもプログラムも、コンピューターに命令を与える点では同じです。
ですから、コマンドをいくつも実行していけば、プログラムと同じ結果を得られます。

しかし、コマンドは実行したら終わりです。
そこで消えてしまいます。

上の豆腐建築で考えてみましょう。

建物が壊れたり、ワールドを作り直したりした後で、また豆腐建築をやり直すとしましょう。
そうなると、また3行のコマンドを打ち直す必要があります。

コマンドは消耗品です。
同じことを10回するためには、同じコマンドを10回打ちなおす必要があります。
そして打ち直す回数が増えればミスの回数も増えますし、時間も体力も消耗します。

プログラムであれば、実行ボタンを押すだけです。
最初よりも2回目以降の方が、むしろ楽です。
回数が何回に増えようが、人間の行動は1回であることに変わりありません。

もっと複雑で大きな作業になったらどうでしょう。

豆腐建築を5軒×4列=20軒で並べて村を作りたい。

つまり、こんな村を作るならどうでしょうか。

豆腐建築の村

コマンドであれば1軒で3行ですから、3行×20軒=60行を打ち込む必要があります。
やってられません。

プログラミングならこうなります。

マイクラ豆腐建築の村_スクラッチ

やっぱり

豆腐建築を10軒×10列=100軒で並べて町を作りたい。

などと気が変わっても、プログラムならすぐ対応できます。

「4回繰り返す」「5回繰り返す」をともに「10回繰り返す」に変更するだけです。

あるいは、

建物の色を1軒1軒変えたい。

となったらどうでしょうか。

豆腐建築の村_カラー

コマンドの場合は、大量かつ複雑になります。
しかしプログラムならば1行の修正で済みます。

マイクラ豆腐建築の村_カラー_スクラッチ

このように、やることが複雑になるほど、大規模になるほど、プログラムは威力を発揮します。

プログラムがコマンドより優れている点

コマンドの限界はすぐに感じます。例えば

  • 「似たような作業をたくさんやる」
  • 「少しずつ変えて実行する」
  • 「他の人に同じことをやってもらう」
  • 「複雑な作業を組み立てる」
  • 「少しずつノウハウを蓄積する」
  • 「蓄積したノウハウを他の人に渡す」

などなど。
やるたびに消えてしまうコマンドでは、こうしたことができません。

そういう時こそプログラムの出番です。

プログラムがコマンドよりも優れている点をまとめるとこうなります。

  • 再利用できる
  • 複雑なこともできる
  • 大量の作業もできる
  • 速く正確にできる
  • 人に渡せる
  • 蓄積できる
  • 改良できる

これを一言でまとめると、

プログラムは「仕組み」

です。
一方、コマンドはその場その場で終わってしまいます。
結果を得ることはできますが、その場限りの成果です。

コマンドは「作業」

だと言えます。

仕組みを作れるプログラミングの方が、作業の効率化や発明につながるというワケです。

未来を考えるからプログラミングの価値が出る

マインクラフトはゲームですから、一瞬また一瞬を、刻々と楽しむものです。

今さえ良ければ満足

という感覚の連続です。
そもそもゲームってそういうものです。

ですから、ゲーム操作のほとんどは、その場限りの操作です。
その場限りの行動とその場限りの満足。
とても本能的です。

しかし、未来のことまで考え出したらどうでしょう。
マインクラフトの世界に「未来」を加えると、状況が変化してくるわけです。

  • もしかしたら、また同じことをやるかもしれない
  • もっと速く便利にしたい
  • 他の人もできるようにしたい

このような想像力を働かせたときに、初めてコマンドの限界を感じるようになります。
そこでプログラミングの出番になるワケです。

人間と動物の理性を区別する1つが「未来」を考えられるか否かだそうです。

  • 将来に備える
  • 複雑なことを簡単に実現する
  • 人と協力する
  • 社会に貢献する

こうした未来志向の欲求に応えるのがプログラミングです。

そして未来志向が強くなるほど、プログラミングの価値がよく分かるようになるでしょう。

ゲーム操作をプログラミングするのはムダ

逆に1回しかやらないことであれば、プログラミングのメリットはほとんどありません。
1回しかやらないのですから、コマンドを3行打つことも、プログラムを3行書いて実行することも、同じです。
むしろコマンドの方が楽かもしれません。

同じように、たとえば、

  • モンスターをスポーンさせる
  • プレイヤーを動かしてゲームを進める

などといったゲーム操作をプログラミングしたところで、何の価値もありません。
子供たちにとっても、何も面白くないでしょう。
そもそもゲーム操作の多くは1回1回の使い捨てだからです。

ゲーム操作をプログラミングするなんて、やらない方がましです。
純粋にゲームとして楽しんだ方が良いと思います。

ですから当然、マインクラフトのプログラミングを「ゲームの自動化」だと思っている限り、プログラミングの価値は理解できません。

マインクラフトに未来志向を持ち込むからこそ、プログラミングの必要性が発生します。

まとめ

未来志向が無ければ、コマンドとプログラムの区別がつきません。

  • 目の前の作業をこなすだけのコマンド
  • 未来の仕組みをつくるプログラム

この違いが本当に分かっていることが大切だと思います。

マインクラフトをプログラミングで使うなら、ぜひ仕組みを作りましょう。

1回しかやらないゲーム操作をプログラミングしても、面白くないし、価値がありません。
それでコマンドとプログラムの区別がつかなくなるなら、なお悪いです。

ゲームはゲームで楽しみましょう。
プログラムをつくるなら、ぜひ「仕組み」をつくりましょう。

そして普通では味わえないようなマインクラフトの世界をどんどん創造して欲しいと思います。

その経験は、やがて社会の仕組みをつくり変えたり、社会の問題を解決したりする力になるでしょう。

 


進学実績

卒塾生(進路が確定するまで在籍していた生徒)が入学した学校の一覧です。
ちなみに合格実績だけであれば更に多岐・多数にわたりますが、当塾の理念に反するので生徒が入学しなかった学校名は公開しておりません。

国公立大学

名古屋大学、千葉大学、滋賀大学、愛知県立大学、鹿児島大学

私立大学

中央大学、南山大学、名城大学、中京大学、中部大学、愛知淑徳大学、椙山女学園大学、愛知大学、愛知学院大学、愛知東邦大学、同朋大学、帝京大学、藤田保健衛生大学、日本福祉大学

公立高校

菊里高校、名東高校、昭和高校、松陰高校、天白高校、名古屋西高校、熱田高校、緑高校、日進西高校、豊明高校、東郷高校、山田高校、鳴海高校、三好高校、惟信高校、日進高校、守山高校、愛知総合工科高校、愛知商業高校、名古屋商業高校、若宮商業高校、名古屋市工芸高校、桜台高校、名南工業高校

私立高校

中京大中京高校、愛工大名電高校、星城高校、東邦高校、桜花学園高校、東海学園高校、名経高蔵高校、栄徳高校、名古屋女子高校、中部第一高校、名古屋大谷高校、至学館高校、聖カピタニオ高校、享栄高校、菊華高校、黎明高校、愛知みずほ高校、豊田大谷高校、杜若高校、大同高校、愛産大工業高校、愛知工業高校、名古屋工業高校、黎明高校、岡崎城西高校、大垣日大高校

(番外編)学年1位または成績優秀者を輩出した高校

天白高校、日進西高校、愛工大名電高校、名古屋大谷高校

※ 成績優秀者・・・成績が学年トップクラスで、なおかつ卒業生代表などに選ばれた生徒

 


生徒・保護者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
【会員限定】お子様の成績と可能性を伸ばす18個のノウハウ

友だち追加


塾関係者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
「zoomで簡単。オンライン授業移行の教科書」
または個別対談も可

友だち追加

 


名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!

★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL

【プログラミング教育】確率を使えば円の面積が求まる?

受験が終わったらプログラミングで遊んでみよう!

塾長です。

もう春ですね。
3月3日と言えば桃の節句ですが、ことしは中学の卒業式でもあります。そのあとすぐに愛知県公立高校入試が始まります。国公立大学は先週から始まっていますね。
もう、そういう季節です。

受験が終わったら何をする?

一方で、すでに受験を終えている生徒も多いです。教室では私立高校から届いた課題に取り組む生徒たちや、中学生の総復習にあらためて取り組む生徒たちがいます。

要するに放っておけば新学期まで暇です。そんなキミたちに、

ぜひ今こそ、自分なりの「本当の勉強」というものにチャレンジしてみたらいかが?

などと声をかけています。
たとえば、理系の子には「ブルーバックス」というシリーズの本をお勧めするとか、逆に哲学の変な本を読んでみたらどうかとか、そういう雑談もしています。
コロナ禍で卒業旅行が難しい、そんなご時世だからこそ、落ち着いて本を読んでみるのも一興です。

もちろんマンガやアニメでも良いと思います。

新しい本との出会いは、新しい自分との出会いになることがあります。

また最近ではパソコンで遊んでみることもお勧めです。

塾長が生まれて初めて目にした科学計算プログラム

そんな話を生徒たちにしていたせいか、自分が高校生になったばかりの頃を急に思い出しました。

塾長は高校生になってから直ぐに地学部に入りました。天文少年だったので迷わずストレートに行きました。
高校の屋上には1つ部屋があって、その上が天文台になっていました。地学部は屋上もその部屋も天文台も、すべて自由に使うことができました。そして屋上の部屋には1台のパソコンが置いてありました。
ある日、3年生の先輩がそのパソコンで自作のプログラムを披露してくれました。

衝撃でした。何のプログラムだったか、今でもハッキリと覚えています。

モンテカルロ法による円周率の計算プログラム

今から30年以上も前です。たしかSHARPのX1というパソコンで、BASICというプログラム言語でした。
もちろんプログラムの1行1行を覚えているわけではありません。覚えているのは先輩がしてくれた説明です。

どんな計算をしているプログラムか

その仕組みというか、考え方が面白くて、今でも覚えているのです。

「あー、コンピューターって、こんなことまでできるんだ。」

そんなことを初めて実感した瞬間でした。

どんな話だったか、ちょっと説明しますね。

確率で面積を求める!?

突然ですが、もしもこんな図形があったら、どうやって面積を求めますか?

いびつな形の面積の図

長方形の中に雲みたいな形があって、色が塗られています。その部分の面積です。

もちろん、こんな変な形の面積を出す公式なんて知りません。

こういう時に次のような発想で求められると言うのです。

確率で面積を求められる!

もう少し説明を続けます。

もしも次のことが分かれば面積が求められます。

長方形の中で雲の形が占める割合

たとえば仮に、雲の面積が長方形の面積の3分の2だとすれば、

$$ 10 \times 6 \times \frac{2}{3} = 40 cm^{2}$$

という具合に求まるわけです。つまり、

実際には何分の何なのか?

という「割合」を求められれば良いわけです。

この割合、どうやって求めましょうか?

そこで確率の登場です。

上から針を落とす実験

長方形の中で雲の形が占める「割合」を求めるために、この絵に対してランダムに点を描いていくことを考えます。

点を描く場所に偏りがあってはいけません。人間の意思が働くと偏りが出るかもしれないので、人間の意思が入らないように、でたらめにやる必要があります。例えば、この絵を地面に敷いて上から針を落とし、針の先端が止まった場所に点を描く方法などがあります。そういう方法ができたとしましょう。

試しに10本ほど針を落として、その先端に赤い印をつけてみた例が次の図です。

いびつな形にランダムに点を打った図

10本の針を落としたら7本が雲の図の中に入りました。つまり針が雲の中に落ちる確率が $\frac{7}{10}$ ということです。これは言い換えると、雲の面積が占める割合が長方形の $\frac{7}{10}$ だったと見なすことができます。だったら、

$$ 10 \times 6 \times \frac{7}{10} = 42 cm^{2}$$

ということで求めたことになりそうです。

良ろしいでしょうか?

けっこう良い線まで求められたとは思いますが、まだ不安ですよね。

たったの10本で決断してよいの?

そういう不安感があるからです。たまたま7本だったのかもしれません。もう1回実験したら $\frac{6}{10}$ になったり、 $\frac{8}{10}$ になったりするかもしれません。

10回では自信が持てないのなら回数を増やせばよいです。そこで1万回くらい実験しましょう。そしてその結果が、 $\frac{6711}{10000}$ になったとします。だったら、

$$ 10 \times 6 \times \frac{6711}{10000} = 40.266 cm^{2}$$

ということで良いでしょうか?

かなり良い線まで求められたとは思います。
しかし、まだ不安が0ではないですよね。1万回よりは10万回、いや100万回。いやいや1億回なら・・・などと増やしていけば、いつかは求まるだろうと思うワケです。

このようにランダムな行為で発生する確率を利用して、何かを計算していく方法を「モンテカルロ法」と呼びます。

この発想法、すごくないですか?

塾長は高1の春に感動した思い出があります。

ところで、円の面積も、これと同じ方法で求めることができます。そして円の面積が分かれば円周率も分かるというワケです。

確率で円の面積を求める!

それでは円の面積を求めていきましょう。

いま半径1の円を描きます。中心を座標の原点にすると下の図のようになります。

xy座標の中の円の図

ここでマイナスの座標を使うと計算が面倒です。そこでx座標もy座標も「正の数」だけ使うことにします。それが図で黄緑色の部分です。

つまり下図のように円の右上4分の1の扇形だけを実験に使います。

xy座標の中の扇形

この図で色のついた扇形は、1辺が1の正方形の中にピタリと納まっています。この正方形の中に針を落とす実験をしてランダムに点を打っていきましょう。すると

$$半径1の円の\frac{1}{4}の面積=1 \times 1 \times \frac{扇の中の点の数}{点の総数} =\frac{扇の中の点の数}{点の総数} $$

となりますね。
一方で円の面積の公式を使った式では、

$$半径1の円の\frac{1}{4}の面積=1 \times 1 \times \pi \times \frac{1}{4} = \frac{\pi}{4} $$

両者は同じはずですから、

$$ \frac{扇の中の点の数}{点の総数}=\frac{\pi}{4} $$

よって

$$ \pi = 4 \times \frac{扇の中の点の数}{点の総数}$$

となって円周率 $\pi$ が求まるわけです。

プログラミングで求める!

それでは上の考えをプログラミングします。

ちなみに正しい円周率は、

$$\pi=3.1415926535 \dots$$

だそうです。
今回はこれを模範解答として、プログラミングで得られた円周率の精度を評価してみましょう。

扇の中か外かの判定は?

プログラミングをする上で、あと1つ問題が残っています。それは

打たれた点が「扇の中か外かを判定する計算」をどう実現するか?

という問題です。
先に答えを言ってしまうと、これは中3の「三平方の定理」で解決します。

扇形の中か外か

例えば上のように点が打たれたとします。もしもその座標が $(a, b)$ だったとすれば、原点からその点までの距離は三平方の定理から $\sqrt{a^{2}+b^{2}}$ となります。これが円の半径1よりも小さければ扇形の内部というワケです。

ただし1は2乗してもしなくても1なので、 $\sqrt{a^{2}+b^{2}}$  の代わりに $a^{2}+b^{2}$ を使っても、1以上か未満かの判定には影響しません。少しでも計算を楽にしてあげた方がコンピューターから高速に結果を得られます。そこでプログラムではルートを取る前の $a^{2}+b^{2}$ と1を比べて判定します。

さぁ、今度こそプログラミングです。

まずは私が高校生の時に経験したBASICというプログラミング言語で再現してみます。

BASICのプログラミング

半径1の図をそのまま描くと小さすぎて何も見えなくなるので、400倍に拡大して描画するようにプログラミングしています。

10 CLS
20 DEFINT L
30 L=400:COUNT=0:R=0.0:X=0.0:Y=0.0
40 CIRCLE(0,0),L,1
50 LINE(L,0)-(L,L)
60 LINE(0,L)-(L,L)
70 INPUT N
80 FOR I=1 TO N
90 X=RND(1)
100 Y=RND(1)
110 PSET((L*x),(L*Y)),2
120 R=X*X+Y*Y
130 IF R <= 1.0 THEN COUNT=COUNT+1
140 NEXT I
150 PRINT (4*COUNT/N)

このプログラムを使って、針を落とす実験の回数を10000回まで実行したのが下の図です。この1万回の実験で、だいたい6秒くらいかかりました。
扇形は青い線で、針の落ちた場所が赤い点です。

モンテカルロ法で円周率を求める

円周率が3.132と出ています。
残念ながら1万回の実験をもってしても小数第1位くらいまでしか求まらなかったようです。

そこで10万回に増やしてみました。今度は60秒くらいかかりました。

BASIC_モンテカルロ法で円周率_10万回

10万個も点を打つと、かなり塗りつぶされている感じになります。
そして円周率が3.1404と出ています。
ようやく10万回でお馴染みの「3.14」つまり小数第2位まで求められました。

こりゃ、とてもじゃないけど、人間の手で実験なんてしていられませんね。

Pythonのプログラミング

今度は同じことを「Python(パイソン)」というプログラミング言語で実行しました。下がそのプログラムです。
BASICよりも高速に動作するので、10万回を超えるような計算はPythonの方で実験することにします。
グラフィックは面倒なので省略します。その代わり計算にかかった時間を表示するようにしました。

import random as r
import time as t

def cal_pai(n):

count_in  = 0
start = t.time()
for i in range(n):

x = r.random()
y = r.random()
if (x*x + y*y) <= 1:

count_in += 1

pai_n = 4*count_in/n
print(“n={}, pai={}, time={}[sec]”.format(n, pai_n, (t.time()-start)))

cal_pai(100)
cal_pai(1000)
cal_pai(10000)
cal_pai(100000)
cal_pai(1000000)
cal_pai(10000000)
cal_pai(100000000)
cal_pai(1000000000)

実行結果が下の図です。私のパソコンでは1億回の計算に21秒くらい、10億回の計算に4分12秒くらいかかりました。

Python_モンテカルロ法で円周率_10億回

なるほど、やっぱり10万回で「3.14」まで求まるようですね。
そして1億回で小数第3位の3.141まで求まっています。
しかし10億回に増やしても小数第4位まで出すことができませんでした。本当は3.1415…と表示されて欲しいのですが、3.1416…となっています。

そこで100億回にチャレンジしてみたいところですが、そうすると1時間くらいかかりそうなので止めておきます。

Scratch(スクラッチ)のプログラミング

最後にスクラッチのプログラミングです。
スクラッチは計算が遅いので、このように何千万回も計算をするような処理には向きません。ただしプログラムは読みやすいです。

Scratch_モンテカルロ法で円周率_100万回

実行してみると100万回で小数第2位の3.14まで求まりました。かかった時間は3秒弱でした。意外と速いですね!

同じ100万回で見ると、Pythonは約0.22秒、BASICは約600秒ですから、スクラッチの計算速度はBASICの200倍、Pythonの$\frac{1}{13}$くらいの速さということになりました。もっとも今回のBASICはエミュレーター上で動作し、なおかつグラフ表示もしているため遅いのは仕方がありません。

スクラッチは簡単にプログラミングできる環境でありながら、立派にアルゴリズムをプログラミングして実験できる環境だと言えます。

小学生が初めてプログラミングする環境として「スクラッチが最強」であることが、あらためて実感できました。

弱点を補うのもプログラミング

スクラッチにも弱点はあります。今回のプログラムに関しては次の2つです。

  1. 小数の乱数を生み出す命令が無い
  2. 「以上」「以下」を表す演算子が無い(「より大きい」「より小さい」しかない)

この2つの弱点を補うために、それぞれ次のような工夫しています。

  1. 「0~1000の範囲」で整数の乱数を生成し、それを1000で割って小数にした
  2. 「1以下のとき」の条件が作れないので、代わりに「「1より大きい」でないとき」とした

みなさんならどのように工夫しますか?

有るもので工夫するのもプログラミング的思考の大切なポイントです。

とても奥が深い分野

モンテカルロ法は奥がとても深くて、大学の卒業論文などでもよく取り上げられる問題です。

奥が深いとは、例えば、実際に実験することを想像すればわかります。

実際に実験するときには、先に実験の目的を決めますよね。今回なら

「円周率を小数第何位まで求めたいか?」

ということを決めます。
仮に、これが世界で初めての実験だったとしましょう。
すると逆に、

「その桁まで求めるには、何回くらい実験する必要があるのか?」

ということが分かっていなければ、実験を終わらせることができません。

世界で初めて実験するのですから、まだ誰も円周率の小数第4位の数を知りません。つまり正解が分かっていません。

答え合わせができない!

というのが、この実験の難しいところなのです。

そこで代わりに

「何回目の実験で正解にたどり着けるのか?」

を何らかの方法で求めておく必要があります。
それが分かっていなければ、いつまでもゴールできません。永遠に実験をし続ける羽目になってしまいますから。

この「実験を終えてよい回数」を求める方法は、実はとても難しい理論になります。大学の数学レベルの話になってしまいます。

上の実験では、Pythonで10億回やっても小数第4位を正しく出せんでした。しかし実際の実験では、そもそも「正しく出なかった」という判断ができません。今回は先に円周率の正解を表示するという「ズル」をしていたので「まだ求まっていない」という判断ができた、というワケです。

さて、円周率の小数第4位の数。

100億回なら出るのでしょうか?
もしかしたら1000億回なのでしょうか?

こういうたいへんな作業をやる前に、先に「何回やったら終わっていいよ。」という回数を知っておきたいですね。

大学受験の範囲を超えてしまいますが、興味のある人は調べてみてください。

暇な時間を上手に使える人に成ろう

高校受験や大学受験を終えた皆さんが、暇つぶしをするネタとして、今回はモンテカルロ法で円周率を求めるプログラミングを提供してみました。

塾長の過去の思い出から、たまたま思い出したので書いてみました。

コンピューターを使った遊び方は色々ですが、ゲームをするだけではもったいないです。

ぜひコンピューターが持つ本当の力を引き出してみてください。

もちろん、これは時間の使い方の1つの例です。

みなさんは暇な時間に何をしますか?

そういう時間を上手に使える人に成りたいものですね。

 


ヒーローズ植田一本松校の進学実績

卒塾生(進路が確定するまで在籍していた生徒)が入学した学校の一覧です。
ちなみに合格実績だけであれば更に多岐・多数にわたりますが、当塾の理念に反するので生徒が入学しなかった学校名は公開しておりません。

国公立大学

名古屋大学、千葉大学、滋賀大学、愛知県立大学、鹿児島大学

私立大学

中央大学、南山大学、名城大学、中京大学、中部大学、愛知淑徳大学、椙山女学園大学、愛知大学、愛知学院大学、愛知東邦大学、同朋大学、帝京大学、藤田保健衛生大学、日本福祉大学

公立高校

菊里高校、名東高校、昭和高校、松陰高校、天白高校、名古屋西高校、熱田高校、緑高校、日進西高校、豊明高校、東郷高校、山田高校、鳴海高校、三好高校、惟信高校、日進高校、守山高校、愛知総合工科高校、愛知商業高校、名古屋商業高校、若宮商業高校、名古屋市工芸高校、桜台高校、名南工業高校

私立高校

中京大中京高校、愛工大名電高校、星城高校、東邦高校、桜花学園高校、東海学園高校、名経高蔵高校、栄徳高校、名古屋女子高校、中部第一高校、名古屋大谷高校、至学館高校、聖カピタニオ高校、享栄高校、菊華高校、黎明高校、愛知みずほ高校、豊田大谷高校、杜若高校、大同高校、愛産大工業高校、愛知工業高校、名古屋工業高校、黎明高校、岡崎城西高校、大垣日大高校

(番外編)学年1位または成績優秀者を輩出した高校

天白高校、日進西高校、愛工大名電高校、名古屋大谷高校

※ 成績優秀者・・・成績が学年トップクラスで、なおかつ卒業生代表などに選ばれた生徒

 


生徒・保護者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
【会員限定】お子様の成績と可能性を伸ばす18個のノウハウ

友だち追加


塾関係者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
「zoomで簡単。オンライン授業移行の教科書」
または個別対談も可

友だち追加

 


名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!

★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL

プログラミングに数学は使いますか?どれくらい必要ですか?

プログラミングに数学は使いますか?(サムネイル)

塾長です。

今週はテスト対策の準備と指導で忙しかった。
来週からが本番なのですが・・・。

そんな中で、高校3年生が中央大学経済学部に推薦合格しました。
おめでとう!
おかげで疲れが吹っ飛びました!!

けっこう数学を使う分野に進むので、これから数学も勉強していくそうです。
最近は私大文系でも入試に数学を課すところが増えてきました。

さて、そんな数学ですが、プログラミングでは使うのでしょうか?

  • 小学校で習う算数は使う?
  • 中学1年生、2年生、3年生の数学は?
  • 高校のsin, cos, tan は?
  • 使うとしたら、いつ、どんな分野で使うのでしょうか?
  • 数学ができなければプログラマーに成れないのでしょうか?

ということで、解説動画(YouTube)を作りました。

ちなみに、数学を使わないプログラマーの方が多いです。
そうなる理由も解説しています。

ぜひ、ご覧ください。

プログラミングに数学は使いますか?学校で習ったことは役立ちますか?

動画の内容

0:00:20 数学的な思考力は必要というけれど・・・
0:00:38 どの程度の数学までが使われる?
0:00:52 小学校の算数は使いますか?
0:01:20 中1~中2の数学は使いますか?
0:02:09 中3の数学は使いますか?
0:02:25 高校の数学は使いますか?
0:02:46 逆に高等数学はいつ使う?
0:02:53 プログラミングで何をつくる? 2つのタイプ「AとB」
0:03:03 Aタイプのプログラミング → 数学を使わない
0:04:08 Bタイプのプログラミング → 数学を使う
0:05:20 【実例】マイクラミングでAタイプとBタイプを比較
0:05:50 マイクラミングでのAタイプ
0:07:55 マイクラミングでのBタイプ
0:10:24 2つのタイプの比較まとめ
0:11:12 AかBか、どっちが良い(高収入)?
0:13:11 最後のまとめ

マイクラミングとは

動画の中に出てくる「マイクラミング」とは、プログラミング教室のブランド名です。

ジュニアコースからプロコースまであり、小学2年生から大学1年生まで通っています。
動画に出てくる画面は、ジュニアコースからハイコースで使う環境です。

マインクラフトというゲームの世界をスクラッチでプログラミングすることができます。
本来なら高等数学や大学の数学が必要な図形処理を、小学生でも簡単に扱えるように工夫されています。

ご興味がある方は、教室までお問い合わせくださいませ。

 


生徒・保護者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
【会員限定】お子様の成績と可能性を伸ばす18個のノウハウ

友だち追加


塾関係者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
「zoomで簡単。オンライン授業移行の教科書」
または個別対談も可

友だち追加

 


名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!

★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL

【プログラミング教育】買ってはいけないノートパソコン

パソコンの選び方

塾長です。

これからは小学生も、中学生も、高校生も、そして大学生も、パソコンを使うのが当たり前。
リモート授業にプログラミング教室。
お子様にノートパソコンを買ってあげる場面が、これから増えるでしょう。

「先生、パソコンは何を買ったらよいですか?」

ちょくちょくアドバイスを求められるようになりました。
そこで「パソコンの選び方」や「性能の読み方」について説明します。

高くて性能が悪いパソコン

を買って泣かないように、ノートパソコンの「当たり前」な性能を書いておきます。
これより悪い性能や高い値段のノートパソコンを買ってしまわないよう、ぜひご注意ください。

それじゃぁ、いきますよ!

これが普通!今どきのノートパソコン

パソコンは便利なので、後から色々な使い方をしたくなります。

  • オンライン授業を受ける
  • 人工知能に発音をチェックしてもらう
  • インターネットで調べ物をするのにブラウザをいくつも表示させる

こうしたことを快適にやりたければ、そこそこに性能の高いパソコンが必要です。
そして何より、

  • セキュリティソフトが超重い!

というのが落とし穴です。
コンピューターウィルスや不正サイトからパソコンを守るソフト。これを快適に動かすだけでも、それなりの性能が必要です。
でもこれ、意外と知らない人が多いです。

そうした実用的な意味で最低限の性能」は次の通りです。(2020年9月時点)

(例)マイクラミングの推奨環境

CPU Intel Core-i5 または AMD Ryzen5
メモリ 8GB
ストレージ SSD 128GB
ディスプレイ 1600×900 ドット
OS Windows 10 または macOS(※)
価格 新品 6~7万円
中古 3~4万円

※上記スペックは年と供に更新されていきます
※マイクラミングの技術サポートはWindows10のみとなります

プログラミング教室「マイクラミング」に通う生徒にも、これ以上のスペックでWindowsパソコンを購入するよう推奨しています。
これくらいの性能があれば、マインクラフトとスクラッチを同時に動かして、無理なくプログラミングを楽しむことができます。

逆に、これよりも性能を妥協してしまうと、次のようなトラブルが起こりやすくなります。

  • キーボードやマウスの反応が遅くて作業がイラつく
  • アプリの起動が遅い
  • たまにブラウザやアプリが動かなくなる時がある
  • 調子の悪い日がある(Windowsのアップデートが裏で実行されている時など)
  • セキュリティソフトを入れたら重くて使えなくなった
  • ゲームができない
  • 簡単な動画の編集処理ができない
  • Windowsをアップデートしたら急に重くなった

性能が悪いと何がいけないのか?

パソコンで「性能が悪い」とは、一般に

  • 処理速度が遅い
  • ストレージの容量が足りない

などの意味でしょう。
これらの原因は、だいたい上の表のどれかが不足ということです。

それでは性能が悪いと、いったい何が良くないのでしょうか?

もちろん、

「やりたいゲームや使いたいアプリが快適に動かない」

という事なんですが、
パソコンを買う時に、使いたいゲームやアプリを決めていない人も多いです。

そのような人には、別の説明も必要でしょう。
そういう人は、こんな意味でとらえてみてください。

「若い人の速い操作に着いて来れない」

パソコンの反応が遅いと、イライラますよね?
または、本当に動いているのか心配になったり、不安になったりします。

特に子供は「ちょっと待って様子を見る」という行動ができません。
むしろマウスやキーボードを連打してしまいます。

そうやって、さらに高負荷な状況へと、パソコンを追いやってしまうのです。
こうして、性能の悪いパソコンは、

ちょっとしたきっかけで、
雪だるま式に処理が遅くなり、
ついには何もできない状態になってしまう、

というリスクが高いのです。

まぁ、普通の人は、パソコンがすべての処理を終えるまで待ちきれません。
たいていは途中でパソコンを再起動してしまい、保存し忘れたデータを失います。

性能の読み方を知らないと大きな後悔

実のところ、パソコンの性能はここ5~6年の間、たいして変わっていません。
それなのに毎年のように新製品がたくさん登場するため、ラインナップが過密状態です。
つまり、

  • 少し値段が安いだけで性能が大幅ダウン
  • 中古の方が安くて高性能

という現象が起こりやすくなっています。

例えば、次のようなパソコンの新製品が実際に売られています。
値段の割には性能がいまいちです。
性能を悪くしているポイントを赤色にしてあります。

CPU Intel Celeron
メモリ GB
ストレージ HDD 500GB
ディスプレイ 1920×1080 ドット
OS Windows 10
その他 DVD/CDマルチドライブ内蔵
価格 新品 10万円

実はこれ、10万円もします。
性能からすれば割高です。
このパソコンが高価になっている理由は次の通りです。

  • 新しいモデル
  • 日本製
  • DVD/CDマルチドライブを内蔵

おそらく高齢者がターゲットのパソコンなのでしょう。
写真、インターネット、YouTube、DVDやCDなどのメディアを鑑賞するだけなら十分な性能です。
高機能なゲームもしないでしょうし、動画編集やプログラミングもしないでしょう。

性能が良いことよりも、日本製で「安心」できるのがポイント!

それが売りの商品です。
しかし学生の実用性という意味では不向きなポイントです。

パソコンが当たり前!

の世代を生きて行く、これからの子供たち。
彼女ら、彼らには、ちょっと物足りない性能です。

パソコンの性能の見方(スペックを見る方法)

さて、上の表を普通に理解できる人は、ここでお話はおしまいです。

ここからは、表の項目について、個々に意味を説明します。
まずパソコンの性能を見るのに重要なキーワードを4つ覚えましょう。

  • CPU
  • メモリ
  • ストレージ
  • OS

それぞれ順に説明します。

CPUの意味と選び方

パソコンの計算装置です。人間の頭脳に相当し、「どれだけ同時に速く処理できるか」みたいな性能を決めます。
この部品が廉価版だと処理スピードが落ちます。高価なものは脳みそを4つも6つも搭載しています。
主に2つのメーカーから色々な型番(CPUの商品名)が出ています。

メーカーごとに、型番を性能順に並べたのが下です(ノートパソコンでの話)。

Intel社(インテル)

Celeron < Pentium < Core-i3 < Core-i5 < Core-i7

AMD社(エーエムディ)

A6~A10 < Athlon < Ryzen3 < Ryzen5 < Ryzen7

赤文字の型番よりも上(右側)を選ぶようにしましょう。

メモリの意味と選び方

パソコンの記憶装置です。人間の短期記憶に相当し、「暗算がどれだけできるか」みたいな性能を決めます。
多ければ多いほど有利ですが、逆に少ないと処理スピードが落ちます。

最低でも8GB(ギガバイト)以上

としましょう。

何もアプリを動かさなくてもWindowsが2GBくらい使ってしまいます。
そしてブラウザも1GBくらい使います。
これに加えてアプリを動かしたら、すぐに4GBを越えてしまうでしょう。

ストレージの意味と選び方

パソコンの記憶装置です。人間の長期記憶に相当し、「知識や経験(アプリやデータ)をどれくらい持っているか」みたいな性能を決めます。
またメモリで暗算しきれない計算を「ひっ算」するときにも使うため、これも高速な部品を選びたいところです。
主にHDD(ハードディスク)とSSD(エスエスディ)の2タイプありますが、絶対にSSDを選びましょう。

HDD << SSD

HDDとSSDの性能差は数十倍で、大きな大きな差があります。ひっ算が速くなるのでパソコン全体の性能が上がります。
一昔前は高嶺の花だったSSDも今では手ごろな値段に落ち着いています。選ばない手はないでしょう。

容量よりも性能を重視

SSDは高価です。5年前はもっと高価でした。
中古パソコンになるとSSDが128GBと少ないものもあります。
一方HDDは昔から安かったので、500GB以上が普通です。

同じ値段なら大容量のHDDの方がお得な気がしますが、それは違います。
パソコン全体の性能に関わる事なので、性能を取った方が良いでしょう。

容量が足りなければ、後から外付けのHDDやメモリカードを買い足せばよいだけです。
しかし性能は買ったときに決まってしまいます。

数字に騙されてはいけません。

OS(オーエス)の意味と選び方

オペレーティングシステムの略です。これは人間に例えると言語や文化みたいなものです。
OSが違えばアプリも違います。
iPhone用のアプリをWindowsで使うことはできません(インストールもできません)。

市販品では大きく5種類のOSがあると覚えておきましょう。

  • Windows10
  • macOS
  • iOS
  • Android
  • Windows Mobile(2019年で終了)

このうちパソコン用のOSは上の2つだけです。
MacBook Air、MacBook Pro、iMacの3種類のパソコンはmacOSです。
その他のパソコンがWindows10です。

残り3つはパソコン用ではありません。タブレットやスマートフォン用です。
iOSはiPhoneやiPad用です。
Androidはその他のスマートフォンやタブレット用です。

全くちがうので注意しましょう。

WindowsかMacか?

パソコン用のOSで市販品は「Windows10」か「macOS」です。
そして、

  • Windows系のOSを搭載したパソコンを「Windows」、「 PC」
  • 同様にmacOSを搭載したパソコンを「Mac(マック)」

などと呼びます。

パソコンを買う時に、どちらかを選ぶ必要があります。

どちらのOSが良いのでしょうか?

結論から言いますと「周りに合わせる」のがベターです。

つまり、プログラミング教室や学校の先生に聞いてみてください。
同じものを使う方が、学習しやすいに決まってますから。

大学生であれば、大学からおすすめされたものや、多くの教授が使っているものが良いでしょう。
研究室の配属が決まっている大学生なら、研究室の環境に合わせましょう。

Linuxとは?

フリーソフトのLinux(リナックス)というOSをご存じの方もいらっしゃるでしょう。
とても高機能で優れていながら、すべて無料という最強のOSです。

しかし、パソコン初心者にはお勧めできません。
例えばパソコンで何か分からなくなった時に、いちいちサポートセンターに電話して相談するようなレベルなら、手を出さないことです。
自分で調べて自分で解決できるなら、そろそろLinuxも選択肢に入ってきます。

あるいは、あえて勉強のために、設定を壊してもよいパソコンを1台用意して、失敗しながら学ぶのもOKです。
これは趣味の意味合いが強いので、ひたすら保護者やお子様の方針次第です。

まぁ、とにかく、使いこなすには多くの知識が必要です。
そもそも自分でインストールや設定をする必要があります。
操作の多くは「コマンド」と呼ばれる文法付きの英単語で行います。

パソコンに詳しくなってから、選択肢の1つに入れてみてください。

  • 世界基準でプログラミングを本格的にやりたい
  • サーバーを安く作りたい
  • 趣味でコンピューターの高機能っぷりを味わいたい

などに役立つでしょう。

ちなみにmacOSは、元からFreeBSDというLinux同等のOSが内部で動いています。
プログラマーにMac使いが多いのはそのためです。

そして最近ではWindows10も内部でLinuxを動かせるようになってきました。
まだ特殊な設定が必要ですが、その内に、だれでも使えるようになるでしょう。

パソコンだと思って買ったらパソコンじゃなかった!?

エクセルのマクロを家でやろうとしたら、できなかった!
プログラミングを家でやろうとしたら、できなかった!

こんなトラブルがたまに起こります。

タブレットはパソコンではない!?

最近はタブレットにキーボードをつけたタイプのものが販売されています。
外見はノートパソコンそっくりです。

また学校によってはパソコンではなくタブレットを生徒に使わせています。
そのためタブレットをパソコンだと勘違いしている生徒も出て来ました。

もちろんタブレットなのでパソコンではありません。
スマートフォンとほとんど同じです。
タブレットとスマートフォンの違いは、電話回線に繋がっているか否か、だけです。

タブレットはパソコンと違って、基本的にファイルの操作ができません。
専用のストアからダウンロードしたアプリを使うだけの端末です。
「作る」のではなく「使う」に特化した端末といえます。

よって、外で買ってきたワードやエクセルのインストールができません。
プログラミングもできません。
環境をカスタマイズしたり特定の処理を自動化するような使い方ができません。

安いこともあって、ついついよく見ずに買ってしまう人がいるので注意しましょう。

OSで見分ける!

必ずOSをチェックしましょう。
そうすればパソコンとタブレットの見分けがつきます。

パソコンを買うのであれば

Windows10またはmacOS

を選びましょう。

予算があるならディスプレイの解像度をチェック!

最後に見落としがちなのが、ディスプレイの解像度です。

インチ数とドット数

パソコンの広告では画面の大きさを「インチ」や「型」の数で表しています。
これは画面の大きさを、対角線の長さ(インチ数)で表しています。
ノートパソコンなら「12インチ」~「15インチ」が普通です。
「12型」や「15型」と書いても同じ意味です。

しかし、これよりも重要なのが「解像度」です。

これは画面の画素数(ドット数)を「縦の数×横の数」で表しています。
ノートパソコンなら「1600×900」~「3840×2160」があります。
単位は「ドット」や「ピクセル」で、どちらも同じ意味です。
デジカメの解像度「○○万画素」などと、ほとんど同じ意味です。

日本では解像度が表示されていない広告が多いです。
広告を鵜呑みにせず、少し調べて解像度もチェックした方が良いでしょう。

解像度は一度に表示できる情報量

解像度は、一度に表示できる情報量の多さを表しています。
数字が大きいほど、小さな字を精細にくっきりと表示させることができます。
数字が小さいと、小さな字がピンボケしてコントラストの低い画面になります。

画面の解像度の違いを比較した写真

上の写真は2種類の解像度を比較したものです。

左側が1600×900です。ブログのページの半分しか表示できていません。
右側が3840×2160です。ブログのページ全てを2列も表示できています。

画面の面積はそれほど変わりません。
ところが右側の方が4倍以上の情報量を表示できています。
新聞に例えれば、左が新聞の1面の半分で、右が見開きの2面分、といった感じです。

ただし、それだけ遠目に見ている感じになるため、文字の大きさが小さくなります。
小さい文字では読みにくいので、実際には文字を少し拡大して情報量を少し控えます。

それでも画質がケタ違いに良くなるため、写真や動画を表示させると気持ちがいいです。
特に画像処理や動画編集をしたい人には、解像度が低いのはありえません。

プログラミングをする人も、色々な画面をたくさん表示させて作業します。
レポートや論文を書くときも、原稿を書く画面の横に参考文献の画面も同時に表示できます。

画面に表示できる情報が増えれば、それだけ作業効率が上がります。

フルHDと4K

「フルHD」は「1920×1080」のことです。
「フルハイビジョン」と呼ばれます。
日本製のノートパソコンでは、2019年頃からようやく一般的になりつつあります。
必要十分ですが、アプリやゲームが高機能化する今では、少し物足りなくなりつつあります。

「4K」は「3840×2160」のことです。
ちょうど「フルHD」の2×2=4倍になります。
東京オリンピックを前に、大型テレビや高級カメラの宣伝で「4K」が強調されるようになりました。
ただし27インチ以上のディスプレイでないと、小さい文字が読めなくなります。
それより小さいディスプレイでは、文字の拡大設定が必要になります。

高級なノートパソコンやデスクトップパソコンでは昨年あたりから4Kが普及しつつあります。
13~14インチで4Kならば、ちょうどiPhonと同じくらい高精細な表示になります。
iPhoneのRetinaディスプレイが、そのまま広くなったようなディスプレイ、といえば分かりやすいでしょう。

文字の表示という意味では、ノートパソコンの小さいディスプレイに4Kはオーバースペックかもしれません。
しかし画像や動画をきれいに表示させたり、アプリの小さいアイコンをくっきり表示させるには、ノートパソコンでも4Kディスプレイは有効です。

ただし4Kはバッテリーの消費が多いのが難点です。
外で作業することが多い人は、フルHDの方が良いでしょう。

オリンピックがあると解像度が上がる?

オリンピックはカメラやテレビが進化する1つのきっかけです。

次の東京オリンピックは、報道カメラが4Kにアップグレードされます。
その美しい映像を十分に楽しむためには、テレビやディスプレイも4Kにする必要があるというワケです。
ちなみに、4Kの動画データは膨大になるため、それを送受信する無線通信の5Gも一緒に整備されます。

これまでノートパソコンで4Kディスプレイと言えば、MacBook Pro や iMac の独壇場でした。
動画編集をするYouTuberやクリエイター、プログラマーなどからは、以前から人気です。

2020年に入ってからWindows10のノートパソコンでも4Kディスプレイを搭載したものが増えてきました。
値段も全体的に15万円くらいまで下がってきました。
しばらく前までは、このクラスのパソコンは30万円コースでしたから、だいぶ安くなってきました。

4Kディスプレイの生産体制が整ってきたのでしょう。
さらに Windows10パソコンでも4Kディスプレイが増えてきたため、Macとの価格競争が起こったのでしょう。

予算を奮発できて、パソコンで作業している時間が長い人は、できるだけ高解像度なディスプレイを選んだ方が快適でしょう。

良いものを安く買うなら海外製

付録で、パソコンの目利きが慣れている人におすすめな買い方を紹介します。

日本国内で販売されているパソコンは値段が少し高めです。
そこで、通信販売なら海外で組み立てられたものを船便で送る格安のモデルがあります。

  • DELL(デル、アメリカ)
  • HP(ヒューレット・パッカード、アメリカ)
  • lenovo(レノボ、中国 / 旧アメリカのIBM)
  • ASUS(エイスース、台湾)

といった海外メーカーのパソコンです。
世界中に組み立て工場を持ち、人件費の安い地域で組み立てて、船便で安く輸送するので、価格が安いのです。

日本の代理店が用意した、日本語のホームページから注文して購入するのが普通です。
ちゃんと日本語のキーボードを搭載し、日本語に設定されたパソコンを買うことができます。

電気屋さんの店頭や国内メーカーの通販で買うよりも、かなり安く購入できます。
その代わり、

  • 到着に2週間~1か月かかる(船便)
  • 発注したら返品できない(オーダーメイド扱い)
  • サポートで日本語での対応が不十分

という課題があります。
パソコン初心者や早く手に入れたい方にはお勧めしません。

  • パソコンの性能について目利きする自信がある
  • 到着まで気長に待てる

こういう人には、海外メーカーのパソコンを通販で購入するのがおすすめです。

まとめ

これから学校でも家でもパソコンを使うのが当たり前になります。
せっかくお子様に買ってあげるなら、長く使えるものを選びましょう。

必ずしも新品が良いとは限りません。
中古でも良いパソコンが多く販売されています。

またパソコンでないものを間違って購入しないよう、必ずOSをチェックしましょう。

パソコンの性能の見方をちゃんと理解すれば、賢い買い物ができます。

ぜひ、予算内で十分な性能のパソコンをゲットしてください。

 


生徒・保護者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
【会員限定】お子様の成績と可能性を伸ばす18個のノウハウ

友だち追加


塾関係者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
「zoomで簡単。オンライン授業移行の教科書」
または個別対談も可

友だち追加

 


名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!

★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL

定期テスト対策で時事問題の富岳からのプログラミング教室

マイクラミング プロコース 事例

塾長です。

今回の定期テストでは、さすがに出ないだろうと思っていました。

この大変な時期にも時事問題!?

しかし出るみたいです、時事問題。
一部の学校、一部の学年です。

子供の環境格差を反映してしまうテスト範囲の1つが時事問題です。
貧困家庭、保護者が政治や経済に無関心、保護者がニュースを見ない・・・こうしたご家庭の子供たちには解けない問題です。

それを是正するなら、授業中にニュース解説をしたり、授業中にニュースを調べさせる主体的な取り組みを実践するしかありません。
要は公教育かつ義務教育の機関である学校で、いかにして社会格差を吸収できるか。
しかし、授業時間が切迫している今の状況では、それができないから困っているはず。

さすがに今年度は出さないだろうと思っていました。

それなのに、また無茶をしますね。
何かの間違いでしょう。上司がチェックし忘れたとか。

子供たちがかわいそう・・・。

学校の先生には99%感謝と尊敬をしておりますけれども、
「ちゃんと組織として動いて欲しい」
という改善はお願いしたいです。

ということで、夜なべして時事問題対策の用語解説集をつくりました。

ふー。目が痛い。腰も痛い・・・

昨日から今日にかけて、必要な生徒たち全員に配り終えました。

富岳と不老

その用語解説集。
もちろん理化学研究所のスーパーコンピューター「富岳」も載せました。
8年ぶりの世界ランク1位ですからね。
名前の由来は「富士山」。

そして名古屋大学の「不老」も忘れてはいけません。
富岳と同じCPUのコンピューターで世界ランク36位
名前の由来は、大学のある「不老町」。
コンピューター処理の流れを表す「フロー」が読み方です。

計算スピードは富岳の方が60倍ほど高速ですが、人工知能や大規模記憶などが強化されています。
富岳の弟みたいなものですね。
ただ、不老は富岳より一足早く7月1日から運用を開始しています。

もちろん、不老も用語解説に載せました。

スーパーコンピューターでも使えるパイソン

その富岳や不老で、最もお手軽にプログラミングできるのがパイソン(Python)です。

  • シミュレーション
  • 人工知能
  • データサイエンス

などの研究をするのにパイソンがとっても便利なんです。
数学や物理を扱う機能がそろっているからです。
しかも無料で。

パイソンは科学技術に強い!

というワケです。

パイソンは8月開校の「プロコース」で

塾長のプログラミング教室で、この8月からプロコースを開講します。
実は、そこで使うのがパイソンです。

ハイコースを卒業する生徒がそろそろ出てくるからです。
彼らが言うのです。

もっと高度なことをやりたい!

と。

そのような生徒を対象に8月から限定的にサービスを開始します。

パイソンを選んだ理由は3つあります。

  1. 研究と就職の両面で将来まで役に立ちそうだから
  2. ジュニア、ミドル、ハイの環境に最初からインストールされているから
  3. 文法がシンプルでモダンだから

もちろん塾長が楽しんで使っているから(4つめ?)というのもあります。
教える本人が楽しいと思わなければ、教材を開発するまでに至りませんからね。

プロコースの方針として考えていること

一言でカッコつけて言いますと、

「次の世代に求められるコンピューターの使い方を教える。」

ということを常に考えています。

パイソンが人気とは言え、プログラミング言語には流行り廃りがあります。
ですから流行に左右されない芯の部分が生徒たちの中に残るように教えたいです。

何と言いましょうか、

プログラミングのエッセンス?
プログラミングのエキス?
プログラミング汁?

みたいな、10年や20年では変わらないプログラミングのセンスや勘所のようなものを教えていく方針です。
つまり生徒たちを、

「細かいことは自分で調べながらプログラミングできる」

という状態にしてあげたいと思っています。

そのために、例えば、あえて部分的にHTMLやJavaScriptを登場させたりします。
あるいは古い開発手法と新しい開発手法の両方を試してもらったりもします。

もちろんジュニア、ミドル、ハイの方針と変わらない部分もあります。

学校で習ってきた数学や理科、美術や技術などの知識もどんどん活用する!

この方針は変わりません。
塾ですから普遍的な教養とは何かを考えたいです。

プロコースでやること

スクラッチに比べると、パイソンはかなり高度なことができます。
しかもスクラッチに比べると超高速に処理ができます。

章の名前や構成は後で考えますが、ざっとこんな感じです。

  1. 導入
    ・スクラッチとパイソンを比較しながらプログラミングのスタイルを学びます。
    ・また概念の拡張として、整数、小数、文字列、配列や辞書、集合なども学びます。
  2. 計算力を体感する
    ・マインクラフトで学んできた3次元のベクトル空間を抽象化します
    マインクラフトは座標を(x,y,z)≡(横、高さ、縦)に対応させた空間です。
    これを(R,G,B)という色の空間に置き換えてお絵描きソフトを作ります。
    ・このように空間という概念を抽象化し、ハードウェアとソフトウェアの違いを体験します。
  3. 自動化を体感する
    ・ウェブスクレイピングを体験します。
    マインクラフトのプログラミングでは、よくブロックIDをインターネットで調べました。
    これを自動化します。
    ・調べた情報をCSVファイルという汎用的な形式で保存します。
    ・またパイソンで読み込める形式でファイルに保存して再利用性を考えます。
  4. データーベース
    ・スクレイピングしたデータをデーターベースにして管理します(RDBモデル)。
    ・SQLを簡単に紹介し、目的に応じてプログラミング言語が変わることを体験します。
  5. Webサーバーおよびアプリの開発
    ・データーベースを検索するアプリを3種類ほど作ります。
    ・コマンドラインのアプリ
    ・ブラウザで調べるアプリ(クライアント-サーバーモデル)
    ・Web-APIを使って調べるアプリ(REST-APIモデル)
  6. 人工知能
    ・詳細は企画中です。ここまで来るのに1年以上かかるでしょうから、ゆっくり準備します。
    人工知能の紹介程度になりますが2種類ほどやろうと思います。
    ・皮肉にも高校の教科書から削除された行列が人工知能では必須です。
    数学の基礎からどうやって教え直すのかが最大の課題でしょう。

ちょうどブログのサムネイルにある写真が、お絵かきソフトの完成図です。

マイクラミング プロコース 事例

画面上で絵を描くと、マインクラフトの世界でそれが実現されます。
背景を白紙にすればホワイトボードにもなります。

ところで、夏休みの宿題で「写し絵」(フロッタージュ)に取り組んだ人もいるでしょう。
10円玉に紙をかぶせて、鉛筆でこすると10円玉の模様を写し取れるという、あれです。

それと同じようなこともできます。
背景の画像をマウスでこすっていくと、マインクラフトの世界に、背景の絵が写し出されていきます。

そんなお絵かきソフトです。

学校で習った数学や美術(図画工作)のアイデアを使っています。

楽しそうでしょ!
そして頭が良くなりそうでしょ!!

こういうプログラミング教室って、他にはないと思います。
学校の学習指導要領に全て目を通してから作りました。

ソフトウェアの価値を理解できるという教養

空間座標の縦、横、高さを数字にすれば、どんな場所でも表せます。
色の三原色の赤、緑、青を使えば、どんな色でも表せます。

これをベクトルの(x,y,z)に当てはめて使うと、どちらも同じ数学の式になります。
例えば、場所の近さも色の近さも「距離」ととらえれば、どちらも三平方の定理で計算できます。

このように、ソフトウェアというのは、数学のような抽象化された概念を色々なものに当てはめて、新しい道具にしたものです。
学校で習う勉強は、とても抽象度が高いので、一見すると、何の役にも立たないことのように思えます。

しかしソフトウェアの世界では、その抽象度の高さが逆に大きな利用価値を生んでいます。

その価値を理解している投資家や政治家が多い国が、いち早く発展しているというワケです。
それは Google、Apple、Amazon、Facebook、Microsoft、Adbe、ZOOM などの歴史を見れば明らかですね。

残念ながら今までの日本には、抽象的な学問の価値やソフトウェアの価値を理解している人間が、ほとんどいなかったです。
いたとしても、そのような人材は、みな日本を出て海外に行ってしまいます。

スーパーコンピューターで世界一をとれるのは、ハードウェアだからです。
ソフトウェアについては、今後の日本の変化に期待したいですね。

ですから若い人にも大きな期待がかかっています。

高度の意味を取り違えたくない

逆に、機械の仕組みやコンピューターの仕組みなどは省略します。
プロコースではマイコンボード、LEDやモーターの基盤、ロボットなどは一切使いません。
ゲーム制作もしないです。

ロボットやゲームを作れば、いかにもプログラミング教室っぽいですかね?

塾長は、そのようなことを子供たちにやらせるのは反対です。
「職業に近い」という意味で「高度」なことを、いきなり子供たちにやらせるのは間違いだと思います。

子供たちが大きくなる頃には、今の職業の過半数は無くなっています。

ですから私の教室では、特定のマイコンや特定の機械を詳細に説明することはないです。
子供たちが大きくなる頃に廃れてしまうような流行りの技術は、教えても仕方がありません。

つまり、ただ単に大人向けの技術研修を簡単にしただけ、みたいな教育は、子供の将来には何の役にも立たないということです。

ロボット教室、ゲームプログラミング・・・

これらは教育というよりは「趣味」と割り切って楽しむ方が幸せでしょう。
学校や学習塾としてやるなら、イベントに使うくらいですかね。

客寄せパンダとしては良いかもしれません。
自分の子供に習わせたいかと言われたら、やらせたくはないです。

趣味としてやりたいと言われたら、それはそれで良いですよ。
おもちゃを買い与えるのと同じ意味で。

中学生や普通科の高校生に教えるべきことは、職業訓練ではありません。

学校で学んでいることを開発や発明につなげる発想方法だと思います。
学校で学んできた抽象的な概念を、身の回りの色々なことに当てはめてみる、モノや機械を抽象化して考える、というソフトウェア的な発想だと思います。

今時のプログラミングでよく登場するデータの構造や情報の扱い方でもよいでしょう。
モダンなプログラミング言語で扱われるデータ構造もまた、ものごとを抽象的にとらえるための器です。

それが分野を問わずコンピューターの持つパワーを使いこなすことに直結します。

ソフトウェア的な発想は、今の日本人の多くが苦手です。
今の日本人は、誰にでもハッキリ見えるものや流行のもの、保証されたものばかりに目が行きます。

しかし何かを創造していくには、それとは逆の視点や発想が必要です。
0から1を作り出す創造性をこれから強化しなければいけないと思います。
だから重視して教えようと思います。

ついついコンピューターというと、

「どんな技術を身に着ければよいか」

という話になりがちです。
就職活動中の人がそうなるのは正しいと思いますが、子供たちにとっては違うと思います。
目の前にいる大人たちが

「Javaを覚えた方が良いよ。」
「ロボットを作れた方が良いよ。」

などとアドバイスしたとしても、子供たちの未来では全く違う話になっているでしょう。

「何の役に立つのか」

という問いかけは、子供たちにとっては役に立たないのです。

僕らの先輩の世代は、相対性理論や量子力学、整数論などを全く役に立たない学問だと信じていました。
しかしカーナビや量子コンピューター、暗号によるセキュリティーなどは、これらが活用されまくっています。

先の教科書改訂で削除されてしまった高校数学の「行列」も、人工知能をプログラミングするのに必須の数学でした。

大人が言う「○○が将来の役に立つ」などというアドバイスなんて、所詮はそんなものです。
だれも未来について分かりません。

ですから今の流行に右往左往するよりも、

コンピューターで世の中をどう良くしていくか。
どんなものを作れば多くの人から喜ばれるのか。

という社会との関わりや希望について考えさせて、
それを実現させていく道具立てとしてプログラミングがある、

という順番で話をした方が、結局は近道になると思います。

そしてもちろん、職人が良い道具を切れる技で使いこなすように、プログラミングにも良い道具と技があります。
テスト対策や受験対策で暗記していた公式が、実はそうした良い道具なのです。

これから日本が豊かになるのか否かは、それが分かる人をどれだけ増やせるかにかかっています。

そのような話をした方が子供たちの将来のためになるでしょう。

 


生徒・保護者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
【会員限定】お子様の成績と可能性を伸ばす18個のノウハウ

友だち追加


塾関係者様のお友達登録はこちら

LINE登録するとプレゼントがもらえます!
「zoomで簡単。オンライン授業移行の教科書」
または個別対談も可

友だち追加

 


名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!

★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL

【塾長の独り言2】小学生や中学生にプログラミングさせても無意味!?という誤解がなぜ日本には根強いのか?

なぜプログラミング教育は誤解だらけ?

塾長です。

2020年度から実施されるプログラミング教育が目の前に迫ってきました。それなのに、今だに「そんなの意味あるの?」という疑問の声を聞くことがあります。もちろん多くは「誤解」からくるご意見です。今回はその誤解の正体について語ります。

解説動画の方が良い方は下のYouTubeでどうぞ。

【塾長の独り言2】小学生や中学生にプログラミングさせても無意味!?という誤解がなぜ日本には根強いのか?

(※)動画を撮った後で気付いたのですが、「黒歴史」と「ブラック企業」の2つの「黒」で話しがまとまっている気がするのは偶然です。たまたまで、他意はありません。何はともあれ、誤解が解けて日本のプログラミング教育が正しい形で盛り上がることを願います。

 

子供にプログラミングなんて習わせてどうするの?

最初に政府がプログラミング教育をうたったとき、賛同の声よりも、むしろ批判の声が高まりました。多くの人が誤解し、そして混乱したからです。私が思うに、その混乱の原因は2つあります。

日本人の誤解

  1. 日本ではプログラミング教育で失敗した黒歴史があるから
  2. 日本では「プログラミング」の意味が「コーディング」だから

1つ目は、高校数学にプログラミングを導入して失敗した「黒歴史」があったからです。
あの時は「フローチャート」と「BASIC」という特定の技術領域に偏ってしまったのが敗因です。実際、2014年度のセンター試験まで数学2BでBASICのプログラミングが出題されていました。センター試験の過去問集が、まるで人に見られたくない黒歴史のアルバムのようになっています。

2つ目は、日本では「プログラミング」の意味が、頭脳労働ではなく肉体労働の「コーディング」を意味しているからです。
日本では経験豊富でスキルの高い人が頭脳労働の「設計」を分担します。そして若手がその設計をただコンピューター語に翻訳することを「プログラミング」と呼んできました。要するに日本の多くの職場では「プログラマー」=「下っ端」なのです。
ところが海外でプログラマーと言えば、時にスティーブジョブスビルゲイツのように「世の中の仕組みを変えてしまった人」という意味まで含みます。

さて、海外視察で意識を高めた政府高官は、もちろん未来志向で意欲的な意味を込めて「プログラミング教育」と言ったつもりでした。しかし上記2つの背景を持つ日本社会では、その言葉はマイナスイメージでした。とても残念です。

日本のプログラマーは文系で、海外では理系!?

海外でプログラマーが世界の仕組みを変え続けてきたのには、日本とかなり違った事情があります。それは、日本のプログラマーが文系で、海外のプログラマーが理系だということです。

日本では理系の大学生の多くが公務員か研究職か工業系に進んでしまい、ソフトウェア産業にはあまり就職しませんでした。一部のパソコン好きな人くらいでした。信じられないかもしれませんが、2010年ころまで、多くの日本企業はプログラムの価値を低く見てきました。若手はその価値を理解していたかもしれません。しかし日本は年功序列。企業の上層部の人達は平成初期の感覚でプログラムを機械の付属品くらいにしか思っていませんでした。そのためプログラミングしている部署自体が、出世の見込めない部署にされていました。そんな状況のため、理系の技術者が多く育ちませんでした。そして才能のある人間は海外に行ってしまいました

実際、日本においてプログラマーの仕事の多くは、理系の知識を使いませんでした。日本のIT会社の仕事と言えば、ほとんどが事務作業を自動化するような開発です。そのような仕事が山ほどあって、それで飯が食っていけました。その種のプログラムは高度な数学や物理を使いません。算数しか使いません。いえ、本当は目に見えない所で、めちゃくちゃ高度な数学や物理学が使われているのですが、そういう肝心な機能は海外で発明されてしまっており、日本はそうした海外の技術を使ってプログラミングするだけです(※)。ですから文系の人でもプログラミングさえ勉強すればできるようになります。しかも仕事が多くあって、常に人材不足で残業だらけ。文系だろうが理系だろうが、多くの人がプログラマーになってきました。それが日本です。

(※)悲しいことにソフトウェア産業において日本は技術後進国です。
WindowsにMacOS、Linux・・・どれもアメリカ産です。インターネットやデーターベースの仕組みもアメリカ産です。人工知能や新しいプログラミング言語など、時代を切り開くソフトウェア技術のほとんどが海外製です。ビッグデータを抱えるGAFAは全てアメリカの企業です。日本人の多くは日本ではなくアメリカに納税している形になっています。
そして、塾長がマイクラミングを開発した時に参考にしたのは、英語のホームページと中国語のホームページだけです。スクラッチ3.0の仕組みをちゃんと解説している日本人は一人もいませんでした

日本のプログラミングはプラモデルみたいなものだった

たとえ話をします。

たとえば、プラモデルを組み立てるのに文系も理系も関係がありませんよね。必ず組み立て方を説明する図面や解説が着いてきます。その通りに組み立てれば、ちゃんと形が出来上がります。確かに作るためには一定の技量が必要で、時間もかかるし苦労もします。同時にチャレンジや楽しさもあります。色塗りなどで作り手の個性を出すこともできます。日本のプログラミングは、正に「プラモデルを組み立てる作業」のような感じでした。

しかし海外のプログラミングは、もっと根本的な開発を含んできました。

化学の専門知識を持った技術者がプラモデルに相応しいプラスチックそのものを創造しました。あるいは塗料を作りました。物理学や工学の専門家がプラスチックを綺麗に成型する機械を発明しました。数学を操る技術者が図面や解説を何倍に拡大・縮小して印刷しても滑らかに表示できる数式を作りました。ソフトウェア工学の専門家が、それらをデーターベースやソフトウェアに置き換えてパッケージ化し、製造方法そのものを商品にしました。

上の話しは、あくあまでもたとえ話です。

要するに、ほとんどの日本のプログラマーは、今まで発明の必要がないか、発明ができない立場や状況にいました。しかしプログラミングは安い作業ではありません。他の職業と同じで、むしろ世の中を良くする仕組みを創造する活動です。

色々な分野の専門知識が、色々な立場の人たちに広く利用できるようになる、そういう仕組みを創り出していく活動も「プログラミング」に含められます。また、そういう夢をぜひ持って欲しいと思います。

20世紀後半、確かに日本人の技術力は多くの分野で世界1位だったかもしれません。しかしコンピューターが発達してソフトウェアの重要性が高まるにつれ、日本の技術力はどんどん影を薄めてきました。過去の栄光に浸るには、僕らはまだ若すぎます!

早く目覚めなければいけません。日本人はプログラミングにおいても「世の中の仕組みを根本から変える発明」を目指さすべきです。そういう人が千人に1人、いや万人に1人でも出て来るような社会にしていく必要があると思います。

プログラムの基礎が国語や数学や物理!?

プログラミング教育よりも、まず読解力だ、算数・数学だ、という主張が根強いです。英語教育を強化する時にも同様の主張があります。読解力や算数・数学が大切なのはもちろんです。しかし、だからと言ってプログラミングや英語は後回しで良いとはなりません。むしろ読解力や算数・数学の技能を発揮してプログラミングして欲しいと思います。

それがどういう事かを考えてみましょう。

コンピューターを触らないプログラミング

今から25年くらい前、大学生の時。私は選択科目の中で「コンピューターアルゴリズム」を受講しました。大学生になったらプログラミングを勉強しようと決めていたからです。「アルゴリズム?」という疑問を抱きつつも、コンピューターと名の付く講義がそれしかなかったので、迷わず選択しました。ところが、最初の講義で取り組んだのは図形の問題でした。次の週も数学でした。最後は円周率を速く正確に求める数式の問題でした。結局、その講義の中ではコンピューターを1秒も使いませんでした。紙と鉛筆だけの世界でした・・・

アルゴリズムは「算法」と和訳されるみたいですね。そういえばコンピューターは計算機でした。同じ計算結果を得るために、どんな式を使うかで計算の速さが変わりますプログラミングする前に、より速くより正確に計算できる数式を考えること。それがアルゴリズムでした。ですから、残念ながら最後までコンピューターを使わなかったわけです。

仕事の早さも電気代もプログラマー次第!?

ただし学びは大きかったです。

  • プログラマーが数学や物理の公式を知っているか否か
  • 更にその公式を目的に応じてカスタマイズできるか否か

こうしたことで、計算の速さも計算結果の正確さも大きく変わってしまう、ということを理解できました。しかも電気代も時間も大きく変わってしまいます。同じ仕事をするのに、時には1万倍くらい効率が変わったりします。使うエネルギーが何桁も小さくて済みます。

もしも世界中のプログラマーがアルゴリズムを学べば、世界中のコンピューターが消費する電力が今よりもずっと減って、地球の温暖化さえ防げるのではないか、と思ったくらいです。

例えば、四捨五入をどう求めるか?

アルゴリズムしだいで計算量が変わってしまう簡単な例を出します。おそらく、よくある例題だと思います。

「与えられた小数を、小数第1位を四捨五入して整数の概数にしなさい。」

これを四捨五入の考え方どおりに、正直にプログラミングするなら、次のような6行以上の処理(プログラム)になるでしょう。

「整数部分」 に 「小数」の整数部分を代入しろ
「小数第1位の数」 に 「小数」の小数第1位を代入しろ
もしも 「少数第1位の数 」が4以下 ならば
「整数部分」を表示しろ
そうでなければ
(「整数部分」+1)を表示しろ

しかし、もっと簡単な方法があります。

「整数部分」に(「小数」+ 0.50 )の整数部分を代入しろ
「整数部分」を表示しろ

これなら、たったの2行です。工夫すれば1行にもできます。注目すべきは小数第一位について「四捨」と「五入」で場合分けする必要がないところです。コンピューターで遅い処理の1つが場合分けです。これが無いのは大きいですね。

これがアルゴリズムを考えるということです。そして本来はアルゴリズムも「プログラミング教育」に入ります。むしろアルゴリズムの方が大切です。

「目的」と「手段」を分けて考える発想を養う

上で見たように、コンピューターを使いこなすということは、目的と手段を分けて考えることに他なりません。

「四捨五入を求める」という目的の実現方法は何通りも考える事ができます。視野を広げるほど、いろいろな手段が思いつきます。
そして上の例題では、たまたま「小数第1位を」四捨五入する条件だったので「0.5を足す」という短い計算方法が選択できたわけです。

プログラミング教育では、次のような取り組みを体験させる狙いがあります。

  • 答えが1つに定まらないような問題にチャレンジする。
  • 試行錯誤で最適解を見つける。

難問に対して「無理だ」と即答しては何も生まれません。正解が1つという発想を捨て、今できる最大限の答えを見つける発想を変えれば、できることが生まれます。そのように視野を広げて、手段を何通りも並べて、何度も試しながら、最適解を導いていくこと大切なのです。

またそのために、国語、算数、理科、社会、英語や美術、技術などの素養が必要です。逆に、勉強したことを使おうとするから身に着きやすくなる、という側面も出てくるでしょう。

今こそ理系的なプログラミング教室が必須!

ですから「ただ図面を見ながら組み立てるだけ」みたいなプログラミング教室には、絶対にしたくありませんでした。
また、時代や流行りに依存するような専門知識を詰め込んでも、価値がないと思いました。

かつて高校生がBASICというプログラミング言語を習わされて、それでセンター試験も受験しました。しかし今やBASICを使う最先端の仕事など、ほとんどありません。高校までの学校教育において、特定のプログラミング言語の用語や文法を覚えさせても意味がないのです。時代に合わせた職業訓練は専門学校の仕事です。
第一、みんながプログラマーになるわけではありません

そして実際のところ、「組み立てるだけ」とか「職業訓練の簡易版」のような小中学生向けのプログラミング教室が多いです。私はそういうプログラミング教室を教育とは見なしていません。もちろん趣味と割り切れば良いですが、私は少なくとも自分の子供にそれをやらせようとは思いません。

そうではなく、もっと根本的に、生徒たちの血肉になるような活動にしたいと思いました。
理数系の頭脳や論理的な思考力を、ちゃんと伸ばす活動にしたいと思いました。

知らないうちに、高度な数学的なセンスや図形のセンスが身に着いている。
知らないうちに、創造する喜びが体験できている。

そんなプログラミング教室にすべきだと思いました。

だから、もう自分でプログラミング教室を作るしかなかったのです。

マイクラミング

本来のプログラミング教育は、偏った専門知識を覚えさせたり、特定の技能を訓練するものではなく、子供たちが問題に立ち向かう基礎力を育てるものです。

マイクラミング」は、そんなプログラミング教室になっています。そうなるように教育改革後の学習指導要領をにらめっこしながら作りました。子供たちの頭を良くするために塾長が自ら開発!しました。

そして、テキストは本厚木校の髙橋先生にお願いして、小学生にも親しみやすい構成にしてもらいました。「プロボン」というキャラクターも生まれました。ありがとうございます。

生徒たちは、パソコンやプログラミングの専門用語なんて、ほとんど覚えません。いち早く課題を解決することやマインクラフトで建築を「創造」することに没頭できるようになっています。試行錯誤が大切なのであって、専門知識の暗記をしたいわけではないからです。

それでいながら、小学1年生がマイナスの数を理解し、計算もできるようになります。それどころか、高校2年生の空間ベクトルで習うはずのxyz座標を、小学生が理解して、使いこなしています。そのような数学の知識を活用してプログラミングを楽しんでいます。
そして、マインクラフトの世界に多くの魔法をもたらしています。

小学1年生でも取り組めるジュニアコースから、三角関数やデータ処理を扱うハイコースまで用意しました。実際ヒーローズ植田一本松校プログラミング教室には、小学1年生から高校3年生まで広い層が在籍しています。

日本人の「プログラミング」に対する誤解がちゃんと解けて、正しいプログラミング教育が、もっともっと盛り上がっていくことを願うばかりです。

まずは近隣の方から、ぜひお立ち寄りくださいませ。

 


名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!

★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL

塾の先生が作った頭が良くなるマイクラのプログラミング教室

マイクラ×Scratch3.0

塾長です。

私が開発したプログラミング教室の「マイクラミング」。PTA新聞に掲載するなどして本格的に生徒募集を始めてから約1年。色々な方から色々な形でご支援をいただきながら、お陰様でもうすぐ全国50教室になります。2020年度からプログラミング教育が必須化されますから、もっともっと広げていく必要があります。

なんでこんなに人気なのか。生徒たちや保護者さまたちにお聞きすると、やっぱりマインクラフトだそうです。マイクラミングでは、ForgeやModが利用できるフル機能のマインクラフトをそのままプログラミングすることができます。プログラミング専用のへぼいマインクラフトではなくて、Java版でできる。そんなディープな知識をどこで身に着けるのか分かりませんが、とにかく子供たちは、そういう拡張性が好きみたいです。しかも最新のスクラッチ3.0でプログラミングできるのは、今のところ世界で「マイクラミング」だけです。

ということでマイクラミングで実際にプログラミングをしている様子を、そのまま解説動画にしました。ご覧くださいませ。

【マイクラ】スクラッチ3.0でプログラミングってどうやるの!?実況中継でお見せします。教育改革対応!無料版で遊べます!

 

無料版で遊ぶ

無料版のインストール方法は、こちらのブログをご覧くださいませ。パソコンを設定するスキルが少し必要です。

スクラッチ3.0で始めるマインクラフトのプログラミング
https://mana-viva.jp/mana-viva/2019-01-08-scratch30-micraft

※ インストールや設定は全て自己責任でお願いします。
※ インターネットからソフトウェアをダウンロードして、指定のフォルダにインストールする作業が必要です。
※ 無料版についてのお問い合わせはお受けいたしませんので、あらかじめご了承くださいませ。

 

謝辞

SENSHIN社 EIJI KURAMOTO代表のブログ

マイクラミングのフリー版について、SENSHIN社さんのブログ内で詳細に取り上げていただきました。ありがとうございます。
インストールの仕方やプログラミングの実況動画まで、読みやすく親切に書かれています。お勧めです!

Scratch3.0【スクラッチ】マインクラフトを動かしてみた
https://ssit.jp/scratch3-minecraft/

 

T Umezawa さんの動画

動画の中で JavaプログラミングとScratchプログラムの違いを説明するために、T Umezawa さんの動画を紹介させていただきました。
Java でプログラミングを始めたい方は、こちらがお勧めです。

【Java】ゲームプログラミング超入門 Part01
https://youtu.be/FsRHdL_r0pE?list=PLJ86MSrhnFKVQPf-E8y0FZKv7uzR4L4Dt

 

 


名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!

★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL

プログラミングした中1英作文の人工知能が変な発言をする件

プログラミングの画面

塾長です。

夏休みも半ばを過ぎました。宿題はもう終わりましたか?

さて、植田中学1年生の宿題の1つに「英作文を100個を作る」というのが出ているそうです。そこで英作文をやってくれる人工知能をスクラッチでプログラミングしてみました。ところが自動作成される英文が変過ぎて笑えます。

「面倒なことはコンピューターにやらせる!」これからの時代はこれだ!

と言いたかったのですが、やっぱり宿題は真面目に取り組むしかなさそうです。

続きを読む