全世界のファンのみなさまこんにちは
プログラミング教育は必要だけどさ、ふなです。

さて、高校のパソコン部で十進ベーシックやるらしい。
うむ、初心者にはBASICって何年前の話よ。
ただ、昔のBASICと違って、数学的に正確になったらしい。
さらに行番号がいらないようだ。
GOTOはどうすんのよ!
とか思うけど、まあいいや。

で、1時間かけて、プログラムを作ったらしい。
それがこれ。
1530169035749

うむ、画面を開いて、スペースキー押すと色が変わり、終了というものだ。
これを作るのに1時間か、、、

同じアルゴリズムをScratchで作ってみた。
1530169031513

5分で出来た。

そうしたら、子供からこんな感想が、、、
Screenshot_20180628-155708

そりゃそうだ、、、
何が違うのか?
そうだな、あえて言えば、デフォルト機能と関数化、かな。

デフォルト機能というのは、何かをしたい時に、まあこのくらいに
しておけばいいんじゃないの?
という感じのものだ。
二郎でいえば、小ブタ、あと全部普通。
小ブタ、野菜マシマシ、カラメ、アブラ、とか、全部のパラメータを指定しなくてもいいよ、
という風になっている。
※二郎で例えていいのかわからんが、、、

その全部のパラメータを指定しないといけないのが、
十進BASICなのだ。
グラフィックウインドウを開くよ!と命令すると、大きさがわかりません、位置がわかりません、
とぶーたれるので指定してやる、という感じだ。
さらに、1文字でも打ち間違えると、そんな文法しらない!と怒る。

使いにくい言語である。
が、しかし!40年前にはこの言語でも「かなり簡単に書けた」部類の言語だった。

そして関数化。
GO SUB 
で、サブルーチンを呼ぶが、そのサブルーチンが最初から
使いやすいライブラリ化されているというか、関数が用意されている。
Scratchはその整備が進んでいる。

だから現代では、さらに簡単に、プログラムが書ける。
いわゆるブロックプログラミングというやつで
ブロックを重ねるだけでプログラムになるのだ。
30年前に、PADでプログラムを書いたことがあるが
それに近い感じ。

それがScratchである。
同じアルゴリズムもたったこれだけで実現できる。
画面の色をスペースキーを押すと変わり、終わる。
それだけ。

BASICと決定的に違うのは、上記の
デフォルト機能、関数化、ライブラリが豊富、が最初から備わっている点である。

デフォルトですでに猫が表示されており、改めて、「猫の大きさ決めて、場所決めて表示する」と
いう命令を出さなくてもいいのだ。
余計なことを考えなくてもいい。
ちなみに、「あとで」、猫の大きさを変化させたり、位置を設定出来る。
なので、本当にアルゴリズムだけを考えるのに集中できる。

次はクォリティである。
BASICでゲームを作ったことがある人はわかると思うが
キャラクターは1から作らないといけない。
1ドットづつ作ることになる。
あるいは、アスキーコードの組み合わせで、それを工夫することになる。
猫1匹、犬1匹、書くのに何時間もかかるだろう。

Scratchは最初からいろんなキャラクターが標準で準備されている。
いわゆるこれがライブラリが豊富、ということになる。
もちろん、自分でオリジナルキャラクターを1ドットづつ作ることが出来る。
昔の8BITゲームのキャラクタを作る、というのも可能だ。
だからマリオやらパックマンやら、その辺のゲームもScratchなら出来る。

次に音である。
BASICは16段階のビープ音、しかない。
ScratchはWAVファイルが使用できるので、吹き込んだ音声、録音した音、音楽、などが使える。
いわゆる、最新のデバイスが使えるのだ。

最新のデバイスといえば、マウス制御のアルゴリズムも簡単に使える。
BASICでは使えないだろう。
Scratchでは、マウスの向きに方向を向ける、なんていうことも出来る。
現代では、マウスの入力制御の出来ない言語は初心者にとって
苦痛じゃないだろうか。

もちろん、WASZのキーで操作する、ということも可能だが
今の時代には時代遅れであるとしか言えない。

なので、BASICでプログラミング言語の勉強をするのは否定しないが、
それで文化祭の発表にするとなると、かなり時間的に難しいのではないか?と思う。

そうだ、実は9月に文化祭で発表するのだそうだ。
自作ゲームを。
BASICで作るらしい、マジか。

いやいや、、、、文法を今から1からやって???
かなり困難か、クオリティ低いものが出来るのでは?と
危惧している。数も少ないだろう。

いや、その前に、何のための文化祭なのか?である。
私が37年前に、高校2年の時、文化祭で
BASICで作ったゲームセンターをやった。
わが高校は進学校だったので1年交互で、体育祭、文化祭、となる。
だから高校生活で1回しか文化祭が出来ない。

PC3台、1台は自分のPC(VIC-1001)に家のテレビ(RF接続)、
2台目(MZ-80C)、3台目(PC-8001)はレンタル。
合計3台のPCでゲームセンターをやった。
発表のテーマは「第3の波」
第1次産業革命は農業、第2次産業革命は工業、第3次産業革命は「情報処理」という
これからコンピュータ社会だぜ!という内容。37年前としてはすばらしい先見の目だと思う(自画自賛)
部員は6人くらいだった。2年の時にやったが新1年生は入部者がいなかったと思った。

1ゲーム10円。ゲームの種類はコツコツ交換したり打ち込んだりして作った100種類以上を用意してた。
全部テープメディアだけどね!
そのころ、ゲームセンターは1ゲーム100円だった。だから良かったのかな?
文化祭は合計2日間あり、初日はパラパラと、お客が集まって後半、わいわいがやがやと盛況だった。
2日目、10時オープンだったが、なんとパソコン部の前に開店待ち行列が出来ていた。
口コミ効果があったのか、遊びたいのか、朝から並んでいるのである。37年前にもBUZZったのだ。
2日目も大盛況。文化祭は大成功に終わった。
ゲームの内容もパックマンやらRarry-Xとか麻雀とかアーケードゲーム、市販ゲームに負けず劣らず、というクオリティで。
一部先輩は回数券を勝手に発行し、12枚つづりで100円とか勝手に売りさばいて
その売り上げを計上せず、持ち逃げして卒業した。
技術のない先輩。そう、金儲けは技術がなくても権力があれば出来る!ということを教えてくれた(笑)

そして、3年になり、部活紹介を「テレビショッピング風」に紹介して、
新入生を前に笑いを取った。
去年は新入生0人、今年は何人だろうと思ったら
女子4人を含む6人が入ってきて、大成功!という経験をした。
高三では下級生を前にBASICの授業をやってた。
そうだ、全員文化祭のゲームセンターの楽しい様子を見学していたのだった。

だからこそ、文化祭は何を目的にやるのか?という定義が大事で
単に自分たちの作品発表の場でしかない、というのはせっかくのチャンスをもったいないなー
と思うのである。
文化祭の定義を「この高校のパソコン部の来年の新入生に入部させる動機付けをする場」と定義すれば
おのずと何をやればいいか、
ゲームのクオリティや、活動内容の紹介はこれでいいのか、ということが
定義に沿っているかどうか、という視点で見ることが出来る。
そして、BUZZるための、仕掛けなど個々の人はプログラミング技術はなくても
マーケティングなどの技術を試す絶好の機会でもある。

今のままでは、しょぼいBASICのゲームが数種類あるだけの発表になってしまうことが
見えてしまっているので、、まあ失敗も経験のうちだけどさ、、、、
リカバリープランとして、お助けUSBを作っておいた。

中身はAdobeAIRとScratchのソフト、それにスクラッチで動く市販ゲーム風(マリオっぽい何か、みたいなの)を30個ほど
入れたUSBを作っておいた。
ギリギリまで、見守るのだ、こりゃダメだ!となった場合にそのUSBでScratchをインストールして、
ゲームを走らせると、まるで家庭用ゲームか、アーケードゲームか、という感じ。
これをパソコン教室全PCで出来る環境を作っておいた。まあ、余計お世話、だと思うけどね。
今のままだと、失敗かしょぼい発表になって、来年新入生が来るのか?と思う内容だと困るだろうから、、、
せっかく同好会から部に昇格したんだ、どんどん人を入れるプランを考えないとさ。
自分が好きだから好きなことだけをやればいい、のは違うので。

自分の37年前と同じことをやろうとしていることがわかった。そのプランは40年前なら
成功するだろうが、今の時代では難しいだろうなぁ、と思うのであった。
今年がダメでも来年は今年の失敗を糧にやればいい、という計画でもいいと思うけどね。
そう、37年前の自分を見ているようで、放っておけない、という感じなのだ。
状況がまったく同じで、タイムマシンで自分を見に来たのかと思った。

なので、大きくなった大人の高校生が口を出すならこんな感じだ。
・発表のテーマ「第4の波」 人工知能で産業革命
・Scratchベースで、ゲームセンター 無料でもいい10円でもいい
・女子高生がメイド服で接客&チェキ (100円 家に大量のメイド服あるからな)
・変な顔ハメでBUZZ狙い
・ハッキング大会(プログラム解析)というイベントやる

これくらい、振りきれば、BUZZってイベント成功し、ハンバーグハンバーグくらいの会社なら内定もらえるだろ。
そして来年の入学予定の中3生にアピールして、新入部員を獲得するのだ!

というおっさんの妄想は終わりにして
どうなるのか見守りたいと思います。失敗するのも経験だ。

そう考えると、タイムマシンに乗って過去の自分に逢えた時にコンタクトするのか?と思えば
コンタクトしたんじゃないのか?俺。
こうやれば成功するよ!って未来の自分に教えてもらったんだろ。きっとそうだ!
問題は、どうやって俺が未来の俺を証明したか、だよな、、、

きっとエロ本の隠し場所みたいに当時の本人しか知らないことを言うんだろうな。
そういえば、タイムマシンは原理的に製造可能で未来に行ける、という記事を見た。
過去には行けないのか、むーん!
この辺は、持論の「過去を見る機械と未来を見る機械は原理がまったく違う」という
ことは当てはまっている。
そう、過去を見る機械はビデオだ。占い師が過去を当てたからと言って、
未来も同じ手法で当てることは不可能、という理屈は当たっていると思う。
占い師は過去を当てる道具、未来を当てる道具は別の技術が必要なはずなのである。

おっと道を外れた。

ということで、現在において無料でプログラミングを学ぶにはまず、Scratchがいいんじゃないの?という話です。
で、ゲームばっかりすると思う。
https://scratch.mit.edu/studios/446207/
それでいいんです。それは遊んでいるんじゃなく、動作確認なのですから!
そしてプログラムの改造を行えば、それは自然にプログラミング技術が身に着くんですよ。

じゃあまた!俺もゲームばっかりやってた!ああそうさ、まずはゲームからさ!そしたら嫌でも覚える!