こんにちは、中学二年の永田と申します。ここでは、最近「プログラミング教育」が注目される中で、入門に適したプログラミング言語は何なのかを私の考えで綴っていこうと思っています。(※プログラミング言語=コンピュータをプログラムするときに使う専用の言語。人間にもわかりやすく、コンピュータにも分かりやすいように設計されている。)
プログラミングの目的
今、世界中で私達のようなこどもにプログラミングをさせる動きが広まっています。日本ではおおよそ文部科学省の新学習指導要領2020への改訂で、小学校でのプログラミングが必修化されたことからプログラミング教育が注目されるようになったと言われています。今回必修 化される予定なのはあくまで小学校で、中学校技術科の学習指導要領を見ると、既に「プログラム」の文字があります。では何のために文部省はそんなことをしたのでしょうか。文部省はその目的として以下のようにまとめています。詳細は文部省のWEBサイト(編集者注:リンク切れしていたのでWebBackMachine)を参照してください。
- プログラミング言語を覚えたり、プログラミングの技能を習得したりといったことではない。
- 論理的思考力を育むとともに、プログラムの働きやよさ、情報社会がコンピュータをはじめとする情報技術によって支えられていることなどに気付き、身近な問題の解決に主体的に取り組む態度やコンピュータ等を上手に活用してよりよい社会を築いていこうとする態度などを育むこと。
- 教科等で学ぶ知識及び技能等をより確実に身に付けさせること。
どうやら、「論理的思考を育み、情報社会がコンピュータによってささえられていることを理解する手段」としてプログラミングが選ばれたようです。
これ以外にも、アメリカのオバマ元大統領が在任中(2014年末)に、プログラミング教育の重要性について全国民に訴えた動画が公開されたことも、世界での動きを加速させる原因になったといわれています。
これとは別に、単純にIT企業のプログラマーになりたいだとか、ゲームクリエイターになりたいだとか、そういった理由でプログラミングを学ぶ人もいます。先に挙げた場合と、この場合では、学ぶべきことが全く違ってくると私は考えています。次頁からの文では、それについて私の考えを書いていこうと思います。
「論理的思考」を身につけるためのプログラミング
先に挙げた資料で、文部省は小学校におけるプログラミング教育の目的を「論理的思考力を育む」などと言っていました。論理的思考、というのは何でしょうか。論理的な、考え方ということなので、それぞれの意味を Wiktionary(Wikipedia の系列プロジェクト・辞書)で調べてみます。論理は「議論や思考を進めていく筋道」、思考は「論理に従い考えること」とあります。思考そのものが実は論理でした。
文部省は、プログラミングを使って「ものごとを行う際に筋道を立てて考える力」を育てたいということなんだと思います。この場合、プログラミングはどういう形で効果を発揮するのでしょうか。実は、プログラムでコンピュータに何かをさせるときには、先に書いた「筋道・論理」が必須になります。プログラミングで「筋道・論理」が必要だということは、NHKの番組「10min.ボックス テイクテック」内のコーナー、「プログラムテック」を見ると分かりやすいです。NHKのウェブサイト、NHK for Schoolで視聴することができます。
第一回放送「流れを操る」のプログラムテックから、自由に指令をできるロボットを使って二分以内にトムさんのところへジュースを運ぶミッションをもとに論理を組み立ててみます。(リンク)
番組では、まずジュースを持つところまではできました。それを持ち上げて歩いていけばよいのですが、「持ち上げて」と指令を出すと、頭の上まで腕を大きく振り上げてしまい、ジュースがこぼれるという展開になりました。ロボット(=コンピュータ)は人間のように「察する」事ができません。人間なら「持ち上げて」と言われたら普通胸の高さまでだと理解できるでしょう。ロボットをプログラミングするなら、もっと明確に、筋道を立てて司令を出していかないといけないのです。この例なら「ジュースを、胸の高さまで、持ち上げて」とします。これが、文部省が小学生に求める論理的思考力だと思います。
このとき、学習に最適なプログラミング言語は何でしょうか。小学生(または中学生も)へのプログラミング教育に盛んに取り入れられている言語として、MIT(マサチューセッツ工科大学メディアラボ)製の「Scratch」というものがあります。この言語の最大の特徴は、ほとんど文字を書かなくて良いことです。Scratchは、「ブロック」という、それぞれに指令としての意味が含まれたものをくっつけていくことでプログラムを作ります。さらに、ブロックの表示は日本語にすることができるのでSF映画などでありがちな小難しいアルファベットの羅列を書く必要がありません。文字を打つことが必要になるのは、キャラクターにセリフを言わせたり、~~度回転させたりするときだけです。
ただし、Scratchと言えど中身はコンピュータです。(実際ロボットをScratchで動かすのはいろいろと面倒なのですが)ロボットに「ジュースを運べ」と言うだけでジュースを運んでくれるほど簡単ではありません。Scratch でも、「ジュースを持て」、「持ち上げて」、「体を回転させて」、「トムさんの前まで歩いて」と順に指令を出す必要があります。つまり、日本語を使って論理を組み立てることができるのです。これはほとんど日本語しかわからない小学生(+中学生)に論理的思考をさせるのに非常に都合が良いです。

ちなみに、最近はScratchのようにブロックを使ったプログラミング学習環境が増えてきていて、文部省がScratchをもとに自分で作った「プログラミン」や、Life is Tech!とディズニーがコラボした「テクノロジア魔法学校」などです。また、マイコン(手に乗るような小さなコンピュータ)用に作られたものでは、モータやLEDをつないでちょっとした機械を作ることができるものもあります。英放送局BBCのマイコン「micro:bit」に向けて作られた「micro:bit JavaScript ブロックエディター」や、有名な教育用マイコンRaspberry Pi向けの「Scratch GPIO」などです。モータやLEDなどの現実世界との接続ができるのなら、情報技術学習よりもさらに広げることができそうです。
プログラマーを目指す人のためのプログラミング
プログラマーを目指すなら話は別です。目的がそもそも違います。小学校で取り組むプログラミングの目的は「論理的思考力を身につける」ことなどですが、プログラマーを目指すならそれだけでは足りません。プログラマーが行っているのは実務作業ですから。筋道を立てた思考、論理的思考力はもちろん必須でしょうし、実際にプログラムを書く力が求められます。それに、技術的な知識もたくさん覚えなければいけません。この辺りはしばらく真面目に勉強していれば覚えていけると思いますが、学習に適した言語は何でしょう。
Scratchを考えてみます。Scratchはなかなか有能です。基本的な考え方はほぼ学ぶことができますし、オンラインコミュニティのおかげでわからないことはすぐに質問することができます。ただし忘れてはいけないのが Scratchはあくまで教育用であるということ。例えばScratchは単体のアプリにできません。Scratchのソフトの中でしか動かないのです(外部ツールを使えばできないこともないです)。また、ゲーム向けに作られているのでそれ以外のプログラムを作るのは苦手です。このように、Scratchは実用的な言語ではありません。現にScratchで制作されて、世の中で販売されているソフトは見たことがありません。
世の中ではブロック型の言語はまだ主流ではなく、SF映画でよく見るような文字を書くタイプのものが多いです。有名所ではC(C++&C#),Java,Pythonなどです。プログラマーを目指すなら、このような広く使われている言語を一つくらいは使えないと駄目だと思います。入門用としてどの言語を使うかは自由でしょう。はじめから実用的なCなどの言語をやるのも手ですが、もし小学生がプログラマーを目指すなら、はじめはScratchなどで考え方を身に着けてから本格的なプログラミングをするのが良いと私は思っています。Scratchのよいところは、機械音痴でも少しのパソコンの基礎(マウス操作や、キーボードのタイピングくらい)を覚えてしまえば簡単にプログラムが作れるというところです。はじめに難しい言語を使って、自分には向いていないと挫折するより、プログラムの根本の部分は難しくないということを理解したほうが続けやすいと思います。
以上のことから、プログラマーを目指すならScratchにとどまらず、少し基礎を理解したら積極的にC,Java,Pythonなどの汎用的なプログラミング言語を学ぶのが良いというのが私の考えです。
実は私も前までScratchをやっていましたが、3年以上Scratchにどっぷり浸かっていたせいでなかなか新しい技術を取り入れられずにいます。ですが、Scratchで得た感覚は今も役立っています。
まとめ
最後まで読んでいただいてありがとうございました。近頃テレビやネットでやたらとプログラミングプログラミング言われているので、プログラミングと一概に言ってもそれをするための手段(言語)はたくさんあるよな、と思い私の考えを文章にしました。
2つ目で書いたScratchは、実際多くのプログラミング教室などで採用されているようです。小学校で必修化されるのは2020年からなので、すでに取り組み始めた学校もありますがまだどうなるかは分かりません。
3つ目で書いたC,Java,Pythonについてちょっと余談です。私はPythonが好きなのでPythonの宣伝をします。最近流行りの人工知能なんかはPythonで作られることが多いです。Pythonは文法が書きやすい設計なので、初心者の入門におすすめです。
画像はScratchBlocksとTwemojiを使った自作のものです。
入り切らなかったので参考にしたウェブサイトはそれぞれ文中に散りばめられたURLを辿っていただければと思います。