ペアプロはいいぞ〜
はじめに
みなさんこんにちは、Tourism プロジェクトのせきやんです。
4月から新入生も入って来る時期で、各プロジェクトは新しいメンバーを獲得し、活動するために必要なことを先輩から後輩へと教えることも多いのではないでしょうか。
特に Web やアプリ開発では「教えることが多いけど手が回らないよ…」といった状態になることも多いと思います。
そんなときにおすすめなのがペアプロやモブプロです!
実は最近まで僕は「ペアプロって 2 人で一つのタスクに取り組むことでしょ?」ぐらいにしか思っていませんでした(お恥ずかしい…)。
ペアプロってこうやるんだよ!というのを教えてもらってから、ペアプロいいじゃん!と思い Tourism プロジェクトでも導入をしようとしているので、このタイミングで記事にしてみなさんにも紹介しようと思います。
ペアプロとは?
ペアプロとはペアプログラミングの略称で、2 人のプログラマが 1 つの画面で共同でプログラムを書いていく開発スタイルのことです。
ペアにはそれぞれ役割があり、役割にそってペアプロを進めます。
ドライバ
- 実際に手を動かして書く人
- ナビゲータのサポートに基づいてプログラムを書く
- とにかくプログラムを完成させることに集中し、内容などはナビゲータに任せて良い
ナビゲータ
- ドライバが気持ちよくコードを書くことをサポートする人
- ドライバが書いたコードを常に横からレビューする
- プログラムを書く上での大局的な問題を考える
通常の企業などで取り入れられているペアプロでは、ドライバとナビゲータの役割を定期的に入れ替えてながら開発を進めていきます。
実際にペアプロの導入事例は以下のように多くの記事があるので、参考にしてみてください!
モブプロとは
ちなみにですが、モブプロとはモブプログラミングの略称で、3 人以上のプログラマが 1 つの画面でプログラムを書いていく開発スタイルのことです。
2 人ならペアプロ、3 人以上ならモブプロと呼ぶことを覚えておきましょう。
やってみて感じたこと
ここまでを読んで、
「でも常に人に見られながらコードを書くなんて嫌だ…」
「1 人でも開発は進められるし、なんかめんどくさそう」
なんて思ったりしてませんか?
そんな方のために僕が実際にやってみて感じたメリットなどを紹介します。
何からすればいいかがわからないが解消される
みなさんは自分で 1 からプログラムを書くときや、チームに参加した直後などの時に「どこから手をつけたらいいのかわからない…」という経験はないですか?
僕がペアプロを体験したチームに入ったとき、技術領域が今まで触ってきたことと全く違うものを扱うところだったので本当に何をしていいかわからない状態でした。
そんなときにその領域で経験のあるメンバーとペアプロをしよう!という提案があり、懐疑的に思いながらもお願いしました。
しかし、ペアプロをすると基本的にナビゲータの人が常に支持を出してくれるので、プロジェクトの構成やプログラミング言語の文法、フレームワークの使い方、使用するコマンドなど基礎的なことまで教えてもらいながら進めることができ、「どこにファイルを作って、そこにこういうコードが必要で…」といった具体的な行動を知ることができます。
そのため、次からは自分 1 人でもある程度サクサク進めることができるようになり、何をすればいいのかという不安からは解消されました。
後からレビューする手間が省ける
プログラムを書いた後、コードレビューをお願いされるとそれ自体がまたレビュワーのタスクとして溜まってしまうこともあると思います。
しかし、ペアプロとはで説明した通り、ペアプロは常にナビゲータがレビューを行うため、後からコードレビューをする必要性が基本的にありません。そのためペアプロをしていたら、PR を出した時点でマージしても良いとしている場合もあります。もし不安であれば +1 人ぐらいの人に見て貰えばよいと思います。
教育とタスクが同時に進む
僕が今まで経験してきたことで「教育に手を回しすぎて開発が進まない」「開発が忙しすぎて新人が放置されている」というような問題に直面したことがあります。
これらは開発と教育を別タスクとして切り分け、「教育が終わったら開発に入ってもらう」という原則をもとに動いています。
しかし、ペアプロを取り入れることで、教えながら実際の開発を進めることができるため、簡単な文法だけ教えてチームに入ってもらうというようなことも可能になります。
さらに、実際のタスクをこなし開発に早めに着手することで、学習のためだけでない実際に開発をするために必要な考え方も早い段階で知ることができます。
学生プロジェクトで取り入れるには
ここまで一方的にペアプロはいいぞ〜と言ってきましたが、学生プロジェクトに取り入れるにはいくつか考慮しておく点があります。
ナビゲータの負担
学生プロジェクトでは学年が上の先輩と、入ってきたばかりのような新入生では技術力に圧倒的に差があることも多いと思います。
そのような場合、企業のように頻繁に役割を入れ替えるということができず、常に同い人がナビゲータをし続けるということになりがちなのではないかと思います。
ナビゲータをできる先輩が多いプロジェクトならいいですが、「先輩は少ないのに新入生が大量に入ってきた」みたいなことが起きたらペアプロを取り入れてもナビゲータは全て同じ人で、その人が大変すぎて爆死するみたいなことも起こりかねません。
学生プロジェクトの場合はドライバになる側も空き時間で 1 人で試したり学習したりするなどして、ナビゲータが教える負担を少しでも軽くすることを考えた方がいいでしょう。
ペアプロは用法・用量を正しく守って行いましょう。
時間を合わせるのが大変
ペアプロは同じ画面を見ながら作業をするので、リモートといえど 2 人で時間を決めて、ここでやりましょう!としなければいけません。
学生プロジェクトでは他のタスクも抱えていたり、そもそも授業やテスト、バイトがあったりとお互いがなかなか時間を作るのが難しいこともあると思います。
これについては、お互いが時間をとってくれたことに感謝をして行い、できる限り効率よく短時間でできるようにするなど工夫をする必要があるでしょう。
ペアプロに使えるツール
ここでは主にリモートでペアプロをするときに便利なツールを紹介します。
VSCode の Live Share
Live Share はエディターである VSCode(Visual Studio Code) での拡張機能として使用でき、VSCode の画面を同時編集することができます。
そのため「ここはこう書いた方がいいよ」みたいな説明をするのにそこに直接書き込むようなことができるため便利です。
Live Share はお互いの VSCode に Live Share がインストールされている状態で、共有する画面(ドライバ側)の発行する URL を共有することで使用することができます。
Slack の Slack コールもしくはハドルミーティング
プロジェクトで Slack を導入しているところも多いと思いますが、その Slack では Slack コールやハドルミーティングのような、オンライン通話ができる機能があります。
これらはもちろん画面共有ができるのですが、共有した画面に対して他の人が画面上に線を書いたりすることができるため、見て欲しいところをナビゲータが示したりするときに重宝します。
ただし、Slack コールもハドルミーティングも基本的にこれらの機能を使うには有料プランに入っていないといけないので、もし有料プランの人は使用を検討してみてください。
さいごに
みなさんペアプロについて少しでも知っていただけたでしょか?
ペアプロもやってみて感じることがとっても多いので、まずは試験的に導入してみるのもいいと思います!
Tourism プロジェクトでも最近僕が頑張って浸透させようとやってみている段階です。初めは何もわからなくてもペアプロを通して理解できるので、安心して Tourism プロジェクトに入ってきて欲しいなと思っています。
もしこの記事を読んで Tourism プロジェクトに興味を持ってもらえたら HP や Twitter チェックしてみてください!
また、メンバーも随時募集しています!在校生も春から入学する方もぜひお待ちしています!!
Tourism プロジェクトのホームページはこちら! tourism-project.com
Tourism プロジェクトの Twitter はこちら! twitter.com
Tourism プロジェクトが制作する「撮っテク!」アプリのサイトはこちら! totteku.tourism-project.com
執筆者: せきやん(@sekiyan372)