こんにちは。福田泰裕です。
令和3年度から高等学校でもプログラミング教育が始まります。
そこで多くの先生方が、
「どの言語にしよう?」
と悩まれていることでしょう。
今回は、高校でのプログラミング教育はどの言語を扱うべきなのか、お話していきます。
最後まで読んでいただけると嬉しいです!
目次
まず知っておいていただきたいのは、公立高校には自由に使えるお金がほとんどありません。
よくプログラミング教育の研修に行くと「教育版レゴ マインドストーム」「Raspberry Pi」「Ozobot」などの機器を紹介されますが、正直言って聞き飽きました。
だってお金がないし、どうせ導入できるわけないのですから……。
この『お金がない』という当たり前のことが分かっていない人たちから話を聞いても、それは所詮夢物語です。
「あー、楽しそう……でもお金ないし。」
「こんな授業できたら楽しいだろうな……でもお金ないし。」
という感じです。
稀に「私は自腹で機器を〇〇台購入し、生徒たちに使わせています!」という熱心な方もいらっしゃいますが、それはあまり賛成できません。
もし生徒がその機器を故障させたらどうするのか。
弁償させるのか、泣き寝入りするのか。
どっちにしろ、みんなが不幸になるだけです。
自由なお金がないため、機器を購入することができません。
結局、パソコンの画面に文字を打ち込む、コーディングの授業になるわけです。
プログラミングでまず挙げられるのがScratchです。
Scratchは手軽に導入できて、アルゴリズムを理解するのには十分な教材です。
しかし難易度が低いため、小学校や中学校ですでに扱っている可能性がとても高いです。
そのため、高校でScratchを扱うと生徒から「またScratch?もう飽きた!」という声が上がるかもしれません。
そのため、高校ではコーディングを行うことが望ましいと考えます。
そこで問題となってくるのが、どの言語を扱うのかという問題です。
まず、プログラミング教育の目的を知っておく必要があります。
これについて書いた学習指導要領を読んでみた記事があるので、ぜひご覧ください👇
学習指導要領の内容をざっとまとめると、次のような感じです。
という無理難題が平然と書かれています。
私たち教師は、これらを遂行していかなければなりません。
学習指導要領には、「〇〇の言語で学習を行うこと」とは書かれていません。
だから言語は何でも良いのです。
教員が理解しており、上記の目的を達成するために適切だと考える言語で授業を行って良いということです。
更に言えば、 学習指導要領によると『目的に応じて、言語を選択する力も身につけさせる』ことを求められているため、1つの言語だけでなく、複数の言語に触れさせてあげることが重要です。
ではどの言語を扱えば良いでしょうか。
ポイントは、
このあたりでしょう。
特に「2.導入が簡単」というのは重要です。
専用のソフトのインストールが必要な場合、そのインストールを授業時間に行うと大抵の場合エラーが出て授業がストップします。
そのため事前に行うしかないのですが、それをすると生徒は「特別なことをしている」と感じてしまい、生徒が興味をもったとしても自分で準備することができません。
だから私は、生徒が自分で環境を再現できるようにしてあげることも大切だと思います。
次に、「3.将来性がある」というのも、生徒のやる気をスタートダッシュさせて維持するためにも重要です。
「この言語は古くてもう誰も使ってないけど、頑張ろう!」
と言われるより、
「この言語を極めたらスマホのゲームが作れるから、頑張ろう!」
と言われる方がやる気が出るに決まっています。
そのためにも、その時に流行っている言語を取り入れてあげるべきです。
では、どの言語を扱えば良いでしょう。
私が考えている候補を挙げます。
扱いやすさ、実用性、将来性を考えるとこの辺りが定番でしょうか。
1つずつ解説していきます。
ある程度年齢を重ねた方々からすると、「プログラミング言語といえばC」でしょう。
「自分が取得している言語だから指導しやすい」というのもあると思います。
書店に行けばCに関する参考書も多く売られており、学習しやすい環境が整っている点に関しては、Cが最も優れているでしょう。
しかし、Cは実行するためにコンパイルして「機械語」に翻訳する必要があります。
「このコンパイルが大事なんだ!」と言われる方も多いですが、生徒からすれば「面倒くさい」だけです。
このコンパイルという作業が、プログラマを目指すわけではない普通の高校生たちに受け入れられるとは思えないのです。
知名度、実用性では申し分ないですが、生徒のやる気を引き出すのは難しいと思います。
私がC#に触れたのは、Unityで遊んでいるときでした。
ゲームでキャラクターがジャンプしたり、物体と物体がぶつかったりするためにC#を記述する必要がありました。
エディタに入力するのは他の言語と同じですが、実行結果がゲーム画面で見られるのは大変面白く感じました。
Unityでのプログラミングを通してループや分岐などを学ぶのは難しいかもしれませんが、プログラミングの楽しさを学ぶにはとても良い言語かもしれません。
Javaは実用性のある言語です。
参考書も多く、学習しやすい体制が整っています。
しかし、授業で扱うための最大の難所は導入までだと感じます。
JDKとJREをインストールして、最初のコードを入力して実行するまでに2時間はかかりそうです。
だからと言って、ソフトのインストールを教員がやってしまうと、生徒が自分で環境を構築することができなくなります。
授業時数が限られているため、Javaの導入は難しいと考えます。
JavaScriptはJavaと名前が似ていますが全く異なる言語です。
コンパイルの必要がなく、Google chromeなどのブラウザを開くだけで簡単に動作するのが特徴です。
専用のソフトは必要なく、エディタがあれば簡単に学習できるのも特徴です。
高校の情報の授業でHTML言語を用いてWebページを作成する授業を行う方は多いと思います。
そのWebページ作成の授業の後にJavaScriptの学習を行うと、自然な流れで導入できると思います。
情報の授業でExcelは必ず扱うといって良いでしょう。
授業ではExcelの関数で撃沈する高校生も多いですが、生徒たちはその便利さと将来性と必要性から、頑張って学習しているように思います。
そのExcelを更に便利なものにしてくれるのがVBAです。
例えば連続で印刷したり、連続で表を作成したりといった単純作業をVBAにやらせると、生徒は感動してくれます。
「Excelは将来使うことになる」と感じている高校生は多いので、Excelが更に便利になるVBAは、学習のモチベーション維持がしやすいと思います。
これも専用のソフトは必要なく、Excel上で完結してくれるのが特徴です。
Rubyは、いま最も熱い言語といえるでしょう。
日本人が開発し、とても記述しやすい言語として有名です。
難易度の低さから生徒たちは「プログラミングって簡単なんだ!」と思ってくれるかもしれません。
しかし記述が簡単すぎるため、最初にRubyを学習してしまうと他の言語が煩わしく感じられてしまうかもしれません。
授業で扱うなら、他の言語を学習した後の方が良いかもしれません。
Pythonも、Rubyと並んでいま最も熱い言語といえます。
実用性も高く、Webアプリケーションが作れたり、データの集計ができたり、機械学習が学べたりと、将来性があるため生徒のやる気を引き出し、持続させやすいと思います。
しかし授業で扱う程度の内容だとコマンドプロンプト上で終わってしまうため、「だから何?」とならないように工夫する必要があるでしょう。
私がオススメするのは、
JavaScript と VBA
です。
導入が簡単で、結果が分かりやすく、将来役に立ちそうであることを総合的に考えると、この2つに落ち着きました。
しかし、学習指導要領にあったように、
目的に応じて言語を選択する力
を養うためには、もっと他の言語に触れる必要があります。
今(2019年度末)の段階ではこの程度で時間いっぱいですが、1年間の学習内容を見直して多くの言語に触れる機会をつくっていきたいと思います。
いかがでしたでしょうか。
今回は「高校のプログラミング教育、どの言語にする?」というテーマでお話しました。
これに関しては、様々なご意見があると思います。
もし「もっといい言語があるよ!」とか「もっとこうしたら良いよ!」などのご意見やご感想があれば、ぜひ書き込んでください👇👇
最後まで読んでいただき、ありがとうございました!