中国地区

教育システム情報学会 2019年度学生研究発表会

意味のある部分単位でのソースコード読解技能の習得を狙いとしたプログラミング学習支援システムの開発に関する研究
A Study on Developing Programming Learning Support System
Aiming at the Acquisition of Source Code Reading Skill in Meaningful Sub-Units
平谷 明生*1, 三宝 帝人*1, 大下 昌紀*2, 松本 慎平*1
Akio HIRATANI *1, Teito SAMPO*1, Masanori OHSHITA*2, Shimpei MATSUMOTO*1*1
広島工業大学情報学部*1
Faculty of Applied Information Science, Hiroshima Institute of Technology
Email: {bl17095, bl16041, s.matsumoto.gk}@cc.it-hiroshima.ac.jp*2
広島工業大学大学院工学系研究科*2
Graduate School of Science and Technology, Hiroshima Institute of Technology
Email: md18003@cc.it-hiroshima.ac.jp
あらまし：本研究では，従来よりも規模の大きいコード読解を対象としプログラミング中級程度の学習者の読解学習を支援するため，上級者がコード読解の際に適用すると言われているチャンキングに着目する．英文読解において学習者が内容を理解する際のチャンクの有用性は既に明らかにされている．よって，チャンクを活用し学習の効率化を試みることは意義のある取り組みだと考えられる．チャンクに関して
は，意味のある部分ごとのセグメンテーションが可読性の向上に有用な意味付けとした Wang らの説明を踏まえると，セグメンテーションにより構成される部分をチャンク単位と見立て利用することは適切だと考えられる．そこで本研究は，チャンク単位でのコード読解技能の有用性を調査するための学習支援システムの開発を目的とする．
キーワード：プログラミング，読解，チャンク

1.

ンテーションにより構成される部分をチャンク単位と見立て利用することは適切だと考えられる．そこで本研究は，チャンク単位でのコード読解技能の有用性を調査するための学習支援システムの開発を目的とする．

はじめに高度な認知能力が求められるプログラミング学習を効果的に支援するためには，プログラミングに要求される多様な技術要素を細分化し，認知資源を本質的学習に容易に配分可能な学習課題の構成が効果的だと考えられる(1)．その中でもとりわけ，プログラムを正確かつ効率的に読むための学習は基本であるため，プログラミング力の向上に特に重要であると考えられている(2)．以上背景のもと，プログラムスライスの土台であるデータ依存グラフを的確かつ効率良く把握する力の習得を狙いとして，コード読解に基づいたプログラミング学習支援システムが開発されている(3)．実際の講義での利用から統計的に有意に早く読解できるようになるなどその有用性が確認されたが，プログラム構造のみに着眼しているためコードの規模は限定され，それゆえ初学者の支援に留まっている．そこで本研究では，従来よりも規模の大きいコード読解を対象としプログラミング中級程度の学習者の読解学習を支援するため，上級者がコード読解の際に適用すると言われているチャンキング(4)に着目する．門田らは，英文読解において学習者が内容を理解する際チャンクによる提示は理解度に関して大きな影響を与えないが，読解速度を有意に向上させたとしている (5)．このような知見を踏まえると，英文読解での手法をプログラミング読解に適用すること，すなわち，チャンクを活用し学習の効率化を試みることは意義のある取り組みだと考えられる．チャンクに関しては，意味のある部分ごとのセグメンテーションは可読性の向上に有用な意味付けとした Wang らの説明(6)を踏まえると，セグメ

2.

提案

プログラミング初学者が中・上級者に差し掛かる段階においては「他者が書いたある程度の規模のコードを読む作業が求められる」とされている一方，読解に対するツールや方法論による支援が乏しく，そのノウハウは一部の熟練者とその周辺のみに閉じられがちであった (7)．技能に頼らず機械的にコード読解を支援する取り組みとして，学習者が読解すべき文を強調表示する(以下ハイライト表示方式とする)手法を用いた読解支援がある(8)．ハイライト表示方式は，着目する任意の行にカーソルを合わせるとその行に含まれる変数に対して静的スライシングを行い，着目されている行及びそれと関係性のある行を強調表示するものである．ハイライト表示方式は
課題外在性認知負荷を低減する方法として有効と考えられるが，全て機械に頼るのではなく，ある程度自分の力で要領良く読解できる力も必要であると考えられる．ところで，非本質的な認知負荷を軽減する手法としてチャンクが広く知られており，チャンクの考えを活用した技法であるチャンキングは言語学習においてその有効性が明らかにされている (4)．
また，Yubune らは英文の速読教材において，チャンクを順次提示する方法により読解速度の促進の傾向が見られたとしている(9)．そこで本研究では，Yubune

193

中国地区

教育システム情報学会 2019年度学生研究発表会

らの方式に倣い，C 言語のコードで行うことで，コードに対する読解力向上を狙いとした学習法を提案する．本提案は表示される情報量を必要なもののみに制限し，課題外在性認知負荷の軽減により学習効率の向上を期待している．本提案の技術課題は，注目させたいチャンク箇所以外の部分を非表示とする方法(図 1 参照)とハイライト表示による方法(図 2 参照)の 2 方式のシステム開発である．

う配慮している．従来手法を用いたシステムは，学習者が着目(選択)する任意の一行に対し，依存関係のある個所(行)をハイライト表示する．依存関係のある命令とは，入力に依存せず静的スライシングで依存関係がみられた全ての命令を意味する．
提案システムは HTML5 に準拠した Web ブラウザで動作する．学習環境をブラウザ上にすることで，環境構築の負荷軽減を狙いとしている．提案システ
ムでは，着目すべきチャンク単位を前後させるための二つボタン操作のみで学習可能である．提案シス
テムは読解技能の学習を支援するものであるため，学習者をコードの読解に集中させ，課題外在性認知負荷の発生を可能な限り軽減するため簡素なデザインと仕様にしている．

常時表示されているチャンク

4.
現在表示されているチャンク

おわりに本研究では，チャンク単位でのコード読解技能の有用性を調査するための学習支援システムの開発を行った．

前後のチャンクへ移動するボタン

謝辞
図1

本研究は，独立行政法人日本学術振興会科学研究費助成事業(基盤研究(C)17K01164，No.19K02987)の助成を受けて実施した成果の一部である．ここに記して謝意を表します．

提案法

参考文献
(1) 平嶋宗, 「学習課題」中心の学習研究: 情報構造としての学習課題の再定義と構造操作としての学習活動の設計, 人工知能, 30(3), pp.277-280 (2015).
(2) 柏原昭博, 久米井邦貴, 梅野浩司, 豊田順一, プログ
ラム空欄補充問題の作成とその評価, 人工知能学会
論文誌, 16, pp.384-391 (2001).
(3) S. Matsumoto et al., Difficulty Estimation of Knowledge
Elements in Source Codes for Reading-Based
Programming Learning by Using Neural Test Theory, Proc.
of The First IEEE International Symposium on Artificial
Intelligence for ASEAN Development, pp.39-44 (2018).
(4) 湯舟英一, 英文速読におけるチャンクとワーキングメモリの役割 手続き記憶と第二言語習得理論, 人間科学総合研究所紀要, 9, pp.1-20(2011).
(5) 門田修平, 野呂忠司, 英語リーディングの認知メカニ
ズム, くろしお出版（2001).
(6) X. Wang, L. Pollock, K. Vijay-Shanke, AutomaticSegmentation of Method Code into Meaningful Blocks toImprove Readability,2011 18th Working Conference on
Reverse Engineering, pp1095-1350 (2011).
(7) 田中頼人, 萩野達也, ソースコードの読解におけるソーシャルナピゲーションの導入, 情報処理学会研究報告コンピュータと教育, pp.85-90 (2007).
(8) 西松顯 , 西江圭介, 楠本真二, 井上克郎, フォールト
位置特定におけるプログラムスライスの実験的評価,
電子情報通信学会論文誌 D, Vol.82, No.11, pp.13361344 (1999).
(9) E．Yubune，A．Akinobu，R. Tabuch,EffectS of Different
Computer Display Methods of Reading Units on Learners’
Reading Efficiency．Language Education and Technology．
pp．215-229（2017).

ハイライト表示されている
ソースコード学習者が選択したソースコード

図2

3.

ハイライト表示による読解学習支援システム

実装

チャンク単位でのコード読解技能を習得するための学習支援システムを Google Code Prettify を用いて開発した．提案手法を用いたシステムは，コードをチャンク単位で区切り，学習者に「読解すべきチャンク」のみを順にひとつずつ表示する．チャンクを順に表示する機能については，学習者が次へボタンを押すことで次のチャンクを表示し，かつ，現在表示されていたチャンクを非表示にする．チャンク単位は教授者により決定される．Wang らによると教授者が与えた空白行によるコードのセグメンテーションは模範と位置付けられているため (6)，彼らの主張に倣い教授者がチャンク単位を決定した．なお，読み込んだヘッダーと main 関数の開始・終了のカーリーブラケットは常時表示するようにしている．読解対象個所と main 関数との関係を把握できるようにすることで，非表示に起因する負担を抑制できるよ194