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

Python

プログラミングの勉強は何から始めたらよいですか

塾長です。

これからプログラミングを始めたい人からの質問です。

何から勉強したら良いですか?

こういう質問が増えてきました。

塾長は立場上、中高生やアルバイトの大学生から、こういう質問を受けます。
中には他の塾の先生から「子供にプログラミングを教えた方が良いですか?」というご相談も。

ということで、塾長の立場からアドバイスを書きたいと思います。

この記事の対象

この記事では、特定の産業技術を学ぶことを目的にはしていません。
広く通用する「基礎学力としてのプログラミング」を学びたい人が対象となるでしょう。

逆に「数か月~半年後に仕事ですぐ使えるプログラミング」を学びたい人は、別の記事を探してください。

あくまでも学習塾の先生として書きますね。

プログラミング言語の種類が多すぎる

プログラミングを学ぶ上で、最初に立ちはだかる壁。

それは「どのプログラミング言語を選ぶか?」かもしれません。

せっかく学ぶなら、色々なことができそうな言語を選びたいものです。
しかし、プログラミング言語の種類が多すぎます。

例えば、下の図を見てください。
塾長の独断と偏見でいくつか名前を挙げて描いたのですが、それだけでも、この数です。

もちろん、この図でもまだまだ描き足りません。
「PHPの前にPerl がない」とか「歴史を語るなら Pascal も必須」とか「我が青春の BASIC が無いとは何事だ!」など文句を言われそうです。

要するに、それくらい多くのプログラミング言語があるということです。

それゆえ、選択に迷ってしまうのも無理はないでしょう。
いったい何を選ぶべきやら・・・。

オススメのプログラミング言語は?

そこで塾長は、こんなアドバイスをしています。

全くの初心者であれば、
① スクラッチ
② パイソン
の順に学ぼう!

具体的には、

  • 小学生なら、スクラッチ(Scratch)を学ぼう
  • 中学生なら、スクラッチ(Scratch)、パイソン(Python)の順に学ぼう
  • 高校生なら、パイソン(Python)を学ぼう
  • 迷ったら、パイソン(Python)を学ぼう(※)

・・・スクラッチとパイソンだけやないか!

と突っ込まれそうですが、はい、その通りです。

それには、ちゃんと理由があります。

※ ちなみに就職であれば、希望の職種に合ったプログラミング言語を学びましょう
例えば工業系であればC言語やC++、ゲーム業界であればC++やC#、Java、BluePrintなどです。

最初はニュートラルなプログラミング言語で学ぼう!

プログラミング言語をマスターした先人たちは、口をそろえてこう言います。

1つの言語をマスターすれば、他もだいたい一緒だよ👍

しかし初学者にとって、いきなり悟りの境地を語られても参考になりません。

いや、そういうことは聞いてないから😞

と言われそうです。
初学者がプログラミング言語を選択するときの注意点みたいなものはないのでしょうか?

塾長としては、次のことを注意していただきたいです。

初めて学ぶなら、次の5つの観点でプログラミング言語を選びましょう。

  1. 無料で環境を作れること
  2. すぐに動かせること
  3. ネットで検索すれば、すぐに事例や情報を得られること
  4. マルチパラダイム言語であること(※)
  5. 多くの分野で使われていること

細かい説明は省きますが、これらの条件を無難にクリアしているのがパイソン(Python)です。

そして、その1歩手前の段階で、直感的にすぐ学べるのがスクラッチ(Scratch)です。
ちなみにスクラッチでも上の1~3までを満たします。

これら5つの観点で選べば、次のようなプログラミング言語に出会えるでしょう。

  • 特定の産業分野に偏らない技術を学べる
  • 近代的なプログラミングを学べる

要するに技術的にも時代的にもニュートラルで無難と言うことです。

もちろん、無料で学びやすいことも大切です。

※ マルチパラダイム言語とは、色々なパラダイムでプログラミングができる言語という意味です。
※ パラダイムとは、プログラミングの手法やスタイルのことです。手続き型プログラミング、構造化プログラミング、オブジェクト指向プログラミング、関数型プログラミング、ベクトル型プログラミングなど、色々なパラダイムがあります。

ゼロから学ぶ人にありがちな悩みは?

ここから先は「あるあるネタ」みたいなお話です。
初心者がプログラミングを学ぶときに直面しがちな状況について、少しご紹介しましょう。

共感や同情、失笑など、各々楽しんでいただければと思います。

①お手本のプログラムを見て「だから何?」って思う

たいていのプログラミング言語の本は、次のような章構成になっています。

  1. 環境の構築(インストールなど)
  2. 画面に Hello World! という文字列を表示させる
  3. 変数の種類
  4. 条件分岐と繰り返し
  5. 関数
    ・・・

そして50ページほど進めたあたりで思うのです。

  • 画面に「Hello World!」って表示させたからって、だから何なの?
  • なんか想像してたのと違った。

勉強が先に進んでいる気がしません。
最初は簡単なプログラムから学びますので、大した処理はできません。
そのため最初のうちは

「こんな処理、何の意味があるの?」

と言いたくなるようなプログラムばかり書かされます。
いわゆる「修行」という期間です。

勉強に慣れている人は、修行を乗り越える術を持っているでしょう。
しかし、多くの人にとっては、

「それが将来、どんなことにつながるのか?」

を説明してくれる人が近くにいた方が、希望をもって学べるかもしれません。

②いつま経っても基本ばかり

コンピューターで色々なことができる!

と期待して勉強を始めたのに、いつまで経っても何もできません。

  • 数学のグラフを表示させるにはどうしたら良いの?
  • ゲームを作るにはどうしたらよいの?
  • 人工知能を作るにはどうしたら良いの?

そういうフラストレーションが溜まります。

部活に例えるなら、せっかくテニス部に入ったのに、ラケットを握らず、マラソンばかりやらされる・・・そんな感じでしょうか。

かといって、ページを飛ばして後半の応用へスキップしてしまえば、今度は分からない言葉だらけ。
最初から読み進めていかないと、用語の意味が分からないでしょう。

ちょっとしたプログラムをつくるにも、環境やら文法やら用語やらと、乗り越えるべき「修行」が多いのです。
いきなりC++言語やJavaなどに手を出してしまえば、さらにオブジェクト指向やモジュールの概念なども早い段階から学ぶ必要が出て来ます。

独学ならば、ここで半分の人は心が折れてしまい、挫折してしまうでしょう。

パイソンは修業が少ない!

そんな中で、パイソンは「修行」が少ない言語です。
ゼロとはいきませんが、学ぶにつれて、できることが加速的に広がり、努力が報われやすいでしょう。

また、ネットで検索したり、ChatGPTに問い合わせたりすれば、すぐに答えが見つかるでしょう。
何より、無料でできることの幅がとても広く多いです。

スクラッチでプログラミングの基礎を学んでいれば、さらに楽になります。
パイソンに移行しても、最初の修行の過程を加速し、短縮できるでしょう。

③マウントを取られる

どの世界もそうですが、自分の価値観を押し付けてくる人がいます。

例えば「スクラッチを学んでいる」と話せば、それは簡単すぎるだの、プログラミングとは言えないだの、上から目線で何か言ってくる人が出てきます。

例えば「パイソンを学んでいる」と言えば、最初はC言語をやるべきだとか、オブジェクト指向を知るべきだとか、パイソンは遅いだとか、言われるかもしれません。

マウントを取る人たちが、さも自信ありげに語ってくるので、聞いていると委縮してしまいますね。

でも安心してください。
結論から言えば、あまり気にしなくて良いです。

難しいことを理解している人がエライなんてことはありません。
パイソンで100秒かかる処理がC言語なら0.1秒で済む、ということが事実だとしても、学ぶ時間が1日でも延長してしまったら意味がありません。

「そういう見方もあるんだな。勉強になるな。」

くらいに受け取っておきましょう。

逆にパイソンを学んでいることでマウントを取る人もいます。

流行の生成系AIをはじめ、人工知能の多くでパイソンが使われているためでしょう。
パイソンをやっていると流行に乗っている気がするのかもしれません。

もちろん、あまり気にしなくて良いです。

④何でそうなるのか想像できない

プログラミングは理系のイメージが強いですが、まったく理系っぽくないと思います。
とくに中学生以上では、数学の文字式の考え方が身についていると、それがかえって足かせになります。

具体的に、よくある混乱をいくつか見てみましょう。

変数の値が勝手に変わる!?

例えば、数学の文字式(代数)の頭では、次のプログラムの意味が全く理解できないはずです。

x=2
x=x+1

1行目で「xは2だ」と言っておきながら、2行目でそれを満たさない方程式が書かれています。
そもそも2行目の方程式は成立していません。
だから、意味が分からなくて混乱するでしょう。

算数や数学の=と、プログラムの=では、意味が全く違います。
それが混乱の原因です。

本に書いてあることを、よーく読まないと、こういう所で落とし穴にはまります。
初学者とは、そういう段階です。

ご存知の通り、プログラムの=は「右辺の値を左辺の変数に代入する」という意味です。
これはつまり、「次の行でxの値が変わってしまう」ことを意味します。
そして、これが混乱の原因になります。

数学では、行目と2行目が同じ文字であれば、同じ値のはずだと見なします。
値が違うのであれば、違う文字を使うからです。

それに比べると、プログラムの変数は、とても奇妙に思えます。
同じ文字なのに、1行目と2行目で値が変わってしまうのですから。

塾長が初めてプログラミングに出会ったのは中1でしたが、当時、

「xに1を足す」という式が「x=x+1」になることが気持ち悪くて、納得するまでとても時間がかかりました。

わざわざ繰り返すのはナゼ?

また「繰り返し文」(反復)の使い方にも慣れが必要でしょう。

例えば数列の問題で、1から10までの整数の合計を変数xに代入することを考えます。
数学であれば、

x=1+2+3+4+5+6+7+8+9+10

ですね。高校生なら

x=$\sum_{k=1}^{10}k$

と書いても良いでしょう。
それがプログラムになると、

x = 0
for i in range(11):
    x = x+i

という表現になります。
これを日本語的に書くと、

xを0に初期化
0~10の整数を順番に変数 i に代入するたびに、
x+ i の計算結果を x に上書きで保存

という意味になります。

数学の式に比べると、なんだか面倒な手順ですよね。

計算を手順に翻訳するのに慣れが必要

このように「計算」を「手順」に翻訳する、という発想の置き換えが必要です。

つまり、プログラミングでは、これまで学校で習ってきた考え方とは異なる、独特の考え方に慣れる必要があります。
日常生活とも違う頭の使い方かもしれません。

こうした発想の置き換えには、少し訓練が必要です。
きっと偏差値の高い人でも、最初の最初は、慣れないかもしれません。

とくに独学の場合は、自分には才能がないと早とちりしてしまいます。
慣れる前に挫折してしまうかもしれません。

「これは誰でも最初はそうだよ。少し慣れが必要だよ。」

そんな助言をしてくれる人が近くにいれば、気持ちが楽になって続けられたかもしれません。

⑤(補足)関数型プログラミング言語

上で見たような課題、つまり、プログラミングの発想が数学と異なり、分かり難いという課題について、
これを解決するプログラミング言語も、あるにはあります。

数学的な発想のまま、変数や関数を使ってプログラミングができる言語です。

それは「関数型プログラミング」というパラダイムの言語です。
Haskell というプログラミング言語がその代表です。

しかし、人によっては、逆に難しい文法に見えるでしょう。
関数型プログラミングは「圏論」と呼ばれる数学が元になっているため、説明が何かと数学的で難しいです。
例えば「モナド」という代表的で必須の概念を理解するのでさえ、多くの人が挫折してしまうでしょう。

残念ながら、関数型プログラミング言語を初心者が分かりやすく学べる環境は、今のところ、ほとんどありません。
一部の才能あるプログラマや研究者たちが「簡単だよ」と言っているような状況です。
まだまだ初心者には手が出ません。

また関数型プログラミング言語は、産業界では極めてマイナーなプログラミング言語です。
関数型プログラミングができても、それで職を探すとなれば、かなり狭き門になるでしょう。

作るために学ぼう

プログラミングは体で覚えた方が早い、とよく言われます。

実際、多くの人は、本を読んだだけでは身につかないでしょう。

ちょっと書いてみて、すぐ動かして、すぐ確かめる

そういう環境を最初に作ることが、とても大切です。
そういう意味でも、スクラッチやパイソンは環境を作りやすいでしょう。

さらに、具体的に何かを作りながら学ぶと、もっと効果的です。

  • 神経衰弱やジャンケンのような簡単なゲームを作ってみる
  • 学校で習った数学や理科の公式をプログラムにしてみる
  • エクセルの情報からグラフを作って表示するような、簡単な統計処理をしてみる

など、何か具体的に作るものを決め、それを作るために学ぶ、というスタンスにしましょう。

英語の習得は、外国人の友達をつくって、その人と会話するために学ぶのが速いらしいです。
映画や海外ドラマが好きな人は、それをネイティブに視聴するのを目的にするようです。

それと同じように、プログラミング言語を学ぶときも、

「これを作りたい」
「コンピューターをこう動かしたい」

という具体的な目標を立て、実際、すぐに作り始めるとよいでしょう。

目的と手段を分けよう

最後に、プログラミングを学ぶ上で、意外と見落としがちなポイントを1つ。
それは

「今のプログラムは手段の1つ」

ということです。

一般に、1つの目的を実現するために、取れる手段は複数あるものです。
プログラミングの方法もまた、何通りか考えられます。

答えは1つではありません。
また、今の答えが最善とも限りません。

そこが、これまで学校で学んできた5教科と決定的に違うところです。

目的を達成できれば、方法は違っていても良い!

それがプログラミングを学ぶ醍醐味と言えましょう。

そのため1度は完成したプログラムでも、

「他にも方法があるかも?」

と思案したり、他の生徒の方法を参考に、新しいアイデアを追加して改善したりできます。
それがまさに、

答えのない問題にチャレンジし、最適解を出す。
最適解を改善し、よりよい解にする。

という活動です。

もしもプログラミングの勉強が、

✖ テキストや模範解答を写すだけ

のような学びであれば、それ悲しいことです。

そのような勉強であれば、
これまで通り、5教科の勉強を頑張った方が良いでしょう。

ちょっと動かし、間違え、それを修正して、また動かしてみる。

プログラミングでは、そのようなトライ&エラーを多く経験することが、そのまま学びになります。
間違えたらバツではなく、「できるだけ前段階で多くの間違えを間違えを経験しておく」という発想に切り替えるとよいでしょう。

もっとも、これは試験対策や入試対策でも同じことですね。

あとがき

技術の世界は世代交代が速いです。

子供たちが社会に出る7年後や10年後。
その頃に、どんな技術がトレンドになっているのか、予想がつきません。

プログラミング言語も同様です。
「このプログラミング言語なら将来安心だ」というものはありません。

応用的な知識ほど、時代の流行に左右されます。

ですから就職が近いほど、その時に必要な知識を身に着けるのが良いです。

逆に言えば、まだまだ就職が遠い若い内は、流行に左右されない基礎学力を学ぶ方が良いでしょう。

それに、基礎学力のある人は、応用的な知識を独学で身に着けてしまいます。
大学生や社会人には学習塾がないでしょう。
不要だからです(不要なレベルでないと困ります)。

学校では基礎学力を学ぶのが良いと思います。

そしてプログラミングも同様です。

何の仕事に就くか分からない内から、特定の産業技術を学んでも、仕方ありません。
ですから、できるだけニュートラルなプログラミング言語で学ぶことをオススメしています。

もちろん趣味であれば、特定の産業技術でも大いに結構。
もっとも趣味であればプログラミングを「勉強する」とは言わないでしょう。

 


進学実績

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

国公立大学

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

私立大学

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

公立高校

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

私立高校

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

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

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

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

 


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

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

塾長が考える理想のプログラミング教室

塾長です。

うちの教室でやっているプログラミング教室「マイクラミング」。
私が開発したオリジナルのコンテンツですけれども、今や全国で使われています。

最初の開発から5年以上たちました。
でも、まだまだ、これからです。

ただ、忘れないうちに開発した理由を残しておこうと思います。

なぜ、マイクラミングが他のプログラミング教室とまったく違うのか。
そこを分かっていただけたら嬉しいです。

プログラミング教室「マイクラミング」の誕生秘話!

動画の内容

00:00:00 あいさつ
00:02:16 マイクラミング誕生秘話 序章
00:02:43 1.プログラミング教室を探したけれど・・・
00:05:18 2.どうしても譲れなかったこと
00:06:02 3.公正な教育
00:08:36 4.学校で習ったことを使う
00:10:48 5.キラーアプリ
00:13:23 6.簡単にし過ぎたらダメ
00:15:27 7.学校の勉強とつなげる
00:18:21 8.マインクラフトの使い方が違う
00:19:46 9.本物の基礎力とは!?
00:21:36 10.まとめ
00:22:28 エンドロール

 


進学実績

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

国公立大学

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

私立大学

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

公立高校

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

私立高校

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

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

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

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

 


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

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

「三角関数は本当に必要なのか?」問題とは!?

塾長です。

いやー、めっちゃ盛り上がってますね。

三角関数不要論の出どころは?

国会の中に「財政金融委員会」というのがあります。衆議院の常任委員会です。
予算委員会と同じように税制やお金の使い方について議論する場ですから、議論のネタは何でもアリです。

その会議で5月17日、藤巻健太議員(日本維新の会)が発言した内容が発端です。
中でも、ご本人のツイートがきっかけで盛り上がっているようです。

藤巻健太議員のツイート

三角関数は本当に必要なのか?
そんなことより、金融経済を教えるべきではないのか?

ソースはご本人のツイッターです。

三角関数よりも金融経済を学ぶべきではないか
藤巻健太議員のツイート(@Kenta_Fujimaki)

藤巻議員は大学受験で数学を使い、大学へ進学してからは経済を学ばれたとのこと。
それでも、大学受験を最後に三角関数は1回も使わなかったそうです。
そういうご経験から、

学校では三角関数を教えるよりも金融教育をすべき

との主張に至ったそうです。

世間の反応

リプライツイートやネットニュース、YouTubeなどで様々な反応があったようです。
賛否両論から感想文まで・・・

その中から主なものを紹介します。

ユーチューバーの反応例

人気ユーチューバー「はなおでんがん」さんの反応

理系を敵に回した衆議院議員へ。

さすが、積分サークルは言うことが違いますね!

放送局の反応例

YouTube上の報道番組「アベプラ」の反応

【三角関数】日常生活で使わない=学ぶ価値なし?人間の根源的な欲求を満たす?数学必修の意味

すぐ動画ネタにされています。
みなさん、仕事が速いですね。

何度も盛り上がる不要論

昔からこの手の話は少なからずありましたが「負け犬の愚痴だよね」と一蹴されてきました。
根強い「学歴信仰」のせいでしょう。

ところが最近は様子が変わってきました。
変化のきっかけはコロナ渦と働き方改革。そう考えて良いでしょう。

学校でもオンラインでも、どちらでも学べることが分かりました。
部活動の代わりに学外の民間クラブも活用できるようになりました。

同時に、コンピューターの活用が当たり前になりました。
YouTubeやアプリなどを使って、効率よく勉強できるようになりました。

「わざわざ学校に行く必要はないのでは?」
「自分の好きなものを好きな順番で学べばよいのでは?」

かつての愚痴は決して空想などではなくなり、三者三様に理想を語るようになりました。
かくして「教育の合理化」を議論する風潮が高まっているのだろうと思います。

何より、日本は30年間ずっと経済成長が止まっています。
この事実もまた、既存の仕組みをオワコン化したり老害化したりする理由なのでしょう。

探しやすいところで例を挙げると、こんな感じです。

教育経済学

学校についての例

教科ごとの例

受験についての例

このように、勃発している議論を上げればきりがありません。
三者三様の立場で、意見も十人十色。

もちろん、それぞれに正しいのだろうと思います。

ここは塾長のブログなので、最後に私の意見を2つほど書きたいと思います。

教育問題の本質から目を逸らしてはいけない

1つ目に言いたいことは、問題の本質を見失ってはいけない、ということです。

この種の議論は、きっと半分は炎上目的なのでしょう。
アクセス数を稼ぐために、話題の切り取り方が極端で、切り口がキレッキレになる傾向です。
少し用心しましょう。

さらに、次のような観点で、少し冷静になる必要があります。

時代遅れの二元論

AがダメならBだ!

このような議論のやり方を二元論と呼びますよね。
答えが1つに決まるような問題を考えるには便利ですが、SDGsの時代には役に立ちません。
10人いたら10通りの答えがあり、しかも、それらをできるだけ同時に満たさなければいけない・・・今はそういう時代です。

リツイートを見れば、いろいろな意見が出ています。
どれが正しいとは言い切れませんし、間違っているとも言い切れません。
それぞれに正しいのでしょう。

必ずイタチごっこの議論になる

ここで、もしも教科書から三角関数を外して、代わりに金融教育を入れたらどうなるでしょうか?

私は、また同じ問題が必ず起きると想像しています。

つまり、誰かがまた、

金融なんて学ぶ必要がありますか?
そんなことより、〇〇を学ぶべきです。

と言い出すことでしょう。

なぜなら、金融を学んでも、ほとんどの人にとって役に立たないからです。
知らなくても困らないからです。

確かに、金融経済の活用は、これから更に身近になるし重要になると思います。
個人で関わる機会がどんどん増えると思います。
もちろん、これには賛成です。

しかし「大多数の人」にとって見れば、やっぱり金融の知識は不要です。

なぜなら、分かりやすくて優しいサービスが登場するからです。
難しいことを知らなくても、便利に使えるアプリや、親切な代行サービスが登場するからです。
知らなくても金融サービスを受けられるのです。

三角関数の恩恵を多くの人が受けているにも関わらず、それを知らなくても生活できます。

それと全く同じ話になるからです。

ですから、何かにつけ「必要か?、不要か?」などと議論するのは、そろそろ体力の消耗でしかないなと思っています。

問題の本質は教育の不自由!

100人いたら100通りの解があり、できるだけ100通りの全てを満たすべき。

今はそういう時代です。
教育も例外ではありません。

5教科だけで生徒を評価しないこと。
みんなでオール5を目指すのは、多くの生徒にとって時間の浪費です。
また5教科だろうと9教科だろうと、それだけでは評価の視野が狭すぎます。

例えば、5段階評価(5点満点)で12とか100とかをゲットしても良い時代でしょう。
こういう柔軟な発想が問われているのです。

もちろん、どの分野もそこそこできる、というオールマイティも、それはそれで特別に評価されて良いです。

はたまた、教科の数を100教科とか5000教科とかに増やしてしまい、高い次元で評価するのもアリでしょう。

このように、教育のメタ情報科を過去から未来にわたって「いつでも再定義できる」というシステムの中で、
子供たちは何をどのような順番で学んでも良い!
という自由で人間的なシステムが理想であるはずです。

苦手なもので消耗するより、得意なものや好きなものから延ばせばよいです。

このような学びが「できない理由」を1つ1つ取り除いていくこと。
今後はそういう取り組みが必要でしょう。

これまでは不可能でした。

なぜなら、人間の手作業で、紙で、ハンコで、生徒の履修や成績を管理してきたからです。
人間の小さな脳みそと少ない体力では、理想が実現できなかったからです。

今はコンピューターが安くて当たり前ですから、本当は色々とできるようになっているはずです。
逆にコンピューターにできることを、現代でも相変わらず人間にやらせるから、ブラックになるのです。

もっと自由に学べる環境を、どんどん用意できるはず。

理想が分かり切っているのに、それに向けて現状を変えようとしない。
こうした大人側の怠慢や不勉強さの犠牲になるのは、いつも子供たち。

これが問題の本質です。

教育をもっと自由にしましょう。

補足

ちなみに「自由」は「自分勝手」や「無秩序」の意味ではありません。
この種の議論は、ペリーが黒船で日本にやってきた時代に、もう済んでいます。

何の役に立つかを人に聞いたら負け

2つ目に言いたいことは、

「美味しい話は、誰も教えてくれない。」

ということです。

GAFAが世界を牛耳ってしばらく経ちました。
彼らは人工知能や量子コンピューターで世界をリードしています。
さらに政治やエネルギー網にまで手を伸ばし始めています。

ロシア政府にアメリカの1企業の社長がケンカを吹っかけています。

彼らはどうして世界を支配できたのでしょうか?

答えは明白です。

みんなが

「こんな勉強、いったい何の役に立つんだい?」

と言うような知識や技術を、ひたすら集めたからですよ。

日本の企業はどうでしょうか?

大卒生を欲しがりますが、大学で学んだことを仕事に活用して来ませんでした。
学歴の無駄遣いです。

部下が大学で何を専攻し、どんな卒論や修論を書いたか?

日本のサラリーマンで、これを言える上司は全体の何割くらいでしょうか?

おそらく、ほとんどいないでしょう。
政治家だって「ITや経済に弱い」などと言われています。

だけど学歴や偏差値は気にする。
学歴や偏差値の無駄遣いです。

アメリカの企業は違います。少なくとも急成長を果たしてきた企業は。
大学の研究を企業が積極的に使うのです。
中国もです。インドもです。他の成長している国もです。

また、各分野の専門家を数万人規模で集めて、最先端の情報分析を国家を上げてやらせています。
日本にはそういう行政組織すらありません。

日本が勝てるわけがありません。

勉強を役立たせている人は「役に立ってるよ」なんて教えてはくれないのです。

なぜかって?

そんなの教えたら損だからです。
特許を取ったり、秘密にしたり、誰にも真似されない形にしたりするでしょう。

GAFAが成長している間、

「勉強の何が何の役に立つのか?」

なんてことをGAFAから教えてもらいましたっけ?
教えてもらったとして、同じように行動しましたっけ?

アカウントがバンされたり、検索で上位へ持ち上げられたりしますよね。
あれを判断している人工知能。
高校でやったベクトルを100次元とか200次元に拡張して計算処理をしています。

個人レベルでも違います。
世界で最も売れているゲーム「マインクラフト」は1人のプログラマーが作りました。

あれ、三角関数のお化けみたいなアプリです。

みんな大好き「三角関数」です。

基礎的な勉強ほど、新しいものを生み出す力を秘めています。
しかし普通は気が付きません。

だから、

「何の役に立つのですか?」

などと聞いているようでは負けです。
日本は30年間ずっと負け続けています。

リベンジに向けて

GAFAのような強者に支配されたくない・・・このようなアンチテーゼが Web3.0 構想の始まりです。

今や一部の人や企業だけが、中央集権的に情報や富を支配している世界です。

しかしそうではなく、みんなで少しずつ担保し、分かち合おうではないか!

ブロックチェーンという技術が登場して、このような理想が現実的になりつつあります。

とはいえ、まだ混とんとしています。
似たようなものが乱立しては消えていっています。

それでもWeb3.0の大枠は何となく見えてきています。

そういう意味では、リベンジに向けた流れが少し出て来ました。

勉強が何の役に立つのか?

あなたは、まだ聞いちゃいますか?

プログラミング教室で教えていること

先の「三角関数は本当に必要なのか?」問題がネット上でにぎわっていた時、
私はプログラミング教室の新しいテキストを作っていました。

プロコースのテキストです。

「マインクラフトを作れるようになろう!」

という単元です。

マイクラで作ろう、ではないですよ。
マイクラ「を」作ろう、です。

その一部がこれです。

あちゃー、やらかしてしまいました。

マイクラミングのプロコースのテキストの例1

マイクラミングのプロコースのテキストの例2

子供たちに三角関数を使わせてしまって、どうもスミマセン!
よりによって、sin(サイン)もcos(コサイン)も、両方とも使っちゃっています。

小学生も中学生も高校生も参加している授業だから、影響が大きいです。
どうしましょう。

うっかり三角関数の便利さを伝えるテキストを書いてしまいました。
どうしてもプログラミングには三角関数が必要だと思い込んでいます。
パイソン(Python)だから軽い気持ちで使っちゃったのです。

小学5年生でも三角関数を使える生徒がいるものですから、ちょっと調子に乗っていました。

たいへん、申し訳ありませんでした(笑)

教育を自由に!

冗談はこれくらいにして、

もしも教育が自由であれば、好きなものや得意なものをシェアする投稿が増えるでしょう。

この時、それを自慢話だとか、自分への圧力だとか、いちいちマイナスに捉えないことです。
人は人です。

良いものには素直に「良いね!」「スゴイね!」と言えばよいじゃないですか。

自分と人は違います。
それでOKです。

比較する必要はありません。
他人を妬んでも、自分が不幸になるだけです。

たいていの人は自分のことで精いっぱい。
別に私に向けた発信ではないし、ましてや他意など無いでしょう。

客観的な指標や数字を通じて自分の現状を知ることは大切ですが、それを他人との比較として解釈する必要はありません。
他人と自分を比較したら、どんどん心が不自由になります。

比較しないことが、学びや教育を自由にする第一歩だと思います。

 


進学実績

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

国公立大学

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

私立大学

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

公立高校

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

私立高校

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

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

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

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

 


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

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

友だち追加


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

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

友だち追加

 


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

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

高校生プログラミング「情報1」の教科書を徹底比較

情報1の教科書を並べた写真

塾長です。

今年の高校1年生から教科書と指導要領が新しくなりました。
その目玉の1つが「情報1」です。

情報1とは

端的に言うと、こんな教科です。

  • 必須科目です。
  • プログラミングを含んでいます。
  • 大学入学共通テストの受験科目です。
  • 情報処理について学びます。
  • 問題解決やプレゼンの手法も学びます。

実はこの教科書、ビジネスマンからも「欲しい」と話題なんです・・・

2022年11月9日に試作問題が発表されています。
出題傾向について知りたい方は、それをご覧いただくか、以下のブログYouTubeをご参照くださいませ。

【大学入試】情報1の試作問題2022を超解説

社会人も欲しがる教科書だった

もしも内容がコンピューターの仕組みや情報処理だけだったら、ビジネスマンの間でここまでパズらなかったでしょう。

この情報1の教科書は、めっちゃ実用的なんです。
読んでためになるだけでなく、仕事のスキル向上も期待できそうです。

大企業の新人研修みたいな内容

と言えば、分かりやすいでしょうか。
例えば「〇〇が問題だ」と言うときの「問題」の定義もしっかり載ってます。

「問題」=「理想と現実のギャップ」

この定義がいかに重大か。

「うん、めっちゃ大事だよねぇ。」

などと実感したフリをして、意識の高さをアピールするのがビジネスマンのたしなみというものです。
それが、学校の授業でも重視される時代になりましたよ。

さらに「ブレーンストーミング」や「KJ法」、「ペルソナ分析」やプレゼンテーション手法など、およそビジネスマンが体得したいものが載っています。これ読んだら意識の高い会話が得意になりそうです。

それだけ実用的な内容で、まさに「今日から使える」的な内容に仕上がっています。

もちろんプログラミングについても一通り載っています。

事前調査

情報1の教科書の比較について、興味深いサイトがあったので、事前に読んでみました。
こちらの2つのサイトがおすすめです。

  1. 「情報Ⅰ」の教科書とプログラミング言語に関するアンケート結果Monaca Education 2021/10/7)
  2. 情報Iの教科書におけるプログラミング分野の比較と分析河合塾 わくわく★キャッチ! 愛知県立小牧高校 井手広康先生)

上の1から、実教出版や東京都書の教科書に人気がありそうだと分かりました。

また2から、実践的でレベルの高い教科書は実教出版と日本文教出版だと分かりました。
数研出版は1冊の中で多くのプログラミング言語を紹介していることから、個人的に興味が湧きました。

実物を買って読んでみたくなりました。

本屋さんへGO!

新しくできた教科書であるため、3月までは入手が困難でした。高校への配布が優先ですからね。
4月になって購入しやすくなり、本屋さんでも在庫がそろってきました。
そこで、さっそく買いに行って来ました。

名古屋で教科書を買おうと思ったら、正文館本店ですよね。

名古屋市東片端町の通りの写真

実物を見て買いたいときは、リアルな本屋さんに限ります。こんな本屋さんが家の近くにあったら幸せでしょうね。

事前調査で興味のあった実教出版、日本文教出版、東京書籍の教科書は在庫がありました。
しかし数研出版のはありませんでした。

比較してみた!

ということで、この4冊を買ってきました。
それらを読んだ塾長の感想をまとめると・・・こうです!

比較表(あくまでも塾長の主観)

出版社名
教科書名
教科書コード
実教出版
最新情報1
情Ⅰ705
実教出版
高校情報1 Python
情Ⅰ703
日本文教出版
情報1
情Ⅰ710
東京書籍
-新編-情報1
情Ⅰ701
主なプログラミング言語 VBA Python Python
JavaScript (*2)
Python
Scratch3.0
問題解決の概念
問題解決の手法
モデル化の概念
モデル化の手法 ×
シミュレーション技法 ×
アルゴリズムと
プログラミングの基本
プログラムの設計手法 × × ×
オブジェクト指向 × × ×
統計や検定の技法
文章の読みやすさ
図解の分かりやすさ
資料ページの充実
総合点 (*1) 20

教科書の王道

23

実践的で技術者志向

20

ジェネラリスト志向

17

教養を深める用語集

(*1) ◎:3点、〇:2点、△:1点、×:0点
(*2) JavaScript の説明は3ページ程度です

 

全体的によかったところ

どの教科書も共通してよかった点は次の通りです。

  • 目次が見やすく、タイトルの意味が明確
  • プログラミングの説明が丁寧
    どの教科書もフローチャートを併記し、なおかつ1行1行の意味も載せてありました。
  • 全ページがカラー印刷で、とても図表が豊富
  • メインで取り扱わないプログラミング言語についても少し言及
  • 教科書のページ番号を10進数と2進数で併記

 

教科書ごとの感想

今回は教科書ごとに、とても個性を感じました。同じ出版社でもタイトルが変わると雰囲気が変わりました。

実教出版「最新情報1」

言葉の定義や使い方がとても丁寧で、教科書の王道という感じでした。
網羅度が高く、難易度も適切です。

文章と図表のバランスが良く、とても読みやすく仕上がっていました。
実教出版さんは、情報処理資格の書籍を多く取り扱っているだけに流石です。手慣れている感じがしました。

プログラミングは少し物足りなさを感じました。

実教出版「情報1 Python」

タイトルに「Python」と冠しているだけのことはあります。4冊の中でもっともプログラミングを専門的に学べる内容でした。

ただし問題解決や情報デザインについては、網羅はしているものの記述があっさり。他の教科書よりも内容が薄く感じました。
その代わり、モデル化やデータ解析、シミュレーション、ソフトウェア設計については肉厚でした。
タイトルのコンセプトどおり、章構成に強弱がついています。

特に「オブジェクト指向」や「データの分布と検定」についてしっかり載せていたのは、この教科書だけでした。
4冊の中で最もプログラミングを実践的に学べる教科書です。

問題解決やプレゼンテーションの実践については、自分でググりながら進める必要があります。

日本文教出版「情報1」

問題解決の取り組み方やプレゼンテーションの方法について、かなり詳しく取り扱っています。

またプログラミングは浅すぎず深すぎず、全体的にバランスよく学べるようになっていました。

全てを把握したうえで最終的にコンピューターのことは専門家に任せる・・・そんなジェネラリスト志向の教科書です。

バランスの良さで実教出版の「最新情報1」と迷いますが、こちらの方が難易度が高めです。
実際に手を動かしてプログラミングを実践できます。
JavaScriptやHTML、CSSについても説明があります。

すこし図がごちゃごちゃしている印象です。
「官僚が作るパワーポイントみたい」と言えば、雰囲気が伝わるでしょうか。

東京書籍「新編 情報1」

読みやすさで言えば、ダントツでこの1冊です。

多くの概念や知識を驚くほどコンパクトに分かりやすく説明しています。
しかも、ほとんどの用語にルビ(ふりがな)をつけています。それでいて内容は薄くありません。
巻末には、Python、JavaScript、VBA、Swift、ドリトル、Scratch3.0 といった6種類ものプログラミング言語について説明しています。

ほんとうに、よくこれだけキレイにまとめたものです。
一家に一冊は欲しいです。

コンピューターや理系科目に苦手意識のある人は、まず、この1冊から始めたらよいかと思います。

ただし「モデル化とは,対象を単純化して表現したものである。」としてしまうなど、用語の説明が雑に感じる所がありました。

おわりに

一般の書籍に比べると、教科書の組版の品質はとてもレベルが高いなぁ、とあらためて実感しました

値段は一律で、どれも1冊¥1100円くらいでした(細かい数字は忘れました)。

ちなみに、店頭では教科書を現金でしか販売していませんでした。カードは使えませんでした。
おそらく出版社から買い取りで在庫を置くのでしょう。
在庫は課税されますから、カード決済で在庫処分が遅れるのはお店としてはリスクが大きいです。

教科書は誰でも購入できるはずですが、いざ買うとなると不便です。
取扱店が限られている上に、一般向けにお店を構えるところが少ないです。

日本は教科書の購入が少し面倒ですよね。
良いものが多いだけに、もっと気軽に購入できるようにして欲しいものです。

 


進学実績

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

国公立大学

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

私立大学

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

公立高校

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

私立高校

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

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

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

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

 


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

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

友だち追加


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

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

友だち追加

 


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

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

受験を終えたらプログラミングや3Dモデリングを学ぼう

コンピューターを使うイメージ

塾長です。

受験生のみなさん、受験勉強お疲れさまでした。

さて、卒業も受験も終え、きっと今は時間を持て余していることでしょう。
教室では早くも高校の予習を始めておりますが、プライベートではいかがでしょう?

新型コロナの蔓延防止や花粉症で外出を控えているのであれば、読書やコンピューターがおすすめですよ。
ネットをやるなら、情報リテラシーを意識しましょう。

そこで今回は、情報リテラシーとプログラミングの関係について、1つの例を書いてみましょう。

情報リテラシーと数学の関係

最近、ちょっと話題になった有名な話があります。
次のニュースを見たとき、あなたならワクチンの効果をどう評価しますか?

問1:効果なし?

ウィルスに新規感染した人の約6割がワクチンを2回接種していたことが判明。

この調査から、ワクチンの効果が無いと判断するのは正しいでしょうか?

ソース:「オミクロン株感染で入院の6割は2回接種済み 国立感染研の分析で判明」Science Portal(2022/02/01)など

もう1つの事例です。こちらは、ここ数日間で話題に上ってきました。

問2:逆も言える?

東大の鳥海教授がツイッターの投稿をクラスター分析したところ、次のことが判明。
ロシアのウクライナ侵攻を正当化する主張「ウクライナ政府はネオナチ政権だ」などを拡散している人たちの88%は、ワクチン接種に反対する投稿も拡散していた。

それでは逆に、ワクチン接種に反対する人の多くは、ロシアの主張を拡散している人だと言えるでしょうか?

ソース:「ツイッター上でウクライナ政府をネオナチ政権だと拡散しているのは誰か」YHAHOO!ニュース(2022/3/7)

このようなニュースは毎日のようにネット上に流れていますが、よく考えないと勘違いを起こしてしまいます。
もしかしたら印象操作に載せられてしまうリスクさえあります。

それでは答え合わせです。

答え

問1

ワクチンの効果はあったと言える。

この種のニュースの秘密は、ワクチンを「接種した人」と「接種していない人」の人数比にあります。
ワクチンの2回接種まで完了した人の割合は、日本の総人口の79%を上回っています。
対象者約1億2千700万人のうち、約1億人が2回接種済みで、残り2千700万人がそれ未満の接種です。
ソース:「チャートで見る日本の接種状況 コロナワクチン」日本経済新聞や首相官邸の発表など)。

例えば問1のニュースの例では、オミクロン株の新規感染者122人が対象でした(昨年の感染者はまだ少なかったです)。
うち77人が2回接種済みで、40人が未接種、他は3回接種や1回接種だったそうです。
これを母数も合わせてみれば、

接種済みの感染率 77÷1億=0.000077%
未接種での感染率 40÷2700万=0.0001481%

両者を割れば、未接種の人の方が1.9倍も感染していることになりました。
あくまでも当時での数字でしかありませんが、少なくとも当時はワクチン接種で感染リスクが半減していたと言えます。

問2

逆は言えない。ワクチン接種に反対していることとウクライナ戦争の話はもともと関係ない。

何より上のソース記事を最後までよく読めば、ちゃんと「ワクチン接種に反対する人のわずか4%」と書かれています。
これについては後で計算してみますが、何はともあれ、よく読むことが大切ですね。
もしも書かれていない場合は、別の情報ソースなども合わせて、ちゃんと母集団の数や相対度数などを確かめる必要があります。

ちなみに、この種の問題は小学6年生の3学期「なかまに分けて」で習います。
あるいは、高校1年生の数1「集合と論理」でも習います。

いわゆる「りんごが好きな人」「みかんが好きな人」「両方とも好きな人」の問題です。

「りんごが好きな人」は40人で、「みかんが好きな人」は80人でした。
このとき「りんごが好きな人」の約88%はみかんも好きでした。
さて「みかんが好きな人」はりんごも好きだと言えるでしょうか?

40人の88%=35人ですから「両方とも好きな人」が35人です。
つまり「みかんが好きな人」の80人のうち35人がリンゴも好きということになり、半数未満でした。
よって、「みかんが好きな人」はりんごも好きだとは言えません。

このような話しと同じですね。
そもそも、この分析は

「特定の主張が特定の集団によって、繰り返し意図的に拡散されているのではないかないか?」

という疑いをデータ分析の観点から明らかにしようという試みでした。

このソース記事の中では、

Dクラスタは「ウクライナ政府はネオナチである」というロシアの主張を拡散しているツイート群で,228ツイートが10,907アカウントによって30,342回拡散していました.(中略)クラスタDだけ2.8と大きいようです

という分析もされています。
つまり、特定の集団が「ウクライナ政府はネオナチである」という同様のツイートを1人当たり平均2.8回も繰り返し拡散していたことになります。
これは「意図的な拡散」であったと言えるでしょう。
とても興味深いですね。

ですが、こんな素敵な調査でも、その読み方や解釈を間違えてしまったら、自分も意図せず陰謀論を担いでいる側になってしまいます。

話がそれましたが、今回は「逆は成り立たない」が正解でした。

ワクチンを接種しない自由も認められています。
ワクチンを接種するか否かという選択の話と、陰謀論でワクチンを反対している人の話は、別の話です。
両者は分けてとらえるべきでしょう。

このように情報は気を付けて読む必要がありますね。

ところで、算数や数学に置き換えることができるということは、プログラミングでも話ができます。

数学ならばプログラミングにできる

数学の式で関係を表す

そこで問2の話題について、数学の集合で表してみましょう。

$N=${ロシアの主張を拡散する人の集合}(ロシアによるウクライナ侵攻を正当化する人)
$V=${ワクチン接種に反対する人の集合}

すると

$N \cap V=${ロシアの主張を拡散し、かつ、ワクチン接種に反対する人の集合}

$ V – (N \cap V) =${ワクチン接種に反対する人の中で、ロシアの主張を拡散する人の集合}

などと表せますから、$V$ と $N \cap V $ を比較すれば良いということになります。

ここから数学の慣例で、集合の要素の数を$n(集合)$と表すことにします。
あくまでも今回は思考の練習ですから、値は適当にデフォルメします。

いま、適当に $n(N)=10$とします。
本当の数は10,907アカウントですが、面倒なので全体的に $ \frac{1}{1000} $ 程度に規模を縮小しました。

すると $n( N \cap V )$ はその88%ですから、$n( N \cap V )=10 \times 0.88 \risingdotseq 9$ と設定すればよいでしょう。

さらに、その9人は $V$の4%ですから、$n(V) = n(N \cap V) \div 0.04 = 225$ と設定します。

これで練習用の数字がそろいました。

プログラミングで表現する

それでは、上記の関係をプログラミングで実験してみましょう。

なおプログラミング言語は Python(パイソン)を使います。
Python は無料で使えるプログラミング言語です。人気ランキングで上位にいることでも有名です。
使ってみたい方は、Pythonの公式ホームページからダウンロードしてインストールしてみてください。

さて、Python は集合の計算もプログラミングできます。

Python では $n(U)$ を $len(U)$ とし、$N \cap V$ を $N \& V$ と書きます。

それでは集合Nや集合Vを具体的に定義していきましょう。
本当なら集合の要素はツイッターのアカウント名なのですが、プログラミングの都合で、今回は簡易的に整数の番号を使うことにします。

V = set( [ i for i in range(255) ] )
len(V)
-> 225 (ワクチン反対)

N = set( [ i for i in range(216,226) ] )
len(N)
-> 10 (ロシアの主張を拡散)

len( V – (N & V) )
-> 216 (ワクチン反対だが、ロシアの主張を拡散していない)

len( N & V )
-> 9 (ワクチン反対、かつ、ロシアの主張を拡散)

len( N – (N & V) )
-> 1 (ワクチンに反対していない、かつ、ロシアの主張を拡散)

それでは、それぞれの相対的な大小関係を視覚的に確認してみましょう。
それぞれの集合に含まれる要素を並べて比較します。

V – (V & N) ・・・(ワクチン反対だが、ロシアの主張を拡散していない)
-> {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215}

V & N ・・・(ワクチン反対、かつ、ロシアの主張を拡散)
-> {224, 216, 217, 218, 219, 220, 221, 222, 223}

N – (V & N) ・・・(ワクチンに反対していない、かつ、ロシアの主張を拡散)
-> {225}

はい、ワクチン反対派の多くはイデオロギーや政治的な思想などとは関係ないことが明らかですね。

算数ではVの帯グラフとNの帯グラフが重なったような図を描いて、この種の問題を解きます。
数1ではベン図を使います。
そしてPythonのプログラムでは上のようになります。

これらのどれを使って表現するにしても、必ず2つのグループの大きさ(人数)や、その重なり領域の大きさ、といった具体的な情報が必要です。
それらの1つでも分からなければ、情報を正確に網羅できないことが分かるでしょう。

このように数学やプログラミングに慣れていれば、情報の欠落に気が付きやすく、それだけダマされにくいと言えます。

補足:pythonの文法について

上のプログラムでは Python の「リスト内包表記」という文法を使って記述している部分があります。
例えば以下の行です。

V = set( [ i for i in range(255) ] )

特に、

[ i for i in range(255) ]

の部分がリスト内包表記です。
配列を表すカッコ “[ ]” の中に、繰り返し構文を1行のスタイル書いて、配列の要素を定義しています。
そして、この意味は、

「0から始まる255個の整数を並べて配列をつくりなさい」

となります。つまり1行全体としての意味は、

「0から始まる255個の整数を並べて配列をつくり、それを配列型から集合型へ変換してから、変数Vに入れなさい」

となります。
その結果として変数Vには整数0~254が並んだ集合{0,1,2,3,…253,254 }が入っていることになります。

リスト内包表記を使えば、配列の定義を簡潔に書くことができます。
ただし全てのプログラミング言語で使えるわけではありませんので、要注意です。

Python、Haskell、Scheme、Common Lisp、F#などでは使えます。
しかし古くからあるメジャーな言語、Java、JavaScript、C、C#、Objective C、BASIC、VB や、人気の Ruby や PHP などでは使えません。

論理国語の限界

今年の4月から高校も教科書改訂です。
この教科書改訂をもって10年の教育改革「高大接続教育改革」が一通り出そろうことになります。

なかでも国語は論理性が重視され、説明文や論説文の比重が非常に大きくなった一方、小説や物語文は縮小しました。一部では「文化軽視」と批判もされています。

国語の教育を通じて「論理的な思考力」を強化しようという改革の趣旨が色濃く反映されています。

一見すると正しいように思いますが、数式やプログラミング言語に比べると、やや首をかしげたくなる部分があります。

まず、実用性という意味で疑問です。
難しい文章は誰からも読まれないし、読みたくもない、というのが社会の実情です。

論理的に難解な文章を読み書きできる能力を身に着けました。
でも、その人のコミュニケーションは言葉が難しくて、誰も耳を傾けません。

それって、社会的に価値のある能力を身に着けたと言えるのでしょうか?
大いに疑問です。

次に言語の機能という意味で疑問です。
そもそも日本語のような自然言語は、正確な論理の記述には向いていません。
それを無理やり論理的にやろうとすれば、色々なローカルルールが発生し、もはや国語ではなくなるでしょう。

例えば、第1段落の主張が文章全体の結論に含まれれないような文章があったとします。
このとき、第1段落の主張を「本文に即している」と見なすのか否か、という問題があります。
この判断について世間一般では特にルールは無いでしょう。
ある人は見なさないと言うし、また別の人は見なすと言うでしょう。

ところがテストでは「即していると見なす」を正答とするものが多いです。
これは選択問題で難解な出題をしようとするあまり「消去法でしか解けない問題」を作りがちになるからです。

つまり「否定要素が無ければ正解として残す」という「解法のテクニック」が正解の理由です。
もちろん、こうした判断の基準は受験国語だけに通用するローカルルールです。

これは論理であるかのように見せかけているだけで、国語力や論理力と関係ないでしょう。
特定のゲームにだけ通用する単なるボス攻略です。

世間でこんな主張をしたら、屁理屈と言われます。
時に屁理屈は社会的な混乱を招きますので、ローカルルールはむしろ弊害とさえ言えます。

このように実際の入試問題は、世間の常識から離れたローカルルールに支えられています。

ところで、論理的な思考の記述には、日本語よりももっと適した方法があります。

数式や論理記号、プログラミング言語などです。
こうした、より形式的な言語(フォーマルメソッド)を使うべきでしょう。

私の感覚では、高校受験の問題で、すでに論理国語の難易度は上限に達しています。
それ以上に難解な論理構造を記述したいのであれば、自然言語ではなく、もっと形式的な言語を使うべきです。

論理国語のやりすぎには要注意だと思います。
論理国語で学生を消耗させている間に、また日本が衰退してしまいます。

芸術も大切です

コンピューターを使った環境として、最近はVRやメタバースが注目されています。
もちろん、マインクラフトも。
これらはみんな

「3Dのバーチャル空間で時を過ごす」

という特徴があります。

ファイナルファンタジーやフォートナイト。
こうした人気のゲームも、みんなバーチャル空間の中で遊びますよね。

これからは多くの人が3D空間で過ごすのが当たり前になります。
すると、その中で表現する絵やマークなども3Dにする必要があります。

コンピューターで絵を描くことをCGと呼びますが、これからは3DのCGを普通に描ける必要が、きっと出てくるでしょう。

それでは、コンピューターで3Dの絵を描く方法。
皆さんはご存じですか?

きっと、ほとんどの人が想像もできないと思います。

残念ながら、まだ小学校の図画工作や中学校の美術では習わないからです。
指導要領には無いため、教えられる先生が学校にはほとんどいません。

しかし時代の方が先に進みます。
自分で少しずつ調べて、簡単なものを描けるようにしておくと良いでしょう。

そして、3DのCGを描くためのフリーソフトが存在します。

Blender

おすすめは Blender というソフトです。

公式ホームページ(https://www.blender.org/)からダウンロードすることができます。

無料ですが、高機能でプロも使っています。
このソフトでアニメ映画も作られています。

WindowsでもMacでもLinuxでも動きます。
しかも、Pythonで自動化もできます。

無料で使おうと思ったら、ほぼこれ一択でしょう。

もしも新学期が始まるまで、すこし暇を持て余しているなら、挑戦してみてはいかがでしょうか。

充実した新生活を!

何はともあれ、受験お疲れさまでした。

羽を伸ばして体を休め、新学期に向けて今は十分に養生してくださいませ。

新年度はきっとステキな生活になるでしょう。
そうなるように祈っております。

そうそう、言い忘れていました。

卒業おめでとう!

いつでも教室へ遊びにおいで。

 


進学実績

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

国公立大学

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

私立大学

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

公立高校

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

私立高校

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

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

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

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

 


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

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

友だち追加


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

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

友だち追加

 


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

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

2次関数の虚数解をパイソンのグラフで見える化してみた

塾長です。

今回は高校生からよく出る質問、というか疑問

虚数 $ i = \sqrt{-1} $ は実在しない数なのか?

について考えてみます。

2次方程式と2次関数のおさらい

解の公式

まず中学3年生が1学期で習う「2次方程式の解の公式」を思い出してみましょう。

2次方程式$ ax^2+bx+c=0 $の解の公式

$$ x = \frac{ -b \pm \sqrt{b^2-4ac} }{ 2a } $$

判別式

高校1年生になると、さらに「判別式」を習います。
1学期の後半または2学期の初めくらいです。

実数$x$について、2次方程式$ ax^2+bx+c=0 $の判別式をDとすると、

  • $D < 0$ のとき、解は0個(解なし)
  • $D = 0$ のとき、解は1個(重解)
  • $D > 0$ のとき、解は2個

続いて、2次関数$ y=ax^2+bx+c $のグラフと判別式Dとの関係について習います。

2次方程式$ ax^2+bx+c=0 $の解を、次の連立方程式の解とします。

$$ \begin{cases}
y=ax^2+bx+c \\
y=0
\end{cases} $$

$x-y$平面上で2式それぞれのグラフを描くと、その交点が解になっているのでした。
つまり、

2次方程式$ ax^2+bx+c=0 $の判別式をDとする。
$ y=ax^2+bx+c $と$x$軸との共有点は、

  • $D < 0$ のとき、0個
  • $D = 0$ のとき、1個(接する)
  • $D > 0$ のとき、2個(交わる)

この様子を直感的なグラフで表すと、次のようになります。

複素数

高校2年生では、虚数単位 $ i = \sqrt{-1} $ を導入して、$x$を実数から複素数へ拡張します。
すると方程式の解を必ず求めることができるようになります。

2次方程式$ ax^2+bx+c=0 $の判別式をDとすると、

  • $D < 0$ のとき、解は複素数で2個
  • $D = 0$ のとき、解は実数で1個(重解)
  • $D > 0$ のとき、解は実数で2個

であり、どの場合でも解は、

$$ x = \frac{ -b \pm \sqrt{b^2-4ac} }{ 2a } $$

と表すことができる。
特に$D < 0$ のときは$ i = \sqrt{-1} $ として、

$$ x = \frac{ -b \pm \sqrt{|D|} i }{ 2a } $$

である。

ざっと、ここまでが中3、高1、高2の二次方程式と二次関数のおさらいです。

複素数の世界では必ず共有点がある?

素朴な疑問

さて、ここで塾長は、ふと疑問に思いました・・・

せっかく複素数まで拡張して、判別式$D<0$の場合でも解が求まるようになったのに、対応するグラフの共有点が無いままって、寂しくない?

寂しいですよね!?

疑問です。というか、不満です。
なんとかして、このモヤモヤを解消する必要があります。

問題解決というヤツです。

仮説を立ててみる

そこで、

もしかしたら、グラフを複素数まで拡張すれば、共有点が2つに見えるのではないか?

という仮説を立ててみました。

本当にそうなるのでしょうか?

コンピューターの力を借りて、そのグラフを描くことにチャレンジすることにしました。

仮説を立てて確かめるってヤツです。

4次元のグラフは描けない!!

コンピューターは具体的な数値しか扱うことができません。
そこで今回は、つぎの関数を例に、グラフを描いてみることにします。

$$y=x^2-2x+2 $$

もちろん、これの判別式Dは負です。

$$D=(-2)^2 – 4 \times 1 \times 2 = 4-8 = -4 < 0$$

そして方程式$x^2-2x+2=0$の解は

$$x=1 \pm i$$

という虚数解です。

今回の目的

今回の目的を次のように設定します。

xを複素数としたときに、
$$ \begin{cases}
y=x^2-2x+2 \\
y=0
\end{cases} $$
の共有点が2つあることをグラフで示す!

実数と複素数で何がどう変わる?

高校1年生までは、$x$も$y$も実数ですから、これは、

実数$x$ を与えると、実数$y$ が1つに定まる関数のグラフ
つまり、
数直線上の1つの実数$x$を、また別の数直線上の1つの実数$y$へ移し変える関数のグラフ

ということになります。
つまり「2本の数直線」があれば、話ができます。
よって、

$x$ が実数ならば、
$y=x^2-2x+2 $ のグラフは、x軸とy軸で構成される「平面(2次元空間)」の上に描くことができる

ということです。
直線は「1次元」ですから、2本の直線で表現できる空間は、せいぜい「2次元空間」となります。

さて、

ここで$x$を複素数に拡張します。
そこで2つの実数$a,b$を使って$x=a+bi$としましょう。

$$ \begin{cases}
y=x^2-2x+2 \\
x=a+bi \\
i = \sqrt{-1}
\end{cases} $$

すると、式の計算結果$y$も複素数になります。
そこで2つの実数$c,d$を使って$y=c+di$としましょう。
すると、これは、

複素数$x=a+bi$ を与えると、複素数$y=c+di$ が1つに定まる関数のグラフ
つまり、
実数平面上の座標$(a,b)$を別の実数平面上の座標$(c,d)$に移し変える関数のグラフ

ということになります。
つまり「2つの平面」があれば、話ができます。
よって、

$x$ が複素数ならば、
$y=x^2-2x+2 $ のグラフは、平面a-bと平面c-dで構成される「4次元空間」の中で描くことができる

ということです。
平面は「2次元」ですから、2つの平面で表現できる空間は、せいぜい「4次元空間」となります。

拡張し過ぎた

上の考察から、コンピューターで「4次元のグラフ」を描けば、今回はミッションクリアできそうです。

・・・ん?

無理です!

私たちはどんなに精神を研ぎ澄ませても、3次元までしか空間の広がりを認識することができません。
ましてやグラフを描くことも見ることもできません。

これはコンピューターでも表示できません。

(計算だけならできます。表示が無理ということです)

グラフを3次元にまとめる!

ということで、何とかして3次元で済ませる方法を考えなければいけません。

グラフを3次元で描けるようにする

という「課題」が生まれてしまいました。

どうしたらよいでしょうか?

【豆知識】
問題解決の世界では、最終的に解決する「目的」のことを「問題」と呼びます。
そして、問題を解決する過程(途中)で乗り越えるべき「目標」のことを「課題」と呼びます。

そもそも何がしたかったのか?

道に迷ったら、目的の再確認です。

目的さえ達成すればよいのです。
もしかしたら「やらなくても良いこと」で悩んでいたりするかもしれません。

今回は、$y=x^2-2x+2 $ と $y=0 $ の共有点が2つあることをグラフで描きたかったのでした。

あ、な~るほど!

次元を減らす

目的の式をじーっと眺めていたら、思いつきました。

$ y=0 $なのですから、$y$の方は2次元も必要ありませんね。

だって0(ゼロ)の時だけ考えればよいのですから。そこで、

yの次元を2次元から1次元に減らす!

ことを考えましょう。

グラフ表示の方針

ということで、グラフに表示する方針をまとめましょう。

実数の世界のグラフは、横軸がx軸、縦軸がy軸です。

今回は$x$を複素数$a+bi$へ拡張したのですから、そのグラフは、

  • $x軸$を複素平面$a+bi$へ拡張(平面:2次元)
  • $y軸$も複素平面$c+di$へ拡張(平面:2次元)

としたかったのですが、無理でした。
これではグラフの座標が (a,b,c,d) の4次元になってしまい、描けないからです。
そこで次の方針としたのでした。

  • $x軸$を複素平面$a+bi$へ拡張(平面:2次元)
  • $y軸$は1次元に落とした値(直線:1次元)

つまり、

  • 横軸だったx軸は、横に広がる複素平面に拡張
  • 縦軸だったy軸は、実数の数直線のまま

これなら3次元の立体的なグラフで表すことができます。

あとは、縦軸のyをどのような値に決めるか、ですね!

案1:yの実数だけを縦軸にとる → 失敗!

そもそもグラフは実数しか描けません。
そのため、1つの複素数を2つの実数の組に対応させ、それを平面上に表すのでした。

であるならば、安直ではありますが、yの実部だけをグラフに採用すればよいかもしれません。

  • 横軸:複素数$ x=a+bi $(平面:2次元)
  • 縦軸:$y=c+di $の実部$c$(直線:1次元)

それでは、この案でグラフを描いてみましょう。
こうなりました。

馬の鞍みたいな形のグラフになりました。
最後の考察で、このグラフも少し使いますから、とりあえず「馬の鞍型」のグラフとでも呼んでおきましょう。

ちなみに、赤い線が、実数の$x-y$平面上のグラフ(平面 $ b=0 $ で切った切り口)です。

さて、これで目的は果たせたでしょうか・・・?

うーん、何だかよく分かりません。

$x$を複素数に拡張したおかげで、確かに平面$y=0$との共有点は存在しそうです。
しかし「共有点が2つ」である様子が、これでは分かりません。

よく考えてみたら、これはダメです。

もしも4次元のグラフが描けるとすれば、本来のグラフは、

(a,b,c,d) の4次元でグラフを描き、それを平面$c=0$でカットした切り口が、求める3次元のグラフ

が本当のグラフです(※)。
4次元のグラフは描けませんが、本来はそんな感じです。

そう考えると、無条件に$y$の虚部を捨ててしまったのがダメでした。

(※)【豆知識】
4次元の立体を平面で切ると、その切り口が3次元の立体になります。
私たちの世界は3次元です。私たちの世界で立体は3次元です。
例えば、スイカを包丁で切った時の断面を想像してみてください。
スイカは3次元の球です。それを2次元の平面でスパッと切ると、切り口が2次元の円になります。
4次元の世界は、私たちの世界よりも1つ次元が上ですから、上の考察をすべて1つずつランクアップして考えます。
つまり、4次元の中で球体を切ると、切り口が3次元の球になります。

案2:yの絶対値を縦軸にとる → 成功!

そこで、数学的に条件を壊さないことを考えます。

$y=c+di=0$

すなわち、

$c=0$かつ$d=0$の場合

を考えたグラフであれば目的を達成できるわけです。

ところで、

$|y|=0$も同様に$c=0$かつ$d=0$です。

ですから縦軸を$|y|$とすれば、これは実数ですから、うまく1次元に収まります。

  • 横軸:複素数$ x=a+bi $(平面:2次元)
  • 縦軸:$|y|$すなわち$\sqrt{c^2+d^2} $(直線:1次元)

それでは、この案でグラフを描いてみましょう。
こうなりました。

うまくいきました!

グラフの2カ所が尖っていて、2つの虚数解

$$x=1 \pm i$$

の所で平面$y=0$に突き刺さっていそうです。
共有点は「2だけ」ですから、平面$y=0$上で、それぞれ1点ずつ、チョン、チョンと、くっ付いているはずです。

グラフの解像度の問題で「点」まで鋭利に描き切れていません。
念のため、100倍に拡大してみましょう。

$x=1 + i$の付近を100倍に拡大してあります。
この倍率で$x=1 – i$も同時に描くのは不可能なので、1つだけで確認します。

どうです?

共有点の1つ$x=1 + i$の位置へ、グラフが突き刺さっている感じがしますよね。
このグラフを1000倍にしても、10000倍にしても、ずっとこんなグラフになります。

「1点に突き刺さ差っている!」

のですから、倍率をどこまで上げても、こんな感じです。
もちろん、$x=1 – i$ についても同様です。

これで本当に

「たった2点」だけの共有点を持つ!

ことが、グラフで表示できたのではないかと思います。

思ったより大変でした。

教えてエライ人!

上のような考察をFacebookにアップしていたら、色々な人からご意見をいただきました。
なかでも吉田先生には色々と教えていただきました。

ということで、今回のエライ人は、吉田信夫先生です!

吉田先生はあの「大学への数学」で原稿を書かれていた先生の内の1人です。
超すごくないっすか!

先生のブログ「yoshidanobuo’s diaryー高校数学の“思考・判断・表現力”を磨こう!」はこちらです。

グラフで虚数解を見える化するにあたり、いろいろとご指導をいただきました。
また数学的におかしな用語の使い方についてもご指摘いただき、修正することができました。

用語の誤用

今回やってしまった用語の誤用を2つ紹介します。

どこが間違っているのか、考えてみてください。

  • 誤用1:「$y=x^2-2x+2$の判別式の値は負です。」
  • 誤用2:「複素数$x=a+bi$と実数$y$において、$y=|x^2-2x+2|$のグラフ(a,b,y)は、平面$y=0$と2点で接しています。」

わかりますか?

私は吉田先生に指摘されるまで気づかなかったです。まさに

「それは違反です」

という感じで、用とあいなりました。

大学入試の2次試験で記述回答を予定している人は、気を付けてくださいね。

さて、上のものは次の点で間違っていました。

  • 誤用1:関数に対して判別式を語ったところがアウト。判別式は方程式「$0=x^2-2x+2$」に対して定義されるもの。
  • 誤用2:「接する」は「微分可能な領域」で定義されるもの。今回は尖っていて微分不可(微分する向きによって微分係数が異なる)。

さぁ、どうでしたか?

滑らかに「接する」グラフにする

さらに誤用2に関連して、グラフが2つの$x=1 \pm i$で「接する」ようなyの取り方も教えていただきました。

みなさん、分かります?

  • 横軸:複素数$ x=a+bi $(平面:2次元)
  • 縦軸:$|y|^2$すなわち$ c^2+d^2 $(直線:1次元)

それでは、この案でグラフを描いてみましょう。
こうなりました。

yの値が2乗されているので、グラフが大きくなりすぎて「2点」どころではなくなってしまいました。
そこで例によって、$x=1 + i$の付近を100倍に拡大してみましょう。

おお、本当に滑らかに接してそうですね!

例によって「1点」で接しているので、このグラフを1000倍にしても、10000倍にしても、ずっとこんなグラフになります。

次元を減らすもう1つの方法

さらにさらに、吉田先生からもう1つのグラフ表示の方法を教えていただきました。
$x=a+bi$ としたときに$y=0$を満たすような

$y=0$ を (a,b) だけで描く!

です。

つまり、(a,b)に色々な実数を当てはめて $x=a+bi$ を動かしたときに、$y$ がどのように動くかを図示します。
もう少し正確に言うと、$y=0$ を満たすような「yの実部」と「yの虚部」をそれぞれ平面(a,b)上に図示します。

$y$ の値もまた (a,b) の関係式として表現されるため、グラフの次元は(a,b)の2次元だけで済みます。
1つの複素平面だけで示すやり方です。

やってみましょう。まず、

$$ \begin{cases}
y=x^2-2x+2 \\
x=a+bi \\
y=c+di
\end{cases} $$

について、

$x=a+bi$ を $y=x^2-2x+2$ に代入して整理すれば、

$$ y=a^2-b^2-2a+2+2b(a-1)i $$

です。

$y=c+di=0$ すなわち $c=0$かつ$d=0$ の場合を考えるわけですから、

$$ \begin{cases}
a^2-b^2-2a+2=0 \\
かつ\\
2b(a-1)=0
\end{cases} $$

すなわち、

$$ \begin{cases}
b = \pm \sqrt{(a-1)^2+1} \\
かつ \\
a=1 または b=0
\end{cases} $$

です。
これらの交点が求める解になります。

あらためて、実部の$a$を$x$とし、虚部の$b$を$y$として、複素平面$x-y$にグラフを図示したのが下です。
これは吉田先生からいただいたグラフです(軸が$x-y$になっていますが、$a-b$に読み替えてください)。

$a^2-b^2-2a+2=0$のグラフが青で、$a=1$と$b=0$のグラフが赤です。

確かに複素平面の世界では、2点の共有点がありました。
そしてグラフの交点はそれぞれ、$ 1+i $ と $ 1-i $ です。

これは感動です!

考察とまとめ

もしも

$$ \begin{cases}
y=x^2-2x+2 \\
x=a+bi \\
y=c+di=0
\end{cases} $$

のグラフを4次元 $(a,b,c,d)$ の空間上に描けたとしましょう。

すると、上の吉田先生からいただいた平面グラフは、その4次元グラフを $y=0$ で切った切り口であるといえます。

やってみました。それが下のグラフです。

緑の実線が、実数の世界での2次関数のグラフです。
赤の実線と青の実線は、それぞれ上の平面グラフに対応しています。

このグラフをもとに、これまでの話を全て振り返ってみます。

まず青い曲面が、最初に描いた「馬の鞍型」のグラフです。
これは4次元グラフを平面 $ d=0 $ で切ったときにできる立体です。
そして、この青い曲面をさらにy=0で切ると、青い実線の双曲線になります。

次に、4次元グラフを平面 $ c=0 $ で切ったときにできる立体も考えます。
それが、上のグラフの赤い曲面です。
そして、その赤い曲面をさらにy=0で切ると、赤い実線の2直線になります。

そして青い双曲線と赤い直線の交点が、まさに $ 1 \pm i $ となっています。

これらの様子を総合すると、2次方程式の虚数解 $ 1 \pm i $ は、

  • 3次元空間 (a, b, c) の曲面(縦軸をyの実部としたグラフ)
  • 3次元空間 (a, b, d) の曲面(縦軸をyの虚部としたグラフ)
  • y=0の水平な平面

の3つを重ねた時にできる共有点

であることがグラフで確認できました。

グラフ表示に使ったPythonプログラム

今回、グラフを描くのにプログラミング言語の「パイソン(Python)」を使いました。
以下が、そのプログラムです。
Jupyterという環境を使いました。

ちなみに、パイソンのプログラミングを学ぶなら、無料で使える Google Colaboratory がオススメです。
もちろん下のプログラムも Google Colaboratory で動作します(動作確認済)。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
%matplotlib inline
fig = plt.figure(figsize = (8, 8))

# Axes3D
ax = Axes3D(fig)

# タイトルを設定
ax.set_title(“$y=|x^2-2x+2|$”, size = 20)
#ax.set_title(“$ y = |x^2-2x+2|^2 *100 $”, size = 20)

# 軸ラベルを設定
ax.set_xlabel(“x-Real”, size = 14)
ax.set_ylabel(“x-Image”, size = 14)
ax.set_zlabel(“y”, size = 14)

# 表示角度の設定
ax.view_init(elev=10, azim=35)

# 座標のメッシュ
rr = np.linspace(-1.5, 3.5, 200)
ii = np.linspace(-1.5, 3.5, 200)
#rr = np.linspace(0.9, 1.1, 200)
#ii = np.linspace(0.9, 1.1, 200)
i0 = np.zeros(200)
r,i = np.meshgrid(rr, ii)
z = r + i*1j

# 曲線・曲面を描画
y0 = r*r-2*r+2
ax.plot_wireframe(rr, i0, y0, color = “red”)
y = np.abs( z*z-2*z+2 )
#y = ( np.abs( z*z-2*z+2 ) )**2 *100
ax.plot_surface(r, i, y, color = “yellow”, alpha=0.4)
plt.show()

あとがき

どの学年も文字式と関数の季節になりました。

今年から中学生は教科書改訂で「主体的な学び」が重視され、プログラミング教育も強化されました。
来年からは高校生でもそうなります。

そういう流れの中で、今回は、

高校生のレベルで数学を題材に「主体的な学び」を「プログラミング」も活用して行ったらどうなるか?

を実践してみました。

さらに今後の常識というか、新しい価値観である

「集合知」で「問題解決を加速する」という姿勢

も取り入れてみました。
ですから、問題解決の用語や流れも、それとなく意識してあります。

これが次世代型の教育であり、同時に、いま日本で遅れてしまっている教育でもあります。

今のところ私はそのように思っております。

教育者も間違えます。
先生が何でも知っていて間違いを起こさない聖人君子である、なんていう時代は終わっています。
そもそも非科学的で不合理です。

もう、1人の聖人君子や、優れたリーダー、1部の天才に問題の解決を任せるよな時代では、ありません。
というか、そんな人はいません。
幻想です。

今や、世界中の人たちがコンピューターでつながっているのです。
みんなが意見や知恵を出し合う「集合知」で、いち早く問題を解決していこう!
そのように考える方が大切です。

このような価値観でコンピューターを活用しながら問題解決を実践できる人。

それが、これから日本で、いや世界で多く必要とされる人たちなのだと思います。

現場からは以上です。

 


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

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

大学入試のプログラミングはいつから? 傾向・対策・難易度

大学入試のプログラミングはどんな問題?

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

プログラミングやコンピューターの知識が大学入試でも出題されます。
3月24日、大学入試センターがその「サンプル問題」を発表しました。

新しく加わる「情報」という科目に注目です。

どんな問題?
傾向と対策は?
難易度はどれくらい?

気になりますよね。
詳細を見ていきましょう。

大学入試でプログラミング!いつから?

2025年1月に実施される共通テストからです。

つまり、この4月から受験生になる中学3年生の世代からが対象です。

生年月日で言えば、

  • 2006年4月2日生まれ ~ 2007年4月1日生まれ
  • 平成18年4月2日生まれ ~ 平成19年4月1日生まれ

にあたる学年以降です。

この学年が教育改革が完成してから大学を受験する最初の世代となります。
つまり、この学年以降は、完全に新しいカリキュラムへ移行します。

教科書改訂が全面的に導入され、高校入試の出題傾向も新しくなります。
そして高校に進学した瞬間に、高校でも教科書改訂です。
新しいカリキュラムで高校3年間を過ごすので、大学入試も新傾向になるというワケです。

  • 小学校では、移行措置的に英語が準必須化
  • 中学校では、教科書改訂およびパソコン1人1台が導入された世代として初の高校入試
  • 高校では、論理国語やプログラミングなどを新設した新指導要領の最初の世代
  • そして大学入試も新指導要領の形式へ完全移行

この世代からは、てんこ盛りの大学入試です。

そもそも情報ってどんな教科?

高校の情報科は2科目です

  • 情報1(必須科目)
  • 情報2(選択科目)

という構成です。
このうち大学入試に出題されるのは「情報1」の方です。

情報1は高校1年生または2年生で履修するようです。
多くの高校は1年生になるでしょう。

ということで、まず「情報1」の章構成から確認しましょう。

  1. 情報社会の問題解決
    → 問題解決の流れ、モラル、法規、セキュリティ、リテラシーなど
  2. コミュニケーションと情報デザイン
    → デジタル情報の技術や種類、情報の収集法・表現法・評価法など
  3. コンピューターとプログラミング
    → 論理演算、誤差、制御、データの基本構造、アルゴリズム、モデル化とシミュレーションなど
  4. 情報通信ネットワークとデータの活用
    → ネットワーク技術、データ形式、データベース、統計・解析など

これらのうち、プログラミングを実践するのは第3章と第4章です。
だいたい高1の2学期後半からがプログラミングになりそうですね。

そこで、この情報1の「プログラミング」について、その実態を見てみましょう。

想定されるプログラミング言語

プログラミングといえば最初に気になるのが「言語」です。

高校では何語でプログラミングをするのか?

これが気になります。
それを知ることができる参考資料を見つけました。

2020年7月に文部科学省が高校の先生向けに出した研修資料です。

高等学校情報科「情報1」教員研修教材(本編) (文部科学省)

この中の演習で使われているプログラミング言語は3つです。

  • Python 3系 (数学関数:math、 グラフ表示:matplotlib、 確率や行列:numpy)
  • R (パイプ処理:dplyr、 形態素解析:RMeCab、 グラフ表示:ggplot2)
  • SQL

プログラミング初心者の人にとっては、頭が痛くなるような用語が並びますね。
まぁ、とにかく、

少なくとも3種類のプログラミング言語は学ぶ

ということを知っておいてくださいませ。

Python(パイソンと読みます)は、外部機器の制御や数学モデル、物理モデルのシミュレーションで使われていました。
Rは、形態素解析を使って単語の出現頻度を分析したり、箱ひげ図やグラフ図を表示するのに使われていました。
SQLは、リレーショナルデータベース専用の言語ですが、その演習問題が少しありました。

ちなみに、これらのプログラミング言語は、無料で入手できます。

プログラミング言語以外では、Excel の関数やグラフ機能が使われていました。
箱ひげ図や散布図の表示、相関係数の計算、回帰分析や統計的仮説検定などにExcelが使われていました。

補足

3月30日に検定を通った情報1の教科書が一部で公開されました。
ニュースによれば、

  • Scratch
  • JavaScript

を使っている教科書もあるようです。

どんなプログラミングが出題されるの?

高校の教科書で扱われるプログラミング言語が分かりました。
次に気になるのが、

どのように出題されるのか?

です。
そこで3月24日に発表されたサンプル問題の実際を見てください。ソースは「大学入試センター」です。

大学入試センターサンプル問題_情報_問2

ご覧のとおり、大学入試では特定のプログラミング言語に依存しないような問題文で出題されます。
しかしながら実際には、

何らかのプログラミング言語を使ってプログラミングした経験がなければ、問題文の意味すら分からない

という状況です。
上の問題文を見れば、それがお分かりと思います。

プログラミング言語の知識レベル

情報1の教科書では3種類のプログラミング言語が紹介されるのでした。
一方、上で見たように、入試問題では、

特定のプログラミング言語に依存しないようなプログラムの書き方

で出題されるようです。

つまり、プログラミングの実体験を通じてプログラミングの「センス」を身に着けておく必要がある、ということです。
PythonでもRでも他のプログラミング言語でも良いですが、経験を通じて「センス」を磨けということです。

それでは逆に、

「プログラミングのセンス」

とは、いったい何なのでしょうか?

結論から言えば、次のような概念をプログラムで表現したり使い分けたりできる能力です。

データ型の種類について

  • 整数型
  • 小数型
  • 文字列型
  • 配列型

演算について

  • 四則演算
  • 論理演算

文法について

  • 変数の初期化
  • 変数への代入
  • 添え字による配列の参照
  • 添え字による配列への代入

制御の種類について

  • 順序処理(プログラムが上から下へ実行される前提)
  • 繰り返し処理
  • 条件分岐処理
  • 繰り返しの中で添え字をインクリメントする考え方

その他

  • 「表示」「切り捨て」などの関数はプログラミング言語に依存しない表記
  • オブジェクト指向プログラミングが前提(型の自動変換、文字列の足し算など)

まだ不明な点

情報1の内容からすれば、次のデータ構造が出題されても当然と予想します。

  • 辞書型(連想配列、キー・バリュー形式のデータ)
  • 集合型(順序がなく重複を許さない形式のデータ)

とはいえ、古いプログラミング言語では存在しないデータ型です。
教員側の研修が間に合わない懸念などがあれば、もしかしたら出題されないかもしれません。

教科書ではデータ形式を学ぶ中で、どうしても上のデータ型が出て来ます。
例えばWeb APIでインターネットから情報を取得する単元では、JSON形式というデータ形式が「キー・バリュー形式」の1つとして紹介されています。
これは Python では「辞書型」、JavaScriptやPHPなどでは「連想配列」と呼ばれています。
その基礎になっているデータ構造が「集合型」です。

どちらも現代の情報処理では必須のデータ構造ですが、古いプログラミング言語には存在しません。
大学入試の範疇になるかどうかは、様子見ですね。

フローチャートでプログラミングを学ぶだけでは不十分

情報1の中でフローチャートも学びます。
フローチャートを使えば、特定のプログラミング言語によらずに、プログラムの流れを記述することができます。

そう考えれば、

プログラミングの試験は全てフローチャートでやれば良いじゃん

という素朴な疑問が生まれます。

しかし、ここで高校は「高等教育」であることを忘れてはいけません。
高校のプログラミング教育は、実際にプログラミング言語を使った情報処理やシミュレーションが想定されています。
義務教育とは違い、より実践的なのです。

フローチャートでは「変数に値を代入する」などといった細かいことは表現しません。
データの型の違いや配列の添え字処理などは、実際にプログラミングしてみないと感覚がつかめません。

プログラミングの実践的な能力までテストしようとすれば、フローチャートでは不十分。
大学入試センターは、きっとそのように判断したのでしょう。

というワケで、フローチャートで論理的にプログラムの流れを書けるだけでは不十分です。

何か好きなプログラミング言語を1つ決めて、普段から少しずつプログラミングに慣れていく必要があるでしょう。
勉強の中に、情報処理やシミュレーションをコンピューターで日常的に行う習慣を組み込んでいく必要があります。

Python がおすすめ

それでは何のプログラミング言語がオススメ?

という話になると思いますが、私は pythonをおススメします。
次のようなメリットがありますから、初学者にはやっぱり Python です。

  • 無料かつパソコンならほぼ全て動かせる
  • 情報1の教科書で学ぶ内容に合っている
  • 文法が簡潔(文末の;やブロックの()や{}が不要など)
  • データ形式や記載法が近代的
  • 統計やデータ解析の機能が豊富
  • 初心者向けの参考書が多い
  • ネット上ですぐに調べられる

確かに、プロのプログラミングの世界では、日本ではまだまだ Pythonはマイナーです。
一方で大学の研究室では Python が文系理系を問わず多く使われています。

なお、日本のプロがPythonをそれほど使わないのは、日本の産業が「ハードウェア中心」「ものづくり中心」だからです。
あるいは日本では英語が読めないプログラマーや数学ができないプログラマーが多いため、海外の最先端に比べると技術が古かったり偏ったりしています。
ものづくり系ではC言語が主流で、Web開発系ではPHP、ゲーム開発ではC#やJavaという感じですね。

しかし今後はPythonや他の言語を使う人口が増えてくると思います。

どちらにしても、1つのプログラミング言語を通じてプログラミングのエッセンスを学ぶなら、文法の細かいことは少ない方が良いです。
特にこだわりが無ければ Pythonで学びましょう。

数学の「統計」を知っていることが大前提

プログラミング言語の話に偏ってしまいました。
ここで決して忘れてはならない大前提を書いておきます。

それは、あらゆる学年で学んできた「統計」の知識が前提だということです。
具体的には以下の数学が問題文中にバンバン出て来ます。

  • 小5の「円グラフ」「棒グラフ」
  • 小6の「合計」「平均」「中央値」「最頻値」「範囲」「階級」「度数分布表」「度数折れ線」
  • 中1の「相対度数」「累積度数」(パレート図)
  • 中2の「四分位範囲」「箱ひげ図」
  • 中3の「標本調査」
  • 数学1の「分散」「標準偏差」「散布図」「相関係数」「仮説検定の初歩」
  • 数学Aの「場合の数」「事象の確率」「期待値」「独立な試行の確率」「条件付き確率」
  • 数学Bの「数列」「ベクトル」「確率変数」「確率分布」「二項分布と正規分布」「区間推定」「仮説検定」

あくまでも「情報」の試験であるため、数学Bの知識をどこまで使うかは微妙です。
あまり数学を高度にしてしまうと、数学Bとの試験の区別が無くなります。

数学Bとのすみ分けは考慮されるだろうと思います。

教育改革で継続的に強化されてきた数学の分野が「統計」です。
英語の4技能と並んで、数学の統計も強化しています。

プログラミングは「人間の考え」を「コンピューターが分かる言い方」に翻訳していく作業と言えます。
とはいえ、翻訳できるのは、人間の考えのうちのほんの1部。
人間が「厳密に論理的に考えている部分」だけになります。

そして、人間が論理的に考えていることを超厳密に表現できるのが「数学」です。
コンピューターと数学が切っても切り離せないのはそのためです。

さらに物理シミュレーションのように、テーマによっては他の数学や物理の公式も使うことがあります。

入試問題用の「方言」が生まれる危険性

サンプル問題に載っているプログラムを見て感じた違和感が1つあります。
色々なプログラミング言語を経験して来た人ならすぐ分かることです。

それは、中途半端なプログラムだということです。つまり、

「手続き型プログラミング」

をしているようで、実は、

「オブジェクト指向プログラミング」

を暗黙のうちに前提にしています。

どっちかにしろよ!

などと突っ込みたくなる中途半端なプログラミングなのです。
変数名がローマ字というセンスも古臭いですね。今どきは英語です。
ちなみに最近のプログラミング言語は、変数名を日本語にしてもOKです。

日本語にするか英語にするか、どっちかにしろよ!

などなど突っ込みたくなります。
とにかく、技術的にも文化的にも変な問題文になっています。

受験者にとって不幸なのは、

入試対策としてプログラミングの「方言」を入試用に学ぶ必要が出てくるかも?

という懸念です。

今回のサンプル問題の出し方は、フローチャートよりも実践的な能力を試すための苦肉の策だったと言えます。
とはいえ、その策が「共通テスト用の方言」を生んでしまうのは良くありません。

特定のプログラミング言語に依存しないようなプログラムの見せ方

をどのように表現するのか。
これが、大学入試センターにとって大きな大きな課題でしょう。

考えられる1つの案としては、フローチャートとのハイブリッド的な記載でしょうね。

マイクラミングのプロコースはPython

最後は宣伝です。

ヒーローズ植田一本松校では、プログラミング教室「マイクラミング」を開講しています。
プログラミングの根本的な考え方から超丁寧に学びます。

ジュニア~ハイコースは、主に義務教育に対応しています。プログラミング言語はScratch(スクラッチ)です。

プロコースは、高等教育に対応しています。ハイコース卒業生か、それと同等以上の生徒が対象です。Pythonを使います。

日本では、Pythonを使うプログラミング教室の多くが、WebサーバーやWebアプリの開発を学ぶ社会人向けです。
中には大学数学を持ち込んで人工知能の開発へジャンプしてしまうコースもあります。

中学生や高校生に合ったコースを見つけるのは、なかなか大変です。
中学や高校で習う数学の知識を活用しるようなコースともなれば、さらに見つけるのが大変になります。

自分の息子にやらせたいと思えるプログラミング教室が無い!

そう考えて開発したのがマイクラミングでした。

私が塾の先生として、息子にやらせるものとして、独自に開発しました。
プログラミングの考え方や本質を学べるように、ちゃんと学校で学んだことを活用するように、念入りに開発しました。

その考え方に共感してくれる教室が、だんだん増えてきました。
北海道から九州まで。

こだわりの内容です!
手前味噌で恐縮ですが、自信をもってお勧めしますよ!

お問い合わせ、お待ちしております!!

 


進学実績

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

国公立大学

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

私立大学

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

公立高校

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

私立高校

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

(番外編)学年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