「ナビつき!つくってわかるはじめてゲームプログラミング」と「Scratch」遊んでみた
はじめてゲームプログラミングとScratch、どっちがいいの?
2021年6月11日に任天堂から発売された「ナビつき!つくってわかるはじめてゲームプログラミング」は発売日に購入していた。少しづつプレイして、ようやく8月13日にナビゲーションつきのモードをクリアした。このソフトに関しては”ゲームを作る”という観点よりも”プログラミング習得”という観点から興味を持たれた方も多いだろう。特にこれから授業でプログラミングを学ぶお子さんのいる家庭の保護者の方は気になっていたのではないだろうか。
一方で私は2021年の6月、ちょうどこのソフトが発売される直前からハーバード大学のコンピュータサイエンスの”CS50”という入門講座が日本語で公開され、しかも無償で受講できるということでチャレンジを開始したばかりであった。課題もオンラインで提出すればOKで、ファイナルプロジェクトまで承認されれば修了証までもらえるという。ネットで受講された方の感想などを読むと「ハードルはそれほど高くない」ということだったので挑戦することにしたのだが、プログラミング初心者の私にはまだちょっと難しいみたいである。ほんとに少しづつ課題を進めるのが精一杯だ。
それはさておき、そのCS50の最初の課題(Week0)では「Scratch」で何かをプログラミングして提出することになる。Scratchというのは、小学生から中学生あたりまでをターゲットとしたプログラミング教育のプロジェクトみたいなものである。Scratchのサイトに飛べば、開発環境とか気にせずに、作ったり遊んだりしながらプログラミングを学べる。いちおうは子供向けなのではあるが、日本語でプログラムを組めるし大人が最初に手を出すのにも超オススメなサイトである。同時に母国語でプログラミングできるということの利点を嫌というほど感じると思う。こりゃ日本がITで遅れるわけだわ……あと、やっぱり国語力も大事です。
という訳で、「どっちが」というか「どっちも」入り口として正解だし、両方とも遊んだほうがいい。というのが私の感想だ。できれば保護者の方も一緒に悩んで一緒にプロジェクトを完遂すれば、いい思い出になると思う。
ナビつき!つくってわかるはじめてゲームプログラミング
「ナビつき!つくってわかるはじめてゲームプログラミング」(以下、ナビつく)は、ノードンというゲームを作るのに必要な機能やモノをキャラクター化して、それらを線でつなげることでプログラムを組み立てる。例えば、ボタンノードンのBとヒトノードンのジャンプ項目を線でつなげればBボタンでジャンプするキャラクターが出来上がる。
コードを一切書くことなく非常にシンプルな手順でプログラムをすることができる。ゲームをプレイする実行画面とノードンガレージと称するプログラミング画面を切り替えてゲームを作っていく。組み立ててすぐ実行して確かめることができるのはプログラミングを学ぶうえで非常にプラスである。ゲーム作成には有線マウスも使えるそうだが、線を引いたり画面を切り替える頻度が高いので、大きなTV画面で作るよりも手元で作るのがおすすめだ。完成したゲームをヒトに遊んでもらうときには、TVに繋いでみんなで鑑賞しながら遊ぶのがいいだろう。
ダウンロード版とパッケージ版では値段が違うのだが、パッケージ版には「ノードンふりかえりカード」というノードンの解説が書かれたトランプのようなカードが同梱されているためだ。ダウンロード版を買ったけど 「ノードンふりかえりカード」 がほしいという方は、マイニンテンドーストアでカードだけ購入できるのでご安心を。
ゲームのプログラミング入門には最適と思われるナビつくではあるが、残念な部分が無いわけではない。とてもとっつきやすい印象のナビつくだが、実際に遊んでみると画面の複雑さに面食らう。しょうがないといえばしょうがないのであるが、画面じゅうに配置されたノードンとたくさんの線をみるとたじろいでしまう。
ノードンや線のひとつひとつはシンプルに配置してつなげたものだ。だがそれが全部重なってひとつの画面に表示されていると、とてつもなく複雑に見えてしまう。あとキャラクターに銃を付けたりセンサーを付けたりするのは、ノードンの画面よりも実行画面でくっつけた方が線の数も減るし直感的だったのでは?などと手前勝手に思ったりした。
もうひとつ。ノードンをつなげていく仕組みに関しては、どう考えてもCMに出ていたような小学生にはキツいのではないかと思う部分もあった。なにせ前後左右をxやzの+値-値で表現したり、><=を使って数値の比較でキャラクターの振る舞いを制御したりとガチの内容なのだ。それだけちゃんとした内容のゲームということの裏返しなのだが、見た目のとっつきやすさの印象からすると痛し痒しといったところだ。
たぶん子供は私が考えているよりもすんなりと理解して楽しむんだろうが、私の印象では中学生以上でないと内容を理解してナビつくを進めるのは難しいと思う。ただ保護者と一緒に、ゲーム制作を進めたり途中のチェックポイントのプログラミングパズルを一緒に悩んで解いたり、サポートしてあげることで小学生でも学べることはたくさんあると思う。
いわゆる一般的に考えられているコードを書くプログラミングはナビつくではあまり学べない。しかし機能とモノ、機能と機能を組合わせることで仕組みを作っていくという意味でのプログラミングはナビつくで十分に学べるだろう。ナビつくをきっかけに世の中のいろいろなモノの仕組みに興味をもってくれたり、親子のコミュニケーションが発生するのなら、それだけで十分な意味を持つソフトだ。
Scratch
ナビつくはプログラミングを可視化して”見て”組み立てることでプログラミングを分かりやすくしたものだが、Scratchは世界中の多くの言語に翻訳されていることと、単語や短い文章をパーツとしてプログラムをコーディングしていく点が特徴だ。
子供から大人まで理解できるような分かりやすいチュートリアルがついているし、チュートリアルをすぐにコーディングして試せるのもScratchの利点だ。使えるパーツは色でカテゴリーが分類されていたり形でハメる部分が推測できたりヴィジュアル面でも配慮がされており、コーディングをしたことがなくてもそこそこ動かせるものが作れると思う。ただ”制御”や”定義”などの難しい漢字を使うものはひらがなにするか別の分かりやすい言葉にしたほうがいいと思う。
例えば「もしクリックしたら、マウスのポインターに行く」と言葉を組み立てると、そのキャラクターはマウスのポインターの方へ動く。プログラミング次第ではゆっくり動いたりボタンや方向キーで制御したりと自由に設定できる。しかも日本語で組み立てられるのでとっつきやすさは抜群だ。
Scratchで作れるのは動く絵本や紙芝居、ちょっとしたストーリーなんかも作れる。もっとプログラムを作り込めばゲームも結構複雑なものが完成させられるだろう。素材となる音や絵は公式で提供されているものから選べる。絵が得意なら自分で描いてしまうのもいいだろう。フリーで素材を提供しているユーザーから借りるのもひとつの手だが、使用するのに条件が設けてあるものもあるので注意が必要だ。
Scratchは自分で書いたコードがおかしければ、単純なものでも動かないしバグも発生する。ただキャラクターをジャンプさせるだけではエラーが出ようもないナビつくとは違う。しかしコードと実際の動きを観察しながらバグを発見したり修正したりすると勉強になる。Scratchはひとつの画面に実行画面とコードの画面が収まるインターフェイスが基本画面なのでデバッグもやりやすい。
Scratchの特徴はプログラミング言語であるところだ。上から順番に実行されていく、条件を分岐させる、ループで処理する。ナビつくと違いキャラクターをジャンプさせたいのなら”どうやってジャンプしているように見せるのか”まで自分でプログラムしなくてはいけない。それにコンピューターが理解できるようにコードを論理的に書かなくてはいけない。小さな処理なら多くの人が理路整然とコードを書けるだろう。しかしコードの量が増えたり個々の処理をまとめて制御したりしだすと思わぬところで論理が破綻しだす。そういった経験を積めるというものScratchのいいところだ。
Scratchで遊ぶことで、自分の言葉で相手がわかるように文章を書く、どう表現したら相手に伝わるのか考える、といったプログラミング以外でも役に立つようなスキルの向上に図らずも挑戦することができると思う。家族のおもしろエピソードをストーリーにして表現したり、一緒にゲームを作ったりしながら子供の成長に寄り添うのもいいだろう。
まとめ
機能を組み合わせてプログラムをまとめあげるナビつくと、機能をイチから自分(簡単な母国語)でコーディングしてゆくScratch。どちらも私のようなプログラミング初心者やこれから始める方にはピッタリだと思う。学校のプログラミングの成績に影響するかどうかは分からないけれど、どちらも遊びながら学べるという点では教材として優れている。
いまプログラミングを学んでいる子供たちが大人になる頃には、もっとシンプルで曖昧なコードでもコンピューターが処理できる言語が登場しているかもしれない。それこそ「つくナビ」と「Scratch」を足して2で割ったような言語が登場している可能性だってある。どちらも遊べる環境があるのならどちらも遊んでおいて損はないはずだ。
どちらもユーザーの作ったゲームをインターネット経由でダウンロードして遊べるようになっている。ナビつくのほうでゲームをダウンロードするには、ゲームをアップロードしたゲームIDかプログラマーIDが必要だ。ネット上でIDを公開されている方もいるので探すとすぐに見つかるだろう。どちらもクオリティの高いゲームがたくさんあって驚く。中の仕組みやコードも覗けるので気になったところをマネしてみるのもいいと思う。
最後に1年ちょっとゲームづくりを学んできた私の成果として、CS50の課題として提出した自作のゲームを貼っておく。音や絵はScratchの公式のものを使っているが、中身は全部私がイチからコーディングしたものである。
キャラクターの投げたボールをクリックするだけの単純なルールで、画面下のハッピーゲージがいっぱいになればクリアだ。ゲームオーバーは無し。誰でもクリアできる甘々な設定のゲームだ。ボールの色や大きさをランダムに生成したり、リプレイ機能を付けたりと地味に頑張っている。興味のある方は遊んでみてほしい。緑色の旗をクリックすると”プログラムを実行”で、赤いボタンをクリックで”プログラムの実行停止”だ。たまに動作がおかしい時があるが原因がわからない。私はまだまだ未熟なのだ。
ゲームの評価は置いとくとして、キャラクターを魅力的に演出することや音の使い方にはこだわったつもりだ。ゲームの雰囲気からファミコン時代のゲームへのあこがれとリスペクトを感じてもらえれば嬉しい。アニメ記事ばかり投稿しているが、ちゃんとゲームづくりやプログラミングも続けているのだ。ちょうどいいタイミングなのでここでアピールしておこう。