レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

1週間途切れてしまったコーディングの再開の仕方

自分の好きなツールや、大変力を入れているプロダクトを作っているときですら、1週間も時間をあけてしまうと、もうダメです。

もう一度エディタを開いてプログラミングに取り掛かるのが億劫になります。

がんばってエディタを開いても、他人のコードのように見えます。

 

そういうとき、エディタではなく作ったツールそのものの操作を始めます。

2、3分も触っていると、荒い部分とか、もっとこうしたら良いのにとかいう、言いようもない改善欲求が湧いてきます。

 

そういう改善欲求がふつふつしてきたときこそ、エディタを開くベストタイミングです。

 

 

Scratch 2.0 オンラインエディタ で 「ひらがな(にほんご)」にできないバグの暫定対処

 Scratch2.0を使っていて、急にひらがなにできなくなりました。

 
ディスカッションサイトでも話題になっていて暫定対処法がありました。
 
■Discuss Scratch 
 

"オンライン版のScratch 2.0 #456で現在「にほんご」(ひらがな)が正しく表示されない問題が発生しています。 
当座の回避方法としては、Shiftキーを押しながら地球アイコンをクリックして、「import translation file」を選び、オフラインエディターなどに含まれるひらがなの翻訳ファイル「ja_HIRA.po」を読み込みます。" 

 
以下に、弊社が持っているpoファイルをアップしておきます。
 
 

自分向けにソフトウェアを作ったことがないエンジニアと自分向けに料理を作ったことがない料理人

いままで、ITエンジニア向けの研修で「自分向け(または個人的に)どんなものを作ったことがあるか?」をアンケートすると一番多い答えは「特になし」。「これからどんなものを作りたいか?」を聞いたときすら「特にない」と答える人がいる。

技術は仕事のために習得しており。役割になりたい(プログラマになりたい、コンサルタントになりたい)ということを原動力に学ぶ。

しかし、他のプロの職人(たとえば料理人)に、個人的になにか作ったことはあるかと聞いたときに「特になし」なんてありえるだろうか。
他の職人は、何かしら個人的に作りたいものや作った経験があって、作ったことによる喜びも知ってるはず。人に喜んでもらうこともその一つ。
作る喜びがわかってると、自ずと新しいことに興味がわいて学ぶ意欲がでてくる。参考書を丸暗記するよりも効果が高い。

プログラミング講師としては「作りたいものを発見してもらうこと」が、「個別の技術を教える」よりもはるかに成長の効果があると感じる。
子供向けプログラミング教育でも同じことがいえる。

デジタルネイティブ世代はきたのか?

2000年初旬ごろ「あと数年もしたら、デジタルネイティブ世代がくるぞ!おまえらなんか仕事なくなるぞ!

と、当時IT業界で働いていた僕らは驚かされたものだった。


さて現在、確かに若く素晴らしいクリエイターが一部には存在する。

しかし、僕らが脅威的に思っていた「世代」とは異なると感じる。


そういうことを漠然と考えており、高校生にプログラミングを教える仕事をして、わかったことがある。

「消費者」と「提供者」の違いが、現代ではものすごく大きな溝となって立ちはだかっているのではないか。


例えば、スマートフォンだ。

スマホタブレットはデジタルコンテンツ消費者のためのデバイスといえる。

一部アプリがクリエイトをサポートするものがあるが、あのデバイスの哲学としては消費者に最適化しようとしていたと思える。


一方、デジタルコンテンツなどの価値を提供する側のデバイスは、MacWindowsといったPC向けOSを有するデバイスではないか。



中学生、高校生、大学生、はては新社会人ですらキーボードは得意じゃない。
課題や宿題も、できればLINEで出したいと思ってるようだ。


キーボード世代とフリック世代

この格差が、とても大きくなっている。

消費者はスマホでフリックを使い、提供側はキーボードでブラインドタッチを使う。


インプットデバイスの違いは、言語の違いに等しいほどの溝を生んでる。


生まれてすぐにテジタル製品に囲まれた世代は
デジタルを消費することにはネイティブと呼べるけど
デジタルを提供することに対してネイティブではなかった


デジタルネイティブはキーボードが打てないが、Webのサービスのアカウントは覚えきれないほど持ってる。

かれらデジタルネイティブを、消費者一辺倒から生産的な価値感をもたせるだけで、ちょっと日本は変わるような気がする。


その課題意識から、こんなアプリを作ってみている

CODE写経
http://app.levelenter.com/s

子供向けプログラミング教育をやっていて辿り着いた先

先に結論を言えば、プログラミングのスキルの根底にあるスキルは「読解力」なんだなと考えています。

プログラム言語は、やはり言語なので、国語的能力がとても大事だということなんです。

2歳になる娘が日に日に言葉を覚えていく様子を見ていると国語の習得のステップとして、以下のようになると感じています。

  1. 単語を覚えるステップ(ルールを覚える)
  2. 人のマネをしてみる(例えば親や友達のマネで語彙力が上がっていく)ステップ(受動的なマネ)
  3. マネのネタを増やすに読書をするステップ(能動的なマネ)
  4. 自分らしい表現ができるようになるステップ(オリジナル)

こういうステップを経ていると思うんです。
親のマネをしたり、絵本を読んだりアニメを観たりしていく中で語彙力が上がっていきます。


守破離」にも通じる、学びの本質だと思うんです。


さて、僕は子供や学生に向けたプログラミングの教育をやっています。

彼ら彼女らの学習の変遷をみているとやっぱり類似するステップがあります。

  1. プログラミングのルールを知るステップ(ルールを覚える)
  2. ルールとお手本に従ってマネしてみるステップ(受動的なマネ)
  3. マネの積み重ねから改造による新しいアイデアが生まれるステップ(能動的なマネ)
  4. マネのネタとして、書籍やオープンソースなどの他人のコードを読むことでスキルアップするステップ(能動的なマネ)
  5. イデアを先にだして、実現する手段としてプログラミングがあるステップ(オリジナル)


そうです。国語の取得と完全に類似するステップを経るのです。


僕自身も文系上がりのSEだったので、すごく国語力に助けられたSE人生でした。

最初はプログラミングのルールを覚えるのに四苦八苦しました。
そしていろんなモノマネや写経をへて、少しずつアイデアが湧くようになり、アイデアありきで形にできるようになっていきました。

これらのステップの中で、「ルールを覚える」や「受動的なマネ」は大人や教師が与えてあげなくてはいけない部分だと思います。
ですが、「魚を与えるよりも魚の釣り方を教えよ」という格言に従うと、次の「能動的なマネ」ができるようにしてあげるのが大事だと思います。

プログラミングの世界で言えば、一流のプロレベルのスキルを習得するときには、現場作業だけではなくいかに多くの人のマネをするかが分かれ目になるように思います。

オープンソース読めとか、ネットコピペではなく本を写経しろとか、
プログラムの達人たちがいう言葉を言い換えれば、「プログラムの読解力」なのかなと思います。

しかし、単にプログラムソースを読むということだけではなく、国語的な読解力を身につけていくことは大事だと思います。なぜなら、プログラミングを行うことは自然言語とコンピュータ言語の翻訳だからです。


ということで、子供や学生向けに教育をする際にも読解力というスキルを身につけてもらうことを大事にしていきたいと思っています。