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

ビデオ会議システムにおけるリモートモブプログラミ
ングのための役割ごと支援機能の検討
寺中 靖幸

高山 裕暉

濱田 優弥

井垣 宏

複数人でチームを組んでソフトウェアを開発する手法の一つとしてモブプログラミングというものが知られている．
モブプログラミングとは 1 つの端末を使って複数人でソフトウェアを開発する手法である．開発者らは端末を操作するドライバと呼ばれる役割と開発画面を見ながら意見を出してドライバをサポートするナビゲータと呼ばれる役割に分かれ，役割を短時間で交代しながら開発を進めていく．昨今のテレワークの普及や感染症の影響による自粛要請等の世界情勢において，このモブプログラミングをリモート環境で行う事例が増加しつつある．著者らが実際にリモート環境でモブプログラミングを実施した結果，対面でのモブプログラミングと比較して，引き継ぎやドライバ・ナビゲータ間のコミュニケーションにおける課題が有ることが分かった．そこで本研究では，ドライバやナビゲータの役割支援を目的としたビデオ会議システムにどのような機能が求められるかを分析し，UI 等の設計を行った．

が一つのパソコンに集まって作業を進めていくため，

1 はじめに情報の共有やタスクの割当といったコミュニケーショ

1 台のパソコンの前に 2 人の開発者が座り，1 人がンに係るオーバヘッドが削減できることやあらゆる問開発して 1 人が助言やコードレビューを行うペアプ

題をチームのメンバ全員で即座に共有するため，解決ログラミングと呼ばれるソフトウェア開発手法があるが迅速に行えることなどが挙げられている [3]．

[6]．大学などの教育機関におけるプログラミング教

一般的なモブプログラミングでは，パソコンに向育手法の一つとしても採用されており，学生が独力でかって開発作業をする開発者（ドライバと呼ばれる）開発する場合と比較し，よりよい品質のコードを書くとドライバを支援するその他の開発者（ナビゲータことができるようになったといった良い側面が数多くと呼ばれる）が 10 分〜20 分程度ずつ（モビングイン報告されている [5] [4]．モブプログラミングは 3 人以

ターバル，本稿ではインターバルと呼ぶ）交代して開上の開発者が 1 台のパソコンの前に座って協力しな発をすすめる．ドライバは時間が来るとパソコンの前がら問題を解決するペアプログラミングを発展させから離れ，次のドライバと交代する．事前に決めた回たチーム開発手法の一つである [9]．1 人が実際にパソ数ドライバを交代した後（モビングセッション，本稿コンを操作してプログラミングを行い，残りの開発者

ではセッションと呼ぶ），セッションの内容を振り返はそれを見ながら問題点を指摘したり，解決方法の提る．最近ではモブプログラミングを取り入れた日本企案を行ったりすることで，共同で開発を進めていく．

業の報告も行われるようになっており [7]，他にも国ペアプログラミングと異なる点として，一つのチーム際会議 [1] が開催されるなど，注目を集めている．
一方でモブプログラミングでは，3 名以上の開発者

Consideration of a Video Conferencing System toSupport Developers by Role in Remote Mob
Programming
Yasuyuki Teranaka, Yuki Takayama, Hiroya Hamada,Hiroshi Igaki, 大阪工業大学 情報科学部, Faculty of Information Science and Technology, Osaka Instituteof Technology.

が 1 つのパソコンの周りに集合して開発を行うため，いわゆる 3 密なコミュニケーションを避けられない．
そのため，最近ではリモート環境でモブプログラミングを行う事例なども報告されている [11]．著者らの所属する研究室でも，3 名程度の学生が 1 つのチームとして Zoom†1 や Discord†2 といったビデオ会議サー付ける機能があるため，ナビゲータがドライバの画ビスを利用したリモートモブプログラミングを行って面のどの部分についてコメントをしているか伝えやいる．対面で実施する場合と異なり，インターネットすいという特徴がある．Discord には注釈機能は存在を介して実施するリモートモブプログラミングでは，しないが，Zoom などと違い，オンラインでの会議を開発対象のソースコードの引き継ぎをしなければな

開始する際に会議にアクセスするための URL を生成らず，ドライバ・ナビゲータ間のコミュニケーションして周知するといった手続きが必要ない．そのため，が対面よりも難しいといった課題がある．そこで本稿

Discord サーバにサインインするだけで音声での会議

では，我々が行っているリモートモブプログラミングや画面共有を開始できるといった特徴がある．の経験にもとづき，リモートモブプログラミングのためのビデオ会議システムを検討する．

今回実施したリモートモブプログラミングでは，Web アプリケーションを主に開発対象としており，開発環境としては Visual Studio Code やブラウザ

2 リモートモブプログラミング（Chrome），Windows 用の bash ターミナルを利用

モブプログラミングをリモート環境で行う場合，1している．通常のモブプログラミングと同様にドライつの部屋に集まるのではなく，ビデオ会議サービスなバを実施する順番を決定し，インターバルを 20 分〜

どを利用して開発者それぞれの所有するコンピュータ

30 分，3 人が一度ずつドライバを担当したらセッショの画面を共有して開発を行うことになる．教育の手段ンが終了するものとしている．次節では，実際に著者としてペアプログラミングをリモート環境で実施すらが複数回実施したリモートモブプログラミングのる取り組みは従来より数多く行われており [8]，一人振り返りにおいて得られた知見について詳述する．

でプログラミングを行う場合と比較し，学生のモチベーションや開発されるソースコードの品質等複数の観点において良い効果が得られるとされている．

2. 2 対面でのモブプログラミングとリモートモブプログラミングの差異

昨今ではリモート環境でモブプログラミングを実施

ビデオ会議サービスを利用して開発者が自分の PCする取り組みも行われており [2]，どこにいても開発環

画面を共有して進めるリモートモブプログラミング

境があれば開発が行える. また, 不要な作業に対するでは，対面でのモブプログラミングでは不要であった時間の削減を行うことができる. 一人で開発を行うよりも, モブプログラミングを行うことで孤独感が軽減

引き継ぎ作業が必要となった．著者らはソースコードの共有に Github†3 を利用している．最初のドライバされる. などと報告されている．著者らの所属する研が自身の開発環境上にリポジトリを作成し，開発ブラ

究室では，Discord や Zoom といったビデオ会議サーンチを作成して必要に応じてコミットを行う．ドライ

ビスを利用し，3 名の開発者がオンラインで集まってバ交代時にはすべてのコミットを push する．次のドモブプログラミングを実際に行っている．以降では著

ライバは push された開発ブランチの内容を pull に者らの実施したリモートモブプログラミング環境とそよって取得し，続きを開発する．引き継ぎにおいてはのときの振り返りから得られた課題について述べる．

他にも DB サーバの共有等，バックエンドサービスの共通化や開発環境の共通化といった作業も必要であ

2. 1 リモートモブプログラミング環境ることが分かった．Git の操作なども含めて，モブプリモートモブプログラミングの実施に際して，ビデログラミングに不慣れな学生にとっては，引き継ぎ作

オ会議サービスとして Zoom 及び Discord を利用し業そのものが難しく感じるということが分かった．ている．両サービスともに画面共有機能が備わってい他にも対面の場合と比較して，ドライバ・ナビゲーるが，Zoom では画面共有時に共有者の画面に注釈をタ間のコミュニケーションが希薄になるといった感想†1 https://zoom.us/jp-jp/meetings.html†2 https://discord.com†3 https://github.com/

が得られた．例えばドライバはナビゲータが開発に集ションの支援を目指している．以降ではドライバ，ナ中してくれているか分からず不安になり，ナビゲータビゲータそれぞれを対象としたビデオ会議システム

はドライバが黙って開発を進めているため，集中力がの画面案を提示し，支援機能について検討する．

続かないといったコメントがあった．ビデオ会議サービスによっては全メンバの顔を映しながら画面共有を

3. 1 ドライバを対象としたビデオ会議画面の検討行うことが可能であったが，顔画像が表示されている

図 1 は我々が開発中のリモートモブプログラミン

からといってコミュニケーションの難しさが大きく改グ実施時のドライバの画面である．画面右側がドライ善されるといった感想は得られなかった．他にもホワバのパソコン画面，左端にビデオ会議システムが提供

イトボードが使いにくいというものもあった．

するドライバ画面が表示されている．ドライバはパソ

一方で対面の場合と比較してリモートモブプログ

コン画面で開発を行い，開発中のエディタなどがナビ

ラミングが良かった点についての意見としては，実際ゲータに対して共有される．ドライバ画面には上部にに集まる必要がないため予定の調整さえすればいつ残り時間やモブ中断・退室・引き継ぎなどを選択できでもモブプログラミングを実施できるというものがるドロップダウンリスト，ドライバが共有している画あった．特に Discord を利用して実施している場合，面のサムネイルが表示されている．さらにその下にはDiscord サーバに繋ぐだけでモブを開始できるため，モブに参加している全参加者の一覧とチャットエリア

対面で実施する場合と比較して非常に容易に実施でが表示されている．

きるというコメントが得られた．

残り時間は設定されたインターバル時間に従って設

以上より，リモートモブプログラミングにおいて定されており，ドライバを交代する 5 分前と交代時刻

は，役割ごとの引き継ぎ作業やドライバ・ナビゲータ

ちょうどに引き継ぎに関するアナウンスがテキスト間のコミュニケーションについて課題があるという知チャットエリアに表示される．アナウンスでは，ドラ見が得られた．そこで本研究では，これらの課題の改イバが操作するボタンや実行すべきコマンド情報が善を目指して，初学者が含まれるリモートモブプログ

提示される．1 台のパソコンを 3 人以上のドライバやラミングの支援を目的としたビデオ会議システムのナビゲータが使い回す対面型のモブプログラミング機能について検討する．と異なり，リモートモブプログラミングでは各自のパソコンで開発を行う．そのため，ドライバを別のメン

3 リモートモブプログラミングのための役割ごと支援機能の検討

バに引き継ぐ際には開発したソースコード等の成果物も引き継ぐ必要がある．そこで本稿で想定するリ

前節で述べたとおり，従来のビデオ会議システムをモートモブプログラミング環境では，成果物の引き継活用してリモートモブプログラミングを実施する場

ぎを版管理システム Git とリポジトリ共有サービス

合，一定時間ごとに引き継ぎ作業が必要となることの Github を利用する．Git 及び Github を利用してやドライバ・ナビゲータ間のコミュニケーションの希チーム開発を行う場合，まず開発対象のリポジトリの薄さが課題として挙がっている．本稿では，不慣れなmaster ブランチから開発ブランチを開発者や機能に開発者同士でもリモートモブプログラミングを容易応じて作成する．次に対象の開発ブランチでの実装がに実行できるようになることを目的とし，ドライバ・完了した時点で，他の開発者によるレビューを行い，ナビゲータ双方を支援するビデオ会議システムの新開発ブランチの内容を master ブランチにマージするしい機能について検討する．現在検討中のリモートモ[10]．モブプログラミングではチームの全開発者がモブプログラミングのためのビデオ会議システムはドブに参加して開発を進めていくため，1 つのブランチ

ライバ・ナビゲータそれぞれに異なった UI を提供すをドライバが作成し，そのブランチを全ドライバがる．役割に応じた UI や機能を開発者に提示すること共有して開発を進めていく．そのため，引き継ぎ時にで，引き継ぎやドライバ・ナビゲータ間コミュニケーは前ドライバが開発ブランチに実装した内容を push

図1

ドライバの画面し，次のドライバがその内容を pull して取得して開変換して提示してくれる音声チャットエリアがある．

発を継続していくことになる．ドライバ画面と次節でマイクが利用できない場合やメモにはテキストチャッ

述べるナビゲータ画面では，これら一連のコマンドにトエリアを利用し，音声で助言やコメントなどを行っ関する情報を開発者が引き継ぎを行うタイミングでた場合に，あとで振り返ったりする場合に音声チャッ提示することで，容易に引き継ぎが行えるよう支援すトを確認すると言った使い分けが行われることを想定ることを想定している．

している．

次に全参加者一覧には，ドライバがナビゲータの状況を把握しやすくするような可視化を行う．まず誰が現在発話しているかを示すため，発話者の枠を緑色で3. 2 ナビゲータ支援を想定したビデオ会議画面の検討表示する．さらに，ドライバやナビゲータの発話回数

図 2 は我々が開発中のリモートモブプログラミン（沈黙が継続しないよう各自が意識しやすくすることグ実施時のナビゲータの画面である．ナビゲータ画を目指している），ナビゲータがドライバの画面以外面には，ドライバが共有している画面が表示されてを見ていないか（別の画面を見ているとユーザ名が赤いる．さらにその下にはモブに参加している全参加色になる）などをドライバは把握することができる．

者のカメラ画像，その右には残り時間や退室・交代をこういった可視化により，ドライバから見てナビゲー選択できるドロップダウンリストと全参加者リスト，タが集中して画面を見ているか，どの程度積極的にチャットエリア，他の参加者に感情を表現するリアク発話してくれているかといった情報を得ることがでションが表示されている．

きる．

顔画像では，ドライバ及び他のナビゲータの状況をドライバ画面最下部のチャットエリアには各参加者可視化するために全参加者を映す．全参加者一覧にもがテキストを入力して行うテキストチャットエリアと搭載されていた発話者の表示とドライバの画面を見マイクを利用して音声で発話した内容をテキストにているかに加え，顔画像も可視化することで，より自図2

ナビゲータ画面

然にコミュニケーションをとることができるようになにあたって必要なコンパイラやエディタ，git コることを目標としている．

マンドの設定画面右側の参加者一覧にはドライバ画面と同じ情報が表示されており，カメラやマイクの設定の他にリ• リポジトリの作成．Git を利用してリポジトリを作成し，Github に登録する．

アクション内容，発話回数など，モブにどの程度積極• ビデオ会議システムにおけるモブルームの作成的に参加しているかを示す情報が提示される予定でモブに参加するすべての開発者がコンパイラなどある．の言語環境や Git コマンドなどを含む開発環境をセットアップする．次に，最初のドライバがプロジェクト

4 想定するシナリオの Git リポジトリを作成し，Github に登録する．さ

この節では，開発中のビデオ会議システムを利用すらに，ビデオ会議システムにアクセスし，モブプログる際のリモートモブプログラミングの流れを具体的ラミングを行う会議室（モブルームと呼ぶ）を作成すなシナリオとして示す．

る．図 3 にモブルーム作成画面の例を示す．リモート
モブプログラミングを開始する際は，1 つのインター準備

バルの時間，対象リポジトリの URL，モブルーム名

リモートモブプログラミングを開始する際には，利とパスワードを登録し，作成ボタンをクリックする．

用する開発環境が必要となる．特に引き継ぎを繰り返

モブルームが作成されると，図 1 に示すドライバ画して開発を進めていく場合，Github のようなリポジ面が表示される．最初のドライバはモブルーム名とトリ管理サービスの利用が前提となる．そのため，準パスワードを他の開発者に連絡する．他の参加者は備としてはビデオ会議システムにおける設定と合わせドライバから聞いたモブルーム名とパスワードを入て以下のような作業が行われることを想定している．

力して，モブルームに参加する．ドライバを分担す• 開発環境のセットアップ．プログラミングを行う

る順序はモブルームに参加した順番で決定されるが，を開始できる．

セッションの終了作業を終了する場合には，引き継ぎと同様にまずは開発内容を commit し，push する．それから引き継ぎではなくセッション終了ボタンを選択し，決定ボタンをクリックする．その後，これまでのコメント内容が記録されたチャットエリアの情報などを利用して，セッションの振り返りを行う．
図3

ルーム作成画面画面

ドライバはドライバ画面の参加者一覧において，ドライバ担当順序を変更する機能を検討している．

5 考察
2. 2 節において，引き継ぎに関する課題とドライ
バ・ナビゲータ間コミュニケーションについての課題について述べた．ドライバ交代時の引き継ぎ処理におリモートモブプログラミングの開始

いては，引き継ぎのタイミングや誰から誰に引き継ドライバはルーム入室時にナビゲータに対して共ぎを行うか，引き継ぎ時の git コマンドの支援等を提有する画面の設定を行う．すべてのナビゲータがモブ案システムにより行うことで，不慣れな開発者でもルームに参加したことを確認後，開発用ブランチをリ容易にドライバ交代を行うことができるようになる．

ポジトリに作成し，モブプログラミングとしての作

ドライバ・ナビゲータ間コミュニケーションについて業を開始する．開発中は，ドライバおよびナビゲータ

は，ナビゲータが画面を見てくれているかをドライともに，テキストチャットを利用したい場合はテキス

バや他のナビゲータから確認する手段として，画面トチャットを，音声でコメントする際はマイクを ONが Active であるかどうかを表示したり，インターバにしてコメントを行う．リアクション機能を用いるこル中の発言回数を表示したりするといった対応を検討とによって，自分のユーザ情報の欄に「いいね！」等している．今後，セッション終了時の振り返りにおいのリアクションを表示することも可能である．て，参加者がどの程度モブに貢献できたかを数値化するといったメトリクスについての検討も進めていき

リモートモブプログラミングの引き継ぎたい．

インターバル終了時刻になると，システムから作業終了通知がテキストチャット欄に自動的に表示され6 おわりにる．ドライバはそこに表示される内容に従ってそれま

リモート環境でのモブプログラミング支援を目的での開発内容をリポジトリに commit し，次のドラとしたビデオ会議システムに求められる機能の検討

イバが変更内容を取得できるよう Github に push すを行った．With コロナの状況下において求められるる．その後，ビデオ会議システムの引き継ぎボタンをチームでのリモートワーク支援のために，今後実際クリックして次のドライバへと引き継ぎ提案を行う．にシステム開発を行い，継続して評価を行っていき次のドライバに割り当てられているナビゲータはビたい．

デオ会議システムの交代ボタンを押し，次のドライバ謝辞となる．さらに git リポジトリを pull し，開発対象

本研究は JSPS 科研費 JP17K00500 の助成を受けのブランチを checkout してから開発を開始する．入力すべきコマンドについてはビデオ会議システムが示してくれるものをそのまま入力するだけでも開発たものである．

参 考 文 献

Illuminated, Addison-Wesley Professional, 2002.
[ 7 ] Yasunobu Kawaguchi: 大 企 業 だ け ど 新 規[ 1 ] Atsushi Nagata: こ こ が す ご い！モ ブ プ ロ グ
ビ ジ ネ ス 開 発 を モ ブ プ ロ グ ラ ミ ン グ で やって
ラ ミ ン グ, https://confengine.com/scrum-festみた, https://nihonbuson.hatenadiary.jp/entry/
sapporo-2020/proposal/14013.
2017/09/24/090000.
[ 2 ] Dana Prey: Remote Mob Programming: Un[ 8 ] Zacharis, N.: Evaluating the Eﬀects of Virleash your team’s potential with remote, coltual Pair Programming on Students Achievementlaborative work, https://smartbear.com/blog/
and Satisfaction, International Journal of Emergcollaborate/remote-mob-programming/.
ing Technologies in Learning (iJET), No. eISSN:[ 3 ] Harald Reingruber: Remote Mob-Programming,1863-0383(2017).
https://dev.to/harald3dcv/remote-mob-programming[ 9 ] マーク・パール, 及部敬雄: モブプログラミング・ベ
hunter-industries-18ac.
ストプラクティス, 日経 BP, 2019.
[ 4 ] Nagappan, N., Williams, L., Ferzli, M., Wiebe,[10] 井上拓海, 小島遥一郎, 藤原賢二, 井垣宏: 版管理シE., Yang, K., Miller, C., and Balik, S.: Improvステム利用時のソフトウェア開発フロー遵守状況可視化
ing the CS1 Experience with Pair Programming,
手法の検討, 電子情報通信学会技術研究報告= IEICESIGCSE Bull., Vol. 35, No. 1(2003), pp. 359–362.
technical report: 信学技報, Vol. 117, No. 380(2018),[ 5 ] Umapathy, K. and Ritzhaupt, A. D.: A Metapp. 121–126.
Analysis of Pair-Programming in Computer Pro[11] 長谷部/渋谷/佐藤/榎本: モブプログラミングが当
gramming Courses: Implications for Educational
たり前になるまで〜導入からフルリモート化までの課題
Practice, ACM Trans. Comput. Educ., Vol. 17,と解決〜, hhttps://techblog.yahoo.co.jp/entry/
No. 4(2017).
2020052730002064/.
[ 6 ] Williams, L. and Kessler, R.: Pair Programming