MOON: Assisting Students in Completing Educational Notebook Scenarios

arXiv:2309.16201 (cs.CY)(2023) · 論文 · christophe2023moon

📅 この論文を見た日

初回 2026-06-10 / 最終 2026-06-10 / 計 1 回更新

AI解説

情報源:arXiv 全文(PDF・11頁)を精読。著者:Christophe Casseau, Jean-Rémy Falleri, Thomas Degueule, Xavier Blanc(Univ. Bordeaux, LaBRI)。実装・実験データは Zenodo アーティファクト(10.5281/zenodo.8167588)。 本ノートは SLR(Siddik 2025) の §5.2.2 Computational Environments in Notebooks で挙げられた論文の1本。

一言で

教師が「ノートブックをどの順で触ってほしいか(=シナリオ)」をスクリプトで形式化し、それを解釈して学生に実時間で色(緑/橙/赤)+絵文字の視覚ガイドを出す JupyterLab プラグイン。狙いは、ノートブックの自由なセル実行順がもたらす「学生が意図しない順で実行して壊す/迷子になる」問題を、探索の自由を残したまま抑えること。21名の無作為化比較実験で、MOON 群は不正な実行(赤セル実行)が激減し、かつ進捗は阻害されないことを示した。

背景・問題(problem)

教育現場で Jupyter ノートブックが普及している(採点課題・対話的教科書・演習シート・ライブコーディング)。テキスト・コード・画像・動画を1つの対話的文書にまとめられるのが利点。しかし問題は次にある。

論文が挙げる典型例:画像処理の演習で、学生がセル C1 C3 C5 C7 を順に実行したあと C3 で画像を差し替えたのに、寸法を再計算する C5 を「ただの表示」と思って飛ばし C7 を実行 → 古い画像の幅・高さで黒画素率を計算してしまい誤りに気づけない。さらに学生は任意の場所にセルを挿入・削除・改変できるため、気づかぬうちにノートブックの一貫性を壊す。

課題(task / やること)

教師に (1) シナリオをスクリプトとして書ける言語 を与え、(2) そのスクリプトを解釈して、次に実行すべきセルや各セルの過去/未来の実行状態を視覚表示で学生に提示すること。

シナリオ → スクリプト(DFAベースの言語)

著者はまず GitHub/Kaggle 上の教育ノートブック約100本を非形式的に分析し、セル実行に 3パターン(線形・非線形・任意)があれば十分と判断。基本単位は「コードセル Ci +それに紐づく説明テキストセル群 Tj」で Ci~Tj~...~Tn と書く(以降テキストセルは省略)。3つの演算子で実行順を表す:

これらは入れ子で合成でき、ノート全体を1式で表せる。例(最初のパート→残り2パートは任意順):((C1 C3 C5 C7 C3 C5 C7 ?C10)[(C12 C14)(C16 C18)])

MOON: シナリオを埋め込んだ教育ノートブックの例

Figure 1a:教師のシナリオを体現した教育ノートブック。各セルはコードセル Ci/テキストセル Tj と位置で識別される。

学生への支援:3色+次セルボタン

スクリプトを MOON に渡すと、学生の操作に応じて各セルを色分けする:

関連するテキストセルも一緒に強調され、指示と対象セルが結びつく。任意セル C10 は、無視すれば次ステップで赤に、実行すれば橙になる。赤セルを実行しても色は変わらない(=シナリオは進まない)。緑セルを実行することだけが進行手段。さらに、最後に実行したセルに次に実行可能なセルへ飛ぶボタンを付け、画面外でもスクロール無しで移動できるようにする。

MOON: 学生が C1 C3 C5 C7 を実行した後の色付き状態

Figure 1b:学生がセルを C1 C3 C5 C7 C3 C5 C7 の順で実行した後の状態。実行済みが橙、次に可能な C10(任意)・パートA(C12)・パートB(C16)が緑、まだ早いセルが赤。

探索の自由との両立

MOON は教師のシナリオを強制するぶん柔軟性を下げるが、探索を殺さない工夫を持つ:

実装

MOON は JupyterLab プラグイン。スクリプトは(非線形パターンを除き)正規表現とみなせる。非線形は取り得る線形パターンを全展開し、Hopcroft らのアルゴリズム([29])で決定性有限オートマトン(DFA)を生成する(任意順セルが多すぎると指数爆発するため上限がある)。スクリプトの構文解析(AST)には TypeScript 向け PEG パーサ生成器 tsPEG を使う。DFA に加えて、有効な遷移列だけを記録するユーザトレース(Ci, qj) の列)を保持する(無効遷移は記録しない)。セル実行時、その実行が現在状態の許す遷移なら状態と色を更新する。

MOON: スクリプトから生成された DFA

Figure 2:スクリプト (C7 ?C10 [(C12 C14)(C16 C18)]) から得られるオートマトン。状態 q0…q9 と、各コードセル実行に対応する遷移。

評価:無作為化比較実験(21名)

ボルドー大の1年生21名・グラフ理論の演習(2h40)で A/B比較。11名が対照群(MOONなし)、10名が実験群(MOONあり、事前に20分の操作説明)。両群とも JupyterLab を計装し、全セル実行のログトレースをノートのメタデータに記録した(ユーザトレースと違い、シナリオ非準拠の実行も記録し、バックトラック時も改変しない)。研究設問は:

MOON: 実験群と対照群の分析

Figure 3a:fitness の分布。

completeness

Figure 3b:completeness の分布。

correctness

Figure 3c:correctness(採点)の分布。

結果:

ユーザ調査(16回答, 回答率80%):「セル実行順の遵守に役立つか」に最多が AlwaysNever はゼロ。「MOON の提案は意外か」は最多が Never。「MOON をデフォルト有効にすべきか」は Rather useful 8・Very useful 4・Indifferent 4・Bad idea 0。約75%が「やや有用〜とても有用」と回答。一部の学生は「バックトラック時に未改変の中間セルまで再実行させられるのが手間」と指摘。

位置づけ・関連

Q&A

自分のコメント