Marutsuke — Excel・Word 課題の自動チェックシステム
大学の 1・2 年生向けコンピュータ系講義で、Excel・Word 課題のチェックを効率化するために作ったシステムです。正解ファイルと学生の提出ファイルを比べ、値・数式・書式・罫線・グラフなどの違いを自動で一覧にします。SA(Student Assistant)として、先生方が提出物の確認に多くの時間を使っていることに気づいたのがきっかけです。
はじめに
コンピュータ系の講義で SA(Student Assistant)を担当する中で、先生方が学生の Excel 課題のチェックに多くの時間を使っていることを知りました。 先生に話を聞くと、以前にも自動でチェックするツールの開発を試みたことがあったそうです。しかし判定が厳しすぎて、実際には使えなかったとのことでした。セルの幅がわずかに違う、グラフの位置が少しずれている、といった採点に関係のない違いまで不正解になっていたためです。 そこで、「見た目や内容が正しければ正解とする」チェックシステムを作ることにしました。 現在は先生方に使っていただき、定期的にフィードバックをもらいながら改善を続けています。
使用した言語・ライブラリ・ツール
| 種類 | 名前 | 用途 |
|---|---|---|
| 言語 | HTML / CSS / JavaScript | 画面と判定処理 |
| ライブラリ | ExcelJS | Excel ファイル(.xlsx)の読み込み |
| ライブラリ | JSZip | ファイル内部の XML を取り出す(グラフや Word の解析) |
| ライブラリ | Chart.js | プレビュー画面でのグラフ表示 |
| 開発支援 | Claude Code | AI を活用した設計・実装・テスト |
仕様
学生の提出データを扱うため、ファイルを外部のサーバーに送らずに処理できること、そして大学の PC でもソフトをインストールせずに使えることが条件でした。 そこで、ブラウザだけで動く Web システムとして作りました。
- サーバー不要で、HTML ファイルをブラウザで開くだけで動く
- 提出ファイルはブラウザの中だけで処理し、外部には送信しない
- インストール不要なので、大学の PC でもすぐに使える
主な機能
- 正解ファイル 1 つと複数の提出ファイルをまとめて読み込み、ファイルごとに一致率と違いの一覧を表示
- Excel:値、数式(使っている関数・参照しているセル・絶対参照)、表示形式、フォント、塗りつぶし、罫線、セルの結合、グラフの各種設定(種類・タイトル・軸の目盛り・凡例・データラベルなど)を比較
- Word:本文(1 文字単位)、文字の書式、段落の書式、表、ページ設定、ヘッダー・フッターを比較
- シートを Excel に近い見た目で表示し、間違えているセルやグラフに印を付ける
- 違いの一覧を CSV で書き出せる
工夫した点
「見た目が同じなら正解」とする判定
以前のツールが使われなかったのは、判定が厳しすぎたからです。この問題を解決するため、画面に表示される結果が同じなら正解とするようにしました。
- 列の幅・行の高さは、文字が切れて読めなくなる場合だけ指摘する
- 空白セルの書式など、見た目に影響しない違いは判定しない
- 罫線は「どのセルに引いたか」ではなく、実際に線が見えているかで判定する
- 表示形式の書き方が違っても表示が同じ場合(例:
h:mm;@とh:mm)は、エラーではなく警告にする
判定する項目を先生が選べる
グラフだけでも、比較できる設定は 40 以上あります。課題によって見るべきポイントは違うため、比較する項目を画面のチェックボックスで選べるようにしました。
確認しやすい表示
- 連続する行や列で同じ間違いがある場合は 1 つにまとめ、クリックすると詳細が開く
- 一覧の項目をクリックすると、シート上の該当するセルへ移動する
フィードバックを受けて改善した例
| いただいた指摘 | 対応 |
|---|---|
| 日付が「45200」のような数字で表示される | Excel の日付の形式を読み取り、「2023/10/1」のように表示 |
| 自動で付くグラフタイトルと、同じ文字を手入力したタイトルが不一致になる | 自動タイトルを実際に表示される文字に置き換えて比較 |
| 同じ間違いが大量に並び、一覧が見づらい | 連続する間違いをまとめて表示 |
今後の課題
- 配点(ルーブリック)を設定し、点数を自動で出せるようにする
- Word のチェック機能を、実際の課題で検証して精度を上げる