おすすめのアイテムや役立つ情報を発信しています。最近は子供のお稽古のひとつに「プログラミング」があるそうです。これはプログラミイングという技工が世の中で一般的に認知されたことを意味します。必要不可欠な教養のひとつにプログラミングがなりつつあるとも言えます。エンジニアの端くれである私としてもどれくらいが子供がプログラミンできるものなのか単純に興味があり、子供にプログラミングさせてみることにしました。いざ始めようとすると色々と悩むことがありました。『子供にプログラミングを教える際の問題は何か?』など子供にプログラミングさせるにあたり色々解決すべき事前課題があります。調べた結果と実際に子供にプログラミングさせて分かったこと、及びおすすめの子供用プログラミング言語を記事にしたいと思います。子供にプログラミングを教えようと考えている方は参考にしてください。(license)プログラミングとは何か?子供にプログラミングを教える必要性の大前提としてプログラミングとはそもそもなんでしょうか?プログラミングと聞くとコーディング、つまりソースコードを書くイメージが強いと思います。これは狭義で、もう少し大義に捉えるとプログラミングの本質が見えてきます。『人が困っている問題を、高性能でバグも少なく、メンテナンスに優れたアプリケーションをすぐに作って解決すること』です。コーディング以外の設計(どんな機能にするの?、どんな画面にするの?、どんな技術使うの?、どんなアルゴリズム使うの?、プログラム内部構造はどうする?、など)やテスト(予定通りの性能が出ているの?、使いやすいの?、バグはないの?、など)の作業も含めてプログラミングです。アプリケーションによる問題解決のすべての作業がプログラミングとも言えます。『プログラミングとは想像を創造に変換する作業』とも言えます。(license)プログラミングを子供に教えるメリットとは何でしょう?プログラミングを幼少期に学んだからといって、ビル・ゲイツやスティーブ・ジョブズやザッカーバーグのように子供がなるとは考えていません。プログラミングを通じて自分で想像(イメージ)したものを創造(設計してコーディング)するキッカケ・経験になればラッキーぐらいに考えています。想像したものを創造する作業は、多くの仕事の基本動作ですから経験しておいて損はもちろんありません。プログラミングでは特に”想像”が重要てす。どこまで想像できるかにより出来上がるアプリケーション品質が大きく変わります。問題解決手段を何個想像できるかで解決時間と解決の質が変わります。簡潔なコーディングが可能なのに無駄なコーディングをしているかもしれません。(他の機能で代替できる)不必要な機能を、無駄に作っているかもしれません。例外的な使われ方の想像が足りなかったためにバグが混入しているかもしれません。想像するとはどうゆう事なのかその意味を少しでも子供達に理解してもらえればと考えています。エンジニア職でない方はプログラミングの必要性(効能)がイメージしにくと思います。以下書籍がプログラミングの必要性を分かり易く説いており、おすすめです。味わって欲しいのは自分が想像したものが創造した形になった時の喜びです!他の人が自分が想像、創造したアプリケーションを使って喜んでくれる姿です。(license)子供にプログラミングを教える際に、いきなりObjective-cやswiftやC#やjavaなどのプログラミング言語を使わせるのはハードルが高いです。これらのプログラミング言語はコーディングのために事前に覚えることが多く、簡単に始める事ができません。覚える前に子供が飽きてしまいます。この問題点を考慮して子供が簡単に始められるプログラミング言語が色々と作られています。子供用プログラミング言語の一番の特徴は命令記載をビジュアル化して極力キーパンチを少なくしたビジュアルプログラミング環境になっている点です。代表的な子供用プログラミング言語(プログラミング環境)とその特徴を紹介します。秋葉原リサーチセンターが開発したビジュアルプログラミング環境です。純国産のプログラミング環境です。ベースのゲームエンジンであるenchant.jsをビジュアルプログラミング化したことが発端となっています。このような生い立ちがあるため、MOONBlockについてはブラウザベースで動作します。そのためOSを選びません。ゲームエンジンが発端であるため、キャラクター(オブジェクト)がどのように振る舞うかをキャラクター別にプログラミングしていきます。通常のビジュアルプログラミングが処理の流れ(フローチャート)をビジュアル化しているのに比較して、MOONBlockでは振る舞いを定義する点(現実世界の模倣)で、子供に分かり易いメリットがあります。MOONBlock、enchant.jsについては学校教育にも導入されており、実績もあります。デメリットをあげると、ネイティブアプリではないため動作が少しもっさりしている点とマウス操作が前提のため子供が親しんだタブレット等での操作に難がある点です。Vimeo.ScratchとはMITメディアラボが開発したビジュアルプログラミング環境です。子供用のビジュアルプログラミング環境といえばまず最初にでてくるぐらい有名です。基本的には処理の流れをブロックのように組み合わせていくことでプログラミングができます。使用者が多いため情報量も多く様々なサンプルソースを見つけれます。各OS用のネイティブアプリとともにWEBアプリケーションもリリースされているため動作環境としても操作としても困ることがありません。日本語にも対応しているため問題ありません。デメリットはなく、子供用のビジュアルプログラミング環境としては王道と言えます。Scratch2.0対応~ViscuitNTTで開発されたビジュアルプログラミング環境です。MOONBlockやScratchがブロックを組み合わせてプログラム構造を作るのに対して、Viscuitはブロック構造ではなく変化前後のイメージを実際に書くことでその変化に合わせてアニメーションを作ります。実際に動くものを短時間で直感的に作れる点で子供の興味を一番ひきつけやすいです。コンピュータを初めて触って自分の思い通りに動くものをつくるファースト・ステップとしては最適なプログラミング環境だと言えます。Viscuitでコンピュータに慣れてからScratchなでにステップアップしていくとスムーズかもしれません。(license)幼稚園と小学校低学年の子供にまず初めにScratch(スクラッチ)を触らせてみましたが、色々とプログラミング以前の問題にぶつかりました。マウス操作が難しい画面を直接触って操作することがコンピューター操作の基本になっている現代の子供にとって、マウスとキーボードの操作は苦行です。直感的操作できないので、その操作に苦労していました。ビジュアルプログラミングでは命令ブロックの部品をマウスでドラック&ドロップする事が多いため、上手に部品が配置できず苦労していました。何を作ったらよいか分からないそもそも子供は情報のインプット量が少ないので、想像する事に限界があります。何をプログラミングして作ったらよいのかアイディア出しが難しいです。サンプルプログラムで色々と遊んだ後にさて何を作るかと悩んでしまいます。覚えることがたくさんあるビジュアルプログラミング言語とはいえ、コーディングのための命令ブロックはそれなりあります。命令ブロックの理解が前提となりますが、事前に覚える事がたくさんあるのは子供にとって負担です。子供用プログラミング言語はLightbotがおすすめ子供用プログラミング環境の問題を書きましたが、これら問題を解決しているプログラミング環境を見つけました。それがLightbotです。Lightbotは命令ブロックを組み合わせて、画面上のロボットを移動させ、全ての色付きタイルの上でロボットの頭を光らせるとレベルクリアになります。「それってプログラミングなの?、ゲームじゃないの?」という声が聞こえてきそうです。一見するとゲームみたいです。動かしてみるとプログラミングに必要な基本命令セットが一通り揃っている事に気付きます。レベルが進むに従い、関数や繰り返しや条件分岐などプログラム構造は複雑化していきます。レベル5まで進むと、おそらく「これはゲームじゃない!、プログラミングだ!」と叫ぶと思います。lightbotには4〜5歳用の「lightbot-jr」と5〜9歳用の「lightbot」があります。5〜9歳用になるとプロシージャの数が最大2つになることや、条件分岐などが使えるようになります。「lightbot-jr」でlightbotに慣れ、更に難易度の高いものを子供が求めたら「lightbot」にステップアップするのがよいです。レバ目的が明確である。Lightbotの目的は、命令ブロックを組み合わせてロボットを移動させ、全ての色付きのタイルの上でロボットの頭を光らせる事です。全てのレベルでこの目的は変わりません。ロボットの頭のライトをタイルの上で光らせるだけです。Lightbotを奥深いものにしているのはロボットをゴールに導く事ではなく、すべての色付きタイルの上でロボットの頭を光らせる点です。色付きタイルへの到達方法はプログラミング次第で変わります。最短コースを通すことでプログラム量を減らす事もできますし、ロボットに無駄な動作はさせるものの同じ命令プロシージャを使い回してプログラミング量を減らす事も出来ます。明確な目的があるので何をプログラミングするかで子供が悩むことがありません。タップ操作でプログラミングできる。LightbotはiOS、Androidのネイティヴアプリとしてリリースされています。操作の基本はタップやスワイプになります。タップ操作のため、操作方法を教えなくてもすぐに子供達はLightbotの操作ができるようになります。マウス操作のようにプログラミング以外の操作で苦労する必要がなく、プログラミングに子供達が集中できます。覚える命令ブロックが少ない。基本動作はたった5個の命令ブロックのみ覚えれば問題ありません。あとは最大2個のプロシージャ(関数)とタイルの色により分岐がでてきますが、これは命令というよりは命令ブロックをどう配置するかにより決まるため、得に意識しなくてもレベルを進める内に自然と理解できます。5個ですがこの命令ブロックも初級レベルのときにひとつひとつその活用方法についてステップアップして学べるようになっているため、事前に覚える必要はありません。繰り返し(リカーシブコールとして動作)や条件分岐などプログラムの基本制御命令が準備されています。複数命令ブロックをひとかたまりにして関数化(ブロシージャ化)もできます。ブロシージャ定義は最初はひとつだけですが、途中からは2つまで定義できるようになります。まこのブロシージャを活用して使用命令ブロックを減らし、プログラム構造を最適化することわ求められます(規定より少ないブロックで処理するとボーナスがもらえます)。レベル別にステップアップして学べる。最初は前に進むだけですが、途中からは回転による方向転換、ジャンプで階段昇降など動作の幅が出るとともに頭を光らせると昇降するタイル、ワープするタイル、頭を光らせると色が変わるタイルなど動作の幅を広げるギミックも増えてきます。レベルが進むに従い処理は難しくなります。レベル5を過ぎると大人でも簡単には解けなくなります。まとめプログラミングというとコーディングがメインと成りがちですが、そもそものその本質である問題解決のための想像と創造を子供達に体験してもらうことが一番大事です。想像を創造し、困った人に貢献する喜びを知って欲しい事です。今度の週末は、子供と一緒にLightbotでプログラミングしてみてはどうでしょうか!スポンサーリンクPC用PC用TweetPocketブログの情報はこちらで配信しています。うちの子供も中々、お記事を読む【読書】毎日面白い本を読み続けるための、3つの仕組み。読書したいが『何を読んだらいいかわからない。』、『読むべき本が見つからない。コメントをキャンセルメールアドレスが公開されることはありません。*PREVキャンプ、家庭バーベキューに活躍するバーベキューコンロを5つ厳選してみた。NEXT未来を実感するウェアラブルデバイス(ウェアラブル端末)はこの3機種!ABOUTドーパミンが一番分泌されるのは”新しいこと”を経験した時・”ワクワク”した時だと言われています。子供のクリスマスプレゼントにトイラジコンのクルマをプレゼントしました。子供と一緒にラジコンで遊んだので...ラジコンカーの組み立てに必須な便利なグッズ(工具・アイテム)...先日、小学生以来の夢だったラジコンカーの組立キットを作りました。息子はイラストレータのSHOUHEI。...マンガ好きの男子ならば一度は「AKIRA」(アキラ)というタイトルを一度は聞いたことがある思います。「ITサービスマネージャ試験(SM)」に約3ヶ月の勉強で、初回合格しました。私は、PILOT社の「カスタムヘリテイジ912」を長年使っています。おすすめのアイテムや役立つ情報を発信しています。