プログラミング教育 ー子供に習わせるならこの言語ー

普段は投資や株式の話を書いてきましたがいちおうこれでもエンジニアなのでプログラミングについて書こうと思います。

2020年度からすべての小学校でプログラミング教育が必修化されることになりました。そのせいか「小学生 プログラミング」とか検索すると「小学生に人気のプログラミング教室」とか「ロボットプログラミング無料体験」とか「AI人材育成」とかなんとかいろいろ出てきます。子供にプログラミングを教えるのも流行ってる様子。

子供に何を教えたらいいんでしょうね?PCは買うべき?OSWindowsじゃなくてMacがいいの?プログラミング言語なんて知らないし・・・。というか自分もスキルアップのために勉強したほうが良いのかな?と思う人は少なくないはず。

なにか準備をするべきなのでしょうか?先立って子どもになにか習わせるべき?

だがちょっと待ってほしい

どこかの新聞みたいな言い回しですが・・・。

私は特になにかする必要はないと思います。

急がないでください。

結論から書きます

もしプログラミング言語が受験科目にならないなら真面目にやらせるべきではありません(1)。どうしてもやりたいなら同時に必修化される英語を重点的に学ばせるべきです。少なくともご子息を英語嫌いにしてはいけません。プログラミングが嫌いになっても生きていけますが、外国語ができるか出来ないでは人生の豊かさが大いに違います。

プログラミング言語は所詮機械の操作技術。機械に関する技術は陳腐化がとても速いからです。いま頑張ってなにかの言語を習得しても成人する頃には別の言語が主流になっていることは大いに考えられます。古くなったプログラミング言語はゴミ同然、知っててもあまり役には立ちません。

それに対して英語は10年たっても対して変わらないでしょう。新しい単語が追加されたりするでしょう。文法も変わりそうです。三人称では「He」ではなく「She」とか「They」を使うのがよいとされるかもしれません。でもまあそのぐらい。

そもそも、プログラミング言語は英語が基盤。多くのエンジニアはあたらしい言語を学ぶときは言語の仕様書やチュートリアルを読み込みます。ここで英語が出来ないと遅れて出版される日本語の書籍を読まないといけません。ネット上で質問できるのも日本人限定。英語ができると世界中の人に聞けますし、世界中の人が書いたものを読めます。

(1) 昔のセンター試験の「情報」って結構簡単で点が取りやすかったみたいですね。 (2) Rust言語のコミュニティを見てると最近中国語が活発になってきてますが・・・

どうしてもプログラミングを習わせたい

でもどうしてもやらせてみたい。もしくはご子息が強く希望してる。というのであれば別。やらせてみるのもいいかもしれません。

PCを準備する

Windowsが一番用意しやすいと思います。ラップトップは新品である必要はありません。中古を用意してください。2-3万もあれば結構良いのが手に入ります。SSD搭載は必須。

お金に余裕があればMacのほうが良いです。ただ中古でもアホみたいに高いです。

値段も安くてプログラミング向きなのはLinux2-3万ぐらいで中古で5年前ぐらいの中程度のWindows機を買ってきて、LinuxOSを入れてください。Ubuntuが良いでしょう。(1)

古いPCでも快適に使えます。

(1) 参考: https://linuxfan.info/ubuntu-18-04-install-guide

OSの基本操作に慣れる

ローマ字でのブラインドタッチは習得済みとして、WindowsMacは特になにか覚えることはないでしょう。おそらく誰でもわかるはずです。

Linuxはシェル(黒い画面)の操作に慣れる必要があります。ファイルやディレクトリの移動、作成、削除、アプリケーションのインストールぐらいはできるようになっておきましょう。(1)

(1) 初心者向けのLinuxの入門書は数あるので本屋に行って二、三冊見ても良いかもしれません

エディターを導入する

プログラミングを書くためのソフト(エディター)を入れましょう。どの言語を書くにしろ良いエディターがあると作業が楽になります。エディターはものすごくたくさんあります (1)がとりあえずVisual Studio Code(2)を入れてください。MacでもWindowsでもLinuxでも使えます。

(1) この文章はSpacemacsOrgモードで書いてます

(2) マイクロソフトが作っているフリーソフトです。ものすごく評判が良いエディターです。https://code.visualstudio.com/

どの言語をやるか

とりあえず汎用性の高いものを

JavaScriptがよいです。これに加えてページを構成するHTMLCSSも学ぶ必要があります。 JavaScriptHTMLCSSがわかればTwitterFacebookみたいなユーザーが記事を投稿するようなウェブサイトがつくれてしまいます。(1)

(1) 正確にはこれ以外にデータベースやサーバーの知識も必要ですが。

将来役に立ちそうなものを

10歳代の小学生が成人しても使われているような言語はなかなかわからないです。ただ Pythonはさしあたり主流。機械学習関係のライブリーが大量にあるのでやっておいても良いかもしれません。(1)

(1) ただ機械学習の理論を小学生が理解するのはかなり酷、ですが。

人と違ったものを

RustGoなんかどうでしょう。

どちらもとても処理が高速な言語です。ウェブサイトの見た目ではなく裏側の処理ロジックを記載するのに使われます。

Goはメルカリの裏側(画像の表示などではなく取引の処理やサーバーの管理など)で動いていたりします。言語の難易度も低いのでおすすめです。

Rustはかなり難易度の高い言語です。まだまだ使われている範囲は狭いですが、評判もよく、非常に将来性のある言語として注目されています。IOTデバイスに組み込んだり、ハードウェアを制御したり、高速な計算を行ったり・・・。計算機の制御に密接に絡むようなことをするのが得意な言語です。