情報処理学会論文誌

Vol.61 No.3 644–656 (Mar. 2020)

プログラミング教育における実績可視化システムの提案と評価
華山 魁生1,a)柗本 真佑1,b)

肥後 芳樹1,c)

楠本 真二1,d)

受付日 2019年6月4日, 採録日 2019年11月29日

概要：CI ツールなどを用いた自動テストに基づき，プログラムの正しさに焦点を置いた教育はしばしば行われている．しかし，自動テストはプログラムの振舞いを確認するだけにとどまるため，プログラムの品質に焦点を置いた教育を行うことは難しい．プログラムの品質を客観的に計測するツールは数多く開発されているものの，これらのツールは問題箇所を指摘するものであり品質の良さを褒めるものではないため，
プログラミングに対する苦手意識を学生に植え付ける可能性がある．また，品質計測ツールはメトリクス
計測結果を実測値のまま提示する．その結果には品質の高さに基準が定められていないため，学生は自身の作成したプログラムの品質がどれほどの水準を達成しているのか判断できない．結果として，学生がこ
れらのツールを使いこなすことは難しく，プログラムの品質向上にはつながっていないのが現状である．
そこで本研究では，家庭用ゲームで用いられている「実績」と呼ばれるコンセプトを取り入れ，プログラ
ムの品質を可視化する教育手法を提案する．適用実験として，学部 3 年生を対象とした授業にこの手法を取り入れ，受講生の作成するプログラムの品質向上，品質に対する受講生の意識改善，およびプログラミ
ングに対するモチベーション向上に効果があることを確認した．
キーワード：プログラミング教育，プログラム品質，自動テスト，CI ツール，実績，可視化

Proposal and Evaluation of Achievements Visualization System
in Programming Education
Kaisei Hanayama1,a)Shinsuke Matsumoto1,b)

Yoshiki Higo1,c)Shinji Kusumoto1,d)Received: June 4, 2019, Accepted: November 29, 2019

Abstract: Programming education focusing on the correctness of program behavior is often conducted with
automated testing. However, it is diﬃcult to instruct students about internal program quality since automated testing confirms only the external behavior of the program. Although there are a lot of quality
measuring tools, these tools do not praise the quality of the program but point out problems, thus it makes
them have feelings of being not good at programming. Besides, the quality measurement tools presents themeasurement result as it is. Since it does not define the criteria of program quality, students cannot judge
how high their program quality is. As a result, it is diﬃcult for students to utilize these tools and it does notlead to improve the program quality. In this paper, we propose an educational method in which visualize theprogram quality by introducing a concept called achievement, which is often used in video games. Application experiment reveals that the proposed method is eﬀective to improve the quality of the student-createdprogram, students awareness for program quality, and motivation for programming.
Keywords: programming education, program quality, automated testing, CI tools, achievement,
visualization

1

a)
b)
c)

大阪大学大学院情報科学研究科
Graduate School of Information Science and Technology,
Osaka University, Suita, Osaka 565–0871, Japank-hanaym@ist.osaka-u.ac.jp
shinsuke@ist.osaka-u.ac.jp
higo@ist.osaka-u.ac.jp

c 2020 Information Processing Society of Japan⃝

1. はじめに効率的かつ効果的なプログラミング教育の実現を目的とd)kusumoto@ist.osaka-u.ac.jp644

情報処理学会論文誌

Vol.61 No.3 644–656 (Mar. 2020)

して，自動テストに基づく教育手法*1 が数多く提案されている [1], [12]．この教育手法では，学生が提出したプログ
ラムに対してビルド/テストを自動で行い，教員が事前に定めたテストを通過したか否かで課題達成の可否を判定する．以降ではこのような形態で行われる教育をテストベー
スの教育と呼ぶ．テストベースの教育では，課題達成の可否が自動かつ即座に判定可能であるため，プログラミングに対するモチベーションの向上に一定の効果があり [20]，
また教員の負担を大きく減らすことができる [4], [10], [34]．
しかし，テストベースの教育では学生が作成したプログ
ラムの外的振舞いに主眼を置くことが多く，プログラムの内的構造の良さ，すなわちプログラムの品質は軽視される傾向にある [7], [13]．プログラミングの基礎を教える授業
ではなく，より実践的なプログラムを開発するような授業
では，プログラムの品質について考える必要があり，またそれを考える意識付けが必要である．

PMD や Checkstyle をはじめとするプログラムの品質計
測ツール自体は活発に開発されている．これらのツールはバグの温床となる潜在的な問題の検出や，プログラム品質の客観的な提示が可能である．また，Jenkins に代表される CI ツールとの相性も良く，プログラムのビルド/テスト
から品質計測までを自動で実施できる．
しかし，品質計測ツールは問題箇所を事細かに指摘するものであり品質の良さを褒めるものではない [33] ため，プ
ログラミングに対する苦手意識を学生に植え付けかねない．
また，それらのツールはメトリクスの計測結果を実測値のまま提示するため，その計測結果には品質の高さに基準が定められていない．したがって，学生に計測結果を提示してもそれをうまく活用することができず，自身の作成したプログラムの品質がどれほどの水準を達成しているのか判断できない．以上の理由から，品質計測ツールをそのままテストベースの教育に組み込むことは難しいといえる．
本研究の目的は，テストベースの教育においてプログラムの外的振舞いの正しさだけでなく，内的構造の良さという観点を受講生に意識付けさせることである．この目的を達成するため，本研究では家庭用ゲームで用いられている「実績」と呼ばれるコンセプトを導入し，以下の要件をすべて満たすような教育手法を提案する．

• 提出されたプログラムのテストを自動で行う．
• 提出されたプログラムの品質計測を自動で行う．
• 学生にも理解しやすい形で品質計測結果を提示する．
従来のテストベースの教育手法と提案手法の概念図を
図 1 に示す．提案手法では，従来のテストベースの教育の流れをふまえたうえで，さらにテストを通過したプログ
ラムに対して品質計測を行う．得られた計測結果を実績達成の可否という表現に変換し，それを学生に提示すること*1

図 1 従来のテストベースの教育手法と提案手法の概念図

Fig. 1 Concept of the conventional and proposed method.

で，プログラムの品質を簡潔に示すことが可能である．また従来の品質計測ツールのように問題のある箇所を羅列し指摘するような形で品質を示すのではなく，問題のない箇所に注目しそれを実績達成という形で褒めることにより，プログラムの品質向上に対する動機付けが可能である．さらに，これらのプロセス（ビルド/テスト，品質計測，実績
への加工）はすべて自動で行われる．これにより，迅速な課題達成の可否の判定や教育コストの削減といった従来のテストベースの教育の利点を保持したまま，プログラムの品質を提示できる．
この手法を実現するためのプロトタイプのシステムとして Ave を実装し，大阪大学基礎工学部情報科学科の 3 年生を対象とした授業に導入した．その結果，プログラムの品質に対する受講生の意識向上，およびプログラミングに対するモチベーション向上を確認できた．加えて，コード行
数やサイクロマチック数などの保守性・可読性に直結する品質項目の改善も見られた．

2. 準備
2.1 バージョン管理システムと CIバージョン管理システムとは，コンピュータ上で作成・編集されるファイルの変更履歴を管理するためのシステムを指す．このシステムを用いることで，編集箇所の差分を表示することや，1 度編集したファイルを過去の状態に戻すことなどができる．バージョン管理システムの例としては Git や Apache Subversion があげられる．

CI とは継続的インテグレーション（Continuous Integration）の略称であり，コーディングとビルド/テストを反復して実行していくことで，継続的にプログラムを開発することを意味する．これにより，小さなサイクルで開発を繰り返し行い，エラーを素早く修正することでソフトウェア
をより迅速に開発することが可能となる．また，バージョン管理システムとの連携によって，コードのプッシュからCI ツールによるビルド/テストまでを自動で実施できる．
CI ツールの例としては，Jenkins があげられる．

Automatic Assessment とも呼ばれる [12]．

c 2020 Information Processing Society of Japan⃝645

情報処理学会論文誌

Vol.61 No.3 644–656 (Mar. 2020)

2.2 テストベースの教育

事細かに指摘した細密かつ膨大なものとなる．たとえば

本研究では，バージョン管理システムや CI ツールなど

PMD には 300 を超えるルールセットが存在し，「不必要なの援用により，学生が提出したプログラムに対してビルド/

変数が存在している」といった単純な問題から，クラスのテストを自動で行い，教員が事前に定めたテストの可否で依存関係といった高度な事柄まで，幅広い項目を扱うこと評価を行う教育手法をテストベースの教育と呼ぶ．テストができる．このような計測結果は実務開発者には好ましいベースの教育における授業の流れは以下のとおりである：

一方，学生はそれを活用することができず，プログラミン( 1 ) 教員が課題となるプログラムの仕様を策定

グに対する苦手意識を植え付けかねない．
さらにメトリクスの計測を行う場合，品質の高さに基準( 2 ) 教員がプログラムの振舞いをチェックするテストを登録を設けるという難しさがある．たとえば「main メソッド( 3 ) 学生が仕様を満たすプログラムを作成のサイクロマチック数：32」という結果が得られたとして( 4 ) 学生が作成したプログラムをテスト

も，この計測結果には基準が定められていないため，学生( 5 ) プログラムが全テストを通過すれば課題達成

は自身の作成したプログラムの品質がどれほどの水準を達テストベースの教育では，プログラムの振舞いの正しさ成しているのか判断できない．以上のような理由から，品を自動かつ即座に評価でき，プログラミングに対するモチ質計測ツールをそのままテストベースの教育に導入するこベーション向上にも一定の効果がある [20]．また，教員はとは難しいといえる．

学生の作成したプログラムのすべてに目を通す必要がなくなるため，負担を大きく減らすことができる [4], [10], [34]．

3. 提案手法
3.1 実績の導入
本研究の目的は品質に関する事柄をテストベースの教育

2.3 テストベースの教育における課題
テストベースの教育には様々な利点がある一方，欠点もに取り入れ，学生の作成するプログラムの品質を向上させ存在する．特にテストベースの教育の重大な欠点として，ること，プログラムの品質に対する学生の意識を改善するプログラムの外的振舞いの正しさのみに焦点を当てた二値こと，およびプログラミングに対するモチベーションを向的なフィードバックしか与えず，プログラムの内的構造の上させることである．本研究ではこの目的を達成するため良さを軽視していることがあげられる [7]．ここでの内的構に，テストベースの教育に実績と呼ばれるコンセプトを取造の良さとは，プログラムの品質モデルとして定められた

り入れることを提案する．実績とは家庭用ゲームで用いら国際規格である ISO/IEC25010 *2 の中の一部を意味し，これている仕組みであり，一定の基準を満たすことによっての規格の 4.2.7 項に定められた保守性や可読性に直結する得られる証や業績を示すものである．本研究ではプログラ

事柄（たとえば「各メソッドが短く簡潔である」「不必要な

ムの品質の高さを特徴づける項目を実績として設定し，テ変数が存在しない」など）を指す．以降では，この内的構

ストベースの教育に取り入れる．
実績を取り入れることで品質の高さに基準を設けること造の良さを単にプログラムの品質と呼ぶ．
プログラミング言語の基本文法やデータ構造とアルゴリができ，品質が高いとはどういうことか，どうすれば品質ズムといった，プログラミングを行ううえで土台となる基が高くなるのかを学生にも理解しやすい形で示すことがで礎的な知識を教える授業では，プログラムの品質までを取きる．また，ゲーミフィケーション*3 の要素をプログラミ

り上げる必要はない．しかし，それらを身に着けたうえでング教育に導入することで，プログラムの品質に対する学

より実践的なプログラムを開発するような授業では，プロ生の意識改善とモチベーション向上を促すことができる．

グラムの品質を考える必要があり，またそれを考えるような意識付けが必要である．

3.2 実績の内容
実績項目を策定するにあたり，本研究で対象とするプロ

PMD や Checkstyle といったプログラムの品質計測ツー
ルは数多く開発されている．これらのツールはバグの温床となる潜在的な問題の検出やプログラム品質の客観的な提グラムの品質を以下の 2 種類に大別した：• メトリクスベースの実績：定量的な計測を行う項目に示が可能である．また，Jenkins に代表される CI ツールと基づく実績の相性も良く，品質計測ツールと CI ツールを組み合わせ例：「メソッドあたりの最大コード行数が 30 行以下」

ることで，学生の提出したプログラムをビルド/テストし「各メソッドのコードカバレッジの平均が 80%以上」た後に自動で品質を計測できる．

• ルールベースの実績：二値的な計測を行う項目に基づ
く実績

しかし，品質計測ツールは主に実務開発者が使用するこ例：「空の if 文が存在しない」「不必要な変数が存在とを想定している [33]．そのため，計測結果は問題箇所を*3*2

https://www.iso.org/standard/35733.html

c 2020 Information Processing Society of Japan⃝

コンピュータ・ゲームのなかで特徴的に培われてきたノウハウを
現実の社会活動に応用すること [35]．

646情報処理学会論文誌

Vol.61 No.3 644–656 (Mar. 2020)

しない」

4.2 Ave を用いた授業の流れ

メトリクスベースの実績には，閾値の異なる複数の難易テストベースの教育において，従来手法と提案手法によ度を設定し段階を設ける．たとえば「メソッドあたりの最る授業の流れを図 2 に示す．従来手法による授業の流れは

大コード行数が規定値以下」という実績を考える．この実以下の手順 ( 1 ) から手順 ( 5 ) に示すとおりである．なお，

績を達成することにより，各メソッド内の処理が小さく単リストの番号は図中の番号と一致している．

純化されるため，可読性・保守性・テストの容易性向上へと( 1 ) 教員が課題となるプログラムの仕様を事前に策定し，つながる．この実績に対し，「Lv.1：50 行以下」，
「Lv.2：30

Jenkins 上で Gradle と JUnit 5 を用いてプログラムの行以下」，「Lv.3：10 行以下」といった段階を設けることで，プログラムの品質に基準を設け理解を深めさせる．ま振舞いをチェックするテストを登録する．

( 2 ) 学生は仕様を満たすプログラムを作成したのち，Git-

た，Lv.1 を比較的容易な難易度に設定することで，実装時の意識付けとモチベーション向上に役立てる．

Bucket にコードをプッシュする．
( 3 ) GitBucket はコードがプッシュされたことを Jenkinsに通知し，Jenkins は GitBucket からコードをプルする．

3.3 実績の可視化と比較提案手法では，実績達成状況の可視化，および他者との( 4 ) Jenkins が Gradle を用いてプログラムのビルド/テス比較を行う．テストベースの教育では達成すべき課題，あるいは作成すべきプログラムの仕様が，テストという形でトを行う．

( 5 ) 学生が Jenkins 上でビルド結果を確認する．

教員によって厳密に定められている．学生はその課題を達提案手法ではテストを通過したプログラムを対象として，成するようなプログラムを各自で実装するため，その実装追加で以下の手順 ( 6 ) から手順 ( 9 ) までの操作も行う．

方法はそれぞれ異なるものになる．

( 6 ) Jenkins が品質計測ツールを用いて品質の計測を行う．

そこで，実績の達成状況を可視化し一目で判断できるよ( 7 ) Ave が品質計測ツールの計測結果を取得する．

うにすることで，プログラムの品質の高さを簡潔に示すこ( 8 ) 取得した計測結果を実績に加工する．

とができる．また，同じ授業を受講している他の学生と実( 9 ) 学生は自身の作成したプログラムによる実績の達成状
況を確認する．

績の達成状況を比較することで，学生の競争心をあおり，
プログラミングに対するモチベーションを向上させること

4.3 実績の加工方法が可能である．

品質計測ツールによる計測結果は，以下の手順で実績に

4. 実装システム：Ave

加工され，学生に提示される．なお，これら一連の手順は

4.1 概要

4.2 節で述べた手順の ( 8 ) にあたる．

本研究では，提案手法を実現するためのプロトタイプのシメトリクスベースの実績

ステムとして Ave *4 を実装した．Ave とは，Achievements

メトリクスベースの実績の場合は，学生の提出したソー

Visualization in programming Education の略称であり，プスコードの品質計測結果が Lv.1 から Lv.3 のどのレベルま

ログラムの品質を実績として可視化するシステムである．

で達成しているかを判断する必要がある．まずは品質計測提案手法ではプログラムのビルド/テストや品質計測を自ツールが，ソースコード行数やサイクロマチック数など実動で行うために，表 1 に示す外部ツールを使用した．学生の作成したプログラムの品質を計測するツールには PMD，

Checkstyle，および Format Feature Extractor [25]（FFE）
を用いた．
表 1

使用した外部ツール

Table 1 Used external tools.
ツールの種類CI ツール

使用ツール

Jenkins

ビルド/テストツール

Gradle，JUnit 5

Git プラットフォーム

GitBucket

品質計測ツール

PMD，Checkstyle，FFE *5 [25]

図 2

*5
*4

デ モ ペ ー ジ：https://sdl.ist.osaka-u.ac.jp/˜k-hanaym/ave/demo/

c 2020 Information Processing Society of Japan⃝

従来手法と提案手法における授業の流れ

Fig. 2 Class flow in the conventional and proposed method.
Java で書かれたソースコードのコーディングスタイルの一貫性を計測するツール．「代入文の "=" の後の空白」「while 文開始の波括弧（ "{" ）前の空白」などのスタイル特徴を検出し，同一ファ
イル内でコーディングスタイルが一貫しているかを計測できる．

647

情報処理学会論文誌

Vol.61 No.3 644–656 (Mar. 2020)

績として定義されている品質項目について計測を行う．次

実績達成状況の確認画面を図 3 に示す．この画面では，に Ave がその計測結果を取得してパースし，実測値を抽出

課題達成の可否，各実績の概要と達成状況，実績の達成数をする．そして，その値が Lv.1 から Lv.3 のどのレベルまで確認できる．チェックマーク（“✓”）がついているアイコの閾値を上回っている（下回っている）かを判定し，そのンは達成済みの実績，エクスクラメーションマーク
（“ ! ”）

判定結果を実績として学生に提示する．

がついているアイコンは未達成の実績を表している．なお

ルールベースの実績

以降では，これら各実績を表すアイコンを実績アイコンとルールベースの実績の場合は，学生の提出したソース呼ぶ．このように，実績の達成状況を可視化し一目で判断

コード内に実績として定義されている品質項目の違反箇所できるようにすることで，プログラムの品質の高さを端的がないかを判断する必要がある．ここで実績として定義さに伝えることが可能となる．また，画面中央の上半分がメれている品質項目とは，「空の if 文が存在しない」「不必要

トリクスベースの実績，下半分がルールベースの実績を表な変数が存在しない」などを指す．まずは品質計測ツール

している．メトリクスベースの実績には複数の段階が設けが各実績における項目について計測を行う．次に Ave がそられており，各行が「メソッドあたりの最大コード行数がの計測結果を取得してパースし，ソースコード内に違反し規定値以下」といった実績項目，各列が左から Lv.1，Lv.2，ている箇所がないかを判定する．違反している箇所がまっLv.3 の段階を表している．ルールベースの実績は段階のな

たくない場合は，その実績項目が達成されていると判定しい実績であり複数の難易度が設けられていないため，各行学生に提示する．

ではなく各実績アイコンがそれぞれの実績項目を表している．すなわち図 3 でルールベースの実績として示されてい4.4 Ave の各画面る箇所には 10 個の各実績アイコンがあるため，各々が 1 つ

Ave は以下 4 つの画面で構成される：の実績項目を表しており，合計で 10 項目の実績に対応し• 実績達成状況の確認画面（図 3）ている．

• 実績達成割合の比較画面（図 4）

各実績アイコンにマウスオーバすると，その実績の概要• 品質測定結果の確認画面が表示される．また，実績アイコンをクリックするとより• API ドキュメント

詳細な内容が確認できる API ドキュメント*6 にジャンプする．この API ドキュメントは Ave の実装と並行して我々が執筆したものであり，使用している外部ツールの説明，
コード例，実績を達成することによる利点，プログラミン
グにまつわるコラムなどを閲覧できる．これにより，プログラムの品質に関する様々な知識を提供でき，またプログ
ラムの品質に対する学生の意識付けを行うことが可能となる．
実績達成割合の比較画面を図 4 に示す．この画面では実績の一覧と，全学生のうち何%がそれらの実績を達成しているのかを確認することができる．また，緑色の棒グラフで示されている項目は達成済みの実績，灰色の棒グラフで

図 3 実績達成状況の確認画面

示されている項目は未達成の実績を表している．このようFig. 3 Confirmation view of achievement status.

に，同じ授業を受講している他の学生と実績の達成状況を比較することで，学生の競争心をあおり，プログラミングに対するモチベーションを向上させることが可能となる．

5. 適用実験
5.1 実験の目的
本研究では，Ave をテストベースの教育に導入すること
でどのような効果が得られるかを確かめるために，適用実験を行った．適用実験を行うにあたり，以下に示す項目をその目的として設定した：

Q1：Ave は実際に使用されるか．
図 4 実績達成割合の比較画面

Fig. 4 Comparison view of achievement ratio.

c 2020 Information Processing Society of Japan⃝*6

https://sdl.ist.osaka-u.ac.jp/˜k-hanaym/ave/api/

648

情報処理学会論文誌

Vol.61 No.3 644–656 (Mar. 2020)

Q2：品質に対する受講生の意識は改善されるか．

測できるメトリクスに基づく実績項目であること• 学生にとって理解しやすく，かつプログラムの品質とQ3：プログラミングに対する受講生のモチベーションは向上するか．

いう視点で重要な実績項目であること• 演習 D の「コンパイラを作成する」という課題に即し

また Ave を導入することによる副次的な効果として，受た実績項目であること

講生の作成するプログラムは品質が向上するかも確認を

表 2 および表 3 に示した実績項目は，図 4 の実績確認行った（Qsub）．

画面に示した実績項目と対応している．ルールベースの実

5.2 適用対象績については，4.4 節で述べたとおり Other と記された行

Ave の適用実験として，大阪大学基礎工学部情報科学科にある 10 個の実績アイコンがそれぞれ表 3 に示す 10 項目の学部 3 年生を対象として開講されている情報科学演習 Dの実績と対応している．また表 2 における Coverage の実（以降，演習 D）という授業に Ave を取り入れた．演習 D

績については，一部の課題でのみ使用されている実績であでは Java を用いて，Pascal を模した言語で記述されたプるため，図 4 中には表示されていない．

ログラムをアセンブラ言語 CASLII で記述されたプログラ
ムに変換するコンパイラを作成する．具体的には，演習 D

5.4 データの収集方法

は課題 1 から課題 4 の 4 つの課題で構成されている．本論
文では課題 1 から課題 3 への適用の結果を述べる．

同意を得られた受講生については，以下のデータを収集した：• Jenkins のビルドログ

Ave は演習 D に導入されたが，演習 D の受講生が Aveを使用するかは任意とした．そこで，演習 D の受講生には• GitBucket のコミットログ

初回授業時に同意書を配布し，Ave を使用する場合は研究• 作成したプログラムの品質計測結果

目的によるデータ収集の同意を得た．結果として，全受講• Ave 個人ページのアクセスログ

生 77 名中 71 名から同意を得られた．

• API ドキュメントのアクセスログ• 実績達成割合
なお，Ave 個人ページと API ドキュメントのアクセスロ

5.3 採用した実績
Ave で採用したメトリクスベースの実績を表 2 に，ルーグについては，Google Analytics を用いて解析を行った．

ルベースの実績を表 3 に示す．当初は実績項目の候補がまた，後半の授業で Web 上で回答を行うアンケートを配多数あげられていたが，最終的に以下の観点を基準として布し，回答してもらうよう受講生に呼び掛けた．このアン

表 2 および表 3 に示す実績項目とした．

ケートには以下のような質問項目を設け，結果として 17• 品質計測ツールを用いて，CI のサイクル内で自動で計
表 2名から回答を得ることができた．

メトリクスベースの実績一覧

Table 2 List of metrics-based acihevements.
名前

達成条件

閾値 Lv.1

閾値 Lv.2

閾値 Lv.3

10 行以下Lines of Code

各メソッドの最大コード行数が規定値以下

50 行以下30 行以下Nestfor 文，if 文，try ブロックの各ネストの深さが規定値以下

5 以下

3 以下

1 以下

Cyclomatic Number

各メソッドの最大サイクロマチック数が規定値以下

30 以下

20 以下

10 以下

Naming Conventions

不適切な命名を行っているクラス，メソッド，変数の個数が規定値以下

30 個以下10 個以下

0個

Style Consistency

コーディングスタイルの一貫性が規定値以上

75%以上

90%以上

100%

Coverage

各メソッドのコードカバレッジ（C0 カバレッジ）の平均が規定値以上

70%以上

80%以上

90%以上

表 3

ルールベースの実績一覧

Table 3 List of rule-based acihevements.
名前

Useless
SwitchEmpty
Simplify
Finalize

達成条件
コード中に使用していない要素や不必要な要素が存在しない

switch 文を適切に用いている
コード中に内容のないブロックや括弧などが存在しない
簡潔なコードが記述されている変更が行われていない変数の宣言時にfinal 宣言を行っている

c 2020 Information Processing Society of Japan⃝

名前

Declaration
ImportIndentation
Magic Number
Null

達成条件
変数，メソッド，クラスなどの適切な宣言を行っている
適切にインポートを行っている
ソースコードのインデントに一貫性がある
ソースコード内にマジックナンバがない
適切に Null や Equals のチェックを行っている

649

情報処理学会論文誌

Vol.61 No.3 644–656 (Mar. 2020)• Ave 全般や演習 D 全般について記述式で尋ねる項目
例：「Ave をどれくらいの頻度で使用しましたか？」「Ave を使用してみていかがでしたか？」• Ave 導入によって自身に表れた効果を 5 段階のリッカート尺度（5 が「そう思う」，1 が「そう思わない」）
を用いて評価してもらう項目
例：「プログラムの品質を改善する重要性が認識でき

表 4

FAC 回数と個人ページ閲覧数別の受講生の人数と割合

Table 4 Number and ratio of students by number of FAC andpersonal-pages view.
内容

10 回以上1〜9 回

0回

課題 1 の FAC

9 (12.7%)

42 (59.2%)

20 (28.2%)

課題 2 の FAC

6 (8.5%)46 (64.8%)

19 (26.8%)

課題 3 の FAC

6 (8.5%)36 (50.7%)

29 (40.8%)

個人ページ閲覧数

39 (54.9%)

32 (45.0%)

0 (0%)

た」「プログラミングに対するモチベーションが向上した」
特に上位約 10%の受講生は積極的に Ave を使用している

5.5 実験結果収集したデータを用いて，5.1 節に述べた観点で Ave 導

ことが分かる．さらに，Ave の使用頻度には受講生間で大きな差があることも分かる．

入による効果の分析を行った．以降では，「Jenkins による受講生の実績達成状況について，ルールベースの実績・

テスト通過後に，その課題名を持つクラスと同一のパッ

メトリクスベースの実績ともに実績項目によって大きな差

ケージ内に存在するファイルに何らかの変更を加えているが生まれていた．一方で全実績を達成している受講生も数

コミット」を FAC と呼ぶ．たとえば，字句解析器（Lexer）

名おり，この受講生らは全員が Ave 上位グループであっのテスト通過後に，Lexer.java と同一のパッケージ内にた．すなわち，FAC が多い受講生は他の受講生よりも多く存在するファイルに何らかの変更を加えているコミットは，の実績を達成していることが分かる．

FAC となる．また，FAC とは “For–Ave–Commit” の略称

5.5.2 Q2：品質に対する意識の改善であり，テストを通過しているにもかかわらず変更を加え受講生の行った FAC の中から，品質に対する意識の改ているため，その変更は Ave の実績を達成するためのもの

革によるものと見られたコミットを抜粋し紹介する．

と考えられる．さらに，いずれの課題においても FAC を

変数のファイナライズ

10 回以上行った受講生のグループを Ave 上位グループ，

プログラム内で変更が行われていない変数に対し，final

10 回未満の受講生のグループを Ave 下位グループと呼ぶ．

修飾子を付加する FAC が存在した．これにより，その変

Ave の使用に同意した 71 名の受講生のうち，Ave 上位グ

数が不変であることが保証されるためコードの見通しが良

ループは 6 名であった．

くなるほか，再代入によるバグを防ぐことが可能となる．

Ave 上位グループと Ave 下位グループに受講生を分ける

さらに，この FAC ではコミットメッセージに「ave 用にのは，Ave 使用による効果を確認するため，積極的に Ave を

final 定義をした」と記されていた．Ave の実績の 1 つに使用している受講生とそうではない受講生を区別するのが「適切に final 修飾子を用いている」というものがあり，狙いである．5.2 節で述べているとおり，演習 D の受講生が変更が行われていない変数の宣言時に final 修飾子を適切

Ave を使用するかは任意としている．そのため，受講生全員に付加している場合，この実績を達成できる．

が Ave を使用してくれるとは限らず，Ave の効果を確認する

コードの簡潔化ためには Ave を積極的に使用している受講生を抽出する必処理に if-then-else 節を使っていたところを，三項演要がある．5.5.1 項で述べるとおり，FAC を 10 回以上行っ算子を用いた簡潔なコードに変換する FAC が存在した．

た受講生とそうでない受講生で区別することで上位 10%

不必要な if-then-else 節を使わないことで，可読性・保の受講生を抽出できるため，FAC の閾値を 10 回とした．

守性が向上する．さらに，この FAC ではコミットメッセー

5.5.1 Q1：Ave の使用状況

ジに「ave の指摘修正」と記されていた．Ave の実績の 1

各課題における FAC 回数と個人ページ閲覧数別の受講

つに「簡潔なコードを記述している」というものがあり，生の人数と割合を表 4 に示す．この表から，FAC を 1 回

不必要な if-then-else 節を使わないことで，この実績を以上行っている受講生と Ave 個人ページを 10 回以上閲覧達成できる．

している受講生は，いずれの課題においても全受講生の半マジックナンバの除去

数を超えることが分かる．また，課題 1 と課題 2 に比べて，マジックナンバを除去し，final 修飾子が付加された定課題 3 は FAC を行っている受講生が少ないことも分かる．

数として宣言する FAC が存在した．これにより，ハード

FAC 回数および個人ページ閲覧数で受講生をソートした

コーディングされていた数値に変数名が付与されるため，ところ，受講生 71 名の FAC 回数の総和のうち Ave 上位グ

意味が分かりやすくなり可読性が向上する．また，数値のループ 6 名による FAC 回数の総和が全課題において 50%

変更を一括して行えるようになるために保守性も向上す

以上を占めており，特に課題 1 では約 69%を占めていた．

る．Ave の実績の 1 つに「マジックナンバがない」という以上のことから，約半数の受講生が Ave を使用しており，ものがあり，プログラム内にマジックナンバを記述しない

c 2020 Information Processing Society of Japan⃝650

情報処理学会論文誌

Vol.61 No.3 644–656 (Mar. 2020)

図 5

5 段階評価によるアンケートの結果

Fig. 5 Questionnaire results based on a 5-level evaluation.

ことで，この実績を達成できる．

の受講生に行えたことが分かる．

以上のことから，これらの FAC は Ave 導入により意図

5.5.3 Q3：プログラミングに対するモチベーション向上

的に行われており，実績の達成を目的としていると考えら

図 5 の最下段に示すように，「プログラミングに対するれる．そのほか，受講生の FAC にはコーディングスタイ

モチベーションが向上した」という質問項目に対しては，

ルの統一やメソッド分割などが含まれていた．

約 60%の受講生が肯定的な意見であった．また，アンケー

5 段階評価によるアンケートの結果を図 5 に示す．図に

トに対する記述式の回答には，示すとおり，多くの受講生が品質に対する意識の改善を実Ave によって良いプログラムを作るという効果もあるけ

感しており，特に「プログラムの品質を改善する重要性がど単純に目に見えると分かりやすいのでモチベーション認識できた」「今後，品質の高いプログラムを作成しようの向上につながるのがいいところだと思った．
（Ave を含と思うきっかけになった」という質問項目では約 65%の受め，演習 D に対する全体的なご意見やご感想があればお講生が肯定的な意見（4 または 5）であった．さらにアン

教えください．）

ケートに対する記述式の回答には，結果が目に見えて分かりやすいので，動くだけでなくよ
り良いコードを書こうという意欲がわいた．
（Ave を使用
してみていかがでしたか？率直な感想をお願いします．）

Ave は今までにないシステムで意識してやってみると確かにプログラムの質を考えて設計でき，結果的に今までよりも質が上がったように感じた．（Ave を含め，演習 D に対する全体的なご意見やご感想があればお教えください．
）
できるだけ簡潔になるように意識したり，マジックナン
バを除去したりと，分かりやすいコードを書く良い機会になったと思う．（同上）

Ave においては，モチベーションの向上を図ることができ，最終的には提出時点での実績一覧をすべてを解除することができた．（同上）
今回も Ave の達成を頑張った．ゲーム感覚でコードがより良くなるので，私の性格には大変あっていた．楽しかった．（同上）との記述を行っている受講生もいた．なお，括弧内に各回答が得られた質問文を記している．以上のことから，Ave
導入により複数の受講生がプログラミングに対するモチベーションを向上させたことが分かる．

5.5.4 Qsub：プログラムの品質向上との記述を行っている受講生もいた．なお，括弧内に各回5.5.1 項では，受講生間で Ave の使用状況に大きな差が答が得られた質問文を記している．以上のことから，Ave

あることを確認した．そこで，Ave 上位グループと Ave 下導入により，プログラムの品質に対する意識の改革を複数位グループで作成するプログラムの品質に差があるかを検c 2020 Information Processing Society of Japan⃝651

情報処理学会論文誌

Vol.61 No.3 644–656 (Mar. 2020)

表 5 各課題ごとの Ave 上位グループと Ave 下位グループの品質計測結果

Table 5 Quality measurement results of Ave upper and Ave lower group for each task.
内容

課題 1

課題 2

下位

平均コード行数 / メソッド

6.77*

10.08*

6.47*

8.79*

7.33*

9.89*

平均サイクロマチック数 / メソッド

2.11*

3.47*

2.33*

3.23*

2.67*

3.61*

0.33*
5.20* 12.00
14.71
平均命名規則違反数 / クラス*：有意差があると認められたもの．有意水準 α = 0.05．

12.17

22.60

証した．
各課題において，各メソッドあたりの平均コード行数，
平均サイクロマチック数，および各クラスあたりの不適切

上位

下位

課題 3

上位

上位

下位

使用しており，特に上位約 10%の受講生は積極的に Ave を使用していることが分かった．また，Ave の使用頻度には受講生間で大きな差があることも確認できた．

な命名*7 を行っている（以降，命名規則違反）数の平均を課題 1 と課題 2 に比べると，課題 3 において FAC を行っ

Ave 上位グループと Ave 下位グループで比較した結果をている受講生は少ないことが分かった．これは課題 3 の難表 5 に示す．なお表 5 に示す結果は演習 D 終了後に得ら易度が他の課題に比べて高く，実績を達成するためにプロれたデータを基に算出したものである．

グラムに変更を加える余裕がなかったためと考えられる．

これらの品質にかかわるメトリクスは Ave の実績項目

また，実績項目によって達成状況に大きな差が生まれていとして設定されている．コード行数はプログラムの規模をたが，これは実績項目によって達成するための難易度が異表す指標として，広く用いられているものである．ソース

なるためと考えられる．たとえば命名規則違反は，クラス

コードの行数が多いということは規模が大きくそれだけ

名やメソッド名などを変更するだけで達成できる簡単な実複雑さも増す傾向にあるため，行数を少なく抑え理解性や績である一方，コード行数はメソッドの抽出やプログラム

再利用性を向上させることが望まれる．次にサイクロマ

フローの改善など，プログラムの内部構造を改善する必要

チック数は McCabe によって提案されたメトリクスであがある比較的難しい実績である．

り [21]，コード行数と同様に基本的な複雑度メトリクスの1 つとして古くから知られている．この値が大きいとテス

Q2：品質に対する受講生の意識は改善されるか

トケースを作成するコストがかかるため，メソッド分割な

Q2 に関する実験の結果から，Ave 導入により，プログ

どを行って複雑度を低くし保守性を向上させることが好ま

ラムの品質に対する意識の改革を複数の受講生に行えたこしいとされている．最後に命名規則違反に関して，一般的とが分かる．

にソフトウェア開発やその保守は複数人で行われる．その5.5.2 項で紹介した FAC をはじめとして，受講生のコため，ソースコード内で自分の記述した箇所だけでなく他

ミットにはプログラムの品質を向上させるための変更と見人の記述した箇所についても素早く理解できるよう，Javaられるものがいくつも存在した．また，コミットメッセー

Code Conventions といった開発者が守るべきコーディンジに「ave」という文言が含まれていることや，Ave 導入にグ規約が存在する [28]．本研究で用いた命名規則違反はそ関する記述式アンケートの回答からも分かるように，明らの規約の一部であり，規約に従ったコーディングを行うこ

かに Ave 導入によって品質に対する受講生の意識が改善さとで可読性や一貫性を向上させることができる．以上に基れていることが分かる．ただし，どの質問項目においてもづき，これらを Qsub を検証するための品質項目として選

1 や 2 といった否定的な意見が存在している．記述式アン

択した．

ケートには，以下のような記述を行っている受講生もいた．

表に示すとおり，Ave 下位グループに比べて Ave 上位グ

課題自体をやることで手一杯だったので，あまり Ave のループの作成するプログラムは，いずれの品質項目におい結果を確認することができなかった．
（Ave を使用してみても改善が見られた．また，Wilcoxon の順位和検定（有意ていかがでしたか？ 率直な感想をお願いします．）

水準 α = 0.05）を用いて有意差を検定したところ，表に示すとおりほとんどの結果で有意差を確認できた．

6. 考察
Q1：Ave は実際に使用されるか
Q1 に関する実験の結果から，約半数の受講生が Ave を

実績を解除しようとするとかなり難しい項目があったと感じた．（同上）

演習 D は学部 3 年生向けに開講されている授業であり，開発規模はコード行数にして 3,000 行ほどである．また構
文解析の理論（字句解析，最左導出，LL/LR 構文解析，意*7

クラス名にパスカルケースを用いていないなど，Java の慣習に反する命名

c 2020 Information Processing Society of Japan⃝

味解析など）も必要なため，授業の難易度そのものが高いといえる．さらに Ave の実績を達成しようとすれば，テス

652

情報処理学会論文誌

Vol.61 No.3 644–656 (Mar. 2020)

ト通過後に追加で変更を加えていく必要があるため，開発とそうでないグループを区別するために FAC 回数の閾値にさらなるコストがかかる．このように，演習 D の課題自として 10 回を用いた．FAC 回数はテスト通過後のソース

体や実績項目の難易度が高く Ave を使用する余裕がなかっ

コードの変更回数を示すものであり，Ave の使用頻度を直たため，プログラムの品質向上にはつながらなかったと感接計測したものではない．したがって，FAC 回数の閾値をじた受講生が，Ave に対し否定的な意見を持ったと考えら変えることやより直接的な指標を用いることで，Ave 上位

れる．また，図 5 に示すアンケート結果のうち，「プログと下位グループ間の有意差が得られない可能性がある．

ラムの品質を意識しながらプログラムを作成することがで

本実験で計測を行ったこれらの品質項目は Ave の実績

きた」「自身の作成したプログラムの品質が以前より改善として設定している項目であり，実績を達成することはこされた」という質問項目に関しては，他の質問項目より肯れらの品質項目の改善に直結することに留意が必要であ

定的な意見を持つ受講生が少ない．このように，実際に自る．また平均命名規則違反数については課題 2 と課題 3 の身の作成したプログラムの品質が向上したと考えている受値が課題 1 の値に比べて増加しており，Ave 上位グループ

講生はやや少ないものの，本研究の目的の 1 つとしていると Ave 下位グループ間の有意差も得られていない．本章

品質に対する受講生の意識改善に関しては，Ave 導入の効

「Q1：Ave は実際に使用されるか」でも述べたとおり，命果が十分にあったと考えられる．

名規則違反は修正が比較的容易に可能な，簡単な実績である．しかし，課題 2 および課題 3 は課題 1 に比べて難易

Q3：プログラミングに対する受講生のモチベーションが度が大幅に上昇しており，学生の作成するプログラムもそ

向上するかれにともない規模が大きくなる．そのため修正箇所が増大

Q3 に関する実験の結果から，Ave 導入により複数の受講生がプログラミングに対するモチベーションを向上させたことが分かった．
図 5 の最下部に示すように，多くの受講生が「プログラ
ミングに対するモチベーションが向上した」という質問項

し，Ave 上位グループ・Ave 下位グループにかかわらずその修正にまで手が回らなかったものと考えられる．

7. 関連研究7.1 テストベースの教育

目に肯定的な意見であった．また，アンケートに対する記テストベースの教育としてはその目的や授業形態など

述式の回答からも，楽しい・面白い・分かりやすいといっの違いにより様々な手法が提案されている [11], [12], [14],た感想が受講生から得られた．Ave をテストベースの教育[23], [30], [31], [32]．Edwards ら [8] は学生の提出したプロに導入することで，新たにゲーミフィケーションの要素をグラムに対し，テストによる自動評価と TA による手動

追加することができ，結果としてプログラミングや授業へ

フィードバックの両方を提供できるシステムを提案しての参加に対するモチベーション向上につながったと考えらいる．また，Joy ら [15] は提出されたプログラムをオンラれる．否定的な意見を持つ受講生もいるが，この質問項目

イン上で自動評価する手法を提案している．既存研究によに否定的な意見を持つ受講生は他の質問項目においてもおり，テストベースの教育は受講生の成績上昇およびプログ

おむね否定的な意見を持っていた．すなわち前述したようラミングに対するモチベーション向上に一定の効果があるに，Ave を使用する余裕がなかったためにプログラミング

こと [20] や，教員にかかる負担の大幅な削減が可能であるに対するモチベーション向上にはつながらなかったと感じこと [4], [10], [34] が示されている．

ている受講生が，Ave に対し否定的な意見を持ったと考えられる．

しかし，テストベースの教育はプログラムの品質を軽視する傾向にあることが指摘されている [7], [13]．より具体的には，テストベースの教育では課題達成の可否という二Qsub：受講生の作成するプログラムは品質が向上するか

値的な結果のみをフィードバックとして与えることが多Qsub に関する実験の結果から，Ave 下位グループに比い [1]．その結果，剽窃などの不正行為や品質を無視した

べて Ave 上位グループの作成するプログラムは，どの品質プログラムの作成を行う傾向が強まる恐れがある [19]．さ項目に関しても改善が見られ，Wilcoxon の順位和検定でらに，機能拡張と提出を繰り返してプログラムを完成させも有意差を確認できた．これにより，Ave の導入がプログていくような類の授業では，次第にプログラムの品質がラムの品質向上に貢献した可能性がある．ただし本研究で低下していく [29]．本研究と手法が類似するものとして，は Ave 上位グループと Ave 下位グループの作成するプロ

Ohtsuki らによる研究 [26] がある．Ohtsuki らは Jenkins，

グラムを比較および実験しており，Ave 導入の有無による

Git，Checkstyle などのいわゆる DevOps ツール群を用い対照実験を行っているわけではない．すなわち，真に Ave

たプログラミング学習支援システムを提案している．また導入が受講生の作成するプログラムの品質向上に貢献してそのシステムの適用実験では，学生の提出したプログラム

いるかは，本研究の結果だけでは判断することができない．

の品質向上，迅速なフィードバックの提供，および教員の加えて，本研究では Ave を積極的に使用しているグループ

負担軽減に効果があることが認められている．一方，本研

c 2020 Information Processing Society of Japan⃝653

情報処理学会論文誌

Vol.61 No.3 644–656 (Mar. 2020)

究では品質計測の結果を実績に加工し提示している．これ

謝辞 Ave の適用実験に協力いただいた演習 D 受講生のにより，学生にも理解しやすい形でプログラムの品質を示

方々に感謝する．本研究の一部は，日本学術振興会科学研せるほか，ゲーミフィケーションの要素を導入することで究費補助金基盤研究（B）（課題番号：18H03222）の助成

プログラミングに対するモチベーション向上にもつなげるを得て行われた．

ことが可能となる．
参考文献

7.2 ゲーミフィケーションとプログラミング教育[1]

教育に特化したゲーミフィケーションの研究がさかんに行われている [5], [6], [9], [16]．たとえば Khaleel ら [17][2]は，ゲーミフィケーションをプログラミング教育に導入するための枠組みについて考察している．
さらに，プログラミング文法の習得といった，基礎的な[3]

プログラミングの授業に対しゲーミフィケーションを導入した研究も多く存在する [2], [3], [18], [22], [24], [27]．これらの研究では講義資料の閲覧状況や当該講義の理解度を測る簡単な課題に対してゲーミフィケーションを導入し，そ[4]

れらが授業に対する動機づけや受講生の成績上昇に一定の効果があることを示している．しかし，本研究は文法習得のような基礎的な内容ではなく，コンパイラ開発といった高度な理論に基づく実践・演習形式の授業を想定している．

[5]

そのため，受講生の作成するプログラムの自由度が高くその品質に差が生まれやすいという特徴があり，プログラム[6]の品質について提示する効果が高いといえる．このような講義において，本研究ではモチベーションや理解度向上といった目的だけでなく，品質に対する受講生の意識改善や[7]プログラムの品質向上を目的として実績を導入し，一定の効果があることを示している．加えて，本研究で提案したシステムは CI ツールと組み合わせて利用可能である．そ[8]のため，プログラムの開発，単体テスト，版管理，CI ツールの利用といった，より実践的なソフトウェア開発環境を[9]

受講生に体験させることが可能であるという点でも新規性がある．

8. おわりに[10]

本研究では，自動テストに基づくプログラミング教育に，
家庭用ゲームで用いられている「実績」と呼ばれるコンセ[11]

プトを取り入れ，プログラムの品質を可視化する教育手法を提案した．提案手法の適用実験として，大阪大学基礎工学部情報科学科の 3 年生を対象とした実際の授業にこの手[12]法を取り入れ，品質に対する受講生の意識改善とプログラ
ミングに対するモチベーション向上，およびプログラムの品質向上に効果があることを確認した．

[13]

本研究の今後の課題としては，Ave の内容面と実装面での柔軟性向上があげられる．内容面の柔軟性向上として，[14]得られたデータを用いて適切な実績項目とその閾値を策定することが考えられる．また，実装面の柔軟性向上として，演習 D に特化していない汎用的なシステムの構築が考えられる．

c 2020 Information Processing Society of Japan⃝[15]

Ala-Mutka, K.: A Survey of Automated Assessment Approaches for Programming Assignments, Computer Science Education, Vol.15, No.2, pp.83–102 (2005).
Barata, G., Gama, S., Jorge, J. and Goncalves, D.: Engaging engeneering students with gamification, Proc. International Conference on Games and Virtual Worlds
for Serious Applications, pp.1–8 (2013).
Berkling, K. and Thomas, C.: Gamification of a software engineering course and a detailed analysis of thefactors that lead to it’s failure, Proc. International Conference on Interactive Collaborative Learning, pp.525–
530 (2013).
Carter, J., English, J., Ala-Mutka, K., Dick, M., Fone,
W., Fuller, U. and Sheard, J.: How Shall We Assess
This?, Proc. Working Group Reports from ITiCSE on
Innovation and Technology in Computer Science Education, Vol.35, pp.107–123 (2003).
Denny, P.: The eﬀect of virtual achievements on student engagement, Proc. Conference on Human Factors
in Computing Systems, pp.763–772 (2013).
Dicheva, D., Dichev, C., Agre, G. and Angelova, G.:
Gamification in Education: A Systematic Mapping
Study, Journal of Educational Technology & Society,Vol.18, No.3, pp.75–88 (2015).
Edwards, S.H.: Rethinking computer science education from a test–first perspective, Proc. Conference on
Object–Oriented Programming, Systems, Languages,
and Applications, pp.148–155 (2003).
Edwards, S.H. and Perez-Quinones, M.: Web-CAT: Automatically grading programming assignments, Proc.
Conference on Innovation and Technology in Computer
Science Education, Vol.40, No.3, pp.328–328 (2008).
Frazer, A., Argles, D. and Wills, G.: The same, but
diﬀerent: The educational aﬀordances of diﬀerent gaming genres, Proc. International Conference on Advanced
Learning Technologies, pp.891–893 (2008).
Harris, J.A., Adams, E.S. and Harris, N.L.: Making program grading easier: But not totally automatic, Journal of Computing Sciences in Colleges, Vol.20, No.1,
pp.248–261 (2004).
Helmick, M.T.: Interface-based programming assignments and automatic grading of java programs, Proc.
Conference on Innovation and Technology in Computer
Science Education, Vol.39, No.3, pp.63–67 (2007).
Ihantola, P., Ahoniemi, T., Karavirta, V. and Seppälä,O.: Review of Recent Systems for Automatic Assessment of Programming Assignments, Turkish Journal of
Gastroenterology, Vol.18, No.4, pp.265–267 (2007).
Jansen, J., Oprescu, A. and Bruntink, M.: The impact ofautomated code quality feedback in programming education, Proc. CEUR Workshop, Vol.2070, pp.1–19 (2017).
Jimenez-Gonzalez, D., Alvarez, C., Lopez, D., Parcerisa,J., Alonso, J., Perez, C., Tous, R., Barlet, P., Fernandez,
M. and Tubella, J.: Work in progress-improving feedback
using an automatic assessment tool, Proc. Frontiers in
Education Conference, pp.S3B–9–T1A–10 (2008).
Joy, M., Griﬃths, N. and Boyatt, R.: The BOSS Online654

情報処理学会論文誌

[16]

[17]

[18]

[19]

[20]

[21]
[22]

[23]

[24]

[25]

[26]

[27]

[28]

[29]

[30]

Vol.61 No.3 644–656 (Mar. 2020)

Submission and Assessment System, Journal on Educational Resources in Computing, Vol.5, No.3, pp.1–28(2005).
Juho, H., Jonna, K. and Harri, S.: Does Gamification
Work? – A Literature Review of Empirical Studies on
Gamification, Proc. Hawaii International Conference
on System Sciences, pp.3025–3034 (2014).
Khaleel, F.L., Ashaari, N.S., Meriam, T.S., Wook, T.
and Ismail, A.: The study of gamification applicationarchitecture for programming language course, Proc.
International Conference on Ubiquitous Information
Management and Communication, pp.1–5 (2015).
Knutas, A., Ikonen, J., Nikula, U. and Porras, J.: Increasing collaborative communications in a programmingcourse with gamification, Proc. International Conference on Computer Systems and Technologies, pp.370–
377 (2014).
Kyrilov, A. and Noelle, D.C.: Binary instant feedback onprogramming exercises can reduce student engagement
and promote cheating, Proc. Koli Calling Conference
on Computing Education Research, pp.122–126 (2015).
Kyrilov, A. and Noelle, D.C.: Do Students Need Detailed Feedback on Programming Exercises and Can Automated Assessment Systems Provide It?, Journal ofComputing Sciences in Colleges, Vol.31, No.4, pp.115–
121 (2016).
McCabe, T.J.: A Complexity Measure, IEEE Trans.
Softw. Eng., Vol.SE-2, No.4, pp.308–320 (1976).
Nah, F.F., Zeng, Q. and Telaprolu, V.R.: Gamification of Education: A Review of Literature, Proc. International Conference on HCI in Business, Vol.8527,
pp.401–409 (2014).
Nobuo, F., Yukiko, M., Toru, N., Kan, W. and Noriki,
A.: A Java Programming Learning Assistant System
Using Test-Driven Development Method, International
Journal of Computer Science, Vol.40, No.1, pp.38–46(2013).
O’Donovan, S., Gain, J. and Marais, P.: A Case Studyin the Gamification of a University–level Games Development Course, Proc. South African Institute for Computer Scientists and Information Technologists Conference, pp.242–251 (2013).
Ogura, N., Matsumoto, S., Hata, H. and Kusumoto, S.:
Bring your own coding style, Proc. International Conference on Software Analysis, Evolution and Reengineering, pp.527–531 (2018).
Ohtsuki, M., Ohta, K. and Kakeshita, T.: Software engineer education support system ALECSS utilizing DevOps tools, Proc. International Conference on Information Integration and Web-based Applications and Services, pp.209–213 (2016).
Olsson, M., Mozelius, P. and Collin, J.: Visualisationand gamification of e–Learning and programming education, Electronic Journal of e-Learning, Vol.13, No.6,
pp.441–454 (2015).
Oracle: Java Code Conventions, Oracle (online), available from ⟨https://www.oracle.com/technetwork/java/
codeconventions-150003.pdf⟩ (accessed 2019-09-28).
Pettit, R., Homer, J., Gee, R., Mengel, S. and Starbuck,A.: An Empirical Study of Iterative Improvement in Programming Assignments, Proc. Technical Symposium on
Computer Science Education, pp.410–415 (2015).
Sauvé, J.P. and Abath Neto, O.L.: Teaching software development with ATDD and easyaccept, Proc. SIGCSE
Technical Symposium on Computer Science Education,c 2020 Information Processing Society of Japan
⃝

[31]

[32]

[33]

[34]

[35]

Vol.40, No.1, pp.542–546 (2008).
Sauvé, J.P., Abath Neto, O.L. and Cirne, W.: EasyAccept: A Tool to Easily Create, Run and Drive Development with Automated Acceptance Tests, Proc. International Workshop on Automation of Software Test,
pp.111–117 (2006).
Solomon, A., Santamaria, D. and Lister, R.: Automated Testing of Unix Command-line and Scripting
Skills, Proc. Information Technology Based Higher Education and Training, pp.120–125 (2006).
Tomas, P., Escalona, M.J. and Mejias, M.: Open source
tools for measuring the Internal Quality of Java software
products. A survey, Computer Standards and Interfaces,
Vol.36, No.1, pp.244–255 (2013).
Tremblay, G. and Labonte, E.: Semi-Automatic Markingof Java Programs Using JUnit, Proc. International Conference on Education and Information Systems: Technologies and Applications, pp.42–47 (2003).
井上明人：ゲーミフィケーション—〈ゲーム〉がビジネ
スを変える，NHK 出版 (2012).

華山 魁生 （学生会員）
2019 年大阪大学基礎工学部情報科学科卒業．同年より同大学大学院情報科
学研究科コンピュータサイエンス専攻
博士前期課程在学中．プログラミング
教育およびプログラムの品質に関する研究に従事．

柗本 真佑 （正会員）2010 年奈良先端科学技術大学院大学
博士後期課程修了．同年神戸大学大学院システム情報学研究科特命助教．

2016 年大阪大学大学院情報科学研究科助教．博士（工学）．エンピリカル
ソフトウェア工学の研究に従事．

肥後 芳樹 （正会員）
2002 年大阪大学基礎工学部情報科学科中退．2006 年同大学大学院博士後期課程修了．2007 年同大学院情報科
学研究科コンピュータサイエンス専攻
助教．2015 年同准教授．博士（情報科学）．ソースコード分析，特にコー
ドクローン分析，リファクタリング支援，ソフトウェアリ
ポジトリマイニングおよび自動プログラム修正に関する研究に従事．JSSST，IEEE 各会員．

655

情報処理学会論文誌

Vol.61 No.3 644–656 (Mar. 2020)

楠本 真二 （正会員）
1988 年大阪大学基礎工学部情報工学科卒業．1991 年同大学大学院博士課
程中退．同年同大学基礎工学部助手．

1996 年同講師．平成 11 年同助教授．
2002 年同大学大学院情報科学研究科
助教授．2005 年同教授．博士（工学）．
ソフトウェアの生産性や品質の定量的評価，プロジェクト管理に関する研究に従事．IEICE，JSSST，IEEE，JFPUG，

PM 学会，SEA 各会員．

c 2020 Information Processing Society of Japan⃝656