よく聞かれる質問に,「ビスケットをやったあと何を勉強すればよいですか」というのがあります.ビスケットは必ずしもコンピュータの専門家を目指していない,すべての人を対象に作りましたが,この質問は,もう少し専門的な方向に進むにはどうしたらよいですか?という意味でしょうね.
それに何と答えたらよいか,これまでずっと考えて来ました.ビスケットの次はスクラッチでしょうという人たちも居るかもしれません.でも僕はやはり本物の言語に進んで欲しいと思っています.もちろん,キーボードの入力ができないといけませんが,その方がずっと何でもできる感がありますから.それに最近の言語は小学校高学年くらいから十分に進めることができるくらい易しく出来てます.
では,その本物の言語で何を作ってもらうか.
もう,ゲームは作らなくていいと思います.というのはゲームはビスケットで十分に作れるからです.ビスケットでは作れないゲームというのもあるにはありますが,売り物・製品としてのゲームに近くなるだけで,ビスケットから比べて作業が大変なわりには,ビスケットでゲームを作ったとき以上の面白さには中々ならないと思うからです.もうちょっとレベルの高いことをやらせたいですね.
で,やはり僕はプログラミング言語を作るということをやってもらいたい.プログラミング言語は,コンピュータのパワーの源みたいなものです.コンピュータが発展して来た理由は,一つがハードウェアがもの凄く進化したこと.どんどん小さく安く高性能になって行った.そしてもう一つのソフトウェア側の理由が,プログラミング言語を作ったことです.プログラミング言語が高性能になればなるほど,簡単にすごいプログラムを作れるようになります.その両輪でコンピュータが発展して来たのだと僕は思っています.
プログラミング言語はどういうものかといっても,それはなかなか何かに例えて説明することは難しいですね.「プログラムは料理のレシピに似ている」ということは良く言われたりしますが,その例えからは,プログラミング言語にまでは行き着かないですね.一つのプログラミング言語を知ったとしても,これから発明されるであろうプログラミング言語の可能性の広がりは想像できないでしょう.結局,プログラミング言語とは何かを知るには,少なくとも二つ以上のプログラミング言語を知っている必要があると思います.
そこで,今回GWに,ビスケット塾をやっているNPO法人デジタルポケットにお願いして,特別講座を開催させてもらうことにしました.Javascriptの入門なんだけど,題材がビスケットを作る,という挑戦です.対象はビスケットを良く知ってて,キーボードがそこそこ打てる人.一応小5以上です.
ビスケットのメガネをどうすればどう動くか,というのは大体わかると思いますが,同じ動きをJavascriptにさせるにはどうしたらよいでしょうか.そういうことを順番に考えて行きます.
もちろんビスケットには,非常に難しいアルゴリズムが入っているので,それを全部つくるということは無理なので.ここでは,ビスケットを少し簡単にしたミニビスケットに挑戦します.少しといっても,ビスケットで作った大抵のゲームはこの範囲で作れてしまいますから,そこそこパワーがありますよ.
プログラミング言語には大きく分けて,コンパイラとインタプリタという2種類があります.最近よく目にする言語はインタプリタが多いですが,それらを裏で支えている言語がコンパイラです.
インタプリタはプログラムを解釈しながら実行し,コンパイラは最初に全部解釈してしまって,一気に実行するというものです.ビスケットは当然インタプリタです.たとえばプログラムの実行中にプログラムの中身を変更すると途中から実行が変わるという面白い性質を持っています.ビスケットもメガネの中を途中でいじると魚の動き方がすぐに変わりますよね.
でも,今回はビスケットのコンパイラに挑戦です.途中でビスケットのプログラムを変更することはできません.まずは今まで通りに,インタプリタのビスケットで動きを作ります.それが完成したら,今度はコンパイラにかけて,そのビスケットのプログラムと同じ動きをするJavascriptのプログラムを生成する,ということです.先ほど言ったミニビスケットというのはここの部分でして,あまり複雑なビスケットのプログラムは受け付けません.限定したビスケットのプログラムだけJavascriptのプログラムになる,ということです.
さて,コンパイラを作るときに,最初によくやるのが,人間が手作業でコンパイラの代わりをすることです.なにかビスケットのプログラムを用意します.そしたら,それと同じ動きをするJavascriptのプログラムを人間がコンパイラになって,変換して行くのです.たとえば,魚が左に進むように作りました.それと同じ動きをするプログラムは魚のx座標を減らして行くことになりますよね.魚がボールにぶつかったとき,すこし跳ね返りました.それはと同じ動きをさせるには,魚とボールがぶつかるかどうかを調べるて,ぶつかったら,それぞれボールと魚の座標を変化させます.
部品が回転しないようにして作れば,ビスケットは結構簡単につくれます.それでもUFOにロケットが当たるゲームとか迷路を抜けるゲームくらいはつくれます.部品が回転できるようにすると,一気に難しくなって,三角関数が登場しますが,これはプログラミング言語とは別の話なので,そういう計算が得意な人だけやればよいです.
コンパイラの良さは,いろんなところで動かしやすいということですね.インタプリタのビスケットはFlashで作られていたので,Flashが動くパソコンじゃないと作れませんでした.ところがコンパイルしてできたJavascriptはスマホやiPadでも動きます.iPad でも自分の作品を見ることだけはできるようになるんですよね.すごいでしょ.
1日だけの講座なのでどれくらい難しいところまで進めることができるか不明ですが,いままでビスケットの中身はブラックボックスだったのが少しはぼんやりと見えるくらいまで行ければよいなと思ってます.目標としては,自分が作ったビスケットのプログラムを自分でJavascriptに変換して,iPad などで見れるようにする,ってところですかね.
ビスケットのデータ構造はXMLなので,本当のコンパイラはこのXMLから自動的にJavascriptのプログラムを生成してくれればよいのですが,それはXMLを操作する方法とかわかればできるようになるかな.
GWスペシャル企画「ビスケットの作り方」
それに何と答えたらよいか,これまでずっと考えて来ました.ビスケットの次はスクラッチでしょうという人たちも居るかもしれません.でも僕はやはり本物の言語に進んで欲しいと思っています.もちろん,キーボードの入力ができないといけませんが,その方がずっと何でもできる感がありますから.それに最近の言語は小学校高学年くらいから十分に進めることができるくらい易しく出来てます.
では,その本物の言語で何を作ってもらうか.
もう,ゲームは作らなくていいと思います.というのはゲームはビスケットで十分に作れるからです.ビスケットでは作れないゲームというのもあるにはありますが,売り物・製品としてのゲームに近くなるだけで,ビスケットから比べて作業が大変なわりには,ビスケットでゲームを作ったとき以上の面白さには中々ならないと思うからです.もうちょっとレベルの高いことをやらせたいですね.
で,やはり僕はプログラミング言語を作るということをやってもらいたい.プログラミング言語は,コンピュータのパワーの源みたいなものです.コンピュータが発展して来た理由は,一つがハードウェアがもの凄く進化したこと.どんどん小さく安く高性能になって行った.そしてもう一つのソフトウェア側の理由が,プログラミング言語を作ったことです.プログラミング言語が高性能になればなるほど,簡単にすごいプログラムを作れるようになります.その両輪でコンピュータが発展して来たのだと僕は思っています.
プログラミング言語はどういうものかといっても,それはなかなか何かに例えて説明することは難しいですね.「プログラムは料理のレシピに似ている」ということは良く言われたりしますが,その例えからは,プログラミング言語にまでは行き着かないですね.一つのプログラミング言語を知ったとしても,これから発明されるであろうプログラミング言語の可能性の広がりは想像できないでしょう.結局,プログラミング言語とは何かを知るには,少なくとも二つ以上のプログラミング言語を知っている必要があると思います.
そこで,今回GWに,ビスケット塾をやっているNPO法人デジタルポケットにお願いして,特別講座を開催させてもらうことにしました.Javascriptの入門なんだけど,題材がビスケットを作る,という挑戦です.対象はビスケットを良く知ってて,キーボードがそこそこ打てる人.一応小5以上です.
ビスケットのメガネをどうすればどう動くか,というのは大体わかると思いますが,同じ動きをJavascriptにさせるにはどうしたらよいでしょうか.そういうことを順番に考えて行きます.
もちろんビスケットには,非常に難しいアルゴリズムが入っているので,それを全部つくるということは無理なので.ここでは,ビスケットを少し簡単にしたミニビスケットに挑戦します.少しといっても,ビスケットで作った大抵のゲームはこの範囲で作れてしまいますから,そこそこパワーがありますよ.
プログラミング言語には大きく分けて,コンパイラとインタプリタという2種類があります.最近よく目にする言語はインタプリタが多いですが,それらを裏で支えている言語がコンパイラです.
インタプリタはプログラムを解釈しながら実行し,コンパイラは最初に全部解釈してしまって,一気に実行するというものです.ビスケットは当然インタプリタです.たとえばプログラムの実行中にプログラムの中身を変更すると途中から実行が変わるという面白い性質を持っています.ビスケットもメガネの中を途中でいじると魚の動き方がすぐに変わりますよね.
でも,今回はビスケットのコンパイラに挑戦です.途中でビスケットのプログラムを変更することはできません.まずは今まで通りに,インタプリタのビスケットで動きを作ります.それが完成したら,今度はコンパイラにかけて,そのビスケットのプログラムと同じ動きをするJavascriptのプログラムを生成する,ということです.先ほど言ったミニビスケットというのはここの部分でして,あまり複雑なビスケットのプログラムは受け付けません.限定したビスケットのプログラムだけJavascriptのプログラムになる,ということです.
さて,コンパイラを作るときに,最初によくやるのが,人間が手作業でコンパイラの代わりをすることです.なにかビスケットのプログラムを用意します.そしたら,それと同じ動きをするJavascriptのプログラムを人間がコンパイラになって,変換して行くのです.たとえば,魚が左に進むように作りました.それと同じ動きをするプログラムは魚のx座標を減らして行くことになりますよね.魚がボールにぶつかったとき,すこし跳ね返りました.それはと同じ動きをさせるには,魚とボールがぶつかるかどうかを調べるて,ぶつかったら,それぞれボールと魚の座標を変化させます.
部品が回転しないようにして作れば,ビスケットは結構簡単につくれます.それでもUFOにロケットが当たるゲームとか迷路を抜けるゲームくらいはつくれます.部品が回転できるようにすると,一気に難しくなって,三角関数が登場しますが,これはプログラミング言語とは別の話なので,そういう計算が得意な人だけやればよいです.
コンパイラの良さは,いろんなところで動かしやすいということですね.インタプリタのビスケットはFlashで作られていたので,Flashが動くパソコンじゃないと作れませんでした.ところがコンパイルしてできたJavascriptはスマホやiPadでも動きます.iPad でも自分の作品を見ることだけはできるようになるんですよね.すごいでしょ.
1日だけの講座なのでどれくらい難しいところまで進めることができるか不明ですが,いままでビスケットの中身はブラックボックスだったのが少しはぼんやりと見えるくらいまで行ければよいなと思ってます.目標としては,自分が作ったビスケットのプログラムを自分でJavascriptに変換して,iPad などで見れるようにする,ってところですかね.
ビスケットのデータ構造はXMLなので,本当のコンパイラはこのXMLから自動的にJavascriptのプログラムを生成してくれればよいのですが,それはXMLを操作する方法とかわかればできるようになるかな.
GWスペシャル企画「ビスケットの作り方」