SP-6

ボードゲーム戦略を題材としたプログラミング演習の大会運営サーバにおけるコードメトリクスの提示機能の検討
Presentation Function of Code Metrics in Contest Management Server
for Programming Exercises with Board-Game Strategy
花川 直己*1, 富永 浩之*1
Naoki HANAKAWA*1, Hiroyuki TOMINAGA*1*1 香川大学工学部*1Faculty of Engineering, Kagawa University
Email: s12t253@stmail.eng.kagawa-u.ac.jp
あらまし：問題解決型の応用プログラミングとして，ボードゲーム戦略を題材とする対戦形式での Java演習を提案し，実際の授業で実践している．支援システム WinG を開発し，提出された戦略同士を対戦させる予備大会を運営して，順位や戦績を公開する．試行錯誤的なプログラミングを体験させ，持続的な戦略修正への動機付けを行う．2013 年度の最終大会の戦略について，コードメトリクスを用い，WWG との相関性について分析を行った．分析結果から，相関性のあるコードメトリクスを利用した指標を予備大会中に提示する機能の追加を検討する．
キーワード：応用 Java プログラミング演習，ボードゲーム戦略，大会形式の競争型学習

1.

はじめに

大学情報系の応用的なプログラミング演習では，C++/Java 言語などオブジェクト指向の導入，ソフトウェア開発手法の実践などが中心となっている．しかし，提示した題材が受講者の興味と程遠いと，具体的なイメージが湧きにくく，プログラミングの到達目標を描きにくい．そこで，知識情報処理の分野から，ゲーム戦略を題材とする演習が試みられている．これには，競争型学習の要素も盛り込まれ，継続的な修正の動機付けへの効果が期待される．
本研究では，ボードゲームによる対戦形式でのJava 演習を提案している(1)．ゲームは，五目並べに石取りを加えた五五を採用する．五五は，石を取ることで局面が大きく変化する．連と取という 2 つの勝利条件があり，それぞれに攻撃と防御の優先度が考えられ，初心者でも戦略の個性が出やすい．受講者は，知識情報処理の応用課題として，他と対戦する戦略プログラムを作成する．本演習は，情報系学科の 3 年次の必修科目の課題として，2011 年度から実施している．

2.

予備大会と最終大会作成された戦略同士を対戦させる大会を運営するために，大会運営サーバ WinG-CS を開発している．
WinG-CS は，提出された戦略プログラム同士を対戦させ，戦績や順位を公開する．演習期間中は，予備大会として，対戦結果を参考に，何度でも戦略を提出できる．締切時に各自の最強戦略で総当りの最終大会を実施する．これにより，試行錯誤的なプログラミングを通して，持続的な戦略修正を動機付ける．
強さの指針として，3 段階の指標戦略を提示している．受講者の競争意欲の刺激を図るため，具体的な目標として提示する．強さの段階(強・中・弱)ごとに，複数の指標戦略を用意する．対戦相手のレーティングを考慮した重付勝点度(WWG)を用いている．WWG によって，見かけ上の強さや相性によるバイアスを減らし，順位の妥当性を高めることができる．予備大会の終盤に間引対戦を導入し，大幅な効率化を行っている．迅速に定期対戦の結果を反映し，戦略修正の繰返しを活性化させる．

3.

戦略コードの内部評価の必要性

戦略の作成手順は，戦略方針に従って，各枡の評価値を求め，最高点の位置を着手とする．評価値は，経験的に割り当てた値から，実戦を通して調整していく必要がある．また，局面パターンのより詳細な判別に基づいて精密化していく．受講者には，プロトタイプのソースコードを提示し，最低限必要な処理をコメントで指示する．典型的な配置パターンの実装から始め，独自の局面分析に進んでいく．
本演習では，戦略同士の対戦による戦績をプログラムの外部評価として用いている．しかし，順位が高い戦略が，必ずしも質の良いソースコードとは限らない．そのため，実行結果という外面的な評価だ
けでなく，モジュール設計やソースコードの書法など，内面的な評価も考慮しなければならない．現在，このような評価については，最終大会が終了した後，設計，ソースコード解説，実験状況などをまとめた課題レポートを提出させ，その評価を加味することで補っている．しかし，現状の方法では，事後の分析となるため，大会得点のように，即時のフィードバックを行うことが困難である．
そこで，定量的かつ自動的な内部評価の手法として，ソフトウェアメトリクスに着目する(2)．特に，コードメトリクスとして，コードの量，冗長性，構造化，複雑度などを計測する．

― 251 ―

教育システム情報学会 JSiSE2015
第 40 回全国大会 2015/9/1～9/3

ただし，戦略プログラムは，if-then 形式のプロダ
クションルールに近く，一般的なプログラムとは異なった特徴を有している．また，オブジェクト指向の特性や実行ライブラリの影響もある．そこで，絶対的な指標というより，他のコードから大きく逸脱した特異なコードを検出することに焦点を当てる．

4.

コードメトリクスによる分析と考察

2013 年度の最終大会の戦略コードについて，WWG と各指標との相関性について分析した．対象とする戦略コードの事前処理として，コメントや空行を削除したコードを用いる．
コードの量については，戦略コードの行数を用いる．図 1(a)は，行数と WWG についての相関性を示す散布図である．下位陣は，200 行前後と行数が少なく，明らかな努力不足といえる．一方，上位陣は，200 行から 500 行の行数を記述している．行数とWWG については，弱い正の相関がある．
冗長性については，コルモゴロフ情報量に基づく自己相関を用いる．これは，提出された戦略とサンプル戦略を連結したファイルと，それを圧縮したファイルのサイズの比率である．この比率が小さいと，相対的な情報量が少なく，類似なコードが多いといえる．圧縮率と WWG の相関性について，図 1(b)に示す．上位戦略は，圧縮率が低く，独自の戦略を多く記述している．一方で，上位と下位で圧縮率が同程度となっているものがある．これは，コードの量が影響しているのではないかと考えられる．
構造化については，メソッド定義の個数を用いる．
個数と WWG の相関性について，図 1(c)に示す．実行ライブラリを提供しているためか，独自メソッドの定義は，あまり多くない．また，ばらつきも多く，WWG とはほぼ相関がない．
複雑度については，循環的複雑度の和を用いる．
これは，モジュール構造土壌の複雑さの測定値の和であり，分岐構文と反復構文の数に比例する．一般に，この数値が高いほど，拡張や修正が困難になる．
複雑度と WWG の相関性について，図 1(d)に示す．
上位戦略は複雑度が低く，保守性の高いコードが多い一方，中位の戦略は，複雑度が高いコードが多い．
下位の戦略には，複雑度の低いコードも多いが，これは未熟な戦略で条件式が少ないからではないかと考えられる．WWG とはほぼ相関がない．

5.

を知り，今後の修正に注意を促す．
現在，Win G-CS への機能の導入を検討している．
提示するメトリクスは，コード量と冗長性の 2 つを考えている．受講者は提示された散布図から，自身の戦略のみ選択することができる．選択すると，詳細な分析の内容を表示する．一方で，教員はすべての戦略を選択することができる．選択すると，戦略の詳細な情報と，記述内容を表示する．
先行として，カードゲーム戦略の大会運営サーバ
WinT で既に実現している機能を参考にする(3)．特に，各点と回帰直線の距離を標準偏差で割った回帰的指標を導入する．さらに，複数のメトリクスを組み合わせ，より精密な検出を目指す．

6.

おわりにボードゲーム戦略を題材とする Java プログラミン
グ演習を提案し，支援システム WinG を開発している．2011 年度から，予備大会と最終大会を運営している．2013 年度の演習結果について，コードメトリ
クスを用いて，WWG との相関性を分析した．今後は，コードメトリクスの効果的な提示機能を実装していく．これにより，教員が適切な指導を行い，受講者がフィードバックに役立てることを目指す．
参考文献
山田航平, 富永浩之: “ボードゲームの戦略プログラ
ミングを題材とした Java 演習支援 －指標戦略の導入と重み付き勝点度による結果分析－”, 教育システ
ム 情 報 学 会 研 究 報 告 , Vol.28, No.2, pp.127-134(2013)(2) 花川直己, 山田航平, 富永浩之: “ボードゲーム戦略を題材とした Java 演習における提出コードのメトリクス分析”, 情報処理学会 第 77 回 全国大会, pp.953-954(2015)(3) 玄馬史也, 富永浩之: “ポーカー戦略を題材とする応用 C プログラミング演習の支援と実践 －大会運営サーバ WinT の提出状況とコード比較の機能の追加－”,
情処研報, 2015-CE-128, pp.1-6 (2015)

(1)

(a)

(b)

(c)

(d)

指標の検討と提示機能

本演習におけるコードメトリクスは，教育効果を高めるため，以下の目的に利用する．教員は，提出された戦略コードを全てチェックするのではなく，WWG が同程度の戦略から逸脱した，特異な戦略をチェックすることができ，負担が大きく軽減できる．
具体的には，コピペや手抜きなどの不適切なコードを摘発する．全体的な傾向を知り，全体へ補足する．特異なコードを検出し，該当する受講者に個別に指導する．また，学生には，自身のコードの傾向― 252 ―

図 1 コードメトリクスと WWG の相関性