初学者を対象とした GitHub flow 支援ボット
西尾 泰介1

柳川 龍太郎1

玉田 春昭1

概要：一般的に，初学者にはバージョン管理や開発フローの理解は難しい．初学者の実感として必要性が感じられないためである．そこで本稿では，バージョン管理を利用した開発フローの 1 つである GitHubflow に着目し，初学者に GitHub flow を定着させること目的とした支援ボットを提案する．

The supporting bot of GitHub flow for the novice developers

1. はじめに
一方，実際の開発で利用されている開発フローは Git

GitHub などを利用した開発が一般化している中，これらの教育が重要である．一方で，バージョン管理や標準的な開発フローの理解は初学者には容易ではない．必要性がflow*1 ，GitHub flow*2 ，GitLab flow*3 がよく知られている．本稿ではこの中で一番シンプルである開発フロー，GitHub flow（GHF）を対象にする．

不明である上に，初学者の行う開発フローに比べ，圧倒的に複雑であるためである．つまり，初学者にとっては標準的な開発フローを実施するモチベーションがないと言える．
しかし前述の通り，世の中の開発のほとんどがバージョ

次に，GHF の流れを示す．なお，各行頭のルリポジトリに対する操作を表しており，ポジトリに対する操作を表している．

(1)

ン管理を用いており，その多くは何らかの開発フローを採用している．そのため，学習の早い段階で開発フローの(2-2) 変更をコミットする．
(3)

プルリクエスト（PR; Pull Request）を発行する．

(5)

レビューアがレビューする．

(5-1) デプロイする．

本稿で想定とする初学者は，基礎レベルのプログラミン
ア開発に関する知識，すなわち，工程管理やバージョン管変更をリモートリポジトリに push する．

(4)

2.1 本研究の対象とする学習者の技術レベルグは問題なく作成できるものとする．そして，ソフトウェ開発者が機能を実装する．

(2-1) エディタでソースファイルを編集する．

バージョン管理，開発フローの利用のモチベーションを上

2. 準備

master ブランチからブランチ（some feature）を作成し，some feature ブランチに移動する．

(2)

利用にモチベーションを持たせる必要がある．本稿では，げるため，開発フローの支援ボットについて提案する．

はローカ

はリモートリ(5-2) 動作確認する．
(6)

some feature ブランチを master にマージする．

(7)

master ブランチをローカルリポジトリに pull する．

理の存在を知っているものとする．

3. 提案手法
2.2 開発フロー

3.1 モチベーション

初学者の行う開発フローは編集，コンパイル，実行を繰り返すものとする．もちろん，中にはテストの自動化やビルドツールを用いての管理などもあるが，バージョン管理は実施していないものとする．

第 2.2 節で述べたように，開発フローの中で一番平易なGHF であっても，初学者が実施することは難しい．リモー
トリポジトリやローカルリポジトリ，ブランチについての理解が求められ，開発者の役割も意識する必要があるため*1

1

京都産業大学
Motoyama, Kamigamo, Kita-ku, Kyoto 603-8555, Japan*2*3

https://nvie.com/posts/a-successful-git-branching-model/
http://scottchacon.com/2011/08/31/github-flow.html
https://about.gitlab.com/2014/09/29/gitlab-flow/である．そこで，GHF を支援するボットを考える．一般

ラットフォームに設置されることになる．各タイミングで的に，ボットはあるプラットフォームにインストールさの定型的な反応であれば，連携の必要性は低い．しかし，れ，そのプラットフォーム上での操作に対して何らかの初学者に対する支援を考えたとき，将来的には緩やかに反応を見せるものである．例えば，チャットボットであれフェードアウトさせることが望ましい．そのため，ユーザ

ば，チャットシステムというプラットフォームに常駐し，の GHF に対する理解度を把握した上で，支援内容を決定チャット上の発言に反応して，何らかの動作を行うようにすることが望ましい．

なっている．

そのためには，ユーザの理解度をどこかで計測する必要

しかし，GHF は前述の通り，単一のプラットフォームがあり，その結果を各ボットが活用することが必要である．

で収まるものではない．操作する対象によって，作業のプまた，連携するためには，各ボットを通じて，提案手法のラットフォームが変わるためである．特に中心となるプ提供するサービスにログイン，もしくはユーザ情報の通知

ラットフォームは，Git の操作，IDE（エディタ）での編を許可する必要があり，ユーザ獲得の障害になりうる．

集，そして，GitHub をはじめとしたソーシャルコーディン
グプラットフォーム（SCP; Social Coding Platform）上で4. まとめと議論したい項目の PR に対する作業である．本稿では，これらの各プラッ

4.1 GHF 支援ボットについての議論

トフォームで GHF を支援するボットを配し，それぞれが動機付けに有効なものは何か ポイント制，トロフィー制以外には何があるか．ポイント制は将来的には仮想通協調して GHF を支援することを考える．

貨と連携することも考えられる．

3.2 支援方法
初学者を対象に GHF を支援すると言っても，目的によっ支援内容は適切か 初学者に適切な支援とは何か．
協調動作は必要か 仮に協調動作しない場合，どのような支援ができるか．て様々な支援の方法がある．人の判断を支援する方法 [1]などをボットが行うことでも GHF を支援できる．
本稿では支援の目的を，初学者の GHF の理解と定める．

4.2 協調ボットについての議論

すなわち，第 2.2 節に示した流れを実施できるようにする

どこまで行うのか 協調ボットの汎用性を高めていくと，ことが目的である．そのため，適切なタイミングで，(1) 次サービス連携の話となり，IFTTT*4 に行き着く．その作業の通知や，(2) その作業を行わせることの動機付けれで良いのか，他に議論すべき項目があるのか．

を与えることで支援を行う．

協調させるためのユーザ情報をどのように持つか システ(1) 次の作業の通知では，次にどのプラットフォームでムを超えて協調させるためには，各々のシステムで何をしなければならないのかをユーザに通知する．通知

ユーザを判別する必要がある．一般的にはログインや，は，ユーザが作業中のプラットフォームや，OS の通知機ユーザを一意のトークン（ID）で識別する．ユーザに能を使うことが考えられる．

負担がかからず，心理的障壁も高くない方法は何か．

(2) 作業の動機付けは，各作業を初学者に定着させるための一つの手段として導入する．そもそも，初学者は GHF

4.3 まとめの各作業の必要性に関する理解が不十分である．その理解

本稿では，GitHub flow を支援するボットについて述べは，学習や教育だけで得られるものではなく，実践の反復た．様々なプラットフォームにボットを配置し，それぞれが必要であろう．そのため，その作業を行う上で，開発本が連携して，一つの目的である，初学者の GitHub flow の来とは別の利益のユーザへの提供で動機を与えるものとす

理解促進を実施する．今後は，実際にこれらのボットを開る．言い換えれば，GHF の実施にゲーミフィケーション発し，提案手法の効果を確認する．
謝辞を採用し，ポイント制やトロフィー制度を導入する [2]．

本 研 究 の 一 部 は JSPS 科 研 費 17K00196，17K00500，17H00731 の助成を受けた．
3.3 連携方法
提案手法はプラットフォームを横断して，ユーザに通知を行う必要がある．あるときは，Git の操作に反応し，別の参考文献[1]

ときには PR の発行に応答する必要がある．そのために，各プラットフォームにインターフェースとしてのボットを[2]設置する必要がある．例えば，リモートリポジトリに対する操作であれば，GitHub やブラウザなど，Git の操作であれば，ターミナルや OS などにボットを設置する．
提案手法では，インターフェースとしてのボットが各プ*4Yu, Y., Wang, H., Yin, G. and Ling, C. X.: Reviewer
Recommender of Pull-Requests in GitHub, IEEE Inter.
Conf. on Software Maintenance and Evolution (2014).
Hamari, J., Koivisto, J. and Sarsa, H.: Does Gamification Work? —A Literature Review of Empirical Studies
on Gamification, Proc. 47th Hawaii International Conference on System Sciences, pp. 3025–3034 (2014).
https://ifttt.com