初学者向け GitHub flow 学習支援
玉田 春昭1

概要：今日の開発では，git などを用いたバージョン管理は必須であり，それに加えて，Git flow，GitHubflow などの開発フローを利用した開発も一般的になりつつある．しかし初学者にとって，開発フローの理解と実践は一般的に難しい．プログラムの内容以外に考えなければならない事柄が導入される上に，その必要性の実感が持てないためである．そこで本稿では，開発フローの 1 つである GitHub flow の定着を目的にした支援システムの構築を目指す．

Learning support system of GitHub flow for novice developers

1. はじめに自発的かつ自律的に開発フローを学びながら実際の開発に携わることが期待できる．加えて，初学者が指導者に助け昨今，GitHub などのソーシャルコーディングプラットを求める頻度を削減しつつも，指導者が後から初学者にアフォーム（SCP; Social Coding Platform）を用いた開発がドバイスするための情報を提供し，初学者の教育にも貢献一般的になりつつある．そのような状況において，SCP をできると期待できる．

用いた開発フローの教育の確立が必要である．SCP を用いた開発フローの実施は，一般に初学者には難しい．初学者がこれまでに経験したプログラム開発とは根本的に異なっ

2. 準備
2.1 本研究で対象とする初学者の技術レベルているためである．例えば，従来の開発での関心ごとの大本稿の想定する初学者は，基礎レベルのプログラムは問半はプログラムそのものであった．一方，SCP を用いた開題なく作成できるものとする．加えて，バージョン管理の発フローでは，バージョン管理や，Pull request，Issue な存在を知っているものとする．言い換えれば，バージョンど，プログラムの管理に関することも考えなければならな管理を実践できていない，もしくは，実践した経験はある

い．加えて，プログラムの規模も演習レベルのものに比べものの定着には至らなかった者を対象とする．て格段に大きく，多人数開発を前提としている点なども大きく異なっている．

2.2 開発フロー

しかしながら，SCP を用いた開発フローへの理解がなけ

世の中の開発で利用されている開発フローには，Gitれば，実際の開発に携わることは困難である．初学者が実flow*1 や GitLab flow*2 などがある．その中でもシンプルな際の開発に携わる際には，一通りの学習後に，指導者が初GitHub flow*3（以降 GHF）を対象とする．ただし，利用学者に寄り添い，適宜アドバイスを与えるような開発形態する基盤技術（バージョン管理ツールや SCP など）は同が考えられる．このような形態で開発を進めた場合，指導じであるため，他の開発フローへの応用も可能である．

者の開発時間が大きく削られることになり，チーム全体の 

開発能力の低下に繋がる恐れがある．そこで本稿では，初学者を対象に開発フローで行うべき次の行動推薦を行い，外発的動機付けを行うためのポイント，トロフィー制度， 

さらに，自身の行動がどの程度開発フローに沿っているか

図 1を確認できる手法を組み合わせる．これにより，初学者が*1
1

京都産業大学
Kyoto Sangyo University.

*2*3

GitHub flow の模式図

https://nvie.com/posts/a-successful-git-branching-model/
https://about.gitlab.com/2014/09/29/gitlab-flow/
http://scottchacon.com/2011/08/31/github-flow.html

本稿で対象とする GHF の手順を図 1 に示す．図 1 では，いた開発に参加できると期待できる．しかし，初学者であfeature-x や feature-y ブランチを作成し，そのブランチでるため，GHF に沿わない行動を行う場合も考えられる．

各機能（x や y）を実装している．そして，機能が作成できGHF の定着のためには機械的なフィードバックだけでなれば，GitHub に push し，Pull Request を作成する．Pull

く，学習の進捗に合わせた適切なフィードバックが必要でRequest は，レビューが行われたのちに master にマージある．そのため指導者を交えて，学習者が行なった GHF のされる．このように，GHF では機能の追加はブランチで内容を振り返る必要がある．その振り返りにおけるフィー行い，マージは必ず Pull Request 経由で行う．

ドバックの議論のきっかけとして，開発フローの遵守度 [4]3. 提案手法
本稿では次の 3 つの観点で GHF を支援する．

• モチベーション支援• インプロセス支援を示すことを考える．

4. まとめと議論したい内容
4.1 議論したい内容• モチベーション支援，インプロセス支援，振り返り支• 振り返り支援援の 3 つの観点で十分であるか．

• モチベーション支援について
3.1 モチベーション支援– ポイント制で貯めたポイントはどのような用途に利用できるか．

初学者に外発的動機付けを与えるため，ポイント・トロフィー制度を設ける [1]．コミットや push など GHF のイ• インプロセス支援について

ベントの実施回数に応じてポイント，トロフィー制度を設– 初学者の学習度合いに合わせた支援は，どのようなける．ポイントとは，行動に応じて与えられる点数のことものが考えられるか．

を指し，この点数を貯めることで，何らかの報酬を得られる• 振り返り支援についてものとする．トロフィーとは一定の基準を満たすと得られ– 他に振り返りに役立つ指標はあるか．

る称号であり，PlayStation におけるトロフィー*4 ，GameCenter におけるアチーブメント*5 に相当するものである．

4.2 まとめ
本稿では，GHF の実践を支援するシステムを通じて，初3.2 インプロセス支援

学者の GHF の定着を狙う．そのためのシステムの要件と初学者が GHF を行うとき，次に何をすべきかがわからして，モチベーション支援，インプロセス支援，振り返りなくなることが考えられる．そこで，熟練者の行動を予め支援の 3 つの観点での支援内容を述べた．この後は実際に収集しておき，その行動履歴を元に初学者に次に何をすシステムを構築し，初学者に利用してもらうことで，提案れば良いかを推薦することを考える [2]．例えば，コンパ手法の効果を確認する．

イル，テストの成功後のコミットの実施や，コミット後のpush の実施などである．推薦のトリガには，git の hook

謝辞

本 研 究 の 一 部 は JSPS 科 研 費 17K00196，17K00500，17H00731 の助成を受けました．

機構や GitHub での WebHook，また，シェルの hook 機構を用いることで可能であろう*6 ．
なお推薦には，ブランチの作成と移動，コミット，Pull

参考文献
[1]

Request の作成などの行動の推薦と，コミットや Pull Request のコメント内容の推薦が考えられる．コメント内容の推薦では，コミットメッセージの自動生成 [3] や Pull

[2]

Request で書くべき内容の示唆*7 などを積極的に導入する．
3.3 振り返り支援
インプロセス支援により，初学者が自律的に GHF を用
*4
*5

*6
*7

https://manuals.playstation.net/document/jp/ps3/
current/trophy/trophy.html
https://developer.apple.com/library/archive/
documentation/NetworkingInternet/Conceptual/GameKit_
Guide/Achievements/Achievements.html
https://note.hibariya.org/articles/20170219/
shell-postexec.html
https://github.blog/2015-01-21-how-to-write-theperfect-pull-request/

[3]

[4]

西尾泰介, 柳川龍太郎, 玉田春昭. 初学者を対象とした
github flow 支援ボット. ソフトウェアシンポジウム 2018
ワークショップ討論テーマ（4）ソーシャルコーディングのための実証的ソフトウェア工学, September 2018.
Akira Inokuchi, Haruaki Tamada, Hideaki Hata, andMasateru Tsunoda. Toward obliging bots for supporting
next actions. In Proc. of the 4th International Conference on Applied Computing & Information Technology(ACIT 2016), December 2016.
Luis Fernando Cortés-Coy, Mario Linares-Vásquez, Jairo
Aponte, and Denys Poshyvanyk. On automatically generating commit messages via summarization of source codechanges. In Proc. of the 14th International Working
Conference on Source Code Analysis and Manipulation,
September 2014.
井上拓海, 小島遥一郎, 藤原賢二, 井垣宏. 版管理システム
利用時のソフトウェア開発フロー遵守状況可視化手法の検討. 信学技法, No. SS2017-55, January 2018.