DevLoveに参加して、モブプロ(モブプログラミング)を体験しました。
モブプロとは?
モブプロとは、ペアプログラミングのペアがモブになったものです。モブとは群衆という意味で、たくさんの人数でプログラミングを同時にやります。
1台のパソコンをプロジェクタに接続して、1人がドライバとしてプログラミングをし、他のみんなで実装を考えます。
いざモブプロ
今回はお互い知らない人達が集まって10人ほどでやりました。私も含めほとんどがモブプロ初めてで、最初にモブプロの簡単な説明を受けて、百聞は一見にしかずということで、やり始めました。
プログラミングの課題は「ローマ数字で足し算」。テスト駆動開発でやる、ドライバは5分交代というルールで開始です。
最初に誰のパソコンでやるか、言語は何か、開発環境はどうするかという所からスタートしました。
そこから!?という感じはしましたが、簡単に開発環境を用意するためrepl.it(Web上で開発できるフリーの環境)を使用し、言語はNode.jsになりました。
Node.js知らないよと思いながらも、みんなもそんなに知らない様子、不安を抱えながらもプログラミングを開始しました。
テスト駆動開発なのでまずはテストですが、テストの書き方もわからない。。。
そんな中ある人がassertがあるよ
ドライバがとりあえずassertと書いてみても動かず
requireと書くよとか、言われるままに書いていくと
var assert = require("assert");
あー定義式か
assert.equal(1,1)
で実行
コンソールに
undefined
??となっていると、失敗するテストを書こうという声
assert(1,0)
エラー発生。ちゃんと失敗するテストが書けている
おー(拍手!!)
いよいよ実装
テストを書く前にクラスにする?メソッドにする?
クラスにしよう
クラス名は?
メソッド名は?
メソッド名はcalc?
addの方がよいね
assert("II", (new Rome).add("I", "I"));
テスト失敗するので、とりあえず文字列結合でテスト通るはず
で、実装するとテスト成功!(みんなで拍手!!)
その後も、
ブラケットの位置が他と違うよ
typoある
シングルクォーテーションとダブルクォーテーションが混在してるよ
テスト追加してからね
まずはテストを通そう
リファクタリングしよう
実装どうするの?
などとやんや1時間ほどやって、テストが通るたびににみんなで拍手しながら、最終的にはそれなりに実装できました。
振り返り
-
keep
- わからないことの解決スピードが速い
- 知らない言語でもできた
- 変数名に悩まなくてもいい⇒気持ちが楽
- 後半はリズムがよくなってきた
- 途中からでも入りやすい
- 反応が複数返ってくる安心感があった
- 楽しかった(拍手!!)
- 一人では書けないコードがかけそう
- 考えなくてもコードを書いていける
- テストを守った(皆でルールを守った)
- ケアレスミスがすく見つかる
-
problem
- 他人のキーボードに慣れるのが大変
- 一人で集中してコードを書くような、入り込む気持ち良さがない
- 判断のスピード感に取り残される
- この方向性でいいのか考え直す時間が欲しかった
- どう考えたかが分かるためのコメントなどが残せていなかった
- 判断がわれた時のジャッジをどうするか
- 意思決定のジャッジがドライバーになる場合もあった
などの意見がありました。
おわりに
とにかくみんなで考えて、コードを書いて、テストが通った時にみんなで拍手して喜び合うのが楽しかったです。
振り返りで以下の意見が印象的でした。
- 「考えなくても書いていける」
知らないことでも教えてもらえながらコードを書けるので教育的にもよいかなと思いました。
仲間の間での知識や技術の共有に使えたり、新人教育に使えたりと、モブプロは教育的に使えると思いました。
- 「テストを守った(皆でルールを守った)」
みんなが見て、テストを書かなかったらテスト書くよとか、インデント違うよとか指摘しあって、コーディング規約を守ったり、テストをしっかり書くことにもつながると思います。ルールを守ることで品質向上にもつながりそうです。
- 「わからないことの解決スピードが速い」
- 「判断のスピード感に取り残される」
- 「この方向性でいいのか考え直す時間が欲しかった」
モブプロをやっているみんなで解決して、どんどん実装していける反面、これでいいのか?と思う場面もありました。
最後にモブプロをやっている方の話を聞きましたが、最初にモブプロをやって振り返りをすると上記のような感じになることが多いようです。まずは実装をガンガン進める形になってしまうのですが、振り返りをすることで、最初に設計の時間をとったり、モブ設計をしたりと改善していくことが大切とのことです。
今回は初対面の人だったのですが、知っている仲間でやったり、モブプロを繰り返しやるうちに解決していきそうだと感じました。
今回は初めてモブプロをやってみたのですが、かなりの可能性を感じました。今度は知っている仲間とやってみようと思います。