E5-3

ボードゲーム戦略を題材とした Java 演習の大会中の提出コードの差分と得点推移による個人進捗の視覚化
Visualization of Personal Progress Situation
with Code Difference and Winning Point
in Java Programming Exercise with Board Game Strategy
花川 直己*1, 富永 浩之*1
Naoki HANAKAWA*1, Hiroyuki TOMINAGA*1*1 香川大学工学部*1Faculty of Engineering, Kagawa University
Email: s16g464@stu.kagawa-u.ac.jp
あらまし：ボードゲーム戦略を題材とする対戦形式の応用 Java プログラミング演習を実践している．提出された戦略同士を対戦させる大会を運営し，重付勝点度によるランキングを公開する．学生は，戦績に基いて，戦略コードを改良し，提出を繰り返す．本研究では，提出コードの得点推移を視覚化し，更新前後の差分量とも照らし合わせる．これまでの演習実践に適用し，個人進捗の状況を考察する．
キーワード：ボードゲーム戦略，Java 演習，個人進捗の視覚化

1.

はじめに問題解決型の応用プログラミングとして，ボードゲーム戦略を題材とする対戦形式での Java 演習を提案している(1)．2005 年度より，情報系学科 3 年生の必修科目において，課題の 1 つとして実践している．
ゲームとして，五目並べに石取りを加えた五五を採用している．五五は，石を取ることで局面が大きく変化する．連と取という 2 つの勝利条件があり，それぞれに攻撃と防御の優先度が考えられ，初心者でも戦略の個性が出やすい．
戦略の作成手順は，戦略方針に従って，各枡の評価値を求め，最高点の位置を着手とする(図 1)．評価値は，経験的に割り当てた値から，実戦を通して調整していく必要がある．また，局面パターンのより詳細な判別に基づいて精密化していく．学生には，プロトタイプのソースコードを提示し，最低限必要な処理をコメントで指示する．学生はまず，典型的な配置パターンの実装から始め，独自の局面分析に進んでいく．

2.

予備大会と最終大会

本演習では，作成された戦略同士を対戦させる大会を運営している．大会は，演習期間中にオープンしている予備大会と，最終的な成績確定の最終大会に分かれている．予備大会では，提出された戦略同士を総当り的に対戦させ，戦績や順位を公開する．
これらの情報を基に，学生は自身の戦略を修正し，何度も提出を繰り返すことができる．提出締切後に，最終大会として，各自の最強戦略同士での総当り対戦を行う．これにより，学生は試行錯誤的なプログラミングによる持続的な戦略修正を動機付ける．
これらの大会を運営するため，大会運営サーバ
WinG-CS を開発している．2011 年度から新サーバに移行し，本格的に運用を開始した．強さの指針となる指標戦略を導入し，具体的な目標を提示した．2013年度からはレーティングとして WWG を導入した(2)．

3.

予備大会での個人の得点推移グラフ STG

大会期間中の個人の進捗状況については，まずは提出ごとの得点推移について調べた．ここで，図 2のような得点推移グラフ STG を用いる(3)．STG では，横軸を大会開始から終了までの相対時間とし，縦軸を外部評価としての WWG とする．
STG は，大会期間のよって傾向が異なる．大会序
盤は，盤面の走査や評価値の調整によって外部評価が上昇する．中盤は点数の伸びづらい停滞期がある．
このときの評価の上下は，試験的な提出によるものである．終盤にかけて，評価が高い部分で安定する．
これは，先読みやシミュレーションによる，安定した強さの戦略の実装によるものである．
しかし，本演習における問題点として，対戦形式の演習である．そのため，時間経過によって STG の形が変化する．今後，対戦シミュレーション等による，演習期間中の STG の変化について，調査する必要がある．

4.

2013 年度の STG の傾向分析

2013 年度の演習における，学生の STG を図 3 に示す．WWG については演習終了時の値を利用している．また，WWG によって，受講生を 4 群(a)～(d)に分割した．第 1 群(a)については，殆どが中盤から定 期 的 な 提 出 を 行っ て いた ． 序 盤 か ら 提 出毎 に
WWG が伸びている学生が多い．また，大きく WWGが上下する学生も数名おり，熱心な試行錯誤をしていると思われる．第 2 群(b)については，第 1 群と同様に継続的に提出している．第 3 群(c)については，― 365 ―

教育システム情報学会 JSiSE2016
第41回全国大会 2016/8/29-8/31

序盤に提出が見られるものの，その後空白期間がある学生が多い．第 4 群(d)は，序盤から中盤にかけての提出数がかなり少ない．終盤になって提出を始めているが，試行錯誤中に締切となっている．そのため，実装が間に合っていない状態であるといえる．

5.

(4) 花川直己, 富永浩之: “ボードゲーム戦略を題材とした Java 演習の予備大会における提出コードの個人進
捗の分析手法”, 情報処理学会 第 78 回全国大会,Vol.78, pp.901-902 (2016).

三連
四連
三々

盤面の石の配置パターンを認識

提出コードの差分量による追跡得点の推移とコードの変更量の関係を調査する．
図 4 は，学生の提出ごとのコードの行数の差分量である．図中の青は増加量，赤は減少量となっており，変化量は緑で示している．ラベルは，大会期間中の相対時間である．(a)は，上位陣の学生のグラフである．取組みの開始はやや遅い．提出の序盤は変化量が大きく，増加傾向にあることから，新規の戦略の実装を進めている．中盤から後半にかけて，変化量が小さくなっていることから，評価値の修正やパターンマッチの充実を行っている．(b)は，中下位に位置する学生の差分量である．取組みは早い時期から行っている．序盤の提出については変化量が少ない．
目視にて確認を行ったところ，提示している戦略の評価値の調整を行っていた．中盤から終盤にかけて大きくコード行数の変化が見られる．これは，新規の関数の実装を行っていた．

6.

連重視
取重視

評価戦略を決定

攻撃
防御

各マスの評価値を計算
一定以上の評価値のマスを列挙

50

詳細な再評価による着手の決定

506070406040

対戦実行による試行錯誤

70

図 1 戦略プログラムの組立て方

図 2 STG による得点推移の可視化(a) 第 1 群 9 人(b) 第 2 群 9 人(c) 第 3 群 9 人(d) 第 4 群 10 人

おわりにボードゲーム戦略を題材とする Java プログラミン
グ演習における，学生の個人進捗の分析を行っている．得点推移グラフ STG を用いて，学生の演習中のWWG の推移を調査した．加えて，提出毎のコードの差分の量について調査した．
今後の課題として，より詳細な学生の個人進捗の分析を試みる．STG とコード差分グラフによる，点数上昇の要因の調査を行う．また，コード更新の追跡手法 TDQP と組み合わせる(4)．コードの量的指標として，適切なものを取り上げる．特に，本演習はオブジェクト指向の Java 言語による実装であるため，行数ではなく，トークン数などの利用が考えられる．
定量的な分析を行い，学生の振舞いパターンの検出を試みる．WinG-CS に組込み，教員の指導の支援につなげる．

図 3 2013 年度の成績群ごとの STG(a) 第 1 群 0.8264 49 回

参考文献
(1) 尾崎浩和, 富永浩之, 林敏浩, 山崎敏範: “ボードゲームの戦略プログラミングを題材とした Java 演習の支援 シ ス テ ム の 開 発 ”, 情 処 研 報 , Vol.2006, No.108,
pp.1-8 (2006).
(2) 山田航平, 富永浩之: “ボードゲームの戦略プログラ
ミングを題材とした Java 演習支援 ‐指標戦略の導入と重み付き勝点度による結果分析‐”, 教育システム
情報学会 研究報告, Vol.28, No.2, pp.127-134 (2013).
(3) 花川直己, 玄馬史也, 阿部隆幸, 富永浩之: “カードゲーム戦略を題材とする応用 C プログラミング演習の支援と実践 ‐大会中の提出コードの更新状況による個人進捗の分析手法‐”, 信学技報, Vol.115, No.492,pp.51-58 (2016).

― 366 ―(b) 第 3 群 0.3472 45 回

図 4 提出毎のコード差分の推移