• このエントリーをはてなブックマークに追加

今なら、継続入会で月額会員費が1ヶ月分無料!

記事 39件
  • 9月9日より毎週日曜あさ9:55からプログラミング番組「ちちんぷいぷいプログラミング」開始!

    2018-09-06 07:00  
    次の日曜から毎週、「ちちんぷいぷいプログラミング」というプログラミング教育番組がスタートする。アイドルの小池美由さんとエンちゃん、そして謎のエンチャンのお師匠さんが共演するという怪番組である。BSフジで全国放送される。しかしこうしてみると顔がでかすぎる。現役のアイドルが予想外に小さくてビックリした。撮影風景はこんな感じ。毎回プログラミングの面白さを伝え、実際にプログラミングしたり人工知能を作ったりするという番組なのだ。全身全霊で作ったので乞うご期待!
  • 人類総プログラマー化計画 第二章いよいよ本格始動

    2016-06-17 07:00  
    1pt
    まあどの時点までが「第一章」でどこからが「第二章」なのか、数えるのは難しい。 が、しかし、enchant.jsから始まってenchantMOONまでをひとまず「第一章」として、「教養としてのプログラミング講座」から現在進行中の段階を「第二章」と呼ぶならば、いよいよ本格的に第二章がスタートする。 この「第二章」は、非常に長い。まあenchant.jsからenchantMOONまでがざっくり3年、足掛け5年掛かっているのだが、「第二章」はそれ以上に長いだろう。 2011年に掲げたビジョン「一億層プログラマー国家」を実現するためには、以下の2つの条件が必要だった。 ・普通の人が自己の表現手段としてプログラミングできる環境の構築 ・政府や公的機関、一般の人々がプログラミングの必要性を理解する環境の形成 そのために、誰でもが手軽にプログラミングをできる共通のプラットフォームとしてenchant.js
  • 【shi3zの華麗とはいえない日常】 プログラミング教育あれこれ

    2016-05-06 09:00  
    1pt
    実践としてのプログラミング講座 (中公新書ラクレ)が発売された。前作の続編的な位置づけではあるものの、内容はガチのプログラミング入門(なにしろ横書きになってる)なのでそのギャップに我ながら驚くが、MOONBlockで実用的なプログラムを書いてみようというチャレンジは自分にとっても冒険だった。この本を書くプロセスでMOONBlockの内容を見なおしたりできたので、まあ良しとしよう。POPを書いたのだが、字が汚すぎて使われていないのか、僕の手書きPOPを見た人はご一報いただきたい。まあでも前作ほどではないにせよそれなりに売れてる・・・のかなあ?よくわからない。今回は初版がめちゃくちゃ多いので、前と違ってバンバン増刷がかかる感じでもないしね。土屋さんと一緒に4月から始めたプログラミング教室。けっこう盛況で、まだ赤字ではあるけれども、生徒さんたちも順調に増えてきた。嬉しい限り。中には遠い所をわざわざやってきたりする人もいるくらい。この、秋葉原プログラミング教室、最大の特徴はカリキュラムにある。 ちまたの、あまたある、プログラミング教室は、ScratchやGameSalad、たまにSwiftやObjective-Cなんかを教えて、はい、それでおしまい、で終わることが多い。というのも、これは僕の想像だけど、彼らの教材づくりが間に合ってないんじゃないか。  けれどもそれでは、肝心のプログラミングスキルは何一つ身につかない。 たとえば大学の授業でC言語を教える時、今週は変数、来週は配列、といった感じに教えるんだけど、僕は前々からこれが疑問だった。 というのも、変数「だけ」を習っても、何一つできるようにならないからだ。 実際、大学の授業だけでプログラミングができるようになる人はいない。 実際には自宅で教科書を読みながら独学で写経しながら勉強するほうがよほど身につく。 だというのに、ちまたにあまたあるプログラミング教室では、大学の授業と同じように、プログラミング言語を要素に分解してバラバラに教える。これでは子供の教育に良くない。 プログラミングといえど言語なわけで、「今週は名詞を覚えたから名詞だけで文章を作ってみましょう」なんて無茶な教え方をする国語の授業があるわけない。 文法と、それを使ってみるということはセットでなければ意味が無いし、もっと重要なのは、自分が表現したいことがなにかわからない人にとって、言語の要素だけをバラバラに教わっても、全く役にたたないのだ。 たとえば僕はごく簡単な中国語が喋れる。まあこのレベルを「喋れる」といっていいのかわからんけど、例えばなにが喋れるかというと 「是(シェー)」/YES 「不是(ブーシェー)」/NO 「無用(メーヨー)」/いらない 「这个(ジェガ)」/これ 「您好(ニイハオ)」/こんにちは 「服務員(フーイェン)」/店員さん! 「买单(マイダン)」/お会計 「発票(ファーピャオ)」/領収証 「很好吃(ヘンハオチー)」/美味しいです(固形物) 「很好喝(ヘンハオフー)」/美味しいです(液体物) もうこれだけでとりあえずなんとかなるわけです。 どんな感じかというと、まあこれだけしか使えずに中国行きますよね。 電気屋に行って、「お、これなんだろう?」って思ったら、ガラスケースの中の端末を指して「ジェガジェガ」と言うわけです。 すると、お姉さんがガラスケースから端末を取り出します。 電卓を指差すと、値段を教えてくれます。 そしたらその値段を3で割って示します。 すると、お姉さんは首をふって、最初の金額より10人民元ほど安い値段を示してきます。 そしたら、僕も3で割った数に5だけ足して示します。 このやりとりを数回繰り返すと、結局、最初の金額の半額〜2/3程度でその端末を買えます。 買ってもいいなと思ったら 「マイダン」 と言えば商談成立。 さらに領収証が欲しいので「ファーピャオ」と言えば領収証がもらえる。 もうこれだけで中国で買い物できます。 中国は多民族国家なので、北京を中心とした普通活(プートンファ)を発する時に訛りがあるのが一般的です。 最低限、これだけは知っていれば会話ができる、ということさえ知っておけば、他の言葉は必要に応じて覚えていけばいいのです。 言語なんてそんなものです。 本来、プログラミング言語も全く同じで、自分が表現したいことに対して必要十分な言葉から学ぶのが一番身につきます。 ところが、なぜかプログラミング教室になると、言葉の構造だとかそういう、理屈から入ってパズルを解くかのように難解なサンプルコードを理解しないとできなくなってしまいがちです。それでは、子供はもちろん、大人だってプログラミングを理解することを諦めてしまいます。 僕たちの教室は、言葉を学ぶのと同じように、プログラミング言語を学ぶことを第一にしている。 そして何度でも自習したり復習したりできるように、紙のプリントの教材を必ず使うことにしている。 そうすると、子供がどこで躓いたのか、一人ひとり採点しながら、理解度を確認しながら、個別に丁寧に教えることができるからだ。 そして、表現のための道具として、数学や国語、英語の概念を学ぶことで、子どもたちは無理なく高度な表現を行うことができる。 単にプログラミングだけを教えても意味が無い。それに付随する種々の数学的概念とセットで教えてこそ、子どもたちは数学とプログラミングを好きになるはずだ。 だから最初の一年で、三角関数と複素数、力学、4✕4行列、テンソルといった概念を学ぶ。 大人でも尻込みするようなことを、子供だからこそむしろ効率的に学ぶことができる。なぜならそれは学校のテストの成績をとるための空虚な「お勉強」ではなく、自分たちがシューティングゲームや3Dコンピュータグラフィックスや人工知能、ニューラルネットワークといった、楽しいプログラミングを構築するために必須の道具で、目的が定まっていれば道具として高度な数学的概念を使うのは極めて簡単だからだ。 「現在位置が知りたい」という目的が定まっていれば、相対性理論を応用したGPSを搭載したスマートフォンのアプリを使うのは誰にとっても簡単だろう。 それと全く同じように、道具として数学や物理を使おうとすれば、難しいことはすっ飛ばして理解することができる。そして応用を理解しておけば、彼らが将来、高校や大学で本物の数学や物理に出会った時にも役立つはずだ。そのときそれは、無意味な数式の羅列ではなく、意味を持ったものに見えるはずだからである。先日、東京大学新聞のインタビューに答えた。もともと僕が「教養としてのプログラミング講座」を上梓したそもそものきっかけは、近所の東大生を集めてプログラミングを教える教室を提供していたからだ。意外だったのは、文系の参加者が思いのほか多いことだった。そして東大生にこそ、プログラミングを習得することは必須技能であるのではないかとインタビューには答えた。なぜならプログラミングとは、自分以外の知的存在を自分の思い通りに動かす手法、そのものだからだ。 
  • 【小中学生のための】JavaScriptによるシューティングゲームの作り方(10)【ボスキャラ登場!】

    2016-01-03 12:00  
    冬休みはちょっと背伸びしてJavaScript(ジャバスクリプト)に挑戦してみよう!MOONBlockやScratch(スクラッチ)よりも本格的で、JavaScriptを覚えればいろんなゲームが作れるようになるよ。最終回はいよいよ、ボスキャラを登場させるよ!まずは前回までのプログラムの最後に、ボスのクラス(Bossクラス)を追加するよボスクラスも基本的には他の敵キャラと同じ、Enemyクラスを継承して作るんだけど、ボスらしく4倍サイズにしている。手前までやってきてから上下にゆっくり移動するようにするため、204行目から206行目までで「x座標が150になるまで左に移動」させている。xが150になったら、206行目から208行目が実行される。207行目では、三角関数のsin(サイン)を使って、ボスを上下にゆっくり移動させているよ。このとき、this.ageに掛けている0.1をもっと小さい値に
  • 【小中学生のための】JavaScriptによるシューティングゲームの作り方(9)【敵キャラにフォーメーションをとらせる】

    2016-01-02 12:00  
    冬休みはちょっと背伸びしてJavaScript(ジャバスクリプト)に挑戦してみよう!MOONBlockやScratch(スクラッチ)よりも本格的で、JavaScriptを覚えればいろんなゲームが作れるようになるよ。前回は敵キャラが攻撃してくるようになりました。しかし、これまでのプログラムだと、敵の出現タイミングは全てランダムだったので、いまいちゲームとしての緊張感が高まりませんでした。時間経過とともに敵がいろいろなフォーメーションでやってきたりするためには、配列(はいれつ)という概念(がいねん)を理解する必要があります。配列は、正式には「配列変数(はいれつへんすう)」と呼び、変数の仲間です。普通は変数は「a」や「x」という感じで英字だけで表現されますが、「a[0]」や「a[1]」という感じで、英字の後の[ ]で囲まれた中に数字が入っていると、それは配列変数になります。この配列変数は使いどこ
  • 【小中学生のための】JavaScriptによるシューティングゲームの作り方(8)【敵キャラに攻撃させる!】

    2016-01-01 12:00  
    冬休みはちょっと背伸びしてJavaScript(ジャバスクリプト)に挑戦してみよう!MOONBlockやScratch(スクラッチ)よりも本格的で、JavaScriptを覚えればいろんなゲームが作れるようになるよ。前回は敵キャラを爆発させてみました。今回は敵キャラにも攻撃させてみたいと思います。まず、敵は爆弾を投げてくることにしましょう。爆弾のクラスを作ります。Bombクラスは、icon0.pngの25番目のフレームである爆弾のイメージを使っている他は、プレイヤーが撃つりんごのクラス(Appleクラス)とあまり変わりません。ただし、161行目だけはthis.x-=3として左に移動するようになっています。さらに、弾を撃つ敵を出してみます。177行目で30フレームごとに一回、爆弾を発射しています。しかしこの新しいEnemy3クラスのオブジェクトをgame.rootSceneのenterfram
  • 【小中学生のための】JavaScriptによるシューティングゲームの作り方(7)【敵キャラを爆発させる!】

    2015-12-31 12:00  
    冬休みはちょっと背伸びしてJavaScript(ジャバスクリプト)に挑戦してみよう!MOONBlockやScratch(スクラッチ)よりも本格的で、JavaScriptを覚えればいろんなゲームが作れるようになるよ。前回は敵キャラの種類を増やしてみました。今回は敵キャラを爆発させてみたいと思います。敵を爆発させるのはけっこう簡単です。爆発のクラスを作って、敵が消えるときに爆発を出現させるだけです。まず、爆発クラスはこんな感じ。おっと、ところで爆発の絵を「Add Resource」で追加しておくのも忘れずに爆発の絵をpreloadで読み込むのも忘れないようにしないといけません。effect0.png(エフェクト・ゼロ・ピーエヌジー)をpreloadで読み込むようにしましょう。これだけだと爆発は画面に出てきません。敵が死んだ時に爆発を発生させるようにしてみましょう。Enemyクラスのonente
  • 【小中学生のための】JavaScriptによるシューティングゲームの作り方(6)【敵キャラの種類を増やす】

    2015-12-30 12:00  
    冬休みはちょっと背伸びしてJavaScript(ジャバスクリプト)に挑戦してみよう!MOONBlockやScratch(スクラッチ)よりも本格的で、JavaScriptを覚えればいろんなゲームが作れるようになるよ。前回は、敵キャラに動きをつけてみました。今回は敵キャラの種類を増やしてみたいと思います。と、その前に、敵をやっつけても点数が入らないようになっていました。とりあえず点数を表示させることにしましょう。こんな感じの行をwindow.onloadの中のgame.onloadの中に追加します。この段階ではまだ点数が加算されません。次に、敵キャラのクラスを2つに分けます。ここからちょっと大改造です。気合を入れてくださいね。まず、先ほどまでのEnemyクラスを、色々な動きができる汎用的なEnemyクラスに変貌させます。まず、81行目を追加します。これはこの敵が持つ点数です。この敵をやっつける
  • 【小中学生のための】JavaScriptによるシューティングゲームの作り方(5)【敵キャラに動きをつける】

    2015-12-29 12:00  
    冬休みはちょっと背伸びしてJavaScript(ジャバスクリプト)に挑戦してみよう!MOONBlockやScratch(スクラッチ)よりも本格的で、JavaScriptを覚えればいろんなゲームが作れるようになるよ。前回は、敵キャラに弾が当たったかどうか判定する、当たり判定という部分を作りました。これだと確かにシューティングゲームっぽいのですが、一列にやってくる敵キャラはなんとなく不気味です。そこで第五回の今回は、敵キャラをもっといろいろ動かしてみたいと思います。とりあえず、敵キャラの出現する位置が常に一定なのが気になります。敵キャラが出現する部分のプログラムを見てみましょう。すると、37行目で、enemy = new Enemy(320,160) と呼び出していることがわかります。ここで渡している2つの数字は敵キャラの出現する位置なので、y方向に変化させてみましょう。ランダム(デタラメ)な
  • 【小中学生のための】JavaScriptによるシューティングゲームの作り方(4)【敵キャラを登場させる!】

    2015-12-28 12:00  
    冬休みはちょっと背伸びしてJavaScript(ジャバスクリプト)に挑戦してみよう!MOONBlockやScratch(スクラッチ)よりも本格的で、JavaScriptを覚えればいろんなゲームが作れるようになるよ。というわけで第四回です。今回はついに敵キャラが出てきます。敵の出ないシューティングゲームなんて、つまらないですよね!早速行ってみましょう。前回は、自由に弾が撃てるようになるところまで作りました。今回は、ついに敵を出してみます。クマを出すためにはクラスを使いました。りんごを撃つためにもクラスを作りました。さて、敵を出すためには・・・そう、やはりクラスを作るのです!!前回のプログラムの最後に、次のようなプログラムを加えてください。これが敵のクラスです。 まるでクマのプログラムとそっくりですね。 ただし、71行目を見れば解るように、これまでりんごは右に移動していたのが、今度は左に移動す