プログラミング初学者向けの
Git/GitHub 操作支援手法・データ収集方法
玉田 春昭1

概要：今日の開発ではバージョン管理ソフトウェア（SCM）に加え，ソーシャルコーディングプラットフォーム（SCP）と呼ばれるサービスも併用していることが当たり前になっている．しかし，これらのソフトウェア，サービスを利用した開発に習熟することは容易なことではない．一般的に初学者は，プログラミング上の問題を解決することに多くの労力を投入し，開発の版管理や課題管理にまで手が回らない．
加えて，版管理や課題管理の実施によって開発が進んだように見えないため，実施するモチベーションが高くない，というのも習熟困難である理由の遠因となろう．本稿では初学者がこれらの SCM や SCP を学習する際に，如何に支援できるかを議論する．

援（インプロセス支援 [3]），プロジェクト終了後，もしく

1. はじめには中断中の支援（リフレクション支援）に分けられる．加Stackoverﬂow の調査によると，82.8%の開発者が開発にえて，モチベーションを一定に保つためのモチベーションおけるコミュニケーションツールとして GitHub を利用し支援も考えられる [4]．それぞれについて，これまでの取り*1ていると回答している ．この値は 2 位の Slack（53.0%）

組みと今後の方向性について以降で述べる．

を大きく引き離している．このように GitHub は開発用のツールとしてデファクトスタンダードとなっている．

2.1 学習支援

GitHub を利用するには，前提として git の利用も不可欠

git の書籍や学習サイト，チュートリアルなどが学習支援となる．これから開発を始めようという初学者にとって，に該当する．大学などでの講義での学習も，この学習支援

これらのツールの利用はハードルが高い．ただでさえ複雑に該当するであろう．この学習支援では，シンプルな学習なフレームワークやライブラリを駆使してプログラムを書用のリポジトリや環境を用いることが多い．代表的な例とかなければならない．その上プログラムではない部分，すして，Git-it*3 や Getting Git Right*4 ，サル先生の Git 入

なわち，版管理や課題管理についても学習が必要となるた

門*5 などが挙げられる．

めである．加えて，版管理や課題管理を丁寧に行ったとしても，開発の進捗が効率化するわけではない．そのため学2.2 インプロセス支援

習が後回しとなり，習熟が困難になっていると思われる．

先に述べたように，プロジェクト進行中に利用者のこれまで git や GitHub を利用した授業設計 [1], [2] や，Git/GitHub 利用を支援する手法である．ペアプログラミ

チュートリアル*2 は数多く提案されている．一方で，git やングやモブプログラミングなどで初学者に対して熟練者がGitHub の操作自体を支援する方法についてはあまり議論

Git/GitHub 操作をサポートすることが該当するであろう．

されていない．そこで本稿では Git/GitHub の操作支援と我々の研究グループではより能動的に支援する方法としそのために必要なデータ収集について議論する．

2. 初学者向け Git/GitHub 操作支援
初学者向けの Git/GitHub 操作支援は大きく，開発を行て，git や GitHub 操作にインセンティブを与える手法 [5]，そして，CUI 上での git 操作の推薦手法 [6] を提案している．

2.3 リフレクション支援

う前の支援（事前学習支援），プロジェクトの進行中での支
1

*1
*2

京都産業大学
Kyoto Sangyo University, Kyoto 603–8555, Japan
https://insights.stackoverflow.com/survey/2020
https://learngitbranching.js.org/

リフレクション支援は，開発が終了した時，もしくは中
*3
*4
*5

https://github.com/jlord/git-it-electron
https://www.atlassian.com/git
https://backlog.com/ja/git-tutorial/

表 1
環境

学習支援

エディタ

環境・支援方法により収集するデータ

インプロセス支援

振り返り支援モチベーション支援

編集履歴

編集履歴

編集履歴，滞留時間

ターミナル

熟練者のコマンド履歴

コマンド履歴，実行結果

コマンド履歴

コマンド履歴，滞留時間

ブラウザ

ページ遷移履歴

操作記録，ページ遷移履歴

操作記録，ページ遷移履歴その他

git log

断中にこれまでの開発状況の振り返りを実施するときのレームワーク並びに収集データについて議論した．支援

支援方法である．git などのログからのメトリクスによるの種類を学習，インプロセス，リフレクション，モチベーバージョン活動の品質測定 [7] や GitHub ﬂow の遵守度のションに分け，また，開発に利用する環境ごとに収集すべ測定 [8] が挙げられる．

きデータ，収集方法を整理した（表 1）．
今後，ターミナルでの git 操作のインプロセス支援，リ

2.4 モチベーション支援
git や GitHub の支援にあたり，学習者のモチベーションを保つための方策のための支援である．例えば，外発的フレクション支援を中心として，具体的な支援アプリケーションの構築を行っていく．そして，それら支援方法の有効性を評価していく予定である．

動的付けとしての，トロフィー（実績）制度の導入 [4], [5]や，内発的動機付けとして，Git/GitHub のより具体的な参考文献

必要性の教育などであろう．

[1]

3. それぞれの支援方法のデータ収集[2]3.1 収集方法
初学者の Git/GitHub の利用支援には，インプロセス支援，リフレクション支援では特に，開発者の行動の把握が[3]不可欠である．初学者の Git/GitHub に関係する行動は，主に IDE（エディタ），ターミナル，ブラウザで実施される．そのため，それぞれで行動の収集が必要である．

[4]

IDE（エディタ）からの情報収集は，細粒度の履歴管
理 [9], [10] や，Language Server Protocol の利用が考えら[5]

れる [11]．
ターミナルでは，history コマンドや kani[6] により関[6]連するコマンド履歴を記録できる．ただし，いずれの場合でも実行結果の記録は script コマンドを併用するなどし[7]なければ収集できない．
一方，ブラウザでの開発者の行動履歴の記録は，ブラウザの訪問記録で一部の行動は収集できるものの，各ページ[8]で行った操作や滞留時間などの情報は収集できない．これ
らの情報を収集しようとすると何らかのプラグインの開発[9]が必要となろう．ただし GitHub であれば，GitHub APIを用いて操作履歴については収集可能である．

[10]

3.2 収集データ
では，どのようなデータを収集するとのちの分析に役立つのであろう．表 1 に，環境ごと，支援方法ごとに収集するデータを列挙した．ただし，具体的な支援方法は未定のものもある．

4. まとめと議論の種
本稿では，Git/GitHub 操作学習のためのデータ収集フ[11]Hart, D.: A Survey of Source Code Management Tools
for Programming Courses, Journal of Computing Sciences in Colleges, Vol. 24, No. 6, pp. 113––114 (2009).
Kelleher, J.: Employing git in the classroom, 2014
World Congress on Computer Applications and Information Systems (WCCAIS) (2014).
松村知子，森崎修司，勝又敏次，玉田春昭，吉田則裕，楠本真二，松本健一： 問題の早期発見・改善を支援するイ
ンプロセスプロジェクト管理手法の実プロジェクトへの適用，電子情報通信学会論文誌，Vol. J92-D, No. 11, pp.
1974–1986 (2009).
玉田春昭： 初学者向け GitHub ﬂow 学習支援，ソフトウェ
アシンポジウム 2019 ワークショップ WS2 (2019).
西尾泰介，柳川龍太郎，玉田春昭： 初学者を対象とした
GitHub ﬂow 支援ボット，ソフトウェアシンポジウム 2018
WS4 (2018).
増 田 亜 里 紗 ，玉 田 春 昭： プ ロ グ ラ ミ ン グ 初 学 者 向 け
Git/GitHub 操作支援フレームワークの設計と実装，第20 回情報科学技術フォーラム（FIT 2021）(2021).
Elsen, R., Liem, I. and Akbar, S.: Software versioning
quality parameters: Automated assessment tools basedon the parameters, Proc. 2016 International Conferenceon Data and Software Engineering (ICoDSE) (2016).
井上拓海，小島遥一郎，藤原賢二，井垣 宏： 版管理シス
テム利用時のソフトウェア開発フロー遵守状況可視化手法の検討，信学技法, No.SS2017-55 (2018).
大森隆行，丸山勝久： プログラム開発履歴調査のための編集操作再生器，コンピュータソフトウェア，Vol. 28,
No. 4, pp. 4 371–4 376 (2011).
Proksch, S., Nadi, S., Amann, S. and Mezini,
M.: Enriching in-IDE process information with ﬁnegrained source code history, Proc. IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER 2017), (online), DOI:
10.1109/saner.2017.7884626 (2017).
石田直人，神田哲也，嶋利一真，井上克郎： 言語サーバを応用した細粒度編集履歴収集プラットフォームの構想，ソフトウェアエンジニアリングシンポジウム 2020 WS5(2020).