宇宙とコンピューターが好きな塾長です。
マインクラフトのプログラミング教室をやってきて、今年で4年目くらいです。
プログラミングとは何か?
まだまだ、これを説明する必要性があるのですが、ちょっとした課題も感じています。
みなさんは
「コマンド」と「プログラム」の区別
言えますか?
Contents
作業頭になっている危険性
マイクラのコマンド。
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