情報処理学会論文誌

Vol.54 No.1 330–339 (Jan. 2013)

プログラミング演習における進捗状況把握のためのコーディング過程可視化システム C3PV の提案
井垣 宏1,a)齊藤 俊2,b)

井上 亮文2,c)

中村 亮太3,d)

楠本 真二1,e)

受付日 2012年4月20日, 採録日 2012年10月10日

概要：我々は受講生のプログラミング演習時におけるコーディング過程を記録し，可視化して講師に提示するシステム C3PV を提案する．本システムは，ウェブ上で動作するオンラインエディタとコーディング
過程ビューから構成されている．オンラインエディタは受講生のコーディングプロセスにおける，文字入力，コンパイル，実行，提出といったすべての行動を記録する．コーディング過程ビューは課題の進み具合
いや受講者の相対的な進捗遅れを可視化して講師に提示する．講師はあるエラーに関して長時間悩んでいる受講生や全体の進捗と比較して遅れている受講生を C3PV によって確認し，個別指導といった支援につなげることができる．本研究では実際に C3PV を学部 1 年生が受講する Java プログラミング演習に適用
し，C3PV によって可視化されたコーディング過程を利用した受講生対応を行った．その結果，コーディ
ング過程ビューに基づいて対応した 45 件中 38 件（約 84%）において，実際に受講生がサポートを必要としていたことが確認できた．
キーワード：プログラミング演習，コーディング，進捗管理，ソフトウェア工学教育

Programming Process Visualization for
Supporting Students in Programming Exercise
Hiroshi Igaki1,a)Shun Saito2,b) Akifumi Inoue2,c)Shinji Kusumoto1,e)Ryota Nakamura3,d)Received: April 20, 2012, Accepted: October 10, 2012

Abstract: In this paper, we propose a coding process visualizer for programming practice. Our system
named “C3PV” consists of an online editor and a coding process viewer. The online editor can collect allcoding process performed by each student. The coding process viewer can visualize whether the students
are doing well about their programming exercises. This viewer enables a lecturer and teaching assistants
to identify the students who are falling behind the rest of the class. We confirmed that the system could
determine whether the student needed our help with 84 percent accuracy by some practical experiments.
Keywords: programming exercise, coding, progress management, software engineering education

1

2

3

a)
b)
c)
d)
e)

大阪大学大学院情報科学研究科
Graduate School of Information Science and Technology,
Osaka University, Suita, Osaka 565–0871, Japan
東京工科大学コンピュータサイエンス学部
School of Computre Science, Tokyo University of Technology, Hachioji, Tokyo 192–0982, Japan
東京工科大学片柳研究所
Katayanagi Institute, Tokyo University of Technology,
Hachioji, Tokyo 192–0982, Japanigaki@ist.osaka-u.ac.jp
syuns@hil.cs.teu.ac.jp
akifumi@cs.teu.ac.jp
rnakamura@media.teu.ac.jp
kusumoto@ist.osaka-u.ac.jp

c 2013 Information Processing Society of Japan

1. はじめに
日常で利用されるソフトウェアおよびソフトウェアが組み込まれた製品の数や種類の増大にともない，優秀なソフ
トウェア開発者の育成が急務となりつつある．そのため，受講生が与えられた課題に基づいてコーディングを実際に行うプログラミング演習と呼ばれる形式の授業が多くの教育機関で行われるようになっている [2]．
通常プログラミング演習は，開始時に講師が受講生に課題を与える．受講生は必要に応じて講師に質問をしつつ，

330

情報処理学会論文誌

Vol.54 No.1 330–339 (Jan. 2013)

与えられた課題のコーディングを行う．コーディングが終提出する．本論文では，受講生によるソースコードの編集了した後，受講生は講師にソースコードを提出し，チェッから課題提出までの一連の行為をコーディング過程と呼ぶ．

クを受ける．

講師はコーディング過程における受講生からの質問への対

このようにプログラミング演習では各受講生が個別に課応や，提出された課題のチェックによるフィードバックを題に取り組むため，受講生間のスキル差によって進捗状況行うことで受講生のコーディングスキル育成を目指す．

に大きな差が生まれることが多い．実際に，講義や演習についていけてなくても質問をせず，順調に課題を進めてい2.2 初学者を対象としたプログラミング演習における課題る受講生と比較して遅延したり停滞したりする受講生も数

近年，プログラミング演習における学業不振者等の増加多く存在する [5]．そのため，講師は受講生による能動的が問題になっている．プログラミング演習では受講生自身な問合せに対応するだけでなく，理解不足や諦め等，多種が自律的にコーディングを行うことが求められる．そのの要因に起因するコーディングの遅延や停滞状態にある

ため，自身で問題解決が困難である初学者にとって，コー

受講生を把握し，状況に応じた指導を行うことが重要となディング中のトラブルや理解不足からくる行き詰まり状態

る [11]．特に初学者を対象としたプログラミング演習の場の継続は，コーディングそのものに対するモチベーション

合，理解不足等の状況を早期に発見することは非常に重要を悪化させてしまう可能性がある．そのため，このようなである．

受講生を早い段階で見つけ出し，講師によるアドバイス等

しかしながらプログラミング演習では，受講生の数に比の具体的な支援を行うことが望まれている [9]．

して少数の講師や TA（Teaching Assistant）が対応するた

通常，講師は受講生からの質問に対応するときや提出さめ，受講生のコーディング状況の把握が困難な場合も多れたソースコードを確認するときに，受講生ごとのコーい．プログラミング演習における受講生の状況把握を目的

ディング進捗度合いや理解度に関する情報を獲得する．しとした既存研究は数多く行われているが，そのほとんどかしながら，講師や TA（ティーチング・アシスタント）のが課題提出後にその内容を分析するものであるため，演数が限られていることから，理解度に問題のある受講生を習中に問題のある受講生を把握することを想定していな

演習時間内に早期に効率良く発見し，対応することは非常い [4], [10], [12]．

に困難である．

そこで本研究では，受講生のコーティング過程を分析

そこで本研究では，下記要求に対応したプログラミング

し，コーディング遅延や停滞を可視化する C3PV（Coding

演習のための教育支援システムを提案する．

Process Visualizer in Programming Practice）を提案する．

R1 開発環境のセットアップが容易で講師・受講生の負C3PV は受講生ごとに，総 LOC（Lines Of Code），課題ごとのコーディング時間，単位時間あたりのエディタ操作数，
課題ごとのエラー継続時間の 4 種類のメトリクスをリアル
タイムに計測し，ランキング等の可視化処理を行い，講師

荷が小さい．

R2 多様な遅延や停滞状況の検知に対応したコーディン
グ過程の可視化．

R3 コーディング対象の言語に非依存．

に提示する．C3PV が相対的に状況が悪い受講生をサポー

コーディング過程において，受講生はエディタを用いてトが必要な受講生として提示することで，限られた数の講

コーディングを進める．そのための開発環境はセットアッ

師や TA でも容易に受講生の学習状況を把握し，その状況

プが簡単で，講師および受講生が容易に利用できることがに即した指導を行うことが可能となる．

望ましい．また，コーディング過程における受講生の状況

本論文の構成を以下に示す．2 章では準備としてプログを早期に把握するためには，課題ごとの提出時刻や提出さラミング演習の説明と従来研究によるプログラミング演習

れたソースコードといったコーディング過程終了後を対象のための教育支援システムの課題，3 章では提案手法，4 章とした分析ではなく，単位時間ごとの実装行数（LOC）やでは実装方法，5 章では評価について述べ，6 章をまとめコンパイルエラーの情報といったコーディング過程内を対とする．

象とした分析・メトリクスの可視化が必要となる．さらに，

2. プログラミング演習の特徴と問題点
2.1 プログラミング演習
プログラミング演習とは，講師がある単元について解説を行った後，受講生がその内容に応じた課題を独力で解く形式の授業である．
プログラミング演習において，各受講生は与えられた課

多様な言語への対応を考慮すると，分析・可視化の内容が特定の言語に依存しないことが望ましい．
以上をふまえて，次節では我々の提案するコーディング
過程可視化システムについて詳述する．

3. コーディング過程可視化システム：C3PV
3.1 キーアイデア

題のコーディングを行い，作成したソースコードの正しさ

我々は受講生のコーディング過程を記録し，相対的なをコンパイルや実行によって確認後，そのソースコードを

遅延状況を可視化して講師に提示する教育支援システム

c 2013 Information Processing Society of Japan

331

情報処理学会論文誌

Vol.54 No.1 330–339 (Jan. 2013)

表 1

エディタ領域ログの種別

Table 1 Categories of C3PV’s editor area log.
ログ種別名

内容

insertText

1 行以内の文字を入力

removeText

1 行以内の文字を削除

insertLines

複数行の文字列を入力

removeLines

複数行の文字列を削除

表 2

エディタ領域ログの例

Table 2 Examples of editor area log.
図 1

コーディング過程可視化システム C3PV の概要

Fig. 1 Coding process visualizer in programming practice(C3PV).

ID 時刻
1

文字列

ログ種別

2012-2-1 15:22.476 int x = 4; insertLines

開始行 開始列 終端行 終端列

1

0

3

0
9

int y = 3;
2

2012-2-1 15:31.793 3

removeText

2

8

2

3

2012-2-1 15:32.404 5insertText

2

8

2

9

4

2012-2-1 15:39.643 int x = 4; removeLines 1

0

3

0

int y = 5;ている．受講生はエディタ領域にソースコードを記述し，Save（保存），Compile（コンパイル），Run（実行），チェッ
ク待ちに変更（課題提出）といった操作をコントローラ領域で選択する．受講生が Compile あるいは Run を選択す
ると，出力領域にコンパイル結果あるいは実行結果が表示される．エディタ領域では，Ace [1] と呼ばれるオープン
ソースのコードエディタを利用することで，インデントやハイライトといったエディタに求められる基本的な機能が実現されている．C3PV はこのオンラインエディタを通じて，受講生 1 人 1 人のコーディング過程を記録する．次に，C3PV が収集するコーディング課程におけるログの種類に
図 2 オンラインエディタを用いた Java プログラムのコーディング

Fig. 2 Coding example of Java with C3PV’s online editor.

ついて述べる．

3.2.1 エディタ領域ログ
C3PV は受講生がエディタ領域において行う操作とそのC3PV を提案する．図 1 にシステム概要を示す．C3PV は時刻をエディタ領域ログとして記録する．ここで収集さ受講生にオンラインエディタによる開発環境を提供する．

れるログの種別を表 1 に示す．エディタ領域において受受講生のコーディング過程は，オンラインエディタを通じ講生はアルファベットの文字入力や削除，コピー&ペースて記録される．記録されたコーディング課程はコーディン

ト，カット&ペーストを行う．C3PV は受講生による文字グ過程ビューを通じて可視化され，講師に提示される．

（列）の入力/削除を検知し，エディタ領域ログとして記録

C3PV におけるオンラインエディタとコーディング過程

する．表 2 に実際に C3PV が収集したエディタ領域ログ

ビューは受講生および講師の PC 環境にブラウザが入っての例を示す．ここで ID はログの主キーを示し，ログインいれば利用できるため，環境のセットアップは非常に容ID は受講生を示している．このエディタ領域ログからは易である．C3PV は受講生のオンラインエディタ上のコー受講生が初めに int 型の変数 x，y を初期化した 2 行の文

ディング過程から各種のメトリクスを収集する．その結果を貼り付け（insertLines），y の値を 3 から 5 に書き換えたをコーディング過程ビューに可視化することで，受講生ご後（removeText と insertText），その 2 行の文を切り取っとの多様な遅延状況に講師が対応できるようになる．

ている（removeLines）ことを確認できる．

以降では，C3PV の各構成要素と収集・可視化する 4 種類のメトリクスについて述べる．

3.2.2 コントローラ領域ログ
C3PV は受講生がコントローラ領域において行う操作とその時刻をコントローラ領域ログとして記録する．ここで

3.2 オンラインエディタを用いたコーディング過程の記録収集されるログの種別を表 3 に示す．autosave のみ C3PV

受講生は図 2 に示すオンラインエディタにブラウザからによる自動保存を表し，それ以外はすべて受講生の行った

アクセスし，コーディングを行う．オンラインエディタは振舞いとして記録される．自動保存は newopen もしくはコントローラ領域とエディタ領域，出力領域から構成されopen が記録されてから close が記録されるまでの間，1 分

c 2013 Information Processing Society of Japan

332

情報処理学会論文誌

Vol.54 No.1 330–339 (Jan. 2013)

M1：総 LOC

おきに呼び出される．また，close は受講生によってエディ

総 LOC は，受講生がプログラミング演習中にエディタ

タのページが閉じられたり，別のページへ遷移したりすることによって表示されなくなったときに記録される．

領域に入力したソースコードの総行数を表す．プログラミ

表 4 に C3PV が記録するコントローラ領域ログの例をング演習において講師は複数の課題を受講生に課する．通示す．この例では講師が「hello, world!」と表示する Java常，課題ごとのプログラム行数は異なることが多いため，の課題を課しているものとする．この例では，初めに，ロどの受講生が他の受講生と比べて遅れているかを課題ごと

グイン ID syuns が課題をエディタで開き（newopen），その行数で検知することは困難である．また，受講生ごとにの課題のコーディング中に C3PV が自動的にソースコー解き始めた課題が異なるような事例では，課題ごとの行数

ドの保存を行った（autosave）．次に，syuns は課題を完成を比較することができない．そこで我々は，総 LOC としさせ [Compile] ボタンをクリックしてコンパイルを行ったて演習開始時から受講生によってコーディングされた課題（compile）．ここでエラーが発生したため，エラーメッセーの合計行数を計測する．総 LOC を受講生同士で比較する

ジをもとにソースコードを修正し [Run] ボタンをクリック

ことで，進捗が相対的に遅れている受講生を検知することしてコンパイルと同時に実行した（run）．syuns は出力をが可能となる．ただし，欠席等で課題を 1 つも開いていな

確認後，ソースコードを [Save] ボタンをクリックして保存

い受講生は検知の対象としない．

（save），[チェック待ちに変更] ボタンをクリックしてソー

M2：課題ごとのコーディング時間

スコードを提出後（submit）した．最後に，次の課題を選

課題ごとのコーディング時間は，受講生がコーディング

択するためにブラウザの戻るボタンをクリックし，エディに取り組む課題別の時間を表す．コントローラ領域ログとタ画面を閉じた（close）．

して newopen もしくは open が検知されてから，submit が行われるまでの時間を計測することで，M2 がより長い場

3.3 コーディング過程メトリクス

合を特定課題のコーディングに行き詰まっている受講生と受講生のコーディング状況可視化を目的として，C3PV

して検知できる．ただし，いずれかの課題をエディタで開はエディタ領域ログとコントローラ領域ログを利用して，いており，かつその課題の提出が終わっていない受講生を以下に示す 4 種類のメトリクスを計測する．

対象とする．

M1：総 LOC

M3：単位時間あたりのエディタ操作数

M2：課題ごとのコーディング時間

単位時間あたりのエディタ操作数は，受講生が一定時間

M3：単位時間あたりのエディタ操作数

内に文字入力/削除やコピー&ペーストを行った課題別のM4：課題ごとのエラー継続時間数を表す．表 2 に示すエディタ領域ログの 1 レコードを 1
ステップとして計測することで，M3 がより少ない場合を

表 3

コントローラ領域ログの種別

エディタの操作をせず考え込んでいたり別のことをしていTable 3 Categories of C3PV’s controller area log.

たりする受講生として検知できる．ただし，いずれかの課

ログ種別名 内容

題をエディタで開いており，かつその課題の提出が終わっ

newopen

対象の課題が初めてエディタで開かれたていない受講生を対象とする．たとえば，次の (1)〜(4) のopen

newopen された対象課題が再度エディタで開かれた

save[Save] ボタンがクリックされた

autosave

C3PV がソースコードを自動保存した(1) エディタに「a」を打つ．

close

ブラウザを閉じる等して受講生がエディタから離れた(2) エディタの「a」を消す．

compile[Compile] ボタンがクリックされた(3) エディタにクリップボードの「class」を貼り付ける．

run[Run] ボタンがクリックされた(4) エディタの「class」を選択して消す．

submit[チェック待ちに変更] ボタンがクリックされた
表 4

エディタ操作数は 4 である．

コントローラ領域ログの例

Table 4 Examples of controller area log.
ID

ログイン ID

ログ種別

時刻

言語名

1

syuns

newopen

2012-2-1 15:30:00

Java

2

syuns

autosave2012-2-1 15:31:00

Java

3

syuns

compile2012-2-1 15:31:05

Java

3: ...world!”)

4

syuns

run

2012-2-1 15:31:20

Java

3: ...world!”);

5

syuns

save

2012-2-1 15:31:25

Java

3: ...world!”);

6

syuns

submit2012-2-1 15:31:30

Java

3: ...world!”);

7

syuns

close

2012-2-1 15:31:35

Java

3: ...world!”);c 2013 Information Processing Society of Japan

ソースコード

出力

エラー

3: ...world!”)
3: ’;’ expected
hello, world!

333

情報処理学会論文誌

Vol.54 No.1 330–339 (Jan. 2013)

M4：課題ごとのエラー継続時間

リクスランキングおよびシートマップから構成される．メ

課題ごとのエラー継続時間は，受講生がコンパイル/実行

トリクスランキングでは M1〜M4 の各コーディング過程

時にエラーが発生してから以降のコンパイル/実行によっメトリクスがソート可能なリストとして表示される．図 3てエラーが発生しなくなるまでの時間を表す．エラー継続にメトリクスごとのランキングテーブルを示す．図 3 (a)時間を計測することで，M4 がより長い場合をエラーが解は受講生のログイン ID，受講生の座席情報および総 LOC

決できない受講生として検知できる．ただし，いずれかのを表示している．図 3 (b) は課題名とその課題のコーディ

課題をエディタで開いており，かつその課題の提出が終

ング時間が表示されており，課題名で並べ替えることで，わっていない受講生を対象とする．

任意の課題において相対的に長時間取り組んでいる受講生が誰であるかを講師が確認できる．図 3 (c) では，5 分

3.4 コーディング過程ビューによる可視化

あたりのエディタ操作数ランキングが表示されている．なC3PV はコーディング過程ビューを用いて，計測したメ
トリクスの可視化を行う．コーディング過程ビューはメト

お，単位時間は 5，10，15 で切り替えられるようになっている．図 3 (d) はエラー継続時間（秒）を課題ごとに提示している．
シートマップはメトリクスランキングにおける上位，すなわち何らかの基準で相対的に遅延している受講生を実際に座っている座席情報に基づいて強調表示するビューである．図 4 (a) が実際に表示されるシートマップである．枠が太線で囲まれているマス目は受講生が実際に座っている座席を示しており，ログイン ID が表示される．各マス目は図 4 (b) に示すように 4 分割されており，M1〜M4 の各メトリクスにおいて上位に入る受講生の対応するマス
目内領域が青く表示される．この例では，ログイン ID がX11105D の受講生が M1，M2 の 2 種類のメトリクスにおいてランキング 2 位であることが分かる．すなわち，総LOC が全受講生の中で 2 番目に少なく，かつ現在取り組んでいる課題に全受講生の中で 2 番目に時間をかけているということが判断できる．
このように講師はシートマップを見ることで，どの席に座っている受講生が相対的に遅延しているかを M1〜M4のメトリクスベースで判断することができる．

4. 実装
図 3 メトリクスランキングの表示例

Fig. 3 Example of metrics ranking view.

(a) シートマップによる M1〜M4 の可視化の様子

4.1 実装環境
図 1 に 示 す C3PV の サ ー バ お よ び デ ー タ ベ ー ス は(b) M1〜M4 とシートの対応関係

図 4 シートマップによる遅れの可視化

Fig. 4 Visualization example of sheetmap view.

c 2013 Information Processing Society of Japan


334

情報処理学会論文誌

Vol.54 No.1 330–339 (Jan. 2013)

edubaseCloud [7] の仮想マシン内に実装されている．こ

べたとおり，C3PV は newopen もしくは open が記録されこで我々が利用した仮想マシンには edubaseCloud の機能てから close が記録されるまでの間 1 分ごとに，オンラインを利用し，Xeon 2.4 GHz CPU 8 コア，メモリ 24 GB が割

エディタのエディタ領域に記述されたソースコードを自動り当てられている．OS は CentOS5.6 で，ウェブサーバお保存する．自動保存が行われるたびに，ログ種別 autosave

よび DBMS はそれぞれ Apache/2.2.3，MySQL/5.0.77 をが記録される．

用いた．実装言語および実装フレームワークは，サーバサ

また，compile および run は受講生がコントロール領域

イドが PHP/5.3.3 および ZendFramework/1.11.0，クライの同名のボタンをクリックしたときに記録されるログ種別

アントサイドが JavaScript，jQuery/1.7.0 となっており，である．これらのログ種別が記録されると同時に，C3PV

オンラインエディタ部分には Ace/0.2.0 を利用して開発をは受講生のエディタ領域に記述されているソースコードを行った．

Ideone.com の compile あるいは run といった対応するウェ

ここで edubaseCloud とは国立情報学研究所によって運ブ API に送信する．ウェブ API から返ってきた compile

用されている IaaS と呼ばれる種類のクラウドサービスでや run の結果は，対応する受講生のオンラインエディタにある．一般に IaaS は，OS をインストールするための CPU

おける出力領域に表示される．受講生は出力領域に表示さやメモリからなるコンピュータ基盤をサービスとして提供れた compile や run の結果を確認し，ソースコードの修正する．本実装においても edubaseCloud 上に C3PV を配置

や課題の提出（submit）を行う．

することで，ハードウェアを新たに用意することなく安価

講師は C3PV に講師としてログインすることで，コーにシステムを構築することが可能となった．また，OS がディング過程ビューを閲覧することが可能となる．講師が利用する CPU のコア数やメモリといったリソースの変更

閲覧中のコーディング過程ビューに表示されるメトリクス

や OS 単位でのシステムの複製が可能であるため，多人数

ランキングやシートマップの情報は，C3PV によって 1 分で利用した際の C3PV にかかる負荷を非常に容易に分散さごとに更新される．講師は 1 分ごとに更新されるシートせることが可能となった．

マップ等の情報に基づいて受講生の遅延を確認し，遅延が顕著な受講生の支援にあたる．なお，プログラミング演習

4.2 Ideone サービスを用いたコンパイルおよび実行
受講生がコーディングしたソースコードのコンパイルおではメトリクスの詳細やシートマップの内容を講師が受講生に通知することは想定していない．

よび実行には，Ideone.com [3] のウェブ API を使用した．

C3PV を利用するにあたって講師が行うべき事前準備は，

Ideone は 40 種類以上のプログラミング言語に対応したオ

受講生ごとのログイン ID およびパスワードの登録と，そンラインコンパイラである．SOAP 形式での呼び出しに対のプログラミング演習で受講生が解くべき課題の登録のみ応しており，ソースコードを送信することで，コンパイルである．

および実行結果を受け取ることができる．

4.3 C3PV を用いたプログラミング演習の流れ

5. 評価実験
5.1 準備ユーザは C3PV を利用する際，講義開始時に配布される

C3PV が提示する可視化情報が演習中の講師にとって，ログイン ID とパスワードを使ってログインする．C3PV遅れている受講生の発見や対応に有効であるかを評価する

は，ユーザの役割を未ログインユーザ，受講生，講師の 3

ための実験を行った．本実験の環境を表 5 に示す．プログ

つに分類することにより，各ページへのアクセスを制限しラミング基礎 II は学部 1 年生が受講する Java のプログラている．

ミング講義であり，A クラスと B クラスの演習内容は基本

受講生は各自のブラウザにより C3PV にログインし，着的に同じものである．

席処理を行う．ここで着席処理とは，受講生が現在座って演習開始後 30 分は相対的な差がつきにくいため，実験いる教室内における座席の行番号と列番号を C3PV に登録の対象とはしていない．30 分経過後，講師と TA は図 4 にすることを指す．ログインおよび着席処理が終了すると，受講生はブラウザを通じて C3PV が提供するオンライン

表 5 実験環境

Table 5 Experimental environment.

エディタにアクセスできるようになる．その後受講生は，解くべき課題の選択を行い，オンラインエディタを用いて選択した課題に取り組む．受講生が課題に取り組んでいる
間，表 3 に示すコントローラ領域ログのログ種別に対応

実験 1 回目
講義名

プログラミング基礎 II

Java

プログラミング言語
講義時間

実験 2 回目

2 コマ（90 分 × 2）

するイベントがオンラインエディタにおいて発生するたび

クラス

A

B

に，C3PV がエディタ領域ログおよびコントローラ領域ロ

講師/TA

1/3 名

1/4 名

グを内部のデータベースに保存する．さらに 3.2.2 項で述

受講生

16 名

21 名

c 2013 Information Processing Society of Japan


335

情報処理学会論文誌

Vol.54 No.1 330–339 (Jan. 2013)示すシートマップを閲覧しながら，M1〜M4 の各メトリクて講師らが対応した回数とその内訳を示す．この表では，スに基づく相対的な遅延を示す受講生を確認し，1 人ずつ

講師らが各実験において対応した回数の合計を「のべ対応

直接対応を行った．なお，本実験では講師と TA の数を考回数」，このうち C3PV のシートマップを見て対応した回

えて，ランキング上位 3 名がシートマップ上に強調表示さ数を「シートマップ対応回数」，受講生の挙手によって対れる設定とした．また，1 度対応した受講生には受講生の応した回数を「挙手対応回数」として示している．シート

挙手等がなければ 10 分間は対応しないものとする．

マップ対応回数と挙手対応回数に記述されている括弧内の講師と TA が直接受講生に対応した際には，対応した受

数値はそれぞれサポートの必要がなかった回数とシート

講生とシートマップとの関係を明らかにするため，下記 6

マップで強調表示されていなかった回数を示している．
結果として，実験 1 回目ではのべ対応回数 31 回のうち項目を紙に記録した．
記録 1

講師らが受講生に対応した時刻

C3PV がシートマップに強調表示しなかった 1 件を除いた

記録 2対応した受講生のログイン ID

30 件中 24 件（80%），実験 2 回目ではのべ対応回数 35 件

記録 3

演習課題名

のうち C3PV がシートマップに強調表示しなかった 2 件を記録 4対応した受講生が挙手をしていたか除いた 33 件中 32 件（97%）において，C3PV はサポート

記録 5

受講生は実際に支援を必要としていたかを必要とする受講生の存在を正しく講師に伝えることがで

記録 6

支援を必要としていた場合，その内容は何かきた．

記録 1〜記録 3 は講師らが対応した際の時刻やどの受講

シートマップに強調表示されなかった（すなわちメトリ

生がどの問題を解いているところであったかを記録する項

クスランキングの上位 3 位以内に入らなかった）3 件のう目である．記録 4 の項目では講師らが C3PV のシートマッ

ち，実験 1 回目の 1 件は演習終了時刻が迫っていたため，

プを見て対応したのか，受講生の挙手を見て対応したのか

エラーが発生した直後に挙手をした結果，メトリクスランを記録する．記録 5，6 では講師らが対応した受講生が実際

キング上位にならなかったという事例であった．実験 2 回に支援や指導を必要とする状況にあったかどうか，あった

目の 2 件については，2 件とも演習初期の段階に，課題内場合はその具体的な支援内容は何であるかが記録された．

容について問合せを行うものであり，遅延に由来するもの

さらに実験終了後，受講生に対して以下の質問 1〜4 のではなかった．

アンケートを行った．このアンケートを用いて，これまで

また，シートマップに強調表示されたにもかかわらずサ使ってきた通常の開発環境と比べ，受講生が支援を受けやポートの必要がなかった 7 件のケースのうち，実験 1 回目

すいと感じたか等を記入してもらった．

の 6 件については，すべてが実験開始後 30 分に集中してい質問 1

オンラインエディタにあってほしい機能，足りなた．C3PV が相対的な進捗遅れを検知する仕組みになってい機能はありましたか？ あればその機能を書いてくいるため，この時点では差があまり大きくなかったことが

ださい．
（記述式）

原因の 1 つであると考えられる．実験 2 回目の 1 件につい質問 2

オンラインエディタを利用することで，講師/TAては，エラーへの対応に詰まっていた受講生だったが，講のサポートが受けやすくなりましたか？（記述式：は師が対応に行く際にちょうど独力で解決できたというケー

い，いいえのどちらか）スであった．

質問 3

これまで使ってきた通常の開発環境（エディタ）と比べて，こちらで指定したオンラインエディタを使うことに関する不満点や問題点はありましたか？（記5.3 アンケート結果
受講生への質問 1〜4 のアンケートの集計結果を表 7 に

述式）
質問 4

オンラインエディタがあって良かったことや悪かったことその他なにか気づいたことがあれば書いて
ください．
（記述式）

表 7

受講生へのアンケート

Table 7 Result of enquete.
実験 1 回目（有効回答数 16）

5.2 実験結果
表 6 に C3PV のシートマップおよび受講生の挙手によっ

はい

いいえ

質問 1：足りない機能があるか？

5

11

質問 2：サポートが受けやすくなったか？

15

1

1

15

質問 3：指定したオンラインエディタを使うことに問題点があるか？

表 6

実験 2 回目（有効回答数 21）

講師/TA 対応回数内訳

はい

いいえ

質問 1：足りない機能があるか？

3

18

質問 2：サポートが受けやすくなったか？

16

5

9

12

Table 6 Total number of directed students.
のべ対応回数

シートマップ対応回数

挙手対応回数

1 回目

31

22（6）

9（1）

質問 3：指定したオンラインエディタを

2 回目

35

23（1）

12（2）

使うことに問題点があるか？

c 2013 Information Processing Society of Japan

336

情報処理学会論文誌

Vol.54 No.1 330–339 (Jan. 2013)

示す．機能追加についての要望としては，実験 1 で 5 件，であったが，課題を解くのを諦めてほかのことをやってい実験 2 では 3 件あった．追加の要望としては，eclipse にある受講生への注意といった事例も数件存在した．以上の結るようなコードの予測変換や undo 機能についてのものが果より，受講生が演習に真面目に取り組んでいるかを確認

2 件，出力領域のサイズ変更や結果表示の初期化に関するしつつ，理解不足で悩んでいる受講生を効率的に早期に発ものが 2 件，自分の打ち込んだソースコードを一括で DL

見することが C3PV によって可能となったと考えられる．

する機能や提出結果の一覧といった提出に関する機能が 2

また 5.3 節のアンケートからは，オンラインエディタの件，実際にはあったが説明していなかったために要望に含機能に 8 割近くの受講生が満足しており，8 割以上の受講まれていたオートセーブに関するものが 2 件あった．

生がサポートを受けやすくなったと感じており，7 割以上

C3PV によってサポートが受けやすくなったかという質の受講生が C3PV のエディタを利用することに問題点を問については，実験 1 回目のクラスでは 1 人を除く全員が，感じていないという結果が得られた．自由記述からもほと

実験 2 回目では 21 人中 16 人が “はい” と回答した．ここんどの受講生がサポート面についてポジティブなイメージ

で “いいえ” と回答した受講生を調査したところ，すべてを持っていたことが分かった．特に，開発過程がモニタリ

成績が優秀で演習中の進捗も一定して他の受講生より進んングされていることに対して疑問や問題に感じている受講

でいる受講生であった．

生が 1 人もおらず，遅れている際に声をかけてもらえるとこちらが指定したオンラインエディタを利用して開発をいったメリットを感じているといったコメントが多かっ

進めることに対して，実験 1 のクラスでは 1 人，実験 2 でた．以上より受講生全体に C3PV の有効性が認識されていは 9 人が問題点があると回答した．実験 1 のクラスで指摘ると考えている．

された唯一の問題点は着席処理の際に不具合が発生したと

2.2 節で述べた R1〜R3 の各要求については以下に示す

いう受講生によるものであった．この受講生は実験時に着提案システムの 3 つの特徴によって対応できたといえる．

席処理画面が表示されず，しばらく座席情報の登録ができ

A1 C3PV のすべての機能にユーザはブラウザからアクない状態になっていた．最終的にその受講生も着席処理をセスできる．また，演習を行う際に必要な事前準備も完遂できたが，しばらく演習にとりかかれなかったためア

ログイン ID とパスワードおよび演習課題の登録のみ

ンケート結果において問題点があると回答を行っていた．

であるため，講師や受講生に対するセットアップコス

実験 2 のクラスでは問題点があると指摘した受講生が 9 人

トがほぼかからない．

いたが，そのうち 8 人は，コンパイルに時間がかかった点

A2 M1〜M4 の各メトリクスによって，多様な遅延や停を問題点としてあげていた．これは，C3PV が外部の Web

滞状況の検知が実際に可能であることが本論文で行っサービスを利用してプログラムのコンパイルを行っておた実験により確認できた，

り，実験を行った日にたまたまその Web サービスのレス
ポンスが悪かったことに起因している．残り 1 人の指摘しA3 M1〜M4 で定義されたすべてのメトリクスは特定の開発言語に依存するものではない．

た問題点は，ブラウザの戻るボタンを間違えてクリックすアンケートにより得られた今後の課題に関する意見の中ることでソースコードが消えてしまうという症状についてで，既存の統合開発環境に含まれている高度な機能の一部のものであった．

が C3PV のオンラインエディタには不足しているというも

質問 4 では自由記述でオンラインエディタの利用についのがあった．C3PV で実装されているオンラインエディタての感想を聞いた．この質問ではほとんどの受講生が提出（図 2）では，コントローラ領域の Save/Compile/Run とが楽になったことや悩んでいるときに声をかけてもらえた

いったソースコードの保存やコンパイル，実行に相当するという点を感想としてあげていた．

機能とエディタ領域におけるコードエディタとしての機能

6. 考察
6.1 利点と限界が実装されている．コードエディタの機能としては，シンタックスハイライト，オートインデントやソースコード中の括弧の対応付けといった基本的な編集機能が，既存の統5.2 節で述べた実験結果より，演習開始 1 時間後以降に

合開発環境同様 C3PV のオンラインエディタにおいても実限れば，C3PV の提示に従って直接対応したほぼすべての装されている．一方でコードの予測変換や文法エラーの自ケースにおいて実際に受講生がサポートを必要としていた．

動チェック・自動修正，無制限の undo といった高度な機

また，挙手対応のほとんどの事例において C3PV がシート能については実装されていない．これらの高度なコードエ

マップ上に強調表示を行っていたことから，受講生が必ずディタの機能については，本論文の提案システムが初学者

しも挙手をしなくても，C3PV によって対応が必要な受講向けであることから，実装することを想定していない．

生として講師が知ることが可能であった．本実験における出力領域のサイズ変更については，現時点で対応していサポートの内訳としては，エラーの解決についての指導やるが，利用方法が受講生に伝わっていなかったために問題

課題の解き方の解説といった理解不足への対応がほとんど点として提示されていた．今後は提出状況の確認といった

c 2013 Information Processing Society of Japan


337

情報処理学会論文誌

Vol.54 No.1 330–339 (Jan. 2013)

UI のユーザビリティの改善とマニュアルの充実を検討しル回数，実行回数，コンパイルエラー数，行数等の履歴をている．外部のコンパイル用サービスのレスポンスについ利用するものを提案している [12]．藤原らのシステムでは，ては，外部の Web サービスを利用しているため，我々で講師がコーディング過程の各種履歴を組み合わせたパターは対応が困難である．今後は同種のサービスを自前で提供ンを定義しておくことで，過度に進捗が遅れている等の事することでパフォーマンスの改善を図っていきたい．

前に決められたパターンに合致する受講生を検出すること

C3PV は進捗が相対的に遅れている初学者を早期に発見が可能である．しかしながら，収集された履歴の分析およ

し，講師がフォローすることを目的としている．そのためびパターン化といった処理を事前に講師が行う必要がある

我々は C3PV によって，優秀な受講生の自律的な学習をため，講師の負荷が大きく，可視化によるフィードバック

支援するというよりは，潜在的に支援を必要とする受講生にも対応していない．また，定義したパターンに一致するへのフォローによってプログラミングに対する苦手意識が受講生を複数人検出したとき，どの受講生を優先して支援生まれないようにすることを目指している．今後は，アンするべきか判断できない．これは受講生数に対して講師やケートにもあった優秀な受講生への対応を想定し，優秀なTA の数が少ない場合に重要な課題となる．実際に C3PV

受講生のピックアップや，早期に課題を終了させた受講生

では，シートマップに強調表示する基準となるメトリクス

向けに新しい課題を出すといったより多くの受講生へのサランキングの数値を設定により変更することが可能であポートも考慮していきたい．

る．今後はより多くのメトリクスの設定と実証実験を行う
ことで，有効なメトリクスの分析・検証と C3PV の実装へ

6.2 関連研究
プログラミング演習における受講生の理解度把握の支援を目的とした研究は演習修了時に次の演習に向けて行われるものと演習中にコーディング課程を分析して支援を行う
ものの 2 種類が存在する．
宮地らはあらかじめ設定した正解プログラムを用いて答案プログラムの正誤判定を自動的に行う，アセンブラ言語のフィードバックを行っていきたい．

7. おわりに
C3PV は，課題を作成する過程とランキングテーブルによる受講生間の相対的な比較から，プログラミング演習中に遅れておりサポートを必要とする受講生を早期に効率良く検出可能であることが確認できた．

に特化した教育支援システム CAPES [4] を開発している．

本実験では Java を用いたが，Ideone を使用しているた

CAPES は受講生の解答内容に基づく正誤判定結果によりめ様々なプログラミング言語に対応できる．また，言語に受講生の理解度を判定し，受講生ごとに異なった課題の出依存しない要素を使用して M1〜M4 を定義しているため，題を行うことができる．

他の言語においても C3PV の適用が可能である．ユーザは

田口らは受講生がこれまでに解いた演習内容と教員およ

ブラウザを通じて C3PV のすべての機能にアクセスできるび受講生自身による評価に基づいて協調フィルタリング手ため，利用時のコストを非常に低くすることが可能となっ法を適用し，受講生の理解度の推定と受講生が次に解くべた．今後他の教育機関等様々なユーザに C3PV を利用しき演習内容を提示する手法を提案している [6]．

てもらう際に，クラウド環境を利用した仮想マシン単位で倉澤らは受講生によるコンパイル作業履歴と事前に分類

C3PV を配布することにより，容易に C3PV の導入が可能されたエラー要因から受講生の多くが実際に陥っているエとなると考えている．今後の課題としては，エディタ環境

ラーの状況とその原因を推定し，講師にフィードバックを

および可視化環境の使い勝手の向上や，より多くのメトリ行う手法を提案している [10]．

クスの設定と実証実験を行うことによる有効なメトリクス

これらの研究はいずれも受講生によって提出されたソーの分析・検証，C3PV の実装へのフィードバックを行ってスコードやコーディング後のコンパイル作業履歴を対象といきたい．さらに，講義外で C3PV を利用する受講生の支して分析を行うものであるため，コーディング過程内の受援にも役立てていきたい．

講生の状況を早期に把握することを目的としていない．また特定の言語に特化しているため，アセンブラ，C，Java，謝辞 本研究は，日本学術振興会科学研究費補助金若手
研究（B）（課題番号：24700030）の助成を得た．

初学者向けの独自プログラミング言語 [8] といった多様な開発言語に対応することが困難である．一方で，ソース

参考文献

コードからの理解度分析や講師による評価のフィードバッ

[1]

クといった機能は C3PV に組み込むことが可能である．今後，講師や受講生の負荷を増加させずに対応できる範囲で，

[2]
[3]

演習後分析機能についても検討を進めたい．
受講生のコーディング過程を対象とした早期の理解度把握を支援するシステムとして，藤原らは受講生のコンパイ

c 2013 Information Processing Society of Japan[4]

Ajax.org Cloud9 Editor: Ace, available fromhttp://ace.ajax.org/.
独立行政法人情報処理推進機構：IT 人材白書 2011 (2011).
Sphere Research Labs: Ideone.com, available fromhttp://ideone.com/.
宮地恵佑，高橋直久：構造誤り検出機能を有するアセンブ
ラプログラミング演習支援システムの実現と評価，電子情338

情報処理学会論文誌

[5]

[6]

[7]
[8]

[9]

[10]

[11]

[12]

Vol.54 No.1 330–339 (Jan. 2013)

報通信学会論文誌，Vol.J91-D, No.2, pp.280–292 (2008).
堀口悟史，井垣 宏，井上亮文，山田 誠，星 徹，岡田謙一：講義資料閲覧ログを用いたプログラミング講義進
捗管理手法の提案，情報処理学会論文誌，Vol.53, No.1,
pp.61–71 (2012).
田口 浩，糸賀裕弥，毛利公一，山本哲男，島川博光：個々の学習者の理解状況と学習意欲に合わせたプログラミング
教育支援，情報処理学会論文誌，Vol.48, No.2, pp.958–968(2007).
国立情報学研究所：edubase Cloud, 入手先
http://edubase.jp/cloud/.
西田知博，原田 章，中村亮太，宮本友介，松浦敏雄：初学者用プログラミング学習環境 PEN の実装と評価，情報処理学会論文誌，Vol.48, No.8, pp.2736–2747 (2007).
匂坂智子，渡辺成良：プログラミング初学者の学習方略と段階的理解度に関する調査および支援ルールの作成について（特集次世代情報教育の構築に向けて）—（プログラミング教育），教育システム情報学会誌，Vol.26, No.1,
pp.5–15 (2009).
倉澤邦美，鈴木恵介，飯島正也，横山節雄，宮寺庸造：プ
ログラミング演習における一斉指導のための学習状況把握，
支援システムの開発（collaboration と agent 技術/一般）
電子情報通信学会技術研究報告 ET，教育工学，Vol.104,
No.703, pp.19–24 (2005).
加藤利康，石川 孝：授業支援システムにおけるプログラ
ミング演習のための学習状況把握支援機能の設計と評価，
研究報告コンピュータと教育（CE），Vol.2012-CE-113,
No.6, pp.1–8 (2012).
藤原理也，田口 浩，島田幸廣，高田秀志，島川博光：
ストリームデータによる学習者のプログラミング状況把握，電子情報通信学会第 18 回データ工学ワークショップ，
pp.1–6 (2007).

井上 亮文 （正会員）
1999 年慶應義塾大学理工学部計測工学科卒業．2005 年同大学院後期博士課程修了．博士（工学）．現在，東京工科大学コンピュータサイエンス学部
講師．グループウェア，音楽情報処理の研究に従事．本会論文誌編集委員．
ヒューマンインタフェース学会，ACM 各会員．

中村 亮太 （正会員）
2008 年慶應義塾大学大学院理工学研
究科博士後期課程修了．博士（工学）．

2007〜2011 年東京工科大学メディア
学部助教．2011 年より同大学片柳研究所研究員．ヒューマンコンピュー
タインタラクション，グループウェ
ア，ネットワークサービス，生体情報活用等の研究に従事．

DICOMO2005 & 2006 優秀論文賞受賞．2007 年山下記念研究賞受賞，GNWS2011 優秀論文賞受賞．ACM，日本教育工学会各会員．

楠本 真二 （正会員）
1988 年 大 阪 大 学 基 礎 工 学 部 卒 業 ．

井垣 宏 （正会員）

1991 年同大学院博士課程中退．同年

2000 年神戸大学工学部電気電子工学

同大学基礎工学部助手．1996 年同講科卒業．2002 年奈良先端科学技術大師．1999 年同助教授．2002 年同大学

学院大学情報科学研究科博士前期課

大学院情報科学研究科助教授．2005

程修了．2005 年同大学院博士後期課

年同教授．博士（工学）．ソフトウェ

程修了．2011 年大阪大学情報・特任

アの生産性や品質の定量的評価に関する研究に従事．電子准教授．博士（工学）．ソフトウェア

情報通信学会，IEEE，IFPUG 各会員．

工学教育，ソフトウェアプロセス等の研究に従事．IEEE，

ACM，IEICE 各会員．

齊藤 俊2011 年東京工科大学コンピュータサ
イエンス学部卒業．グループウェアおよび教育支援システムの研究に従事．

c 2013 Information Processing Society of Japan

339