• 検索結果がありません。

初学者のソースコード読解における視線運動とデータ依存構造の関係分析

N/A
N/A
Protected

Academic year: 2021

シェア "初学者のソースコード読解における視線運動とデータ依存構造の関係分析"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

初学者のソースコード読解における視線運動とデータ依存

構造の関係分析

Analysis of Relationship between Eye Tracking and Data Dependence Structure in

Novice’s Source Code Reading

花房亮

1

松本慎平

2

平嶋宗

1

林雄介

1

Ryo HANAFUSA

1

, Shimpei MATSUMOTO

2

, Tsukasa HIRASHIMA

1

, and Yusuke HAYASHI

1

1

広島大学大学院 工学研究科

1

Graduate School of Engineering, Hiroshima University

2

広島工業大学

情報学部

2

Faculty of Information, Hiroshima Institute of Technology

Abstract: To efficiently support novice programming learners feeling programming difficult, clarifying the cause of preventing programming understanding, and developing a new teaching method appropriate for their understanding degree would be necessary. To analyze each student's understanding level, this study focuses on eye movement which is strongly affected by accumulated programming experience, and proposes program structure based analysis method during program reading. The proposed method is inspired by the concept of program slicing. This paper especially examines the relationship between the data dependence relationship in the program and the eye movement. From the experimental results, we found meaningful relationship between the two.

1. はじめに

プログラミングは大学等高等教育機関の専門領域 では従来から特に重要な科目として位置付けられて きたが,その学習者層は二極化される傾向にあるこ とが従来から確認されている [1]. Dehnadi よると 大学におけるコンピューターサイエンスを専攻する 人のうち 30%から 60%の人がプログラミングの授業 を落としていて,それは学習者の教育水準によらな いものとされている[2]. プログラムソース自体は,データ依存や制御依存 の関係ネットワークにより形作られる構造でしかな い.よって,外的な構造とは一切関係を持っておら ず,プログラムソース自身が保持する内的な構造に のみ依存する学習課題から学習者の理解過程を把握 すれば,学習者の理解を阻害する要因を究明できる と考えられる.その結果として,従来の教授法だけ では十分に支援できていなかった学習者層の救済に 貢献可能であると考えられる.ただし,非言語的な 認知処理過程を適切に取得し評価できる仕組みは, 現在のところ十分に整備されていない.また,学習 者の問題点を指摘するためには,構造の理解過程で 生じる知識の機能不全や逸脱の度合いを量的に表す 手法が必要であるが,その前段階として,内的構造 に応じて基準となり得る理解過程が存在し,一般的 変動であることを明らかにしなければならない.す なわち,プログラムソースの内容を把握する際にそ の内容を適切に理解できている場合は,学習者の特 徴(理解の進め方)に関係なく,プログラムソースの 構造の影響が理解過程に反映されることを明らかに する必要がある. そこで本研究では,プログラムの内的構造の理解 過程を取得するための課題としてソースコード読解 を対象とし,また,非言語的な認知処理過程を推定 する手段として視線運動に着眼して,プログラミン グ読解過程中の視線運動の解析手法を提案する.そ して,提案手法は読解の仕方などといった学習者の 特徴に強く左右されずに視線運動を評価できること を示すと共に,プログラムソースの内的構造の影響 が視線に表出していることを明らかにする.本研究 では,プログラムソースの内的構造のひとつの要素 であるデータ依存関係に着眼する.プログラムを理 解することの形の一つである読解[3]し,ソースコー ド読解中学習者はスライシング[4]思考を行ってい 人工知能学会研究会資料 SIG-ALST-B504-02

(2)

図1:プログラム依存グラフの例 図2:データ依存関係によって表される構造 るという仮定のもとで,この検証を行う.本研究で は,確率モデルによりソースコード読解中の学習者 の視線の推移傾向をモデル化する.そして,得られ たデータを量的に評価するための実験プロトコルを 提示する.実験の結果から,プログラムを読む際の 注目箇所とプログラムの構造とを比較し,注目箇所 の推移が確かにプログラム構造の影響を受けている ことを明らかにした.また,得られた結果は学習者 全般に当てはまる一般的な理解過程であることが示 唆された.本研究の成果は,学習者に適応した指導 を行うための基礎となる知見であることを確認した.

2. 分析手法

プログラム読解の従来の視線運動の分析は,時系 列データ,あるいは視線運動の総量に基づく分析で あった[5][6].ただし,被験者によって読解時間が異 なっていることや,読解方法に特徴があることから, 時系列パターンをそのままの形で利用し,各被験者 の理解過程を推定することは容易ではない.そこで, 「プログラムを読解するためには,データの依存関 係の有無踏まえてプログラムを読む必要があり,こ のデータ依存関係を踏まえた読む活動は視線運動に 現れる」との仮説を立て,これを本研究では検証す る.これは,対象の構造に基づく視線運動の時系列 分析の基礎となると考えている. 視線運動の動作の中で,視点がある範囲内に一定 時間停留することであるfixation[7]に着眼し,視線運 動の時系列変動を量子化する.そして,量子化され たデータを定量的に解析するための手法として,マ ルコフモデルを動員する.

2.1 プログラムスライシング

プログラムスライシングは,プログラム中の文間 の依存関係に注目し,特定の文と依存関係のある文 の集合(プログラムスライス)を抽出する技術であり, 抽出結果をスライスと呼ぶ[8].スライスは,ユーザ が知りたい情報に直接的または間接的に関係する箇 所である.この技術は主に手続き型言語のバグの存 在箇所を絞り込むために利用されており,静的スラ イシングや動的スライシングなど様々な発展を遂げ てきた[9].プログラムスライシングは,実際のデバ ッグに対して効果があることも報告されている[10]. ただし,プログラムスライシング技術を教育に適応 させた研究は少なく[11][12],とりわけ,視線運動か らプログラム読解パターンを定量的に明らかにする ことを目的としてプログラムスライシングの考え方 に着目した研究は,調査の限りでは報告されていな い. プログラムスライシングの具体的な手法として, 静的スライシングと動的スライシングがある.以下 に,本研究に関係するスライス抽出過程と特徴につ いて述べる.

2.1.1 静的スライシング

静的スライシング(SPS,Static Program Slicing)では, 静的にソースコードを解析し文間の依存関係を抽出 する.ソースプログラムp 中の文 s1 と s2 について 下の条件を満たす時,s2 文は s1 に依存しており,そ の関係を制御依存(CD,Control Dependence)関係と定 義される.  s1 が制御文である.  s1 の結果により,s2 が実行されるかどうかが 決定される. 以下の条件を満たす時,文s2 は s1 に依存しており, その関係をデータ依存(DD,Data Dependence)関係と いう.  s1 において変数 v が定義される.  s1 から s2 において,変数 v を再定義しない経 路が少なくともひとつは存在する.  s2 において変数 v が参照される.

2.1.2 プログラム依存グラフ

上記の依存関係を用いて,プログラム依存グラフ (PDG,Program Dependence Graph)[13]を作成する. PDG は辺が文間の依存関係を表し,節点が制御文・

(3)

図3:視線データの加工過程 図4:視線運動のマルコフ過程 代入文などの文を表す有向グラフである.有向辺の 向きは,プログラムの流れを把握しやすくするため に,依存の向きとは逆向きで表す.PDG の一例を図 1に示す.図1(a)のソースコードに対して静的スラ イシング基準(20, output)でスライシングを行い,そ こから作成されるPDG を図1(b)に示す.図1(b)は, ノードが各行,点線がCD,実線が DD を表している. 依存関係には,データ依存関係,制御依存関係の 2 種類が存在するが,本研究では,データ依存関係 にのみに着眼する.制御構文を追えるかといった技 能は,知識依存の高い技能であると考えられる.制 御構文が定着していない学習者は,制御構文が絡ん だ変数間の依存関係も追うことは困難であると考え られる.よって,以上のプログラム依存グラフの定 義のうち,本研究では最も基礎的な変数間の依存関 係のみで構成されたデータ依存関係のみに着目する. また,データ依存関係のみに着目するにあたって PDG によって表現を用いる代わりに,図2に示すデ ータ依存関係の定義のみに従ったグラフを用いて表 現する.

2.2 視線運動時の停留運動

測定した視線運動そのままでは図3(a)のように 多くのノイズを含んだデータとなる.学習者が注目 した行の推移の履歴のみを観察するため,文章を読 むときに現れる特徴的な視線運動のパターンを利用 する.文字を読んでいる際の人間の目の動きは,1 点を注視するfixation(停留運動)と,fixation から次の fixation へ推移する間の 30ms ほどの動きである saccade の 2 つに分類される[8].停留運動は文字を認 識するときに,およそ100 ミリ秒から 500 ミリ秒, 平均して200 ミリ秒から 250 ミリ秒停留する運動で ある.図3(a)の視線運動において停留運動のみに着 目すると,図3(b)のようになる.

2.3 マルコフ過程

本研究では,その中でもただ一つの状態によって 決定される単純マルコフ過程と直前2 つの状態によ って決定される2 重マルコフ過程を用いる.ソース コード内で処理が記述されている箇所を状態と見な し,また,箇所間の遷移をエッジと見立てることで, 状態遷移モデルを構築し,学習者の思考モデルと見 なす.視線の推移にはマルコフ性が存在しているこ とは確かであると考えられる[14].本研究で対象と しているものは,ソースコード内の行間の推移のみ であり,視線運動として観測される出力記号列と, 内的な認知過程との間に隠れた状態があることを重 視する必要がない.よって本研究では,HMM では なく,単純なモデルを採用する.また,視線運動の 中でも,ある行から別の行への注目箇所の推移につ いてのみに注目するため,同じ状態への推移は考え ないものとする.たとえば,図3 (c)のような行ご との視線の推移を単純マルコフ過程で表すと 図4

(4)

図5:実験で使用するソースコードの例 のようになる.図4のノード1 から 2 へのエッジは, 1 行目に注目しているときに 2 行目に推移する確率 を表している.

3. 実験及び結果

3.1 実験環境

本実験の目的は,被験者の視線の動きがデータ依 存構造に沿ったものであることを明らかにすること である.C 言語及び Java 言語の基礎やアルゴリズム の基礎といったプログラミング関連科目の基本を既 に習得しており,情報学を専攻している大学3 年生, 4 年生,大学院生を被験者として実験を行った.プ ログラミング関連科目の成績を調査したところ,被 験者の技能水準は一様であることを確認している. 課題に集中させ,リラックスした気分にさせるため, 外部の音声を遮断し,外部から内部を見ることので きない教室を利用して実験を行った.実験は,2015 年11 月 30 日からの 2 週間の間に 15 名,2016 年 1 月12 日からの 2 週間の間に 15 名行った.本研究で は,3 行のソースコードの読解を実験課題とした. ソースコードは全て基本的な代入文でのみ構成され るものであり,インクリメントや複合代入演算子と いった命令は用いていない.また,用いられる演算 子は四則演算と余剰のみであり,暗算で計算可能な 演算にとどめている.なお,変数の型は全て整数型 であると被験者には事前に口頭で伝えている. ソースコードの問題作成にあたっては恣意性を排 除するために,依存関係とは関係のない整数リテラ ルや演算子,変数名をランダムに決定している.3 行のソースコードのデータ依存関係の組合せは4 種 類あるため,各種類のデータ依存関係ごとに複数種 類のソースコードを生成し,各被験者に提示した.1 回目の実験では,データ構造ごとに 3 種類のソース 図6:構造ごとの平均推移確率の比較 コードを生成し,計12 問被験者に提示した.実験時 間は,読解を早く終えた被験者で10 分程度,遅い被 験者で15 分程度を要した.2 回目の実験では,デー タ構造ごとに3 種類のソースコードを生成し,計 8 問被験者に提示した.実験を2 回に分けた理由とし ては,1 回目の実験結果を追認する必要があること, また,異なった被験者からデータを取得することで, 一般傾向かどうかを明らかにするという目的を設定 したためである.視線運動計測には, トビー・テク ノロジー社製X2-30 アイトラッカーを使用した.実 験で提示されたソースコードの一例を図5に示す. 実験課題をこのように設定することで,Type D と 残りのタイプの比較において,各行間の位置関係や 各行の内容の違いをキャンセルすることができ,依 存関係の有無の影響だけを取り出せると考えた.

(5)

3.2 実験結果

初全被験者の視線の推移データから読解課題パタ

ーンごとに推移の分布を求めた.4 種類のデータ依

存関係(図5 (a)のデータ依存関係のソースコードを Type A, (b)を Type B,(c)を Type C,(d)を Type D と する)ごとにデータをまとめ,各ノード間の累計推移 回数の平均値をType ごとに算出した.得られた結果 を図6に示す.なお,図6では,ノード i からノー ドj への推移を i→ j と表しており,エラーバーは t 分布を仮定した場合の信頼度 99%区間の母平均(無 限)の上下限値を表している. また,それぞれどれか1つの依存関係が不足して いるデータ構造Type A, Type B, Type C の確率を実線

で結び,すべての行間に依存関係をもつType D の確 率を破線で結び,Type A から C それぞれと Type D を比較している. 図6(a)に示す Type A の推移 1→3 の推移確率は Type D の推移に比べて有意(p<0.01)に低く,推移 3→1 の推移確率も有意(p<0.05)に低いことを確認し た.このことからType A のノード 1,3 間は Type D と比べてデータ依存関係を持っていないことから, Type A はデータ依存関係の影響を強く受けているこ とがわかる. Type B については Type D と比べてノード 2,3 間の 依存関係を持たないが,図6(b)に示す推移 2→3 お よび 3→2 の推移確率に有意な差は確認されなかっ た.これについては1 行目が単純な整数の定義であ ることと,2 行目の計算が単純な場合 1 行目に戻る ことなく3 行目を見て解けている場合が多いことが 考えられる.Type D と比較して有意差は確認できな かったが,Type D と同様にノード 2,3 間に依存関係 を持つType A および Type C と比べて,Type C の推 移2→3 の推移確率よりも有意(p<0.05)に低く,Type A および Type C との他の 2,3 間の推移においては 有意差を確認できないまでも最も低い値を取ってい ることを確認した.このため,Type B においてもデ ータ依存関係の影響を受けている可能性が示唆され る. 図6(c)に示す Type C の推移 1→2 は Type D に比べ て有意(p<0.01)に低く,推移 2→1 は Type C に比べて 有意(p<0.05)に低いことを確認した.このことから Type C のノード 1,2 間は Type D と比べてデータ依存 関係を持っていいないことから,Type A はデータ依 存関係の影響を強く受けていることがわかる.

4. 考察

本研究では,図6のとおり,データ依存関係の影 響が視線に表れその程度を量的に評価可能であるこ とを明らかにした.また,先行研究で報告されてき たソースコード理解過程中での視線の動きをソース コードの構造の観点から説明できることを示した. データ依存関係がプログラム理解の効率や度合いに 影響を与える点については,従来,被験者に対する 主観アンケートやテストなどから得た反応パターン を分析した結果に基づいて述べられてきた.本研究 の取り組みは,従来のアプローチで明らかにされて きた知見を視線運動から追跡可能であることを示し たものであり,視線運動をプログラミング理解の推 定に活用する上で基礎となる成果である.本研究で 対象とした読解課題は単純なものであるが,規模を 大きくし複雑化させることで,従来の方法論だけで は明らかにすることが困難であった暗黙的な思考過 程の解明に貢献可能であると考えられる.さらに本 研究では読解者の技能の差の影響を除き,ソースコ ード読解とプログラム構造との関係性を明らかにし た.視線運動は,従来の多くの研究はプログラミン グの技量の程度を図る目的で適用されており,本研 究は従来とは異なった方針のもとで視線運動を活用 したものである.定量的観点から読解パターンを明 らかにする方式として,本研究では,読解の課題と なるソースコードを自動生成する方式を提案し,ま た,得られたデータを評価する方法としてマルコフ モデルに着眼した.マルコフモデルを用いた視線情 報 の 自 動 処 理 ・ 評 価 方 式 は 既 報 で 示 さ れ て い る [15][16]. 本研究で対象とした読解課題は非常に単純なもの であるが,今後学習者の技量や読解教材の質を評価 する上で基本となり得る知見であると考えられる. たとえば,データ依存関係を意識させるような教授 法構築や,また,得られた知見を応用し学習支援シ ステムの開発が期待される.データ依存関係が読解 パターンに表出する点から,学習者はデータ依存関 係を手掛かりとしてソースコードを読解していると 考えられる.よって,西松らが示したスライス箇所 のハイライト機能[11]を提示することで,プログラ ム読解を支援する教育・実現化ツールの開発が期待 される.また,データ依存関係を読解から追跡する ことの必要性を確認できたため,プログラミングを 不得手とする学習者層を対象として,”不得手の契機 となっている原因”や”理解を妨げている要因”を視 線追跡から推察可能であると考えられる.たとえば, 学習者の理解が不十分な場合,視線運動を取得し, その原因をデータ構造の観点から説明できれば,外 的な構造に頼らない,内的な構造にのみ着眼した新 たなプログラミング指導法の設計が期待される.

5. おわりに

(6)

本研究では,ソースコード読解中の暗黙的な理解 過程を推定するための手段として視線運動に着目し, データ依存関係を主としたプログラムの内的構造の 観点からプログラムの読解パターンの傾向や特徴を 明らかにした.まず,プログラミング読解過程中の 視線運動を取得し,視線の推移を評価可能なモデル 化手法を提案した.そして,プログラム構造に基づ いてプログラミング読解過程中の視線運動を解析す るための実験プロトコルを設計した.本研究では, 代入文のみで構成される3 行のプログラムで生成可 能な4 パターンのデータ依存関係を実験課題とし, 被験者データを取得し分析を行った.その結果,各 パターンのデータ依存関係の影響を評価モデルから 確認することができた.本研究の取り組みにより, 教材の開発や教授法構築を進めるうえで基礎となる 重要な知見を得た.本研究では大局的な観点での議 論が主であったため,被験者個々の振る舞いを詳細 に調査することを今後の課題に掲げる.

謝辞

本研究は,独立行政法人日本学術振興会科学研究 費 助 成 事 業 ( 若 手 (B) 13304922, 基 盤 研 究 (C) 26350296)の助成を受けて実施した成果の一部であ る.

参考文献

[1] 匂坂智子, 渡辺成良, プログラミング初学者のため の Web-based 学習診断システムの開発と評価, 教育 システム情報学会誌, Vol.27, No.1, pp.29-38 (2010) [2] S. Dehnadi and R.Bornat, The camel has two humps

(working title), Middlesex University (2006), URL http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper 1.pdf, retrieved 02, Thu., 2016.

[3] T. Busjahn and C. Schulte, The use of code reading in teaching programming, Proc. of the 13th Koli Calling International Conference on Computing Education Research, pp.3-11 (2013).

[4] T. Ishio, S. Kusumoto and K. Inoue, Debugging support for aspect-oriented program based on program slicing and call graph, Proc. of 20th IEEE International Conference on Software Maintenance, pp.178-187 (2004).

[5] H. Uwano, M. Nakamura, A. Monden and K. Matsumoto, Exploiting Eye Movements for Evaluating Reviewer's Performance in Software Review, IEICE Transactions on Fundamentals, Vol.E90-A, No.10, pp.317-328 (2007). [6] H. Uwano, M. Nakamura, A. Monden and K. Matsumoto,

Analyzing individual performance of source code review using reviewers' eye movement, Proc. of the 2006 symposium on Eye tracking research & applications,

pp.133-140 (2006).

[7] K. Rayner, Eye Movements in Reading and Information Processing : 20 Years of Research, Psychological Bulletin, Vol.124, No.3, pp.372-422 (1998).

[8] M. Weiser, Programmers Use Slices When Debugging, Communications of the ACM, Vol.25, No.7, pp.446-452 (1982).

[9] H. Agrawal and J. Horgan, Dynamic Program Slicing, SIGPLAN Notices, Vol.25, No.6, pp.246-256 (1990). [10] 西松顯, 西江圭介, 楠本真二, 井上克郎, フォールト 位置特定におけるプログラムスライスの実験的評価, 電 子 情 報 通 信 学 会 論 文 誌 D, Vol.82, No.11, pp.1336-1344 (1999). [11] 稲積宏誠,竹内純人,プログラムスライシングを用 いたプログラム学習モデル,青山インフォメーショ ン・サイエンス, Vol.29, No.1,pp.51-78 (2001). [12] 吉田裕一,立岩佑一郎,山本大介,高橋直久,アセ ンブラプログラミング演習のためのチャンキングと スライシングを用いたコードレビューナビゲーター, 電子情報通信学会技術研究報告,Vol.109, No.335, ET2009-81, pp.169-174 (2009).

[13] K. Ottenstein and L. Ottenstein, The program dependence graph in a software development environment, Proc. ACM SIGSOFT/ SIGPLAN software engineering symposium on Practical software development environments, SDE 1, pp.177-184 (1984).

[14] 岩尾知頼,三間大輔, 久保尋之, 前島謙宣, 森島繁生, 確率モデルに基づく対話時の眼球運動の分析及び合 成, 画像電子学会論文誌, Vol42,No.5,pp.661-670 (2013).

[15] D. Salvucci and J. Anderson, Automated eye-movement protocol analysis, Human-Computer Interaction, Vol.16, No.1, pp.39-86 (2001).

[16] 大野健彦, 視線から何がわかるか 視線測定に基づく 高 次 認 知 処 理 の 解 明, 認 知 科 学 , Vol.9, No.4, pp.565-579 (2002).

参照

関連したドキュメント

重回帰分析,相関分析の結果を参考に,初期モデル

This paper considers a possibility of decision whether the robot hand is having a correct work or not by using the analysis of the mechanical vibration of robot that is doing

Large sound occurred in two cases: when healds collided with the heald bar vertically near the upper dead point of shedding motion and when healds collided at random by rebounds

このように資本主義経済における競争の作用を二つに分けたうえで, 『資本

ベクトル計算と解析幾何 移動,移動の加法 移動と実数との乗法 ベクトル空間の概念 平面における基底と座標系

物語などを読む際には、「構造と内容の把握」、「精査・解釈」に関する指導事項の系統を

学術関係者だけでなく、ヘリウム供給に関わる企業や 報道関係などの幅広い参加者を交えてヘリウム供給 の現状と今後の方策についての

前項で把握した実態は,国際海上コンテナ車の流