このページの本文へ

小学生のプログラミング教室はどうなっているか 第3回

いちばんやさしい“ハンダづけ”と“プログラミング”講座/文系女子大生と一緒にKidsVentureと同じことをやってみよう!

2016年11月28日 12時00分更新

文● 天音ほのか 協力●さくらインターネット

  • この記事をはてなブックマークに追加
  • 本文印刷

ハンダづけが終わったら動作確認してみよう!

 IchigoJamの組み立てが終わったら、さっそく動作確認。IchigoJamのビデオ端子とテレビのビデオ入力の間をケーブルで接続します。次に、USB接続のPS/2対応キーボード(または、PS/2キーボード+変換アダプタ)をUSB端子に接続。最後に、コンセントにつないだACアダプタからmicroUSBケーブルで電源を供給して、電源をON!

 テレビ画面に「IchigoJam BASIC……」という文字が表示され、次に「OK」と出ました! 続いてはLEDのランプがつくかチェックです。

尾村「LED1と打ってください」

天音「L……EDの1と……」

シーン。

天音「あ、あれ? つかない……」

尾村「じゃあ、どこが違うのか確認してみましょう。LEDのつかない原因の100%はLEDの向きが違うんですよ。って、あれ! 合ってますねぇ」

 試行錯誤のすえ、LED部分のハンダづけが甘かったことが判明。ハンダを足したところ無事ランプが点灯しましたっ。

尾村「いや~これは初めてのケースでした(笑)。とにもかくにもこれでハード編は終了です。お疲れさまでした!」

完成したIchigoJam

 “電子工作”などというと、いかにも難しそうな感じがしますが、正直なところ意外と簡単にできてしまいました。やってみないとわからないものですね! 前々回、小学生が、ハンダゴテをどんどん使っていたのには驚きましたが、本当に、先入観はいけないと思いました。

いざ、最終目標のプログラミングへ!

 LED点灯で動作確認ができたところで、早々、キーボードに触れながらプログラミングの世界に入っていきます。今回は、ちょっぴり大人向けのIchigoJam講座ということで、小学生向けのKidsVentureでは省略してしまう用語解説なども詳しくやっていただけるとのこと。

大竹「では、コンピューターに命令をしてみましょう。試しに”KONNICHIWA”と打ってみてください。画面にはなんと出ていますか?」

天音「“シンタックスエラー”と出ています」

大竹「ですよね。これは”KONNICHIWA”だからダメというわけではなくて、”OHAYO”でも”KONNBANNWA”でもこうなります。つまり、コンピューターに命令をする時に日本語をローマ字で打っても通じないということです。では、どうすればいいとおもいますか?」

天音「コンピューターがわかる言語にする?」

大竹「そうなんです。IchigoJamにはBASICという言語で命令してあげる必要があるんですね。先ほど動作確認として打ったLED1で《ランプを点ける》、LED0で《ランプを消す》というのも命令のひとつです」

KidsVenture「IchigoJamプログラミング教室」配布資料より

尾村「KidsVentureでは、IchigoJamの中には“ダンブン”という“中の人”がいますと説明しています。LED1と命令するとダンブンがLEDのスイッチを入れて、LED0と命令するとスイッチをオフにして電気が消えるといった感じです。ですが、今回は”大人向け”ということで、サクサク進めてしまいますね。次に登場するのは《:》です。これを使うと命令をつなげて書くことができます。では《LED1:LED0》と打ってみてください」

天音「光った……のかな?」

大竹「そうなんです。実はこれ光ってて、命令をした瞬間にLEDがついて消えたんですね。というのも、 IchigoJamは1秒間におよそ5千万回の正確な計算ができるので、《LED1:LED0》つまり、”つけて、消せ”という命令だと目で追えないほどの速さで処理を終えてしまうんです」

天音「1秒間に5千万回? どのくらいの速さか想像もできないです」

大竹「ちなみに、いまどきのスマートフォンには1秒間に20億回計算できるような人が8人も入っていたりします。スーパーコンピューターなんかは、1秒間に20億回計算できるような人が何十万人も入っているそうです」

天音「インフレっぷりがドラゴンボールの世界ですね」

大竹「次に、これを人間が目で追えるくらいの速さで点滅するようにしようということになると、出てくるのが《WAIT》という命令。《WAIT60》と、打つとだいたい1秒経ってから《OK》と出てきます。お察しの通り数字が増えれば増えるほど、IchigoJamが待ってくれる時間も長くなるということです。ちなみに、調子に乗って《WAIT30000》とかって命令してみると、その間、ほかに何も命令が送れなくなっちゃいます(笑)。こういう時は、Escキーを押すと《BREAK》と画面に表示されて命令がキャンセルされます。ということで、《LED1:WAIT60:LED0》と命令してみましょう」

天音「わっ、ちゃんと光って1秒後に消えました!」

大竹「では、WAITを覚えたところで、LEDを点滅させ続けることで、”深夜の信号機”を作りたいと思います! 1回点けて消すことはできたと。では、2回点滅させるにはどうしたらいいですか? っていう風にいつもは前に座ってる子に聞いたりするんですけど、だいたいそう聞くと《何回も書く!》っていう答えが返ってくるんですね(笑)。それで”深夜の信号機”を作るとなると途方もない数を書かないといけなくなりますよね。では、どうすればいいと思いますか?」

天音「あ、えっ、分からないです」

大竹「では説明していきますね。まずは次のプログラムを打ってみましょう」

深夜の信号機のコード

10 LED1
20 WAIT60
30 LED0
40 WAIT60
50 GOTO10

大竹「これが深夜の信号機のコードです。これはつまり……」

10 ライトをつける
20 1秒待つ
30 ライトを消す
40 1秒待つ
50 10に戻る

大竹「こういう意味の命令が並んでいるわけです。《GOTO 10》で《10に戻る》のところがポイントですね。これで何度も同じプログラムを書き続ける必要がなくなるんです。このように書いて、《RUN》と打ちこめばプログラムが実行されます。プログラミングのお勉強では、よく最初に書くプログラムとしてて《Hello, world!》とだけ表示するコードを書きます。でも、我々は、このLEDの点滅をやってもらうようにしてるんですよ。《Hello, world!》よりもちょっとだけ複雑で、かつ楽しいIchigoJam流の最初のプログラムです」

BASICには、さまざまな命令がある

LISTとCLS、SAVEとFILES

大竹「ここからはいくつかの命令を紹介しますね。まずは、何かとよく使う《LIST》から。これは、例えば、20行くらいのプログラムを書いている時にどこまで打ったか確認したいなって時とか、この命令をつけ加えたいなって時に、この命令を使うと打ったプログラムが画面に表示されます。《CLS》は、ごちゃごちゃとした画面を一度消すことができて、それから《LIST》であらためてコードを確認するのが一般的です。ちなみに、コードの頭の数字が10ずつ間隔があいているのは、書きたいコードが後から増えた時に書き足せるように、慣習的にこうなっています。15などの数字を書けば10と20の間に命令を追加することができるんですね」

大竹「しかし、一生懸命プログラムを書いても、このまま電源を落とすと今まで書いていたものは消えてしまいます。と、なると次に行うのは”保存”ですよね。それには、《SAVE0》《SAVE1》《SAVE2》《SAVE3》の4つのセーブ命令が用意されています。つまり、IchigoJamは、プログラムを最大で4つまで保存することができるんです。ということで、いま打ったプログラムを《SAVE0》で保存しておきましょう」

天音「ドラクエでいえば、”冒険の書”が4つといったところですかね」

尾村「そうですね! って、この例えは今の小学生に通用するのでしょうか(笑)」

大竹「で、このようにSAVE0~SAVE3まで保存した時に、何のコードを何番に登録したかって、わからなくなってきちゃいますよね。そんなときに便利なのが《FILES》というコマンドです。これを使うと各コードの1行目が表示されるので、いちいち全部のセーブデータを開かなくても、どの”冒険の書”にどのデータが入っているかがわかります。SAVE0には先ほど書いたLED1から始まるコードが表示されているはずです」

PRINTと変数

大竹「突然ですが、《?1》と、うってRUNすると《1》と画面に表示されるんですが、《?1+6》とうった場合はどうなるでしょうか?」

天音「7ですかね?」

大竹「正解です。要するに、この《?》っていうのは、その後ろに書かれているものを表示してくださいという命令なんです。かつ、それが計算式だった場合は計算してくれると」

天音「なるほどぉ」

大竹「ちなみに《?》という命令は、《PRINT》という命令を省略したものなんです。たった5文字を省略してどうするんだと思われてしまいそうですが、実はIchigoJamで書けるコードの文字数は約1000文字と決まっているんですね。なので少しでも命令を短くして長いプログラムにも挑戦できるようにしようということでKidsVentureでは《?》を使うことがあります。あと、単純に小学生なので《PRINT》と打つのに結構な時間がかかるんです。つまりいろんな意味での短縮になっているわけです(笑)」

大竹「では、続いて画面右をみてください。《A=5》とうったら《OK》と表示されました。では、続いて《?A》と打ったらどう出るでしょう?」

天音「5ですかね?」

大竹「大人相手の座学って安心感がすごいですね(笑)。正解です。この《A》がいわゆる変数というやつです」

KidsVenture「IchigoJamプログラミング教室」配布資料より

大竹「変数の概念を知っていれば話は早いんですが、”小学生向けのプログラミング教室”では通用しないですよね。なので、ここでまたダンブンの登場です。A~Zまでの箱があって、《A=5》という命令をしたら中の人がAの箱に5を入れて保存しているんだよ、といったようなことをイラストを使って説明しています」

RANDOM

大竹「では最後に《RND》という命令について説明します。まずは《PRINT RND(3)》と打ってから実行してみてください」

天音「数字の2が出ました」

大竹「なるほど。ではそのまま何度か実行してみてください」

天音「2、2、2、1! 1が出ました!」

大竹「そうなんです。この《RND》は”Random”の略で、さっき打った命令は、0・1・2の数字の中から数字をランダムに出してくださいという命令なんです。これは余談ですが、ゲームを起動するとよく《PRESS START BUTTON》とか出てくるじゃないですか。あそこの画面でボタンを押すまでの時間によってRNDで出てくる数字のパターンが決まる、なんていうゲームもあるみたいですよ。だから、例えばそれが格ゲーだとして、ファミコン2台のボタンを同時に押したら理論上は敵の動きは全く同じになるはずなんです(笑)」

天音「えー! そんなの初めて知りました!、すごい!」

大竹「このRNDを応用してジャンケンをすることもできます」

じゃんけんのコード

10 A=RND(3)
20 IF A=0 ?”GU-”
30 IF A=1 ?”CHOKI”
40 IF A=2 ?”PA-”

 ここで、「IF」という命令が出てきました。しかし、KidsVentureでもそうだったのですが、すべての命令をその都度は深く説明していかないのですね。まずは、講師が説明したプログラムをそのまま真似て自分のコンピューターに打ち込んでいきます。前回も、少し触れましたがこういうことを“写経”と言ったりするようですが……。

カテゴリートップへ

この連載の記事
ピックアップ