先日、「社内SNSはFacebookよりも幅広い知見が得られる実験」で以下のような問いかけをしました。
今までコンピューターに興味を示さなかった中3息子が、いまどきプログラミングくらいできるようになりたい、と言い出しました。
どんな言語がお勧めですか?
また、お勧めの入門サイト、入門書ありますか?
その結果、たくさんの方々から色々なアドバイスを頂けたので、簡単にまとめておきます。
おすすめの言語
多かった順に並べるとこんな感じでした。
7 Javascript
4 Ruby
2 Java
2 python
2 HTML/CSS
2 C++
2 C
1 C#
1 VBA
「言語はコンパイル言語の方が基礎が身に付くと思います」という意見もありましたが、多かったのは「スクリプト言語で書けばすぐ動くというのは、余計な時間、手間で学習意欲をそがずに済みます」といった感じでスクリプト言語を薦める意見。
「個人的には、HTML/CSS/JavaScriptあたりから始めるのがいいんじゃないかなーと思います。「表現すること」ができるようになるし、いろんな人とコミュニケーションできるようになるでしょうし、これらのスキルは将来も無駄にはならないと思うので。
興味が出てきて、もっとロジックとかデータ処理とかやってみたければPythonとか、スマホアプリならAndroid/Java、とか、いろいろ選択肢は後からありますんで。」
「物理的なメモリの概念を理解していないと、ポインタ概念やメモリ破壊あたりでつまずきます。なので、高級アセンブリたるC or C++を知っておかないと…と思いましたが、自分の世代でもいきなりマシン語ではなく、最初はBASICからでした。ということで、多くの方の意見に同じくインタプリタ言語が良いと思います。
Ruby on Rails, python, Javascript (Node.jsを見据え)のいずれかが良いのではないでしょうか。また、Windowsのネイティブアプリを作りたいならC#という選択肢もあります。」
「こういうモチベーションならば、Javascriptとかがよさそうですね。ブラウザあれば動作確認できますし、Node.jsを前提に置けるのであれば、数行で書けるWebサーバなんてのもあります。
あとは、お手軽さからPythonがお勧め…といいたいですが、Javascriptよりは敷居が高いです(個人的な所感も含みますが)。中二病が高じてくると、難しいことをやりたがると思いますが、そのころには多分自分で探せるようになるかと思います。
コンピュータサイエンスを志すようになったら、ある程度CPUアーキテクチャを意識した言語などもよいと思います。アセンブラとかは、(巨大なプログラムを書くのは骨が折れますが)面白いですよ。」
今回のテーマはとにかくプログラムとは?から学ぶ超初心者向けなので、とっつきやすさを最優先に考えると、テキストエディタとブラウザがあればすぐにプログラミングして動作確認ができるスクリプト言語がいいだろうという結論に辿り着きました。
ウェブ系となると、その前提知識としてHTMLとCSSの最低限の理解が必要なので、その辺はお父さんからレクチャすることとし、言語は皆さんお勧めのJavascriptから始めてみることに。
僕も振り返ると小3の時に父が買ってくれたPC-6001でN60-BASICに触れたのがプログラミングとの出会いでした。
いじっているうちにインタプリタ言語の処理スピードの遅さに不満を感じて手を出したのがBASICコンパイラ。BASICで記述したプログラムを機械語にコンバートしてくれるソフトです。これでマシン語の驚異的な処理速度に魅了されて、アセンブラを勉強することに。
大学生の頃にX-68000でCコンパイラを手に入れて初めてC言語を使ってみました。卒論ではSASを使って統計解析しましたが、当時はSASは希少なツールで大学の富士通製ホストコンピューターにTSS接続してCPU秒課金される環境でしか使えなかったので、トライ&エラーなんて言っていられない緊張感でした。
入社して配属された担当では某地方銀行の勘定系システム開発プロジェクトでCOBOLを使って運用改善ツールを開発することから始めて………(本論に戻る)
お勧めの入門サイト/プログラム開発環境
いまどき本を買わなくても無料でプログラミングを学べるサイトが多数あります。
また、ウェブ上で簡単なプログラミングを体験できる開発環境も色々とありました。ご紹介頂いた中から幾つかをシェア。
■ドットインストール
「3分動画でマスターできる、初心者向けプログラミング学習サイトです」
「お手軽に試してみるならまずはDotinstallとかですかねー。」
「DotinstallのJavaScriptのシリーズに、ミニゲームを作ろう、みたいなのがあるっぽいので、その辺とかが良いのでは。」
■Code Academy
「英語ですけど、code academy 分かりやすくていいですよ。ネット系言語ならRubyとかいいんじゃないでしょうか。」
■Unity
「今どきのプログラミングだったら、読めたら、コピペでなんとか書けると思います。それよりも何をしたいか。たとえば、キーボードで打って、ディスプレイに表示してだけじゃなく、センサーの入力とかを視野に入れてUnityならいろいろできそうです。」
「今時は凄いものがいくらでもタダで転がってますので、あまりショボイものを作れても人によっては大して興味が持てないのではないかと思います。その点Unityはそれなりの見た目のものを作れるまでの時間が極めて短いのが良いと思います。」
■9leap
「自分がどう学んだかを思い出してみると適当なゲームを作りまくっていたのを思い出すので
・JSで非常に簡単にゲームを作れる
・遊んだゲームのソースを読める/直せる
ということで9leapはお勧めです。でも最近あんま活気がないです。。。」
■プログラミン
「「プログラミン」は、プログラムを通じて、子どもたちに創ることの楽しさと、方法論を提供することを目的とした、ウェブサイトです。」
■松江市:中学生Ruby教室・Win編 Mac編
「ポジショントーク的に中学生向けRuby教材 (無償配布) を挙げておきますw」
■プチコン3号 (Nintendo 3DS)
「言語だけではなく実行環境込みですが。とっつきやすさと成果の見えやすさは、モチベーションにつながるのでは? と思いました。」
お勧めの入門書
そうは言っても、紙の本を繰りながら、自分でソースコードを見よう見まねで入力して動かしてみる、というのも良い経験です。Javascriptの入門書を色々と探してみたところ、以下の本が良さそうだったので購入してみました。
■確かな力が身につくJavaScript「超」入門
はじめに、HTMLとCSSについて概念と基本事項を息子に簡単に教えてあげて、あとは「自分でやってごらん」とこの本を渡しました。ところどころわからない点があったのを補足説明したら、あとは一人で独習している様子。基本的なことから非常にわかりやすく書かれていて、プログラムの内容も現実的な題材でとっつきやすい良本です。
その他、お勧め頂いた本を2冊、ご紹介しておきます。
■コンピュータはなぜ動くのか
「プログラミングの入門にはやはり、「コンピュータはなぜ動くのか」がおすすめです。前半を何となく流し読みするだけでも違います。適宜、サポートすれば中学生でも読めるかと。」
■スッキリわかるJava入門
「少々子供っぽい体裁ですが、わかりやすいことと。コンパイル環境がなくてもwebの疑似開発環境が提供されていて動作確認だけできるので、とっつきやすいです。
これで勉強してマイクラのオプションとか作ってました。タイミングを間違えると勉強の邪魔になるかもしれません。
ハード+プログラミング
単にPC上でソフトウェアを作るだけではなく、プログラムしたものが目に見えた方が面白いのでは、ということで、ハードとプログラミングを組み合わせたアプローチについても色々と教えて頂きました。
■BASICでプログラミング こどもパソコン IchigoJam
「マインドストーム楽しいデスよ!大学の頃指導教官が学校のお金で大量に購入して授業で使ってました。ええ、100%先生の趣味でしたw。先生本人は「科学研究に用いる計測機器類を必要なら自分で作る感覚を身につけさせる!」とか言ってましたが。」
■Robocode
「大学時代にRobocodeでjavaの勉強をして、仲間内で対戦して盛り上がってました。親子で対戦するのもアリかと。」
番外編
「経済的に耐えられそうならPepper等を買ってみるとか。個人じゃ無理だよねw
それは置いといてxxさんも書かれているようにロボット系はオススメです。マインドストームっぽくてずっと安いヤツ(数万ぐらい)をどかで見つけたんだけど忘れてもうた orz 本当に簡単なものであれば数千円であるんで調べてみて
今後はPCだけでなく各種センサーや動力等を駆使したデバイスの重要性が高まる世の中ですから、その入り口ってことでプログラミングは画面だけの世界でなくって実際の世界にも密接で楽しいんだよってのを体験させるってのが意図です。」
「私がボランティア先で教えている中2男子は、Linux上で人工無能のプログラム書いて楽しんでるらしいです。楽しいアウトプットが得られるものがいいんじゃないでしょうか。ご子息が人工無能に楽しみを感じる下世話な感受性の持ち主の場合、父親としては複雑かもしれませんが…苦笑」
「話が書籍や言語から逸れますが・・・NHK教育でプログラミング教育番組『Why!?プログラミング』やるそうです。
3月21~25日 後3:30」
教えてもらったNHK教育のTV番組は5回シリーズ。上でも他の方が紹介してくれたscratchを使ったアニメーションやゲームづくりをテーマにした番組でした。
内容は小学生向けレベルだったので録画した番組を娘に見せたところ、面白かったようで自分でもやってみたい!とのこと。さっそくPCで触らせてみると、夢中で2時間くらい没頭していました。
今どきの子供には、読み書きそろばんレベルでプログラミングを学ばせてあげたいもの。子供でも楽しみながらプログラミングの世界に入っていける環境が整ってきましたね。