第 2 章 先行研究
2.3 ビジュアルプログラミング言語 Viscuit (ビスケッ ト)に関する研究ト)に関する研究
2.3.3 高度な Viscuit のプログラム
図 2.14: 上級者モードにおけるViscuitのインタラクションのプログラムの例
ている.これで「割れてない卵を触ったら」という命令になる.右側には「割れ た卵」と「ひよこ」の2つの絵が入っている.これで,「割れてない卵を触ったら,
卵は割れた卵に変化して,ひよこがでてくる」という命令になる.
以上から,Viscuitにおける,表現と意味をまとめると2.4のようになる.メガ ネにおいて「左右の絵が同じ」場合は,その絵が直線に移動する.また「左右の 絵が違う」場合は,左の絵が右の絵に変化する.このとき,右の丸に絵が複数入っ ている場合は,左の絵が複数の絵に変化する.「左右の絵が同じ」で,絵に傾きが 付いている場合,絵は回転する.また「左に複数の絵」が入っていた場合は,そ の左のメガネで指示された絵の配置になったときだけ,右のメガネの状態が起こ る.最後に,「左に指マーク」が入っていた場合は,その場所を触ったときに,右 のメガネで指示された絵に変わる.基本的にこれらの組み合わせでプログラムを 作成する.よって,ユーザーは覚えることが少なく,また,これらの絵の配置で できることは直感的である.メガネの組み合わせでできることは全てが判明して いるわけではなく,近年でもメガネの組み合わせでできることが発見され続けて いると,開発者の原田はいう[25].次項では,この単純なメガネの組み合わせで作 られている高度なViscuitのプログラムを確認する.
表 2.4: Viscuitのメガネで表現できること
メガネ 絵の組合せ 意味
左右の絵が同じ 直線の移動
左右の絵が違う 絵の変化
左右の絵が同じ(傾きあり) 絵の回転
左に複数の絵 条件の指定
左に指マーク インタラクションの指定
ドが表示されているのがわかる.グリッドモードをオンにすると,絵を配置する ときに,絵がグリッドに従って配置されるようになる.メガネに絵を入れるとき も,グリッドが表示され,絵はグリッドに従って配置される.グリッドモードを オンにすると,グリッドに従った厳密な配置,厳密なメガネの実行ができるよう になる.
合同会社デジタルポケットでは不定期に,Viscuitを使ったプログラミングコン テストを実施している.2018年に開催された「パズル」をテーマにしたプログラ ミングコンテストでは,Viscuitで作られた様々なパズルが応募され,その作品は アプリ「パズルコレクション」としてリリースされている[19].
それぞれのパズルの中では,新しいパズルが発明されたり,大量のメガネを使 うことで複雑な画面の遷移や,映像表現が実装されたりしている.例えば,「猫に コイン」(図2.17)はこのコンテストの特別賞を受賞したプログラムの一つである.
このパズルは両替をテーマに作られており,落ちてくる硬貨を集めることで,より 大きい金額の硬貨に両替をし,目標である金額を貯める内容になっている.この プログラムにメガネは400個以上使われている(図2.17右).主に5つの硬貨が並 んだ時に,1つの硬貨になるメガネの実装に,多くのメガネが使われている.例え ば,1円が5枚で5円になる,というような場合の全ての並びが,1円,10円,100 円に作られている.それぞれ約60通りになるが,これは,アルゴリズムで書いた ほうが楽なのか,それともパターンを列挙したほうが早いのかについては,どち
図 2.15: Viscuitの設定画面
図 2.16: グリッドモードのViscuit
らがよい手法であるとは言い切れない面がある.このプログラムから,ユーザー は少なくとも,複雑なアルゴリズムを知らなくても,1つ1つメガネを増やしてい くだけで,複雑なゲームを作ることができることがわかる.
また,本研究で対象としている香川富士見丘幼稚園は,卒園した園児のうち,希 望者が定期的に幼稚園に通い,Viscuitの作品作りを学んでいる.2015年に,幼稚 園においてViscuitを使ったプログラミングレッスンを開始した.その当時のレッ スンを受講した年長は,現在,小学5年生になり,今もViscuitを学び続けている.
筆者は2019年に開催された第4回全国小中学生プログラミング大会に応募された,
本幼稚園のプログラミングレッスンに通う小学生の作品を分析した[31][103].そ
図 2.17: 左:猫にコインの画面,右:猫にコインのメガネの一部
図 2.18: 左:初期画面・右:矢が放たれる確率の調整の一部
の中で,児童がViscuitを使って高度なプログラムを作っていることがわかった.
図2.18右は当時小学4年生だった児童が作ったパズルゲームのメガネの一部で ある.絵は49個,メガネは156 個使われていた.このパズルはいわゆる落ちゲー で,同種の食べ物の絵が3つ並んでいるところをタッチすると得点になる.図2.18 の左がゲームの画面である.黒いモンスターが画面左上から,徐々にパズル盤面 に近づいてくる.パズルの盤面をモンスターに食べられると,ゲームオーバーと なる.よって,食べられる前に高得点を出し,クリアをしなければならない.
この児童のプログラムの特色は,メガネを大量に作ることで確率をコントロー ルしているところである.モンスターが進行するメガネの他に,モンスターが止 まっているメガネを大量に作ることで,モンスターの速度を調整している.また,
画面右下の弓矢が時々矢を放ち,その矢が画面左下の反射板にあたり,モンスター を攻撃し,モンスターの速度を調整するようになっている.図2.18の右を見ると,
上から2番目が矢を放っているメガネだが,他のメガネは1つの絵がそのまま止 まっていることを表している.この弓矢を発する仕組みは,全部で25個のメガネ が使われている.そのうち24個が弓矢が変化しない命令になっているため,1/25 の確率で弓矢が発せられるようになっている.このように任意の動作に対して,「実 行されるメガネ」と「実行されない(変化のない)メガネ」の数で確率を調整し ている.
また,図2.19は別の当時小学4年生だった児童の作品である.このプログラム
図 2.19: 左:プレイ画面・右:ステージを変えるルンバを表示するメガネ
図 2.20: 次のステージを表示するメガネ
では絵が87個,メガネは119個使われていた.このプログラムは,電車にぶつか らないようにゴールにたどり着く迷路ゲームである.このゲームは6ステージ用意 されている.1ステージクリア,もしくはギブアップすると画面上部からルンバが 横一列に並んで降りてきて,画面に配置された前のステージの絵を片付ける(図 2.19).ルンバはどの絵にぶつかっても下に向かい,ぶつかった絵を削除するプロ グラムがされている.画面下部に並べられた横棒でステージを認識していて,掃 除機が画面を掃除し終わると,画面下部の棒の色が変わり,次のステージにいく ボタンが表示されるようになっている.そのボタンを押すと次のステージが表示 される.図2.20で示すメガネがそのメガネである.メガネの左側が「次のステー ジに進むボタンを押したら」であり,右のメガネには出現するステージの絵が,そ の配置どおりに並べられて作られている.つまり,メガネの右側にステージを再 現している.
このように,Viscuitを用いても複雑なパズルやゲームが作れることがわかって いる.