学習者の理解度に応じた問題提示システムの構築に向けた
AOJ の分析池田 太郎†1

槇原 絵里奈†2

概要：プログラミング経験者がプログラミング学習を行うための，高い難易度の問題は少ない．そこで，多数の問題がある ONLINE JUDGE SYSTEM に着目した．ONLINE JUDGE SYSTEM を用いたプログ
ラミング学習において，利用者が自身にあった問題を選択するのは難しい．そこで本稿では，利用者が問題の選択を行うために必要な要素を，問題同士の関連性と問題の難易度とし，問題同士の関連性を調べる
予備分析として AIZU ONLINE JUDGE の分析を行った．

1. はじめに
近年，AI や IoT の普及により, ソフトウェア開発者のの問題中から選択できるようにする必要がある．
利用者が適切な難易度の問題を選択するためには，問題が次の 2 つの要素を持つ必要があると考えられる．

需要が増加している．それに伴いプログラミング学習者が• 問題同士の関連性増加している．プログラミング学習者は学校の講義や，書• 問題の難易度

籍，ドキュメント，プログラミング学習サイトなどを用い問題の難易度を推定する研究としては，菅沼らが提案してプログラミングの学習を行う．しかし，これらの学習方た，学生の理解度に応じて，問題の難易度を動的に評価す法は，初学者向けのものが多く，プログラミング経験がある手法がある [2]．また問題同士の関連性を推定する研究る学習者の成長につながるような，高い難易度の問題がとしては，中川らが提案した，タグが付与されていない問不足するといった課題点がある．そこで，高い難易度のプ題に対して，擬似知識タグを付与する研究がある [3]．以

ログラミングの問題が集められている，ONLINE JUDGE

上の研究をプログラミング学習に適用できるよう拡張し，SYSTEM(OJS) に着目した．

OJS 対して用いることにより，利用者の解いた問題と関連OJS とは，ソースコードを送信すると，コンパイル・テがあり，かつ適切な難易度の問題を提案できると考えられスト・採点が自動で行われるシステムである．OJS の代表る．本研究では，API が公開されており，リファレンスが例として，AIZU ONLINE JUDGE，TopCoder などがあ豊富であることから，OJS の一つである AIZU ONLINEる．OJS の活用事例として，実際に大学の教育機関に導入

JUDGE(AOJ) を用いて研究を行う．

され，学習効果の向上と教育コスト削減につなげた報告や，利用者の問題選択によってプログラミング能力の向上に影響を与える可能性も報告されている [1]．

2. AOJ 上における正答履歴の定量的分析
2.1 概要OJS を用いた学習において，OJS の利用者は，問題を自利用者ごとの AOJ の問題正答履歴を取得し，利用者のら選択し解答することにより，プログラミング学習を行う．

正答履歴から問題同士の関係性の分析を行った．ある問題

しかし，OJS の問題は学習用に分類されておらず，問題のA を解けた次に，ある問題 B を解けた場合，問題 A と問題難易度も多様なため，利用者が OJS の問題の中から適切なB に関係性があると仮定し，問題同士の関係をネットワー難易度の問題を選択するのは困難である．したがって，利ク状に表す処理を行う．この処理を全ての利用者の全ての用者が自身の能力に合わせた適切な難易度の問題を，OJS解答履歴に対して行うことで分析を行った．

†1†2(1) ある問題 A を解いた直後に，ある問題 B を解いた時，現在，同志社大学理工学研究科，京都府
Presently with Major School of Engineering, Doshisha University
現在，同志社大学理工学部，京都府
Presently with Presently with Department of Science andEngineering, Doshisha University

問題 A，問題 B のノード，問題 A から問題 B へのエッジをプラス 1(2) 全ての利用者の全ての解答履歴に対して，（１）の処表 1 使用したデータの統計量使用した OJSAIZU ONLINE JUDGE
取得開始日2009 年 7 月 10 日

表 2
問題番号

利用者が問題につけたタグ
タグ:投票数

558

Graph:4
Straight Forward:1，Data Manipulation:1

取得終了日

2019 年 7 月 10 日

33

利用者の総数

13965 人118

Graph:4

問題数1845 問121

Graph:1，Puzzle:2

総回答数452757 回

557

Combinatorial Problem:2

図 1 に含まれる 5 つの問題に付与された．Problem Cat-egories のタグを表 2 に示す．タグの投票数は同じタグをつけた人の数を表している．表 2 より，問題 558 番，にGraph のタグが付けられている．また，問題 118 番,121 番の問題にも Graph のタグが付けられ問題 558 番の問題は最短経路を求める問題であり,Graph を利用して解く問題である．したがって，利用者はタグを検索し，次に解く問題を選択した可能性がある．

3. 課題
図 1 分析結果の一部

理を繰り返す今回の分析では，ある問題 A を正答した後に，ある問題B を正答した場合のみを考慮している．しかし，実際には，分析に用いたデータの統計量を表 1 示す．分析に用いた問題に取り組んだが誤答した場合も重要であると考えられ利用者は，AOJ の API で取得可能な利用者の内，AOJ のる．したがって，取り組んだ問題と正答，誤答の情報を使問題を 2 問以上正答している利用者とした．今回の分析で用する必要があると考えられる．他にも，必要なデータやは，問題同士の関連を調べるため，1 問しか回答していな有効なデータがないか検討したい．

い利用者は不適切なためである．また，今回は利用者が問題に着手したが解けなかった場合は，除外した．

今回の分析では，2 つの問題の関係を調べる簡単な手法を用いた．しかし，実際には．2 問だけでの関連性だけでなく，3 問以上の問題の関係性も考慮する必要があると考2.2 分析結果えられる．問題の同士の関連性を調べるためのアルゴリズ

最も多い解答パターンは，問題番号順に問題を解くパムについては，ベイズ推定や機械学習を用いる手法や，テターンである．一方で，一部の問題に関しては特異な回答

スト理論に基づく手法などが考えられる．適切な手法につパターンが見られた．図 1 に一例を示す．ID は問題番号いて検討したい．

を表し，正答者数は対応する問題を解いた利用者の数を4. おわりに表している．紙面の都合上，特に正答者数が多いエッジとノードを示している．図 1 は，問題 558 番の問題を正答し今後は，解答履歴から問題同士の関連性をより適切に判た 964 人の内，194 人が問題 33 番の問題の次に解いてお定するためのアルゴリズムを検討したいと考えている．まり，97 人が問題 557 番の問題の次に解いており，92 人がた，問題の解答例を基にした，問題の難易度の推定にも着問題 118 番の問題の次に解いたことを表している．また，手したいと考えている．ワークショップでは，問題の関連問題 558 番の問題を正答した 964 人の内，163 人が次に問性を調べる上で必要なデータや手法について議論したい．

題 121 番の問題を解いていることを表している．
参考文献

2.3 考察[1]

分析結果に関して考察する．図 1 に含まれる 5 つの問
題の内，問題 557 番は，問題 558 番と連番であり，問題番[2]号が小さい順に順番に問題を解いている利用者だと考えられる．また，AOJ は，利用者が問題に対してタグをつ[3]け，タグを基に検索することができる．タグは，Problem

Categories，Algorithm Categories，Free Tags の 3 種類に区分される．3 区分の内 Problem Categories は 14 個のタグを持つ．

[4]

則行祐作，中川尊雄，畑秀明，松本健一, オンラインジャッジの履歴を対象としたプログラマの成長分析, 信学技報，Vol.116，No.277，pp.97-101，Oct. 2016．
菅沼明，峯恒憲，正代隆義，学生の理解度と問題の難易度を動的に評価する練習問題自動生成システム，情報処理学会論文誌，Vol.46，No．7，pp.1810-1818，2005．
中川大海，那須野薫，岩澤有祐，上野山勝也，松尾豊，Deep Knowkedge Tracing の拡張による擬似知識タグの生成，人工知能学会論文誌，Vol.33，No.3，pp.1-11，2018.
渡部有隆，オンラインジャッジの開発と運用：Aize online
judge，情報処理学会，Vol.56，No.10，pp.998-pp.1005，2015.