日本ソフトウェア科学会第 31 回大会 (2014 年度) 講演論文集

プログラミング作業過程の動画を用いたプログラミン
グ学習の試み杉本 識吏伊藤 恵

従来のプログラミング教育では, プログラムを書くことに重点が置かれている. 学習者にとってプログラムを読むことも重要なことである. しかし初学者の場合, どのような順番でどのような点に着目して読み書きすればよいか判断が難しい. 一方, ペアプログラミングでは, その判断のポイントを学ぶことができる. ペアプログラミングに学習効果があることは知られているが, ペアの能力の差によって学習効果によっては, 学習効果が見られない場合もある. そこで, 本研究では, プログラミング作業過程の動画に着目した. 学習者が他人のプログラミング作業過程の動画を見ることで, 擬似的なペアプログラミングをすることができると考え, その学習効果を実証する. 数種類のプログラミング作業工程を撮影し, それぞれの学習者に適したレベルの動画を教材として与えることで技術や考え方を学ぶ. ペアプロ
グラミングの利点を取り入れ, 能力の差によって生じる学習効果のムラを減らす効果が期待される.

In traditional programming education, writing is important than reading. Reading program for students
is also important. However,it is diﬃcult to biginnerers reading and writing with focus on what points andin what order. On the other hand, it is possible to learn such points and order in the pair programming.
That there are learning eﬀects in pair programming has been known, but it also be known there are nolearning eﬀect due to skill gaps between learners. Therefore, We considered that the learners be able topair programming of pseudo by watching video programming work processes of others, so we demonstrate
the learning eﬀect. We record the programming work processes of several kinds. And we give the video asa teaching tool for the level of each learner. They learn how to think and techniques by watch at i ｔ. It
is expected that when be adopted advantage of the pair programming, the eﬀect of reducing the uneven of
the learning eﬀect caused by the diﬀerence in capacity.

からのプログラミング教育の推進に注目が集まって

1 はじめにいる. その一方で海外では最近, さらに進んで大学生

昨今, 政府は安倍政権の経済政策の 3 本目の矢の 1をプログラマーに育てる組織が増えてきている. アメ

つとして成長戦略の素案を発表した. その中には産リカではもちろんのこと, 日本でもプログラマーなど業競争力の源泉となるハイレベルな IT 人材の育成・IT 人材を育てる動きが見られるようになっている. [2]確保の項目でプログラミング教育について盛り込ま

このように, プログラミング教育に注目が集まっていれている. 「IT やデータを活用して新たなイノベーる. その中で, 高等教育機関のプログラミング教育のションを生み出すことのできるハイレベルな IT 人材効率を高めるために様々な試みがされてきた. その一の育成・確保を推進する」という目的のもと, 具体的

つにペアプログラミングのプログラミング学習への導には「IT を活用した 21 世紀型スキルの修得」と「人入がある. ペアプログラミングとは, 2 人のプログラ

材のスキルレベルの明確化と活用」を行うとしてる.

マがペアを組み, 同じ画面を見ながら 1 つのプログラ[1] その影響から,Scratch などを用いた初等教育段階

ムを書くソフトウェア開発手法のことであり,XP(エクストリームプログラミング) の主要なプラクティス

Attempt of Programming Learning Using Video ofProgramming Work Process.
Satoshi Sugimoto
Kei Ito, 公立はこだて未来大学来大学, Future University Hakodate.

である. [3] ペアプログラミングに学習効果があることは実証されているが [4], 高等教育機関にてプログラミング学習で行おうとすると, ペアによって差があり,場合によっては学習効果が見られないこともあった.
本研究では, この「ペアによって学習効果が異なる」
点に着目し, プログラミング作業過程の動画をあらかじめ撮影しておき, その動画を学習の教材として提供し, 擬似的なペアプログラミングをすることで差の少ない学習効果が得られることを実証する.
図1

ペアプログラミング演習で用いた課題例

2 関連研究2. 1 ペアプログラミング

やりやすさ, プログラミング経験差が発生することをペアプログラミングとは, 2 人のプログラマがペア考慮して, ペアは実験者が決定した. 用いた課題は課を組み, 同じ画面を見ながら 1 つのプログラムを書題例として図 1 に示す.

くソフトウェア開発手法のことであり,XP(エクスト

分析方法としては，つまずきの解決に成功した事例リームプログラミング) の主要なプラクティスである.

および失敗した事例を抽出した．つまずきの解決の成

常に 2 人 1 組で作業を行うことで, 刺激し合いながら功事例と失敗事例における発話の様子を調べるため多様な視点を持ち寄って, 質の高いプログラムの開発に, 次の点に着目して分析している.

を目指す. 利点はペアの組み合わせは頻繁に変わるの

1. 発話量で, コード全体の問題点やメンバーそれぞれの特性な

2. 説明の繰返しどについて, チームで共通して認識できる点とコード

3. ペアの両者が交互に発話できているかを書くと同時にレビューを行っていることになると実験結果としては, 発話量, 説明の繰り返しに差がいう点である. ペアのうち, キーボードを使ってコーないことが分かったが, 失敗事例の方が発話が長いこドを書く人を「ドライバー」, 助言や提案を行う人をと, 説明の繰返しが多いこと, 一方的な発話が多いこ「パートナー」などと呼び, ドライバーとパートナーはとが分かった.

適当なタイミングで交代する. ペアは半日から 1 日で組み替えるのがよいとされる. 同じレベルのプログラマがペアとなるのがよい. ペアプログラミングでは常2. 3 ペアプログラミング手法を活用したプログラ
ミング教育方法の提案に人の目があるので, 手を抜いたり気を抜いたりでき

この研究はペアで学習することによって個人では理ず, 集中して作業に取り組むことができる. プロジェ

解しがたい問題や, レビュー技術, 方法を学習するこ

クトマネジメントにとっては,1 人で考え込んだり, 問とと, コードレビュー能力の差に着目し, ペアリング題を抱え込んだりする時間がなくなり, あるペアで作することで教育効果の高いペアの選定法を提案し, そ業が止まっても別のペアでその問題が解決できる場合

れを実験によって検証することを目的として行われがあるなど, 特定作業で進捗がとまる恐れが小さい点た. [5] 学習者のコードレビュー能力を測りその能力のが利点となる. [3]差を利用したペアの選定を行う. コードレビュー能力に比較的差の大きいペアと，差の少ないペアをつく

2. 2 ペアプログラミング学習における状態の推定ることで能力差を考慮したペア選定を行うことを提プログラム学習としてのペアプログラミングにお案している. 実験は能力差の大きなペアと小さなペアいての成功事例と失敗事例を比較分析した研究が行ではどちらが効率的に学習できるかを以下の 3 つのわれている. [4] この研究では大学の情報系学部 1 年生

フェーズから検証することを提案している.

を対象に開講された C 言語を題材とする講義内にお1. レビュー能力を測るフェーズ

いてペアプログラミングを実施している. 演習ではコ

2. 提案手法によって選定されたペアで学習する

ミュニケーションのしやすさ, ペアプログラミングのフェーズ

3. その効果を測る学習者のレビュー能力の再取得
フェーズ
評価は学習前と学習後の能力の変化を算出し, 差の大きいペアと差の少ないペアの集団の平均値を比べることで二つの集団の相対的な学習効率を求めることを提案している.

2. 4 ソースコードの読解におけるソーシャルナビ
ゲーションの導入
読む行為が学習者や開発者にとって必要とされながら, いかにして読むかという考え方はこれまであまり

図2

プログラム作業過程の動画を用いた学習方法語られてこなかった. そこでこの研究では, 行動履歴を「コード内遷移履歴の可視化」「検索履歴の表示」

3. 2 実験「検索結果へのトラックバック」の 3 つの機能を用い実験の大まかな流れはまず実験の準備として, プロて蓄積共有することで学習者間の知識伝達を促すた

グラミング過程動画の録画をする. そしてその中からめのシステムを提案する研究が行われている. [6] 読解

教材とするものの抜粋をする. その後に実験を行って時の考え方を開放し「コードのどの個所をどんな順序いく.

で読むか」「量の多いコードの中で迷子になることな

3. 2. 1 プログラミング動画の準備

く, 目的個所にどう辿り着くか」等の共通認識を多く実験の準備として任意で募集した,「プログラミンの学習者が持てるように導くものである.

グ基礎」を履修した事のある学生 20 名ほどのプログ
ラミング過程の動画を撮っておく. 今回は Mac PC

3 提案

で, プログラミングの課題を解いてもらい, その過程

3. 1 目的とアプローチのパソコン画面を QuickTime を用いてプログラミン

従来のプログラミング教育では, 完成したプログラ

グ開始時から終了時まで記録する. このとき学習者がムを見て学習することはできても, プログラムが完成理解し易くするため, なるべくプログラムにコメントするまでの過程をみて学習することは少なかった. プ

を書きながら解いてもらう. 課題を解くエディタとしログラミング過程を学習することができるペアプロて emacs を利用する. 解いてもらう課題は実験で学

グラミングは, プログラミング教育に導入するとなっ生に解いてもらう問題と同じものである.

た場合, ペアによって学習効果に差があるなどの問題

3. 2. 2 動画の分類と教材化があった. そこで本研究では, プログラミングの作業

このプログラミング過程を録画する環境は Quick-過程の動画に着目した. 従来までの教育になかったプTime を用いて録画を行う以外は, 演習時の環境と同ログラミングの過程を見ることで, どのような順番でじ状況である. その中からプログラミングが得意な人どのような点に着目して読み書きすればよいかの判の動画と普通の人, そうでない人の動画を数種類選び断のポイントなど, より深くプログラムを学ぶことを教材とする. このとき基準にすることは,目的としている. プログラム作業過程の動画を用いた• 課題を解き終えるまでの時間.

学習方法のイメージ図を図 2 に示す. そのアプローチ– 課題を解き終えるまでの時間が短いものほとして, プログラム作業過程の動画をあらかじめ撮影

どプログラミングが得意な人向け, 長いものしておき, その動画を学習教材として提供することでほど苦手な人向けとする.

プログラミングが完成するまでの過程を見て学習できることを実証する.

• コードの整頓の具合い.
– なるべくコードがきれいに整頓されていて

表1• プログラミング過程の動画を見ている際に一時課題の分け方の例

A グループB グループ(20 人)(20 人)

普通に解く

問 1, 問 2

問 3, 問 4

動画を見て解く

問 3, 問 4

問 1, 問 2停止をすることは可能とする.

– メモを取る際に必要なため.
• プログラミング過程の動画を見る際の早送りは禁止する.

– 動画を一通り見てもらうことが目的であり,見やすいものを教材とする.

• コメントのわかりやすさ.
– コメントがしっかりと書かれていてわかりやすいものを教材とする.
また, 実験開始前には提供する教材のレベルを決めるためのアンケートを行い, その結果によって教材を振り分ける.

わからなかったとこを見直す作業は後回しにするため. ただし, 一通り動画を見終わってからもう一度動画を見直すときの早送りは可能とする• 課題を解きながらプログラミング過程の動画を見直してもよい.

– 一度動画を見ただけでは, わからないことが3. 2. 3 動画視聴とプログラミング多いことを考慮し, 動画を見直しながらのプ

実験は「プログラミング基礎」の講義を履修していログラミングをしてもよいこととする. しかる大学 1 年生を対象として講義の一部を使って行う.

し, 時間に制限があるので, その時間内に終「プログラミング基礎」は毎年 11 月から一回 180 分わることを前提とする.

で 7 回行われる C 言語を題材とした講義である. 前• 一通り見終わった後にもう一度プログラミング

半の 90 分ほどで座学を行い, 残り 90 分で演習を行う

過程の動画を見直したときは早送り, 巻き戻しが授業であり, 実験は後半の演習の時間の一部を使い実可能だが, 動画を進めて完成だけを見てプログラ施する. 本演習では, プログラムを作成する課題を与ミングしてはいけない.

え 15 分程度で完了できるようにする. 課題は「プロ– プログラミングの過程を見ることで学習すグラミング基礎」の講義で使われる課題をそのままるという目的を損なわないためである.

使う. 二回の講義で 90 分ずつ, 各 4 問の課題, つまり• プログラムの構成は動画と同じでなくても構わ

180 分で 8 問の課題を対象に実験を行い, 一般的に難ない.

しいと言われている構造体, ポインタに関する課題を– プログラミングの過程を見ることによって出す. 90 分で二問は普通に課題を解いてもらい, もうプログラムを組み立てる順序を学ぶことを

二問は教材として記録しておいたプログラミング過目的としているためプログラムの構成や形程の動画を一通り見てもらい, その後に, 課題を解きを学ぶことに重点を置いていないため, 自由始めてもらう. 1 問の制限時間は 20 分とする. 普通になプログラミングをさせるためである.

といてもらう二問と, プログラミング過程の動画を見• わからないことがあった場合の教科書,Web サイてからといてもらう二問は公平を保つため, 半分になるようにする.(表 1)
実験の際には以下のことについて注意してもらう.

• プログラミング過程の動画を見るときコードをすべて丸写ししないならば, メモをとってもよい.

– 学べることをメモをとることで学習するこトの閲覧は自由である.

– 動画の中に出てきたわからないことを調べることも学習となるためである.

3. 2. 4 評価方法
なるべく多種多様なデータをとるために以下の 4 つの方法で評価する.とは必要なことなため, 可能とする. コード

1. 普通に解いた課題 2 問とプログラミング過程動を丸写しにすることは学習効果の低減に繋画を見て解いた課題 2 問について, それぞれ穴埋がるため禁止とする.

め問題を出題する. その穴埋め問題の正答率で理解度を評価する.

2. 普通に解いた課題 2 問とプログラミング過程動画を見て解いた課題 2 問について, それぞれの正答率を比べることで理解度を評価する.

3. 普通に解いた課題 2 問とプログラミング過程動画を見て解いた課題 2 問について, それぞれプログラムの出来と動画を見ている時間を除いた, プログラミングに掛かった時間を評価する.

4. 実験が終わった後にアンケートに答えてもらう.
アンケートは 2 つの段階にわけている. 1 つめはC 言語を扱うための能力についてのアンケートであり, これを基に割り当てる教材を決める. 2つめは実験を終えてから答えてもらうアンケー
トであり, これを基に実験結果を出していく. アンケートは付録 A として添付する.

4 おわりにプログラミング作業過程の動画を用いたプログラミング学習を提案した. これにより従来では学習に取り入られていなかったプログラミングの過程を学習の一部に取り入れることにより, どのように考え, どのような順番で組み立てているのかを学習できるようになる. これからの課題としては, 実験の準備として,提供教材となる, プログラミング過程動画の記録と分析をして, 実験を行う. 評価方法について改善の余地があると考えられるので改善していく. 評価のための穴埋め問題や課題について詳しく定めていく必要がある. また, 評価の結果から教育に導入できるのか, そしてできない場合にはその改善方法などを提案する.

参 考 文 献[ 1 ] TECHACADEMY：プログラミングが義務教育に！
政府の成長戦略素案に盛り込まれたプログラミング教育の内容とは,http://techacademy.jp/magazine/736.
[ 2 ] TECHACADEMY：こ れ か ら ニ ー ズ が 拡 大？
学 生 を プ ロ グ ラ マ ー に 育 て る 取 り 組 み ま と め,
http://techacademy.jp/magazine/634.
[ 3 ] ITmedia：エンタープライズ, 情報システム用語辞典,ペアプログラミング, http://www.itmedia.co.jp/im/articles/1111/07/news189.html.
[ 4 ] 平井 佑樹：ペアプログラミング学習における状態の推定-つまずきの解決の成功と失敗に見られる会話の違い, 情報処理学会論文誌 Vol.53,No.1,72-80.
[ 5 ] 熊谷 英紀：ペアプログラミング手法を活用したプ
ログラミング教育方法の提案, 情報処理学会第 71 回全国大会,335-336.
[ 6 ] 田中 頼人：ソースコードの読解におけるソーシャルナビゲーションの導入, 社団法人情報処理学会研究報
告,2007-CE-88.

付録 A アンケート