WISS 2016

Loops : プログラミング初学者支援のためのカードゲームの提案
吉元 佑太* 水口 充*

概要． 本研究では，プログラミング未経験者，及び，初学者を支援する目的で，四則演算，繰り返し，条件分岐といったプログラミングの基礎的な事柄を遊びながら学ぶことができるカードゲームを提案する．本ゲームは 2〜4 人の対戦型で，ゲームのルールを理解したり，対戦相手に勝利するための戦略を練る過程で，プログラミングの基礎を理解できるような仕組みを取り入れている．

1

はじめに

今日，大学でのプログラミング教育においては，学習効果を高められるような教材の工夫，高等教育
以下では未来を見据えた人材育成や教育システムの構築が求められており[1]，プログラミングに関心が無い人々を含めた未経験者や初学者にとって，理解しやすい教材やツールが必要となる．
プログラミング未経験者や初学者がプログラミングを学ぶためのツールは，MIT による Scratch[2]や文部科学省によるプログラミン[3]といった事例や，山本らによる Puzzle Programming[4]など，ビジュアルプログラミングの形態をとるものや，Carlos Lagrange による Code Cards[5]など，紙ベースによるものもあり，様々なものが存在する．
ビジュアルプログラミングは処理の流れやアルゴリズムを理解することに適している反面，その後にテキストベースのプログラミング言語を学ぶ際に，記法の差が要因となり学習が上手く進まない場合がある．
そこで本研究ではテキストベースのプログラミング言語に触れ，複数人で遊びながらプログラミングを学ぶことができるカードゲーム Loops と，そのWeb アプリを提案する．

2

Loops

2.1 概要Loops は，プログラミングにおける四則演算，繰り返し，条件分岐といったプログラミングの基礎的な事柄を題材としたカードゲームである(図 1)．ゲーム内の進行をプログラミングにおける繰り返し処理に見立てている．各プレイヤーは繰り返しの終了
Copyright is held by the author(s).
* 京都産業大学大学院 先端情報学研究科

条件カードと変数を操作する実行文カードを持ち，順番に実行文カードを出して変数の値を変化させていき，自分の番で終了条件が成立していたら変数の値の合計を得点とし，1 ラウンド終了となる．これを繰り返して，合計得点を競う．プレイヤー人数は2〜4 人である．4 人の場合は向かい合う 2 人がペアを組むチーム戦となる．
2.2 ゲーム内で使用するもの
カード
以下の 3 種類のカードを使用する．各種カードには C 言語の文法に則ったコードが書かれている．実際のプログラミング言語のコードを利用することで，遊びながらもプログラミングの片鱗に触れることができる．
loop カード
while 文と for 文があり，while 文には終了条件が書かれている．for 文には開始時の処理，終了条件，1 回繰り返すごとの処理が書かれている．
break カード
プレイヤーが上がるための終了条件が書かれている．
statement カード
変数の値を変更する処理，その他の処理が書かれている．
変数盤と変数マーカ変数の値を記録するために使う．変数には alpha，beta，gamma，i の 4 つを使用する．i は繰り返しの回数を数えるためのカウンタ変数である．それぞれの変数の現在の値のマスにマーカを置く．変数がマイナスの値になった場合は裏返す．変数盤や変数マーカを使用することで，変数の値の変化や，ループ 1 回の処理の流れが明瞭化される．

WISS 2016

際には，各カードはシャッフルせずにそのままの状態で進行する．statement カードが足りなくなった場合には使用済みのカードをシャッフルしてゲームを続ける．
2.4 Web アプリ版
本研究ではプロトタイプとしてカード版の Loopsを制作している．これに並行して，手軽に体験してもらうことを狙いとして Web 上で複数人で対戦が可能なバージョンの開発にも取り組んでいる．

3

図 1. カードと変数盤のプロトタイプ．

2.3














1 ラウンドの流れ(2 人プレイの場合)すべての変数マーカを 0 の位置に置く．
各カードはシャッフルし，loop カードと break
カードは重ねて伏せておく．
statement カードを伏せた状態で 5 枚ずつ配る．
このカードは自分だけ見ることができる．
残ったカードは重ねて伏せておく．
各プレイヤーは break カードを 2 枚ずつ引き，自分の前に表向きにして置く．
スタートプレイヤーは loop カードから 1 枚ひき，表向きにして置く．
スタートプレイヤーから順番に，手持ちのstatement カードを場に出す．statement カー
ドの内容のとおりに変数の値を変更する．カードを出した後に statement カードを山から一枚引き，補充する．
スタートプレイヤーに順番が戻ってきた際に，loop カードに書かれている一回繰り返すごとの処理を行う．
どちらかのプレイヤーがカードを出し終わった地点で，カードを出したプレイヤーの break
カードの条件が成立していた場合，そのプレイヤーは break を宣言し，ラウンドはその地点で終了となる．スタートプレイヤーの番の場合は，loop カードの終了条件が成立していた場合も終了となる．
終了条件を成立させたプレイヤー(エンドプレイヤー)は，alpha，beta，gamma の 3 つの変数の値の合計を得点として獲得する．
エンドプレイヤーは次のラウンドのスタートプレイヤーとなる．新たなラウンドを開始する期待される効果

カードにはプログラムコードが書かれているので，代入文や条件式の書式に慣れることが期待できる．
また，プログラムの実行に応じて変数値が変化すること，条件分岐と繰り返しの制御構造を意識させることが期待できる．
ゲームに勝つためには，相手プレイヤーの繰り返し終了条件の成立を阻止しつつ，自分（味方）プレイヤーの条件を成立させて高得点を取得する作戦が基本となる．このためには条件を意識して変数値を制御する必要があり，簡単な暗算を行う能力や，手順を想像する能力を鍛えることも期待できる．

4

まとめ

プログラミング未経験者や初学者に，プログラミングの学習の支援を行うカードゲーム，Loops，および Web アプリ版の提案を行った．
今後はテストプレイを重ねてゲームバランスの調整を行い，Web アプリ版の実装，被験者実験による教育効果の検証を行う予定である．

参考文献[1] 日本経済再生本部 日本再興戦略 2016-第４次産業革命に向けて-. (2016/10/22 確認)
http://www.kantei.go.jp/jp/singi/keizaisaisei/[2] Scratch - Imagine, Program, Share.
https://scratch.mit.edu/ (2016/10/22 確認）[3] プログラミン | 文部科学省 (2016/10/22 確認)
http://www.mext.go.jp/programin/[4] 山本 一秀, 石黒 紀悠, 齋藤 雄輔, 芳賀 博英. パズ
ルを用いたビジュアルプログラミング教材の実装と評価. 第 13 回情報科学技術フォーラム, 第 4 分冊,pp.263-264, 2014.
[5] Code Cards. http://codecards.io/ (2016/10/22 確認)