論文

JAR ファイルを対象とする自動採点機能を有した
Java プログラミング実習用システムの構築と運用
毛利元昭 （愛知大学経営学部）

要旨
プログラミングの実習系授業の実施において，担当教員側の負担軽減や学習者側でのテストの重要性から，自動採点機能を有した実習用システムやウェブサービスを利用するケースは多い。しかし，既存のそれらはソースコードを提出させる形にしている。そのような形式を単純に用いた場合，学習効果の低下やシステム負荷の増大を招く恐れがある。それらを抑制すべく，筆者が本学経営学部で担当しているプログラミング系授業では，JAR ファイルを対象とする Java
プログラミング実習用システムを独自に構築・運用している。本システムは実行可能 JAR ファ
イルを受講者のローカルな開発環境で作成させることを前提とするが，本稿では，なぜ本シス
テムによって問題を抑制できるのか，どのように設計・実装・実現しているのかについて説明するとともに，他の様々な機能について説明する。また，受講者の反応を中心に本システムの運用の状況について述べる。

キーワード：自動採点，プログラミング学習，Java，GUI，PHP，シェルスクリプト

1．はじめにクラスを単独で担当するような場合，授業を正常に実施するには何らかの効率

プログラミングの実習系授業の実施に化・自動化が必要と言える。

おいて，担当教員側の負担は大きい。資ま た， プ ロ グ ラ ミ ン グ の 学 習 に お い料・教材作成と講義だけでなく，課題のて，作成したプログラムが想定通りの動細かな出題，受講者の課題進捗状況の把作を行うものであるかを確認すること，握，採点とフィードバック，質問やトラ

いわゆるテストは必須と言える。テスト

ブ ル へ の 対 応 な ど が 求 め ら れ る。 し か

データと期待される結果を担当教員側でも，その多くが個別対応と即時性を求め

用 意 で き る 場 合 は 多 い が， 簡 単 な コ ー

られ，授業中の担当教員とアシスタント

ディングでも苦戦する初心者にとって，は，講義を中断して対応に追われ続ける

テストを正しく実施することは容易でなことになる。情報工学や情報科学を専攻

い。開発環境に付属するテスト用のツー

し て い な い 初 心 者 50～60 人 規 模 の 複 数ルなどを利用してもらうおうとしても，

愛知大学情報メディアセンター

－ 11 －

Vol.31, No.1, 2022

さらなる学習コストを必要とするため，いる。具体的には，ウェブページ上に穴

やはり初心者には難しい。

埋め式のソースコードと条件や期待されこういった背景から，プログラミングる働きが提示され，解答欄に解答を記入の実習系授業の実施において，自動採点

あるいは作成したソースコードのファイ機能を有した実習用システムを授業担当

ルを投稿し，文字列やプログラムの実行者が構築・運用するケースがある。例え結果を正答例のものと比較することで，

1）

や早稲

点数化や合否判定を行う。しかし，この田 大 学 の Waseda Online Judge 2） が あ

ような方法を単純に用いた場合には下記る。同様に，近年には様々なプログラミのような問題が生じる。

ば， 名 古 屋 工 業 大 学 の CAPES

ング学習用ウェブサービスが開始され，

1．受 講 者 が プ ロ グ ラ ム の 全 体 像 を 把そのほとんどは課題提示と自動採点（オ握・コントロールする機会の減少

ンラインジャッジ）機能を有し，自身の2．受 講 者 の コ ー デ ィ ン グ に 関 す る 自課題進捗状況を保存・把握できるものも由度の減少ある。簡易的なプログラム開発環境を有

3．コ ンパイルや実行の機会の減少

しているものもある。日本人の利用者が4．コ ン パ イ ル 不 可 能 な 状 態 で の 提 出多いものとしては，前述の Aizu Online
Judge 3） や Progate 4），paiza 5） な ど が あ
6）の増加
5．システム負荷の増加

り，世界的には AtCoder が有名である。

これらの問題を抑制するために，筆者

しかし，授業で用いられる実習用システ

はローカルの開発環境にて作成された実

ムは授業に閉じたものであるため，学外

行 可 能 JAR フ ァ イ ル を 提 出 さ せ る こ と者には利用できない。また，プログラミを前提とした，自動採点機能を有するプ

ング学習用ウェブサービスは内容のアレ

ログラミング実習用システム

ンジができない。そのため，筆者も本学構築した。本稿では，主にそのシステム経営学部で担当しているプログラミング

設計・構成や運用の状況を説明する。

注 1）

を考案・

系授業の実習用システムを独自で構築・
2．受講者に実行可能 JAR ファイルを提運用することとした。
ここで，既存の多くの実習用システム

出させる意義やプログラミング学習用ウェブサービス

JAR と は Java Archive の 略 で あ り，は，ソースコードを提出させる形にしてJava の ク ラ ス フ ァ イ ル や デ ー タ フ ァ イ

注 1）

ソースコードや課題バンク等は下記の URL にて公開している。
https://halo.aichi-u.ac.jp/~mouri/works/programming_training_system_java.zip

愛知大学情報メディアセンター

－ 12 －

Vol.31, No.1, 2022

ルなどを ZIP 圧縮でひとまとめにした形

ぎる状況と言える。他方で，簡易的な自式である。実行可能 JAR ファイルとは，

動採点を行う場合，空白や改行を除いて実行用のマニフェストファイルを内に含比較差分を評価することとなる。このよん だ JAR 形 式 の フ ァ イ ル で あ る。Java

うな形は，受講者のコーディングに関すが イ ン ス ト ー ル さ れ た 環 境 で あ れ ば，る自由度がほぼ無い。答案が記号・単語「java -jar」 コ マ ン ド と と も に フ ァ イ ル

あるいは短文になるような工夫がなされを指定することでプログラムを実行できていることが前提であり，「デバッグせる。

よ」「〇〇ができるように改良せよ」の本システムにおいて特徴的な点は，受ような，プログラムの全体像を把握・コ

講 者 の ロ ー カ ル 環 境 に て 実 行 可 能 JAR

ントロールさせるような大まかな指示にファイルを作成させてから，そのファイよる課題の答案を，実質的に採点できな

ルを提出させることである。このようない。つまり，応用力を養うことが目的の形式をとる自動採点システムは，筆者が課題の出題が困難である。

調べた限りでは見当たらなかった。既存

自動採点がプログラムの実行を伴う形のプログラミング実習用のシステムでよ

であれば，入出力の関係は「仕様」つまり

く み ら れ る の は， ブ ラ ウ ザ 上 に ソ ー ス

厳密にしつつ，コーディングに関する自コードを入力させる形である。しかしこ

由度は高くできる。よって，応用力を養の形は，第 1 章で挙げたような問題を抱うことが目的の課題でも自動採点可能なえている。ここでは，実行可能 JAR ファ

ものが作りやすい。しかし，ソースコー

イルを提出させることで，なぜそれらのドを提出させる形であれば，サーバ側で問題が解決されるのかを述べる。

コンパイルが必要となる。コンパイルに自動採点がプログラムの実行を伴わなは計算機リソースと時間が必要であり，い形であれば，「正解となる文字列を入システム負荷を増大させるため，多数の力する」ことと等価である。ソースコー

答案提出が重なった場合などにリクエス

ドに対してリッチな自動採点を行う場

トのタイムアウトが生じやすくなる。タ合，字句解析・構文解析とパターンマッ

イムアウトした場合には採点結果を正しチングなどを利用することとなる。このく示せないため，答案の再提出が必要とような形は，計算機リソースと時間が必なり，その結果，さらなるシステム負荷

要になることに加え，自動採点スクリプが生じることとなる。それ以上に問題なト等の作成に高い技術力と多大な労力がのは，実行を受講者の主体で行う必要が必要になる。筆者を含め，言語処理などないため，受講者からコンパイルや実行の分野を専門としない者には荷が勝ちすの機会を奪うことにつながる点である。

愛知大学情報メディアセンター

－ 13 －

Vol.31, No.1, 2022

プログラミングにおいて自らの手によるエラーが生じた場合はエクスポートされテストは重要であり，学習という観点かないため，コンパイル不可能な状態でのらも試行錯誤は重要である。そもそもコ提 出 が 防 止 で き る。 も ち ろ ん，Eclipse

ンパイル不可能なソースコードが提出さが有するハイライト機能や入力補完機

れる可能性も大きく，デバッグしにくい

能など，リッチな開発環境としての機能状況は避けるべきである。なお，近年にをローカルのリソースで利用するため，はブラウザ上で利用できるクラウド開発

コードの誤りを避けつつデバッグがしや環境も現れてきたが，導入が困難な上にすい上に，システム負荷は総合的に小さ

様々な制約やリソースの問題を抱えておい。

り，授業での利用は現時点では考えていない。

これらのメリットを成立させる要因
は，JAR フ ァ イ ル が OS に 依 存 せ ず 実

一 方 で，JAR フ ァ イ ル を 提 出 さ せ

行 で き る 点 で あ る。Java は 仮 想 マ シ ン

る こ と を 前 提 と し た 場 合， 話 は 変 わ っ（VM） 上 で 中 間 言 語 フ ァ イ ル を 実 行 すて く る。 筆 者 の 授 業 で は， 開 発 環 境 のる仕組みをとっており，受講者のローカ

注 2）を 受 講 者 に 利 用 さ せ て い る。

ル 環 境（Window, Mac, Linux 問 わ ず ）この Eclipse は，実行可能 JAR ファイルで 作 成 さ れ た 実 行 可 能 JAR フ ァ イ ル での作成（エクスポート）に際し暗に実行あっても，多くの場合サーバ側（本シスを必要とする。エクスポートには起動構

テムの場合は Linux）でそのまま実行で成が必要なのだが，ソースコードから実き る。 な お，JavaFX

行させることで，起動構成が自動生成さブラリが必要な場合や VM のバージョン

れつつコンパイルが行われるのである。

違いによっては若干の工夫が必要である

よって，受講者は実行とそれに付随するが，現行の演習課題およびシステムではコンパイルを，提出のたびに自然に繰り解決済みである。具体的には，受講者にEclipse

注 3）

注 4）

など外部ライ

ことになる。つまり，データ入は Eclipse 上 で Java SE-1.8 の 形 式 で プ

力を含め実行の様子を主体的に確認する

ロジェクトを作成・実行・エクスポート

ことにつながる。また，コンパイル時にしてもらい，サーバ側では実行時にオプ

返す


注 2）

Java の主要な統合開発環境。日本語化ツール Pleiades とともに無償利用できる。

注 3）

実際には，起動構成が一旦生成されたらその後のエクスポートの際に実行は不要であるが，受講者にそれを知らせないことで実行が習慣化される。

注 4）

Java VM 上で動作する GUI ライブラリ。現在は Java に同梱されなくなったため，OpenJFX を導入・利用する形となり，初心者にとっては利用・保守し難くなっている。

愛知大学情報メディアセンター

－ 14 －

Vol.31, No.1, 2022

ションを付け加えている。

1．履 修 者 が ウ ェ ブ ブ ラ ウ ザ か ら ア ク

実 行 可 能 JAR フ ァ イ ル に よ る メ リ ッセスでき，課題の表示や提出，評価

注 5）

」コマンド

の確認もウェブブラウザ上で可能を 用 い て JAR フ ァ イ ル を 解 析 す る こ と

2．利 用 に は ロ グ イ ン を 必 要 と し， テ

で，プログラムの構造を確認できる点でスト用ユーザを除いて学内の認証ある。コンパイル後，つまり字句解析・サービスにて認証ト は 他 に も あ る。「javap

構文解析とそれらの整理が行われた後で

3．記 述式の課題も表示や提出ができ，あり，ソースコードと比べて表現の差異

正答例を別途用意することで自動がある程度吸収されるため，構造が同じ

採点にも対応であれば正答例と比較しやすい。すなわ

4．J AR フ ァ イ ル が 提 出 さ れ た 場 合，ち，入出力の関係だけでなく，プログラ

ファイルの解析および実行を自動ムの構造も採点の対象にできる。もちろ

で 行 い， そ の 結 果 を フ ァ イ ル と しん，採点者には「javap」コマンドに関すて保持る知識や解析結果の読解・利用技術が必5．自 動 採 点 の 場 合， 提 出 か ら 結 果 の要となるが，複雑な状況を求めなければ表示までを 20 秒以内とし，その間対応できるケースも多い。筆者の場合，に 60 人程度がアクセスしてもシス標準的には，クラスやメソッドの情報なテムダウンが発生しない（タイムア

どを抽出し必要に応じて正答例のものとウトは許容）

比較する形で自動採点の際に利用してい6．管 理 者 の 画 面 か ら， 提 出 さ れ たる。本システムでの具体的な利用方法に

フ ァ イ ル や 答 案 の 確 認， 採 点 の 修

ついては第 5 章で説明する。

正や手動採点が可能
7．管 理者の画面から，クラスごと・授3．システム設計

業の回ごとに課題の公開・提出期間

3.1

等の設定が可能

システム要求JAR フ ァ イ ル を 対 象 と す る 自 動 採 点

前述の要求が満たせるように，ハード機 能 を 有 し た Java プ ロ グ ラ ミ ン グ 実 習

ウェアの選定と環境構築およびシステム

用実習用システムを構成するにあたり，設計を行っている。現行機のハードウェ

当初から考慮したシステム要求は以下の

アと環境は表1の通りである。なお，当初通りである。

のマシンはスペックやバージョンが現行
注 5）

Java の SDK に付属する，バイトコードで書かれたクラスファイルを解析・逆アセンブルして人間が理解できる文字列に変換するツール。

愛知大学情報メディアセンター

－ 15 －

Vol.31, No.1, 2022

表1システムのハードウェアと環境

本体

PC/AT 互換機

CPU

Core i5 760 2.80GHz

RAM

4 GB

ストレージ

HDD 320GB

ネットワーク

1000Base-TX

OS

Lubuntu 20.04 64bit

ウェブサーバApache 2

サーバ側処理PHP 7, Bash 5

ブラウザ側処理 jQuery 3
データベースMaria DB 10

Java 環境

OpenJDK 16, OpenJFX

画面キャプチャ Xvfb, ImageMagick

図1

受講者によるシステム利用の流れ

より大きく劣るが，HDD の障害を除き，

JAR ファイルを作成する。受講者が課題

運用中の過負荷によるシステムダウン等

内 容 の 画 面 か ら JAR フ ァ イ ル を 提 出 すは発生しなかった。

ると，サーバ側で実行や採点が行われ，受講者によるシステムの利用の流れは

実行結果や評価が表示される。その後，

図 1 のようなものを想定した。まずログ受講者はページを戻ったり課題一覧を表

イ ン 認 証 を 行 い， 受 講 者 と し て 登 録 さ示させたりして，課題への再挑戦や次のれていればトップページが表示される。

課題への挑戦を行っていく。

トップページには各機能や資料へのリン

前述の要求に基づくシステムの具体的クが示されており，受講者が課題一覧を

な要件および追加機能は詳細多岐にわた

選択すると，その時点に出題されているるため，必要に応じて後述する。

課題の一覧が表示される。このとき，進捗状況を把握できるよう，各課題の評価

3.2

フォルダ構成を記号化したものが各課題の内容へのリ本システムはウェブサービスとして運ンクとして表示される。受講者が課題を用するため，ウェブ上から直接アクセス

選択すると，それに対応した課題内容ができる表層部と，そうでない内部に分か表示される。受講者は表示された条件やれたフォルダ構成とした。概要は図 2 のサンプルプログラムをもとにプログラミ

通りである。

ングを行い，ローカル環境にて実行可能
愛知大学情報メディアセンター

表 層 部 に 関 し て は，PC 内 の 著 者 用 の－ 16 －

Vol.31, No.1, 2022

題内容と採点用スクリプトがフォルダ群（課題バンク）として収められた「_test」
がある。
出題課題別のフォルダ群は，出題する課題を設定する際に，その課題の番号で自動作成される。例えば，第 02 回の授業の 3 つ目の課題であれば「023」となる。
この出題課題別フォルダの下にさらに受講者ごとのフォルダを自動作成し，提出された JAR ファイルやその実行結果，自動 採 点 の ロ グ， そ の 他 の フ ァ イ ル な ど
図2

システムのフォルダ構成

を，それぞれ指定の名前で保存する形である。

ホームフォルダにあるフォルダ「public_

課題バンクにおいては 1 つの課題につhtml」内に「授業略称・年度」のフォル

き 1 つのフォルダとしており，課題の識ダが用意してあり，その下に PHP ファイ

別子をフォルダ名としている。それぞれ

ル群を置いてある。「index.php」がトッのフォルダに，データベースへの登録用

プページとなっており，そこから各ペー

設定ファイル，課題の説明，ソースコー

ジへのリンクをたどる形となる。また，

ド，正答例，自動採点スクリプト，その簡 便 の た め， 講 義 資 料 等 は「docs」 と他のファイルなどを指定の名前で収めいうフォルダに別途置き，トップページて あ る。 ま た， 課 題 バ ン ク と は 別 に「_にもリンクを載せている。表層部とそれ

default」フォルダを用意してあり，ここに 付 随 す る 各 機 能 は 主 に PHP の 形 で モには標準的な課題の説明と自動採点スク

ジュール化して用意するが，自動採点そ

リプトをタイプ別で収めてある。課題バの も の は PHP で は 行 わ な い。 内 部 に よンクのフォルダ内に説明やスクリプトのる処理結果を受けて，結果を表示するにファイルが存在しなければ，これらが利とどめる。なお，PHP ファイル群につい用される。なお，自動採点スクリプトにては第章で詳細を述べる。

ついては第 5 章で詳細を述べる。

内部に関しては，これもホームフォル

課題バンクフォルダ内には，主に下記

ダ下のフォルダ「ws_web」内に「授業略のファイルが収められている。

称・年度」のフォルダが用意してあり，そ◦ setting.txtの下に出題課題別のフォルダ群と，各課
愛知大学情報メディアセンター

データベースへの登録用設定ファイル－ 17 －

Vol.31, No.1, 2022

◦ direction.txt

p_id

課題識別子

課題の説明

type

課題タイプ

◦ figure.png

title

課題タイトル

dist

配布ファイル名（任意）

説明の補足用の画像◦ p_link◦ code.txt

各授業の設定テーブル

lnk_id

授業の識別子（cls_id+l_id）◦ answer.txt

cls_id

クラス識別子

正答例

l_id

授業の回

t_open

授業開始日時t_view

課題公開日時t_late

課題締切日時ソースコード（提示用）◦ answer.png
画像を提出させる課題用の正答例◦ test_cmd.sh

p_id1～ p_id8

自動採点スクリプト

各出題課題の課題バンク内識別子◦ input*.dat（* は任意の数値）◦ evals

自動実行時の入力

u_id◦ output*.dat（* は input に対応する数値）

評価テーブル
学内アカウント名

s010～ s159

自動実行時の想定出力（比較用）

各出題課題の評価点数◦ output_jp*.txt（* は数値）
javap による解析結果の抜粋（比較用）

各テーブルおよび各項目の意味の詳細は，以降の項でそれぞれ述べる。

◦ diff_res*.log（* は数値）実行結果に対する想定差分

3.3.1◦その他，配布ファイルなど

users

ユーザ情報を管理するテーブルであ3.3る。主キーとなるユーザ識別子を学内ア

データベース構成

データベースは授業略称・年度で作成

カウント名と同一とするのは，本システ

し， そ の 中 に 下 記 の 名 称・ 項 目 を 持 つム が 学 内 の シ ス テ ム で あ り， 学 内 の 別

テーブル群を用意する。

サーバで認証を行うためである。また，◦ users

ユーザ情報テーブル

テ ス ト 用 の 特 別 な ユ ー ザ を 除 き， パ ス

学内アカウント名

ワードやそのハッシュ値は記録しない。

u_id

u_name 氏名

クラスごとに時限が異なるためクラス

cls_id

クラス識別子

識別子を，受講者と担当教員では利用でgrd_id

権限

きる機能を分けるため権限をそれぞれ項

課題バンクテーブル目として持たせてある。担当教員が進捗◦ p_bank

愛知大学情報メディアセンター

－ 18 －

Vol.31, No.1, 2022

などを把握しやすくするため，受講者には本システムを通して氏名を登録させ
る。

3.3.3

p_link

各授業の設定を管理し，課題バンクを紐づけするテーブルである。主キーとなる識別子はクラスと授業回（2 桁）から

3.3.2

p_bank構成されているため冗長であるが，検索課題バンクを管理するテーブルであるが， 実 質 的 に イ ン デ ッ ク ス で あ る。 主の観点からクラス識別子と授業回も項目として持たせてある。

キーとなる識別子は前述のフォルダ名に授業の開始日時は，実質的に，その回対応しており，他の項目はフォルダ内のの課題の提出が可能となる日時である。

設定ファイルに記述された情報が登録さそれとは別に，課題の公開日時を設けた

れている。メンテナンス性とデータベーのは，予習を促すためである。また，学スの負荷の観点から，各課題の詳細はこ期の終盤に用意した総合的な課題など

こに登録していない。

は，早めに公開することでモチベーショ

課題タイプは下記の通りである。

ンにつながることが期待され，それを可1．JAR ファイルを受け取るのみ

能 と す る た め で あ る。 課 題 の 締 切 日 時

2．JAR ファイルを受け取って自動採点

は，受付を停止するというよりは，以降（テキストベースで自動実行）

を遅延提出として扱う日時である。

3．JAR ファイルを受け取って自動採点

1つの授業に最大8つの課題を設定でき（起動時にスクリーンショット）

るよう，課題バンク内の識別子を登録す

4．テキストデータを受け取るのみるための項目を 8 個設けてある。上限を5．テキストデータを行ごとに自動採点8 にした理由は，難易度にもよるが，課6．PNG ファイルを受け取るのみ

題数が多すぎると受講生が対応しきれず

7．ドキュメントを受け取るのみ

モチベーションを下げる恐れがあるため8．ZIP ファイルを受け取るのみと，現在までの授業実施において不足し課題を出題する際に内容を把握しやすていないためである。

くするため，タイトルを項目として持たせてある。また，課題によってはファイ

3.3.4

evals

ルを配布するため，そのファイル名を登各出題課題の評価点数を管理するテー

録できるようにしてある。ただし，そのブルである。主キーとなるユーザ識別子

ファイルの実体は課題バンクフォルダにを 除 き， 項 目 名 は 先 頭 の "s" に 続 い て 授

収めてあることとする。

業回（2 桁）とその中での課題の順番からなる。現在の実装では，クラスを分け

愛知大学情報メディアセンター

－ 19 －

Vol.31, No.1, 2022

ずひとまとめで扱っている。また，項目は後から追加していく形をとっている。
1つの授業で設定できる課題は8つまで◦ update_u.php
ユーザ情報の更新◦ login.phpとしたが，それとは別に，授業ごとに出ロ グ イ ン 認 証， デ ー タ ベ ー ス か ら の欠を 0 番，感想を 9 番とし，その状況も登

ユーザ情報の読み込み録対象としている。現状では，出欠に関◦ logout.php

しては「無断欠席」「欠席」「遅刻」「出ログアウト

席」を区別し，感想に関しては「短文」

これらのファイルが担当する機能は論「長文」を区別している程度である。

旨に大きく関わらないため，説明は割愛する。

4．PHP ファイル群
PHP ファイル群は，大きく分けて以下の 4 つに分けられる。

4.2

課題および評価の提示関連該当するファイルは以下の通りである。

1．ユーザ情報および認証関連◦ show_eu.php

2．課題および評価の提示関連

課題（評価）一覧ページ

3．課題の提出および採点関連◦ show_p.php

4．管理関連

課題内容ページ

それぞれについて，以降の節で述べる。

◦ show_p9.php
授業への意見・感想を入力するページ

4.1

ユーザ情報および認証関連◦ disp_png.php

該当するファイルは以下の通りである。
◦ index.php

内部に保存された画像の表示◦ dl_file.php

トップページ

内部に保存された提出ファイルのダウ◦ config.php

ンロードサ イト内の共通設定，セッションの維◦ dl_file_d.php

持，アクセス制限など（サイト内のほ配布ファイルのダウンロード

ぼ 全 て の PHP フ ァ イ ル か ら 冒 頭 で 呼

こ の 中 の show_ls.php と show_p.php

び出し）

について，以降の項で説明する。

◦ add_u.php
受講者の初回登録ページ◦ edit_u.php
ユーザ情報の確認・更新ページ
愛知大学情報メディアセンター

4.2.1

show_eu.php

現在出題されている全ての課題内容への リ ン ク 一 覧 ペ ー ジ で あ る が， 同 時 に－ 20 －

Vol.31, No.1, 2022

ジ内での各評価記号の数を単純に重みづけ和した値であり，実際の評点とは異なるが，目安となる。
4.2.2

show_p.php

課題の詳細な内容が表示されるとともに，答案の提出を受け付けるページである。その一例を図 4 に示す。課題番号はクラスと授業回（2 桁）と課題の順番からなるが，Eclipse で Java プロジェクト
図3

課題（評価）一覧ページの例を作成する際のプロジェクト名も兼ねている。そのため，課題の説明文中のプロユーザの評価一覧としての機能を持つ

ジェクト名が課題番号になるよう，表示（図 3）。受講者が自身の進捗を把握しや時に置換している。タイトルに続き，説すいよう，授業回ごとの行に締切日時と明，コード，図，配布物，その他，提出，出題課題の評価の列を持たせ，表にして判定，コメント，正答例が並ぶが，コーある。各評価は記号で表し，ド以下はそれぞれ不要な場合には表示さ

◦

×

未提出

れない。

◦

▲

不合格

「 説 明 」 に は 前 述 の direction.txt の 中◦

確認中 手動での採点が未完了

身を修飾済み html として表示し，「コー◦●

合格（遅刻提出）ド」には code.txt の中身を標準テキスト

◦

○

合格

として読み込んだ後に highlight.js◦◎

合格（加点対象）

用いて装飾表示する。そのため，「説明」

注 6）

を

としてある。クリックするとそれぞれのに は html の 機 能 を 利 用 で き，「 コ ー ド 」

課題内容ページへ遷移する。なお，各授にはソースコードファイルをほぼそのま

業回の最後の課題は授業の感想を任意で

ま 流 用 で き る。 な お，「 コ ピ ー」 の ボ タ

書かせる形である。

ンを押すとソースコードがクリップボー

評価の達成度は概算評点という形で数ドにコピーされる。「図」には disp_png.

値的にも示してある。これは，このペー

php を 用 い て figure.png を 表 示 し，「 配注 6）Web ページ上に表示したソースコードに色を付ける JavaScript ライブラリ。
https://highlightjs.org

愛知大学情報メディアセンター－ 21 －

Vol.31, No.1, 2022

布物」には dist に記載されたファイルを
ダウンロードできるリンクを表示する。
「その他」には，現在は JavaFX を用いる
課題について，提出された JAR ファイルをサーバで自動実行した際のスクリーン
ショットを表示する。「図」の近くに配置することで受講者自身が比較しやすいよ
うにしてある。
「提出」は課題タイプによって表示が変 わ る。 タ イ プ 1～3 で は JAR フ ァ イ ルの提出用 input と提出ファイルのダウン
ロードリンクを，タイプ 4～5 では解答欄のテキストエリアを，タイプ 6 では PNG
ファイルの提出用 input と提出済みの画像 を， タ イ プ 7～8 で は そ れ ぞ れ ド キ ュ
メントファイルや ZIP ファイルの提出用
input と提出済みファイルのダウンロー
ドリンクを表示する。
「判定」には答案の評価結果を表示する。なお，合格（加点対象）の際はペー
ジ背景全体に花火が上がり続けるアニ
メーションが表示されるようになっている。「コメント」には答案に対する教員からのコメント（出題課題ごとの受講者のフォルダに comment.txt として保存）を表示する。
「正答例」は課題バンクフォルダ内に該当ファイルが存在する場合にそれを表示する。answer.txt に関しては，その中身を標準テキストとして読み込んだ後にhighlight.js を 用 い て 装 飾 表 示 す る。 た
図4

課題ページの例

愛知大学情報メディアセンター

だし，タイプ 5 では answer.txt の各行の－ 22 －

Vol.31, No.1, 2022

第 1 タブ前まで（または改行前まで）を

4.3.1

ul_jar.php

標準テキストとして表示する。これは，最初に，POST された JAR ファイルをタイプ 5 が別解をサポートしているため

既定の名前「a.jar」にリネームし，出題である。answer.png に関しては，disp_

課題のユーザ別フォルダに保存する。続

png.php を用いて表示する。なお，「正答

い て， 実 行 フ ォ ル ダ を 同 フ ォ ル ダ に 移例」は課題の提出期限後にのみ表示し，し，「timeout

その部分のテキストはコピーできないよ

動採点スクリプトを実行する。これにようにしてある。期限後にも提出を受け付り，無限ループなど実行時のトラブルがけることと併せて，受講者が復習する機発生してもシステムが機能不全に陥らな会を設けるためである。

い。 な お，JavaFX の課 題 の 場 合は GUI

注 7）15」コマンドとともに自が含まれるため，「xvfb-run 注 8） -a」コマ
4.3

課題の提出および採点関連

ンドを「timeout」の前に付け加えて仮該当するファイルは以下の通りである。

想ディスプレイ上で自動採点スクリプトを実行する。

◦ ul_jar.php
J AR ファイルのアップロード，自動採

自動採点スクリプトは，リダイレクト

点スクリプトの呼び出し，結果表示を用いて途中の標準出力や標準エラー出
力を全てそれぞれ指定のファイルに吐き◦ ul_txt.php
テ キストエリアのデータの投稿，自動出し，最終的な評価値を表す 1 文字（不合

採点スクリプトの呼び出し，結果表示

格："F"，確認中："K"，合格："G"，加点対象の合格："S"）のみを標準出力する形◦ ul_file.php
その他の指定ファイルのアップロード

を と る。 こ の 評 価 値 を PHP 側 で 受 け 取り，それに基づいてデータベースへの評◦ submit_p9.php
授業への感想・意見を提出

価の登録と，ユーザへ示す評価結果ペー

この中の ul_jar.php と ul_txt.php につジを作成・表示する。
評価結果ページには，正解プログラムのいて，以降の項で説明する。

実行結果と提出されたプログラムの実行
結 果 を 併 記 し，diff_match_patch.js 注 9） を
注 7）

引数で指定した時間で強制的に停止する形で実行するためのコマンド。

注 8）

仮想のディスプレイフレームバッファを生成して実行するためのコマンド。

注 9）

2 つのテキストを比較し，異なる部分を色付け表示する JavaScript ライブラリ。
https://github.com/google/diff-match-patch

愛知大学情報メディアセンター

－ 23 －

Vol.31, No.1, 2022

用いて両者の差異を色付けする。出題課
題のユーザ別フォルダ内に a.png が存在していれば，それを「起動時の画面」として表示する。これらの他，同フォルダ内に存在する「*.log」ファイルの中身を列記するが，これは出題者側のデバッグ
兼，評価結果に対する受講者への説明用である。なお，合格（加点対象）の際は，◦ update_l.php
授業情報の更新◦ edit_el.php
授業ごとの評価の管理ページ◦ show_ap.php
課題ごとの答案の一覧・編集ページ◦ read_p9.php
授業ごとの感想・意見の確認ページ

課題内容ページと同様に花火のアニメー◦ update_es.php

ションが表示されるようになっている。

評価の更新◦ update_ps.php

4.3.2

ul_txt.php

課題バンク情報をデータベースに登録

ul_jar.php と大部分が共通しているため，異なる部分についてのみ説明する。
最初に，POST されたテキストエリアのデ ー タ を 既 定 の 名 前「a.txt」 に リ ネ ームし，出題課題のユーザ別フォルダに保◦ show_es.php
数値化した評価の一覧ページ◦ edit_us.php
ユーザ情報の管理ページ◦ update_us.php

存する。評価結果ページには，テキスト

ユーザ情報の更新

データを受け取るのみの課題について

この中の edit_el.php と edit_ap.php には，提出された解答を表示する。行ごと

ついて，以降の項で説明する。

に採点する課題については，提出された解答とともに，誤りが存在する箇所を行ごとに表示する。

4.4.1

edit_el.php

同一授業における同一クラスの全受講者の全評価を表示することに加え，各評

4.4

管理関連

価の編集も可能なページである。その一該当するファイルは以下の通りである。
◦ admin.php
管理用の機能へのアクセスページ◦ show_ls.php
授業情報の一覧ページ◦ edit_l.php
授業ごとの設定ページ
愛知大学情報メディアセンター

例を図 5 に示す。出題した課題について，どれだけの受講者が答案を提出したか，合格したかが分かるため，授業中の進度調整に利用できる。評価の編集について
は，誤りを避けるため，編集対象の受講者を選択してから課題ごとのドロップダ
ウンリストで評価を編集する形にした。

－ 24 －

Vol.31, No.1, 2022

図5

edit_el.php

図6

show_ap.php

ただ，ほとんどの場合，評価の編集の際由を伝えるために利用している。特にオは答案を確認する必要がある。項目のリ

ンライン学習の際に本機能が活躍した。

ン ク か ら 後 述 の「 課 題 ご と の 答 案 の 一

評価およびコメントの編集については，

覧・編集ページ」に遷移できるため，筆誤りを避けるため，対象の受講者を選択者はそこで評価を編集することが多い。

してから課題ごとのドロップダウンリス
トで評価を編集する形にした。

4.4.2

show_ap.php

同一課題における同一クラスの全受講者の答案・評価を表示することに加え，各評価の編集も可能なページである。その一例を図 6 に示す。提出されたファイ

5．自動採点スクリプト
5.1

要求

自動採点を実装するにあたって要求としたことは次の通りである。

ルへのリンクやテキストは原則全員分

1． Linux で 利 用 で き る 無 償 の ソ フ トを，ユーザ別フォルダ内の画像ファイル

ウェア群・コマンド群で構成・構築「a.png」に関しては「確認中」のものを

2． PHP から呼び出し可能かつ採点結表示する。これにより，手動採点が必要な対象を優先的に確認できる。オプショ

果を PHP から参照可能
3． JAR ファイルを解析し採点に利用ンを指定することで，全員分の画像や，可能

ユーザ別フォルダの任意のテキストファ

4． JAR ファイルの実行中に標準入力

イルの中身を表示できる。コメント欄にか ら デ ー タ 入 力 す る 形 に 対 応 し，は，受講者個人へのコメントを書きこむ

標準出力は指定のファイルに保存ことができる。筆者は主に，手動採点で

5． JavaFX の 課 題 の 場 合 は 起 動 時 の評価を「不合格」にした場合に，その理スクリーンショットを撮影可能

愛知大学情報メディアセンター－ 25 －

Vol.31, No.1, 2022

6．テ キストの自動採点は別解に対応

5 に つ い て は，GUI を 表 示 す る プ ロ グ

それぞれの理由を説明する。まず 1 にラムの採点を高効率化するためである。

ついては，筆者がシステム用の予算を有

本来，GUI を表示するプログラムを採点していないためである。また，サーバとするには，提出されたプログラムを採点

な る マ シ ン の OS が Linux で あ る こ と は者の手元で実行する必要がある。その負前提のため，その上で利用可能な形で全担は大きい。しかし例えば，GUI のレイてを構成・構築する必要がある。2 につアウトのみを採点対象とする場合，起動いては，表層部を PHP で構成することが時のスクリーンショットが表示されてい前提のためである。PHP からの呼び出し

れば，それで採点できる。また，提出先

方法や参照方法の自由度は高いため，容の誤りなどを受講者側でも採点者側でも易な要求と言える。3 については，第 2 章

採点前に気付きやすくなる。

で述べたように，プログラムの構造も採点対象に含めるためである。

6 については，答案に自由度を持たせておきたいためである。例えば数式や論4 については，入出力に着目した採点

理式を記述させる課題には，同じ結果をのためである。ソースコードから実行す生むが表現の異なる答案を想定できる。

る形であればコンパイル前にソースコー

現実的には全てを網羅できない場合も多ドの一部を置換することでデータを差いが，別解はできるだけ正解としたい。

し 替 え ら れ る が， 本 シ ス テ ム の 場 合 は
そ れ が で き な い。 実 行 時 引 数 か フ ァ イ

5.2

テキストベースでの自動実行・採点

ル，標準入力で与える必要がある。ここタイプ 2 の課題，つまり，実行可能 JAR

で，実行時引数やファイルを用いる場合

ファイルをテキストベースで自動実行おは，初心者にとってハードルが高い。例

よび採点する場合の標準のスクリプトをえば Eclipse の場合，起動構成の適切な

図 7 に示す。1～4 行目はフォルダの把握設定やファイルの適切な配置・編集などと移動，6 行目は以前のファイルの削除が必要となり，受講者が対応しきれずトである。7～12 行目では，JAR ファイル

ラブルが多発する恐れがある。一方，標内に含まれるクラスファイルをそれぞれ

準入力で与える場合，その部分を提示す「javap」コマンドで解析し，その結果をるソースコードにあらかじめ含めること

一 旦 output_jp.txt に 保 存 し て い る。 環ができる。また，実行時の標準出力を指境によっては元のファイル名のエンコー

定の名前のファイルへ一旦保存すること

ドが Shift-JIS であるため，それに対応しで，実行と採点を切り離して考えること

てある。

ができる。
愛知大学情報メディアセンター

14～22 行 目 で は， 自 動 実 行 お よ び 実－ 26 －

Vol.31, No.1, 2022

行結果と正答例による出力結果との比較

ルドカード）が存在する個数分，それぞを行っている。まず，課題バンクフォル

れを標準入力に流し込みながら実行し，

ダ 内 に フ ァ イ ル「input*.dat」（* は ワ イ

それぞれの標準出力を対応するファイ GBVK  SZG  SBLG  EDVHQDPH^GBVK` 
フォルダの把握と移動
 IODJBN  FG^`^`  UPIGLII RXWSXW HUURU !!HUURUORJ ]LSLQIRDMDU FODVV_VHG VFODVVJ ? _[DUJVMDYDSFODVVSDWKDMDU–YHUERVH!RXWSXWBMSW[W!!HUURUORJ LI>VRXWSXWBMSW[W@WKHQ
javap による解析
  ]LSLQIR2VMLVDMDU FODVV_VHG VFODVVJ ? _[DUJVMDYDSFODVVSDWKDMDUYHUERVH!RXWSXWBMSW[W!!HUURUORJ
 IL 
 IRUIBLLQ^GBVK`LQSXW GDW
 GR  IBR  EDVHQDPH^IBLLQSXWRXWSXW` 
自動実行および  FDW^IBL`_MDYDMDUDMDU_VHGU V?[E?>>@ PJ !^IBR`  LI>V^GBVK`^IBR`@WKHQ
実行結果の比較   IODJBN    GLIIG%ZVWULSWUDLOLQJFU^IBR`^GBVK`^IBR`!!GLIIBUHVORJ  IL GRQH  SMQP CVHGQSRXWSXWBMSW[W_VHGH V ?? H V?  C
 FDWRXWSXWBMSW[W_JUHS&ODVVILOH_VHGH V ?J _VRUW!RXWSXWBMSW[W※1
 FDWRXWSXWBMSW[W_JUHSVWDWLF _VHGH VA VWDWLFVWDWLFJ HV^SMQP`J?
 _VRUW!!RXWSXWBMSW[W FDWRXWSXWBMSW[W_JUHSH[WHQGV_VHGHV^SMQP`J_VRUW!!RXWSXWBMSW[W LI>V^GBVK`RXWSXWBMSW[W@WKHQ  IODJBN ※2  GLIIGLVWULSWUDLOLQJFURXWSXWBMSW[W^GBVK`RXWSXWBMSW[W!!GLIIBMSORJ
 IL 
 LI>^IODJBN`HT@WKHQ
※1 javap の結果から情報を抽出  LI>VGLIIBMSORJ@WKHQ
※2 正答例のものと比較   HFKRQ)
  HOVH   LI>VGLIIBUHVORJ@WKHQ
評価値を決定    HFKRQ)
   HOVH
比較無し："K"（確認中）    HFKRQ*
差分がある："F"（不合格）   IL  IL
差分がない： "G"（合格） HOVH  HFKRQ.
 IL図7

JAR ファイルをテキストベースで自動実行・採点するスクリプト（タイプ 2 標準）

愛知大学情報メディアセンター－ 27 －

Vol.31, No.1, 2022

ル「output*.dat」 に 装 飾 用 の 制 御 コ ー

存在すれば（差分ファイルが空でないな

ド を 省 い て 保 存 す る。 そ れ と 同 時 に，らば）不合格（F），存在しなければ合格

「diff

注 10）

」コマンドで正答例による出力

結 果 と 比 較 し， 差 分 を diff_res.log に 追記していく。こうすることで，入出力の関係を採点の対象とできる。

（G）とし，比較が行われていない場合は確認中（K）としている。
この標準の自動採点スクリプトの利点
は， 課 題 バ ン ク フ ォ ル ダ 内 に 比 較 用 の

24 ～ 32 行 目 で は， ま ず output_jp.txt

ファイルが存在するかどうかによって，か ら ク ラ ス フ ァ イ ル 名， ク ラ ス メ ソ ッ

自動的に適切な挙動をとることにある。

ド 名， 子 ク ラ ス 名 を そ れ ぞ れ 抽 出 しそのため，入出力の関係やプログラムのoutput_jp2.txt に追記保存している。こ構造の大枠のみ確認したい課題のほぼ全の際，パッケージ名（プロジェクト名）をてが，比較用のファイルを用意するだけ

消去している。課題バンクフォルダ内にで自動採点できる。

output_jp2.txt が存在する場合は「diff」
コマンドで比較し，その結果を diff_jp2.

5.3

JavaFX の課題の自動起動・採点

txt に保存する。こうすることで，プログ

タ イ プ 3 の 課 題， つ ま り JavaFX を 利

ラムの構造の大枠部分を確認し，採点の用 し て お り， 自 動 起 動 時 の ス ク リ ー ン

対象とできる。

ショット撮影を行う場合の自動採点スク

34～46 行目では，これまでに得られたリプトを抜粋し図 8 に示す。なお，割愛

結果から評価値を決定している。何らかされた部分はタイプ 3 の課題のものとほの比較が行われた場合，それらの差分がぼ同一である。

 WLPHRXWRSHQER[!!HUURUORJ!!HUURUORJ 
 WLPHRXWMDYDPRGXOHSDWKXVUVKDUHRSHQMI[OLE?
※1
 DGGPRGXOHVMDYDI[FRQWUROVMDYDI[I[POMDYDI[PHGLDMDYDI[VZLQJ? MDUDMDU!!HUURUORJ!!HUURUORJ VOHHS!!HUURUORJ!!HUURUORJ
 ZBLG  [GRWRROVHDUFKRQO\YLVLEOHQDPH^` !!HUURUORJ!!HUURUORJ
※2
 [GRWRROZLQGRZDFWLYDWH^ZBLG`!!HUURUORJ!!HUURUORJ?
 LPSRUWZLQGRZ^ZBLG`IUDPHDSQJ!!HUURUORJ!!HUURUORJ
 LI>VGLIIBMSORJ@WKHQ
評価値を決定  HFKRQ)
※1 仮想ディスプレイ上で起動 HOVH
差分あり： "F"（不合格）※2 スクリーンショットを撮影  HFKRQ.
差分なし： "K"（確認中） IL

図8
注 10）

JavaFX の課題を自動起動・採点するスクリプト（タイプ 3 標準）の抜粋

Linux に標準で搭載されている，2 つのテキストファイルを比較し，差分を出力するコマンド。空白や改行を無視した比較も可能。

愛知大学情報メディアセンター－ 28 －

Vol.31, No.1, 2022

11～16 行目は，タイプ 2 の場合の 14～の 34～46 行目を置き換える部分である。

22 行 目 を 置 き 換 え る 部 分 で あ る。 こ こ

タイプ 3 の標準では，javap での解析結果

では，まずウィンドウマネージャであるとの比較のみで評価値を決定し，不備が「openbox

注 11）」を時限的に立ち上げた後なければ「確認中」としている。

に，JAR ファイルを実行している。その後，5 秒待ってから「xdotool 注 12）」コマ

5.4

ンドを用いてウィンドウを検索，最前面

点

テキストデータの行ごとの自動採にし，「import 注 13）」コマンドでウィンドタイプ 5 の課題，つまりテキストデー

ウ 指 定 し て 撮 影 し「a.png」 と し て 保 存

タを行ごとに自動採点する場合は，例えしている。ここで，検索に用いるのは学ば図 9 に示すような説明文と正答例を用

内アカウント名であり，受講者に提示す意しておく。行ごとに採点するため，小るソースコード内に事前に含まれるよう設問の番号と回答の行・正答例の行とを工夫してある。こうすることで，採点の対応させておく必要がある。正答例につページにて起動時のスクリーンショット

いては，タブ文字で区切りながら別解をを表示できる。なお，第 4.2 節で述べたよ併記することができる。タブ文字はブラ

うに，スクリプトの実行前に仮想ディス

ウザ上のテキストエリアへ入力することプレイを生成しておく必要がある。

が困難であるため，区切り文字として適27～31 行目は，タイプ 2 の標準の場合

GLUHFWLRQW[W（課題の説明）より回答させる部分を抜粋

DQVZHUW[W（正答例）
タブ文字を網掛けで表現

図9
















している。

変数Dの値がである
変数Dの値がでない
変数Dの値が正である
変数Dの値が以下である
変数Dの値がの倍数である
変数Dの値が奇数である
変数Dの値をで割った余りがであるD  D
D 
 D D  
D!
D
D 
! D
D    D D 
D    D 
D 
D    D 
D   D 





DD
D

タイプ 5 の課題の例（日本語の条件式を Java 風に表記）


注 11）

Linux 用のウィンドウマネージャ。シンプルかつ軽量で立ち上がりが早い。

注 12）

コマンドラインからウィンドウやマウス・キーボードを操作するツール。

注 13）

ImageMagick に付属する，スクリーンショットを撮影するコマンド。

愛知大学情報メディアセンター

－ 29 －

Vol.31, No.1, 2022

タイプ 5 の課題の自動採点スクリプト較していく。もし文字列が一致した場合を図10に示す。1～2行目はフォルダの把は，その行を正解したと見做して count.

握と移動，4 行目は以前のファイルの削

txt に記録し，次の行に移る。タブ文字で除である。

分割された文字列群に一致するものが存

6 ～ 21 行 目 で は， 正 答 例 と の 比 較 を在しなかった場合はそのまま次の行に移行っている。answer.txt から 1 行ずつ読る。全ての比較を終えたら不要なファイ

み取り，さらにタブ文字で分割した文字

ルを削除する。この形であれば，タブ文

列 と， 答 案 で あ る a.txt の 同 じ 行 と を 比字で区切ることで行ごとの別解を複数用










































GBVK  SZG 
FG^`^`UPIGLII RXWSXW UHVORJFRXQWW[W
FRXQW 
FDW^GBVK`DQVZHUW[W_ZKLOHUHDGOLQH
正答例から 1 行ずつ読み取りGR
タブ文字で区切る（=line2）

FRXQW  FRXQW 
HFKR^FRXQW`!!FRXQWW[W
HFKR^OLQH`_WU ?W  ?Q _ZKLOHUHDGOLQHGR GLIIG%ZVWULSWUDLOLQJFU VHGQ^FRXQW`SDW[W  HFKR^OLQH` !GLIIBUHVORJ  LI>VGLIIBUHVORJ@WKHQ   HFKR^FRXQW`!!UHVORJ  EUHDN
line2 と回答の差分がない物があった場合

 IL

GRQH
現在の行番号を res.log に記録して次の行へ
GRQHUPIGLIIBUHVORJFRXQW FDWFRXQWW[W_ZKLOHUHDGLGR M CVHGQ^FRXQW`SUHVORJC
全行番号と res.log に記録した行番号を比較しLI>^L`HT^M`@WKHQ HFKR!!RXWSXWGDW
res.log に含まれる場合は空行
  FRXQW  FRXQW 
含まれない場合は誤り箇所を指摘する">>"を出力
 HOVH  HFKR!!!!RXWSXWGDW
（併せて，差分ファイルに記録）
  HFKR^L`!!GLIIBUHVORJ

IL
GRQH

LI>VGLIIBUHVORJ@WKHQ
評価値を決定 HFKRQ)
差分なし： "F"（不合格）HOVH
 HFKRQ*
差分あり： "G"（合格）
IL

図 10

テキストデータを行ごとに自動採点するスクリプト（タイプ 5 標準）

愛知大学情報メディアセンター－ 30 －

Vol.31, No.1, 2022

意することができる。

での記述力が必要になる。筆者自身，幾23～34 行目では，誤りのあった行を受

度となく試行錯誤を繰り返して課題を作講者に指摘するためのテキストファイル成しており，かかった労力は大きい。し「output.dat」を count.txt から作成してかし，学習効果を高めるような工夫のあいる。それと同時に，誤りのあった行のる課題には，このような機能が必要であ

番号を diff_res.log に追記保存している。

ると考える。

36～40 行 目 は diff_res.log を も と に 評価を行っている。ファイルが空でなけれ5.5.1

ば不合格（F）とし，そうでなければ合を変更する場合格（G）としている。

含まれる条件式の個数で評価値

例えば，条件式の個数で評価値を変更したい課題を作成した際は，図 7 の 34 行

5.5

特殊なケースの自動採点

目 以 降 を 図 11 の よ う に 置 き 換 え た も の

ここまで，タイプ別の標準的な自動採を用意した。図の 34 行目では「javap」コ

点スクリプトについて説明してきたが，

マ ン ド に よ る 解 析 結 果 output_jp.txt か課題バンクフォルダ内に test_cmd.sh をら条件式の個数を数え上げ，output_jp3.

用意することで，特殊なケースの自動採

txt に出力している。40行以降にて，条件点も可能である。ただし，特殊なケース式の数が 6 以下であれば加点対象の合格の自動採点を行うには，課題作成者によ（S）とし，10 以下であったら合格（G），

る課題への深い理解が必要になるとともいずれでもなければ不合格（F）としてに，現状では「javap」コマンドの結果にいる。

対する読解力や Linux シェルスクリプト FDWRXWSXWBMSW[W_JUHSFLIB!RXWSXWBMSW[W  LI>VGLIIBUHVORJ@ WKHQ
HFKRQ)
  HOVH
LI>CFDWRXWSXWBMSW[WCOH@WKHQ  HFKRQ6   HOLI>CFDWRXWSXWBMSW[WCOH@WKHQ HFKRQ*
 
HOVH
 
 HFKRQ)
 
IL
 
 IL

javap の結果から条件式の個数（"if_"を含む行数）を数え上げてoutput_jp3.txt に記録
評価値を決定実行結果に差分あり："F"（不合格）

条件式の個数が 6 以下："S"（加点対象）

条件式の個数が 10 以下： "G"（合格）
それ以外："F"（不合格）

図 11 特殊な自動採点スクリプトの例（含まれる条件式の個数で評価値を変更する場合の抜粋）

愛知大学情報メディアセンター－ 31 －

Vol.31, No.1, 2022

5.5.2

大量のデータ入力を必要とする

場合

定する形，実行中に標準入力でファイル名を指定する形が挙げられる。しかし，

例 え ば， 大 量 の デ ー タ 入 力 を 必 要 とするアプリケーションを想定した場合，これらのような課題は標準的な自動採点
スクリプトでは対応できない。

ファイルからデータを入力する方が効率ファイルでデータを指定する場合の自的であるその実装方法としては，プログ

動 採 点 ス ク リ プ ト の 例 を ま と め て 図 12

ラム内で特定のファイルを参照する固定

特殊な自動採点スクリプトの例（ファイ的な形，実行時の引数でファイル名を指ルでデータを指定する場合の抜粋）図 12（a）プログラム内で特定のファイル（「data.txt」）を参照する固定的な形
 IRUIBLLQ^GBVK`LQSXW GDW
 GR
FS^IBL`GDWDW[W 
IBR  EDVHQDPH^IBLLQSXWRXWSXW`  
MDYDMDUDMDU_VHGU V?[E?>>@ PJ !^IBR` 
LI>V^GBVK`^IBR`@WKHQ IODJBN  
GLIIG%ZVWULSWUDLOLQJFU^IBR`^GBVK`^IBR`!!GLIIBUHVORJ
 
IL
 
 GRQH（b）実行時の引数でファイル名（「input*.dat」内にそれぞれ記載）を指定する形
 IRUIBLLQ^GBVK`LQSXW GDW
 GRIBLL CFDW^IBL`C FS^GBVK`^IBLL`^IBLL` 
IBR  EDVHQDPH^IBLLQSXWRXWSXW`  
MDYDMDUDMDU^IBLL`_VHGU V?[E?>>@ PJ !^IBR` 
LI>V^GBVK`^IBR`@WKHQ IODJBN  
GLIIG%ZVWULSWUDLOLQJFU^IBR`^GBVK`^IBR`!!GLIIBUHVORJ
 
IL
 
 GRQH（c）実行中に標準入力でファイル名（「input*.dat」内にそれぞれ記載）を指定する形
 IRUIBLLQ^GBVK`LQSXW GDW
 GRIBLL CFDW^IBL`C FS^GBVK`^IBLL`^IBLL` 
IBR  EDVHQDPH^IBLLQSXWRXWSXW`  
FDW^IBL`_MDYDMDUDMDU_VHGU V?[E?>>@ PJ !^IBR` 
LI>V^GBVK`^IBR`@WKHQ IODJBN  
GLIIG%ZVWULSWUDLOLQJFU^IBR`^GBVK`^IBR`!!GLIIBUHVORJ
 
IL
 
 GRQH

図 12

特殊な自動採点スクリプトの例（ファイルでデータを指定する場合の抜粋）

愛知大学情報メディアセンター

－ 32 －

Vol.31, No.1, 2022

に示す。それぞれ，（a）プログラム内で配 置 す る 必 要 が あ り， 相 対 パ ス で の み

特定のファイルを参照する固定的な形，

フ ァ イ ル 名 を 指 定 す る 必 要 が あ る。 ま（b）実行時の引数でファイル名を指定す

た，ファイルを正しく受け取ることがでる形，（c）実行中に標準入力でファイル

きるよう，課題のプログラムを作成する

名を指定する形であり，図 7 に示したス必要がある。

ク リ プ ト の 14～22 行 目 を 置 き 換 え る ものである。

6．システムの運用状況と受講者の反応（a）では，タイプ 2 標準でも用いる入本 シ ス テ ム の 運 用 開 始 が 2017 年 で あ

力用ファイル「input*.txt」を，JAR の実

り，以降，受講者やアシスタントへのイ

行前にプログラム内で固定的に参照する

ンタビューの他，毎回の授業における任ファイル名（図の例では「data.txt」）に

意課題の一環として授業への意見・感想

書き換えつつ実行フォルダにコピーしてを募ってきた。寄せられたものの大半はいる。その代わり，実行時の標準入力に授業内容や進度，課題の難易度に関するファイルの中身を流し込まないようにしものであったが，システムへの意見や要ている。

望もいくつか見られた。統計処理をはじ（b） で は，「input*.txt」 内 に 書 か れめ分析を行っていなかったため，数値的たファイル名をあらかじめ取り出しておに示すことができないが，受講者の反応

き，それをもとに課題バンクフォルダ内

を中心に本システムの運用の状況を述べの フ ァ イ ル を JAR の 実 行 前 に 実 行 フ ォる。

ルダにコピーしている。その代わり，実ま ず， 実 行 可 能 JAR フ ァ イ ル の 作 成

行時の標準入力にファイルの中身を流しについては，授業回を重ねるごとに，筆込まないようにするとともに，実行時引者やアシスタントへ質問することが減っ

数にファイル名を指定している。

ていった。時折見られたのが，「ローカ（c）では，「input*.txt」内に書かれた

ルでは正しく実行できるのに自動採点でファイル名をあらかじめ取り出してお不合格になる」というもので，大半が提き，それをもとに課題バンクフォルダ内

出ファイルの間違い（エクスポート時のの フ ァ イ ル を JAR の 実 行 前 に 実 行 フ ォ

起動構成の選択ミスを含む）であった

ルダにコピーしている。（b）（c）と異なが，特殊な課題などプログラム構造も採り，実行時の標準入力にファイルの中身

点対象としていることが原因の物もあっを流し込んでいる。

た。その旨と課題の説明文を改めて伝え

注意点としては，セキュリティ上の制

ると，大半は納得し，後に合格を得てい約から，実行フォルダの下にファイルをた。いずれにしても，受講者によるロー

愛知大学情報メディアセンター

－ 33 －

Vol.31, No.1, 2022

カルでの実行が習慣づいており，本シス

できなくなることから導入した。これら

テムの目的が達せていることが示唆されの機能なしでは受講者・課題ごとの細かる。また，受講者がプログラム構造につな対応が難しかったはずである。いずれ

いて考えるきっかけにもなっていることも， 理 解 し よ う と す る 受 講 者 の 一 助 にが分かる。

なっていたと言える。

受講者が考えるきっかけ，あるいはモ運用中のシステム面の改善としては，

チベーション維持のきっかけとしては，

課題内容ページにて表示されるソース

加 点 対 象 の 合 格 の 存 在 も 大 き い。 加 点

コードの装飾とクリップボードへのコ

対象の合格のある課題を出題した際は，

ピ ー 機 能 の 導 入 も 挙 げ ら れ る。 当 初 は「自力で加点がもらえて嬉しかった」「加等幅フォントで表示するのみであった点がもらえなくて悔しい」「どうすればが，「Eclipse やインターネット上にある加点になるのかヒントが欲しい」という解説記事のように色付けしてほしい」と意見が，特に成績上位の受講者から多くいう要望があり，また課題の際にコピー寄せられた。また，第 4.2 節で述べた，加＆ペーストの範囲を間違える受講者が多点対象の合格時の花火の演出を喜ぶ受講かったためである。機能の導入により，者も多かった。成績上位者は通常の課題

ソースコードを把握・利用しやすくなっの合格が早く，そのままでは面白みを感たためか，同様のトラブルは大幅に減少

じないことが多い。かといって，課題数した。

を単純に増やしたり難易度を高めたりで評価結果ページに表示する実行結果には，対応しきれない通常レベルの受講者

つ い て， 正 答 例 の も の と 異 な る 部 分 をのモチベーションの低下が懸念される。

装飾表示する機能も途中から導入した。

加点対象の合格がそれらを緩和できてい「実行結果の違いが分かりにくい」といると言える。

う意見に加え，採点対象が入出力のみで受講者の理解につながる機能としてないという本システムの特殊性から，実は， 課 題 の 提 出 締 切 後 に 正 答 例 を 表 示

行結果の違いを明確に伝える必要が生じする機能とコメント機能が挙げられる。

たためである。違いがなければプログラ「締切に間に合いそうにないため，正答ム構造など別の要因を検討しやすくなる

例を見て学ぶつもり」という感想が時折のである。

見 ら れ， 遅 刻 提 出 の 合 格 も 度 々 見 ら れ廃止した機能には，出欠の受講者へのた。また，コメント機能はコロナ禍の影表示が挙げられる。筆者はグループワー

響で授業がオンデマンド型学習になった

クを除いて出席を重視していないが，連際，双方向に情報量の大きな対面で対応

絡のあった欠席者のフォローをしつつ，

愛知大学情報メディアセンター

－ 34 －

Vol.31, No.1, 2022

無断欠席者のフォローを後回しにしたいを有するプログラミング実習用システム

ため，出欠を記録していた。ところが，の設計・構成や運用の状況を説明した。

授業回が進むと出欠に関する成績の問い

実 行 可 能 JAR フ ァ イ ル を 提 出 さ せ る 意

合わせのような意見が増えてしまった。

義に始まり，外部・内部のシステム設計，出欠の受講者への表示はプレッシャーを自動採点スクリプトについて，抜粋しな与え，その解消のための説明機会を増やがら詳細に示した。また，受講者からのす 要 因 と な る と と も に， 有 用 な 意 見・反応を中心に，システムの運用状況につ感想を得る機会を減らす要因にもなる。

いても示し，本システム自体は目的を十よって，出欠は授業担当者のみが把握で分に達成していることも示した。

きる形とした。

今後の課題として，来年度は使用プロ

これまでに述べた様々な状況から，本グラミング言語を変更する予定であるたシステム自体は目的を十分に達成していめ，まずは同様の目的を果たせるようなると言える。あとは課題・資料の作成と新たなシステムを構築していきたい。ま授 業 の 実 施 と い っ た， 授 業 担 当 者 の マ

た，受講者の学習効率を向上させるようターであるが，もう少しの機能拡張を考なさらなる工夫を検討していきたい。

えると，課題の作成を補助する機能が挙げられる。現行では，メンテナンスの容

参考文献

易さから，サーバのフォルダ・ファイル1）	中島秀樹，宮地恵佑，髙橋直久：プログラを直接編集あるいはそれに準じる形を

ミ ン グ 演 習 支 援 シ ス テ ム CAPES の た め

とっている。ブラウザ上から安全に課題の答案評価機構の実現，情報処理学会研を作成・編集する機能など，検討してみ究報告，2006（16），pp.127-134，2006。

たい。ただし，近年は Java や JavaFX の2）	中村慎司，筧捷彦：プログラミング授業

導入やメンテナンスに関して難が生じて

支 援 シ ス テ ム WOJ の 開 発， 情 報 処 理 学

いることから，来年度は使用プログラミ会第 77 回全国大会講演論文集 2015（1），

ング言語を変更する予定である。まずは

pp.939-940，2015。

同様の目的を果たせるよう，新たなシス

3） Aizu Online Judge,

テムを構築していきたい。

https://judge.u-aizu.ac.jp
4） Progate, https://prog-8.com

7．まとめ

5） paiza, https://paiza.jp

本稿では，ローカルの開発環境にて作

6） AtCoder, https://atcoder.jp

成 さ れ た 実 行 可 能 JAR フ ァ イ ル を 提 出させることを前提とした，自動採点機能
愛知大学情報メディアセンター

－ 35 －（URL 閲覧日は全て 2021 年 11 月 23 日）

Vol.31, No.1, 2022