情報処理学会研究報告
IPSJ SIG Technical Report

深層学習を用いたコーディング能力判定モデルの汎化性能調査服部 文志1,a)

松下 誠1,b)

井上 克郎2,c)

概要：深層学習を利用してソフトウェア開発者のコーディング専門性を判定する研究が行われている．その研究では，ソースコードのグラフ表現を利用してモデルの学習を行うことで，高い精度でコーディング
能力を判定できることがわかっている．しかし，モデルの学習と評価のために 1 つのデータセットを分割して使用しているため，学習データと異なるデータセットのデータに対する判定精度，いわゆる汎化性能は明らかになっていない．そこで本研究では，新たに 3 種類のデータセットを構築し，既存研究で使用されたものと合わせて計 4 種類のデータセットを使用した汎化性能の調査を行った．その結果，このモデルの汎化性能は高くないことがわかった．
キーワード：コーディング，深層学習，競技プログラミング，汎化性能

1. まえがき

し，使用する予約語の利用頻度やメトリクスの値に差異があることが確認された．この研究結果を利用し，槇原 [9] とソフトウェア開発を行う企業は，事業を計画的に推進す松井 [10] は予約語の利用頻度やメトリクスから機械学習にるためにコーディング能力の高いエンジニアを採用し，遂よって定量的かつ自動的にコーディング能力を判定するモ

行しているプロジェクトに配置することが必要とされる．

デルを作成した．さらに松井 [11] はソースコードの構造に

例えば Amazon や Facebook, Google 等の技術系企業では，関する情報や変数の意味的な情報を含むグラフを構築し，採用試験の際コーディングテストを実施することで，応募

それを学習へ利用することによってより精度の高いモデル

者の技術力を測っている [8]．しかし，このような場面でを作成した．しかし，この研究ではモデルの学習とテスト

ソースコードの評価を人の手で行うと，非常に大きなコにおいて同じデータセットのデータを利用して判定精度をストがかかってしまう．そのため，人の手ではなく機械に測定していた．そのため，学習データと異なるデータセッ

よってコーディング能力を判定できれば大幅にコストを削トのデータに対する判定精度，いわゆる汎化性能は明らか減できると考えられる．

になっていない．

「開発経験が長ければ長いほどコーディング能力が高い」

そこで本研究では，複数のデータセットを利用してグラという評価が行われることがあるが [14]，開発者の経験とフ表現を利用したコーディング能力判定モデルの汎化性能

専門知識に関する調査 [1] では一貫した結果が得られていを調査する．種類の異なる競技プログラミングサイトからない．そのため，開発経験の長さに基づいて能力を予測す

新たに 3 つのデータセットを構築し，既存のデータセット

ると採用の決定を間違えてしまう可能性があり，仮に誤っと合わせて合計 4 つのデータセットを使用した．

た採用決定をしてしまった場合のコストはその従業員の年
俸の 10 倍になるとも言われている [2]．

以降 2 節では，本研究の背景として，競技プログラミン
グと深層学習を使用したコーディング能力の判定手法につ競技プログラミングにおける初級者と上級者のソース

いて説明する．3 節では調査で使用する各データセットに

コードの分析が堤 [15] により行われている．この研究でついて説明する．4 節では評価実験の内容と結果については上級者と初級者が提出したソースコードを定量的に分析説明し，考察を行う．最後に 5 節ではまとめと今後の課題について述べる．

1
2
a)
b)
c)

大阪大学大学院情報科学研究科
南山大学理工学部
a-hattor@ist.osaka-u.ac.jp
matusita@ist.osaka-u.ac.jp
inoue599@nanzan-u.ac.jp

c 1959 Information Processing Society of Japan⃝1

情報処理学会研究報告
IPSJ SIG Technical Report

2. 競技プログラミングを用いたコーディング
能力判定モデル
本節では，本研究の背景として競技プログラミングと深層学習を用いたコーディング能力判定モデルについて説明する．

隣接ノードから情報を集約し，集めた情報を基にノードの状態を更新する，という工程を繰り返し行うこと
で最終状態が得られる．この集約・更新方法の違いによりグラフニューラルネットワークは様々な種類に分類されるが，対象モデルでは RGCN[13] を採用している．RGCN は，画像に対する深層学習に使われる畳み

2.1 競技プログラミング
競技プログラミングは，与えられた要件を満たすプログ
ラムを記述する正確さや速さを競う競技であり，プログラ
ミングコンテストとも呼ばれる．複数の参加者が同一の問題を決められた時間内に解き，オンラインジャッジシステ
ムによって採点が行われる．コンテスト終了後，各ユーザが点数を基に順位付けされてレーティング [4], [12] が変動
する．本研究では，このレーティングが高いユーザをコーディング能力の高いユーザとして扱う．

2.2 コーディング能力判定モデル
松井 [11] は，ソースコードの特徴的な構文的構造や変数の意味的情報をグラフ構造で表現する手法を用い，深層学習を利用したコーディング能力判定モデルを作成した．このモデルを以降，対象モデルと呼ぶ．対象モデルはソース
コードから生成したグラフを入力することで，そのソース
コードを書いたユーザのコーディング能力が上級者・中級者・初級者のいずれであるかを判定する．対象モデルの判定手順を図 1 に示し，以下に各手順の概要を述べる．

込みと呼ばれる技術をグラフニューラルネットワークに応用した GCN[3], [7] を，さらにラベル付きのエッジを持つグラフに適用できるように拡張したものである．

( 4 ) 初期状態と最終状態から判定結果を出力する．各ノードの初期状態と最終状態のベクトルを連結させた後，全ノードの重み付き和と重み付き平均を算出して連結させる．このベクトルを出力数 3 の MLP に入力し，得られる出力をさらに Softmax 層に入力することで，上級者・中級者・初級者である確率の合計値が 100%となるようにする．ここで例えば上級者である確率が最も高くなった場合，このソースコードを書いた開発者は上級者である，と判定する．
コーディング能力を判定する手法は対象モデル以外にも，ソースコードの特徴量からランダムフォレスト（RF）
を利用して判定する手法 [9], [10] や，ソースコードのトークン列から Long Short-Term Memory（LSTM）を利用して判定する手法が存在している．松井により報告されたこ
れらの手法の精度の比較結果を表 1 に示す．表からわかる
ように，ソースコードのグラフ表現を利用した対象モデルが最も判定精度が優れている．

表 1: 各手法の精度比較
手法

上級者

中級者

初級者

accuracy

RF

0.758

0.793

0.699

0.762

LSTM

0.770

0.768

0.697

0.750

対象モデル

0.891

0.881

0.835

0.871

図 1: コーディング能力の判定手順( 1 ) ソースコードをグラフに変換する．グラフのノードは2.3 既存研究の問題点

ソースコードから生成した構文木に含まれる各ノード

前節で示したように，対象モデルは他の手法より高い精である．グラフのエッジは，構文木での親子関係を表

度でコーディング能力を判定できることがわかっている．

す Child エッジ，ソースコード中の各トークンの順序

しかし，対象モデルでは予測精度の評価のために１つの関係を表す NextToken エッジ，同一変数の利用情報を

データセットを訓練データ，検証データ，テストデータに表す LastLexicalUse エッジ，ノード名の分割情報を表

分割していた．この方法ではモデルの学習とテストに異なす UsesSubtoken エッジである．この時，子ノードがるデータセットのデータを使用した場合の予測精度につい

1 つしかない文法を表すノードを削除して，構文木をては評価できていない．対象モデルの精度測定において使小さくする操作も併せて行われる．

用されたデータセットは Codeforces に提出されたソース( 2 ) エンベディングにより初期状態を取得する．各ノード

コードを収集したものであり，2016 年に堤 [15] により作を表す文字列に対して Character-level-CNN[16] を適成されたものである．そのため，Codeforces 以外の競技プ用することでノードの初期状態を得る．

ログラミングサイトに提出されたソースコードに対して対( 3 ) グラフの状態を更新し，最終状態を得る．各ノードがc 1959 Information Processing Society of Japan⃝象モデルが正確に判定できるかどうかは不明である．

2

情報処理学会研究報告
IPSJ SIG Technical Report

コーディング能力の判定に限らず，深層学習を用いて何らかの判定を行うシステムは現在広く普及しつつある．一いては，これは A が B の得点を上回る確率と解釈できる．
本研究ではこのレーティングシステムを増減型と呼ぶ．

方で，それらのシステムに対して汎化性能の問題が指摘さCF16 データセットには 2016/5/19〜2016/11/15 の期間れている．汎化性能の問題は，学習時に用いるデータと判に提出された 1,644,636 個のソースコードが含まれており，定時に用いるデータの対象が異なることに由来し，データ

このうちの約 85 ％を占める C++で書かれた 1,407,774 個を取るセンサが異なることで想定した精度が得られず低下のソースコードを本研究で使用する．

してしまう問題である [5]．
深層学習を用いたシステムにおいて学習データと異なる

3.2 CF21 データセット

データを判定時に用いる際，何が精度を低下させる原因で

CF21 データセットは CF16 と同じく Codeforces に提出あるかは明確に分かっていない．従って，深層学習を用いされたソースコードのうち，C++で書かれたソースコード

たシステムは学習データと異なるデータに対しても精度がを収集したものである．CF16 データセットが約半年で約維持できるかを確かめておく必要がある．たとえば，深層160 万のソースコードを収集しているのに対し，CF21 は学習を用いたコードクローン検出器を対象とした汎化性能

１ヶ月間で約 170 万のソースコードを収集している．このの問題に関する報告が行われている [6]．

ことから，2016 年から 2021 年にかけて Codeforces のユー

3. データセット
本研究では，対象モデルの信頼性を確認するために，学ザ数が大幅に増えていることがわかる．

3.3 AC データセット

習データとテストデータで異なるデータセットのデータを

AC データセットは日本最大級の競技プログラミングサ

使用した場合の判定精度，いわゆる汎化性能を調査する．

イトである AtCoder*3 に提出されたソースコードを収集し今回の調査では CF16，CF21，AC，AOJ と呼ぶ 4 つのたものである．AtCoder におけるレーティングシステム

データセットを使用する*1 ．CF16 は先行研究で使用されは Codeforces と同様，イロレーティングを採用している．

たものと同一であり，残りのデータセットは今回の調査の

ただし Codeforces のレーティングシステムが 1500 からス

ために新たに構築したものである．表 2 に各データセット

タートして増減するのに対して，AtCoder は 0 からスターの概要を示す．表中のレーティングシステムの項目は，本トし，0 以上の値でレーティングが増減していく．

研究においてコーディング能力の定義として用いた指標でAC データセットは AtCoder に提出された C++で書かあるため，収集元やソースコード数とともに記載している．

れた解答ソースコードと，各ソースコードのメタデータをま以降の節では，今回の調査で使用する各データセットの詳とめた CSV 形式の提出情報ファイルから構成されている．

細を述べる．

提出情報ファイルは AtCoder Problems*4 で公開されているものを使用している．AtCoder Problems は AtCoder に

3.1 CF16 データセット
CF16 データセットはロシア最大級の競技プログラミン

提出されたソースコードをクロールして管理しているウェ
ブアプリであり，有志のユーザにより作成されている．

グサイトである Codeforces*2 からソースコードを収集したものである．このデータセットは，ユーザが問題への解答

3.4 AOJ データセット

として提出したソースコードと，言語やタイムスタンプ等の提出履歴データベースの 2 種類から構成される．

AOJ データセットは日本最大級のオンラインジャッジ
サイトである Aizu Online Judge*5 に提出された C++で書

Codeforces のレーティングシステムは，チェスなどの対かれたソースコードを収集したものである．Codeforces や戦型の競技で用いられるイロレーティング [4] に似た計算

AtCoder とは異なり Aizu Online Judge 上ではコンテスト

方式を採用しており，コンテストごとにユーザの順位に応を開催していないが，データ構造やアルゴリズムを学ぶた

じてレーティングが更新される．イロレーティングではめの基礎的な演習問題から，JOI（日本情報オリンピック）

ユーザ A とユーザ B のレーティングをそれぞれ rA ，rB とや ICPC（国際大学対抗プログラミングコンテスト）の過すると，A が B に勝利する確率が去問題まで，幅広い問題が用意されている．

P (rA , rB ) =1−rA
1 + 10 rB400となるようにレーティングが調整される．Codeforces にお*1*2

今回の調査に使用したデータセットは https://drive.google.
com/drive/folders/198PA8-9Fa5SrPWNDTjaDg5yr6TiCcrT3?
usp=sharing にて公開している．
https://codeforces.com/

c 1959 Information Processing Society of Japan⃝

Aizu Online Judge では，Codeforces や AtCoder とは異なる独自のレーティングシステムを採用している．Aizu

Online Judge において問題 P に正解した際に得られるポイ
ントは，X/(Y + min(LIM IT, NP )) である．ここで，NP
*3
*4
*5

https://atcoder.jp/
https://kenkoooo.com/atcoder/
https://onlinejudge.u-aizu.ac.jp/

3情報処理学会研究報告
IPSJ SIG Technical Report

表 2: 各データセットの概要
CF16

CF21

AC

AOJ
Aizu Online Judge

収集元ドメインCodeforces

Codeforces

AtCoder

レーティングシステム

増減型

増減型

増減型

累積型

ソースコード数

1,644,636

1,752,427

1,459,964

48,962

2016/5/19〜

2021/12/1〜

2021/1/1〜

2020/12/5〜

2016/11/15

2021/12/31

2021/6/1

2021/12/5

収集期間は問題 P に正解したユーザ数であり，X ，Y ，LIM IT は( 4 ) 学習データを使用してモデルを学習させる．

それぞれ 2022/6/20 現在 X = 70，Y = 1，LIM IT = 400( 5 ) 作成したモデルの精度を測定する．学習データとテスとなっている．これらの値はユーザ数や問題数，解答数にトデータのデータセットが一致する場合は 3. で分割し応じて変更される場合があるが，2022/6/20 現在の最終更たテストデータを使用し，異なる場合はデータセット

新日は 2016/8/28 となっている．あるユーザが正解したす中の全データをテストデータとして使用する．

べての問題において，上記の式で得られるポイントを加算

手順 (1) の定義に従って各データセットを分割した際のしたものがそのユーザのレーティングとなる．この式からレーティングの統計情報を表 3，4，5，6 に示す．表 6 ではわかるように，正解したユーザが少ない問題，つまり難し

AOJ データセットでは上級者のファイル数が本来期待されい問題に正解した際は大幅にレーティングが増加するが，る数より少なくなっている．これは，Aizu Online Judge

正解したユーザが多い問題，つまり簡単な問題に正解した

ではユーザが自身の提出ソースコードを非公開に設定する

際はわずかしかレーティングが増えないシステムとなっことが可能であり，特に上級者で非公開にするユーザが多ている．本研究ではこのレーティングシステムを累積型といことが原因であると考えられる．

呼ぶ．

AOJ データセットは AC データセットと同様に，AOJ

表 3: CF16 のレーティング統計情報に提出された解答ソースコードと，各ソースコードのメタ

初級者

中級者

上級者

データをまとめた CSV 形式の提出情報ファイルから構成

最小値

-39

1311

1711

されている．提出情報ファイルと解答ソースコードは Aizu

最大値

1310

1710

3367

平均

1180

1460

1944

中央値

1211

1434

1902

人数

3,899

8,409

2,212

ファイル数

353,346

701,871352,557

Online Judge のホームページで公開されているものを使用している．提出情報ファイルにはレーティングが 0 のユー
ザの情報も含まれているが，解答ソースコードはレーティ
ングが 0 でないユーザのもののみを収集している．

4. 評価実験
4.1 実験手順

表 4: CF21 のレーティング統計情報
初級者

中級者

上級者

評価実験の概要を図 2 に示し，詳細を以下に述べる．

最小値

19

952

1485

( 1 ) データセット中のソースコードを上級者，中級者，初級

最大値

951

1484

3911

者に分類する．各クラスの定義は，データセット中の

平均

696

1194

1818

ソースコードをレーティング順にソートし，レーティ

中央値

750

1186

1722

ングが高い 25%のソースコードを上級者，レーティン

人数

19,863

20,822

9,993

ファイル数

437,076

877,442437,909

グが低い 25%のソースコードを初級者，残りの 50%を中級者とする．この分類方法は，先行研究 [11] が用いた方法に倣っている．

( 2 ) 各ソースコードを ANTLR*6 と Understand*7 を利用し

表 5: AC のレーティング統計情報てグラフへ変換する．

( 3 ) 各データセットのデータを訓練データ，検証データ，テス
トデータに分割する．比率は訓練: 検証: テスト = 8:1:1

*6
*7

最小値

初級者

中級者

上級者

1

259

1339

最大値

258

1338

4056

平均

68.5

728.391809とする．以降，訓練データと検証データを合わせて学

中央値

41

702

1718

習データと呼ぶ．

人数

14,31010,403

3,391

ファイル数

362,626

733,749

366,128https://www.antlr.org/
https://www.scitools.com/

c 1959 Information Processing Society of Japan⃝4

情報処理学会研究報告
IPSJ SIG Technical Report

図 2: CF16 を学習データとして使用した場合の実験手順

表 6: AOJ のレーティング統計情報

4.3 実験結果

初級者

中級者

上級者

CF16 を学習データとして使用したモデルの各データ

最小値

0.32

1.73

230.07

セットに対する判定精度を図 3 に，CF21 を学習データと

最大値

1.72

227.874773.38

して使用したモデルの判定精度を図 4 に，AC を学習デー

平均

0.83

23.65

628.01タとして使用したモデルの判定精度を図 5 に，AOJ を学習

中央値

0.65

8.14

409.78

データとして使用したモデルの判定精度を図 6 に示す．各

人数

985

1,764

126

ファイル数

図中，上級者，中級者，初級者それそれの棒グラフは，左12,071

29,6577,564

から順に CF16, CF21, AC, AOJ で判定した際の結果を表しており，縦軸は f 値である．

4.2 評価指標
本研究ではモデルの汎化性能の評価指標として f 値を4.4 実験結果の考察使用する．本研究での true positive (TP)，true negetive

実験結果から，対象モデルは学習データとテストデータ(TN)，false positive (FP)，false negative (FN) について，が同じ場合は判定精度が高いが，学習データとテストデー

上級者の f 値を計測する場合の例を表 7 に示す．

タが異なる場合は判定精度が低いことが分かった．この結果から，グラフ表現を利用したコーディング能力判定モデ

表 7: 上級者の f 値を求める際の混同行列

ルの汎化性能は高くないと言える．以下，各データセットを学習データもしくはテストデータに用いた場合の結果に実際のクラス
上級者

中級者

初級者

モデルの

上級者

TP

FP

FP

判定結果

中級者

FN

TN

TN

初級者

FN

TN

TN

ついて考察する．

4.4.1 CF16, CF21 データセット
図 3 と図 4 から，CF16，CF21 で学習したモデルでは，
データセット収集元のドメインが同じである互いのデータセットをテストデータとして使用した場合，学習データと適合率（precision）は TP と FP の合計に対する TP のテストデータが同じ場合に比べて判定精度が約 0.3〜0.45

割合である．この指標は予測結果の誤りの少なさを表して程度低くなっていることがわかる．これはデータセットのいる．再現率（recall）は TP と FN の合計に対する TP の収集時期の違いが影響していると考えられ，対象モデルの割合である．この指標は予測結果の見逃しの少なさを表し

判定精度は，データセットの収集元ドメインが同じであっている．これらの 2 つの指標はトレードオフの関係になっても，収集時期に依存すると考えられる．

ており，例えばすべてのソースコードに対して”上級者”と4.4.2 AC データセット

予測した場合，適合率は 1 となるが再現率は低い値になっ

図 5 より，AC で学習したモデルでは，レーティングシてしまう．そのため，これら 2 つの評価指標を総合的に判ステムが同じである CF16 と CF21 をテストデータとして断するための評価指標として f 値を用いる．f 値は適合率

使用した場合，AC をテストデータとして使用した場合にと再現率の調和平均であり，以下の式で求められる．

比べて，判定精度が約 0.3〜0.5 程度下がっている．これはf=

2 × precision × recall
precision + recall

c 1959 Information Processing Society of Japan⃝

データセット収集元のドメインの違いが影響していると考えられ，対象モデルの判定精度は，レーティングシステム

5

情報処理学会研究報告
IPSJ SIG Technical Report

図 3: CF16 で学習したモデルの判定精度

図 5: AC で学習したモデルの判定精度

図 4: CF21 で学習したモデルの判定精度

図 6: AOJ で学習したモデルの判定精度が同じであっても，ドメインに依存すると考えられる．

4.4.3 AOJ データセット
図 6 より，AOJ で学習したモデルでは，学習データとテストデータが同じ場合に比べて，学習データとテストデータが異なる場合には f 値が最大で 0.6 以上下がっており，他のモデルよりも大きな差が出ている．また，CF16，

CF21，AC で学習したモデルでは，AOJ に対する判定精度が他のデータセットに対する判定精度より低くなっている．これはレーティングシステムの違いが影響していると考えられ，対象モデルの判定精度は，データセット収集元のレーティングシステムに大きく依存すると考えられる．

図 7: 50 エポックで CF21 で学習したモデルの判定精度

4.4.4 モデルの過学習対象モデルの汎化性能が低くなった原因の 1 つとして，れる．

モデルが過学習していることが考えられる．過学習は，モ

図 4 に示した CF21 で学習したモデルでは，学習にかデルを訓練しすぎることにより訓練用データのパターンのかったエポック数は 139 であった．そこでエポック数を 50

中で，テストデータには一般的でないパターンを学習するに制限して，CF21 を学習データとして使用したモデルを状態のことである*8 ．対象モデルでは，損失値が 10 エポッ

作成し，各データセットに対しての判定精度を追加で調査

ク連続で下がらなかった場合に学習をやめるという設定にした．この結果を図 7 に示す．

なっている．これにより，10 エポック中でわずかでも損

図 4 と図 7 から，エポック数を制限した場合と制限しな失値を更新し続ける限りは学習を続けることになるため，かった場合では判定精度に大きな違いはないことがわか

モデルが過学習を起こす可能性は十分にあり得ると考えらる．つまり，対象モデルでは過学習は起きておらず，デー*8

https://www.tensorflow.org/tutorials/keras/overfit_
and_underfit

c 1959 Information Processing Society of Japan⃝

タセットの性質の違いが判定精度に影響を及ぼしていると考えられる．

6

情報処理学会研究報告
IPSJ SIG Technical Report

4.5 妥当性の脅威
本実験では，上級者・中級者・初級者の分類を，データ

参考文献
[1]

セット中のソースコードのレーティング上位 25%を上級者，下位 25%を初級者，中間の 50%を中級者とするという定義に基づいて行っている．この定義には，各クラスの定義がデータセットに依存してしまうという問題がある．
例えば，今回使用した４つのデータセット全てに同じ[2]

ユーザが登録していたとしても，そのユーザが全データセットで同じクラスに分類されるとは限らない．そのユー[3]

ザのクラスは，そのデータセットに含まれるほかのユーザとの相対評価によって決まるため，全データセットで共通して一意には決まらず，データセットごとに上級者にも中級者にも初級者にもなり得るという状態になっている．

CF16 では上級者，CF21 では中級者に分類されるユーザ
A を考える．このとき，CF16 で学習したモデルで CF21

[4]
[5]

に含まれる A のコードを入力して上級者であると判定した場合，CF21 での実際の正解ラベルは中級者であるため誤った判定をしたということになる．しかし，CF16 の基
準では A は上級者であるため，この判定が間違いであるとは一概には言えない．このような基準のずれをなくすため[6]に，データセットに依存しないようなコーディング能力の定義を定めることで，より正確にコーディング能力判定モデルの性能を測ることができると考えられる．

5. まとめ[7][8]

本研究では，ソースコードのグラフ表現を利用したコー
ディング能力判定モデルの汎化性能を調査した．調査のた[9]

めに新たに 3 つのデータセットを構築し，既存のデータセットと合わせて 4 つのデータセットを用意した．これらのデータセットを用いてモデルの学習・テストを相互に行[10]うことにより，学習データとテストデータが異なる場合，コーディング能力判定モデルの予測精度は低くなることがわかった．この結果から，このモデルの汎化性能は高くな[11]

いといえる．
今後の課題としてはデータセットの類似度を測定することが挙げられる．今回は各データセットの収集元ドメイン
や，レーティングシステム，収集時期等の性質的な観点で

[12]
[13]

の評価しかしていないため，定量的な類似度の評価はできていない．データセットの類似度を定量的に評価する手法
としては，ソースコードで使用されているトークンの類似度や，行数やネストの深さ等のメトリクスの類似度を使用[14]する方法が考えられる．これらの定量的な類似度と判定精度を比較することで，汎化性能が低くなってしまう理由や，どの程度の類似度があればモデルの信頼性が担保されるか[15]ということが調査できるようになると考えられる．
[16]

c 1959 Information Processing Society of Japan⃝

Baltes, S. and Diehl, S.: Towards a Theory of Software
Development Expertise, Proceedings of the 2018 26th
ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations ofSoftware Engineering, Association for Computing Machinery, pp. 187–200 (2018).
Bressler, M. S.: Building the winning organization
through high-impact hiring, Journal of Management
and Marketing Research, Vol. 15 (2014).
Duvenaud, D., Maclaurin, D., Aguilera-Iparraguirre, J.,
Gómez-Bombarelli, R., Hirzel, T., Aspuru-Guzik, A. andAdams, R. P.: Convolutional Networks on Graphs for
Learning Molecular Fingerprints, Advances in Neural
Information Processing Systems, Vol. 2, pp. 2224–2232(2015).
Elo, A. E.: The Rating of Chessplayers, Past andPresent, Arco Pub. (1978).
Farrahi, V., Niemelä, M., Tjurin, P., Kangas, M., Korpelainen, R. and Jämsä, T.: Evaluating and Enhancing the Generalization Performance of Machine Learning
Models for Physical Activity Intensity Prediction From
Raw Acceleration Data, IEEE Journal of Biomedicaland Health Informatics, Vol. 24, No. 1, pp. 27–38 (online), DOI: 10.1109/JBHI.2019.2917565 (2020).
福家範浩，藤原裕士，吉田則裕，崔 恩瀞，井上克郎：
深層学習を用いたコードクローン検出器のベンチマーク
間精度調査，情報処理学会研究報告，Vol. 2022-SE-210,
No. 8, pp. 1–8 (2022).
Kipf, T. N. and Welling, M.: Semi-Supervised Classiﬁcation with Graph Convolutional Networks, International
Conference on Learning Representations (2017).
Laakmann McDowell, G.: Cracking the coding interview: 189 programming questions and solutions, CareerCup (2015).
槇原啓介，松下 誠，井上克郎： ソースコード特徴量を用いた機械学習によるソースコード品質の評価手法，電子情報通信学会技術研究報告，Vol. 119, No. 113, pp. 105–110(2019).
松井智寛，松下 誠，井上克郎： 判定対象の拡大を目的とした 3 値分類によるソースコード品質の評価手法，情報処理学会研究報告，Vol. 2020-SE-205, No. 7, pp. 1–8(2020).
松井智寛，松下 誠，井上克郎： ソースコードのグラフ表
現を利用した深層学習によるコーディングの専門性の判定
手法，情報処理学会研究報告，Vol. 2022-SE-210, No. 12,
pp. 1–8 (2022).
Mirzayanov, M.: Codeforces Rating System, http://
codeforces.com/blog/entry/102 (2010).
Schlichtkrull, M., Kipf, T. N., Bloem, P., vanÂ den Berg,
R., Titov, I. and Welling, M.: Modeling Relational Datawith Graph Convolutional Networks, European Semantic Web Conference, Springer International Publishing,pp. 593–607 (2018).
Siegmund, J., Kästner, C., Liebig, J., Apel, S. and Hanenberg, S.: Measuring and Modeling Programming Experience, Empirical Softw. Engg., Vol. 19, No. 5, pp.
1299–1334 (2014).
堤 祥吾： プログラミングコンテスト初級者・上級者におけるソースコード特徴量の比較，大阪大学大学院情報科学研究科修士論文 (2018).
Zhang, X., Zhao, J. and LeCun, Y.: CharacterLevel Convolutional Networks for Text Classiﬁcation,
Advances in Neural Information Processing Systems,
Vol. 1, pp. 649–657 (2015).

7