モブプロって楽しい!

こんにちは。 4/13に Ajile Japan 2017*1 で、モブプロ体験してきましたので、そこで学んだことを記事にまとめたいと思います。

f:id:hiiiiiiihikaru:20170414150030j:plain

モブプログラミングとは

モブ=群衆 つまり、複数人で、

  • 同じ時間
  • 同じ場所で
  • 同じPCを使って
  • 同じ課題に取り組む

開発手法だそうです。

1人がコードを記述するドライバーの役割を持ち、その他の人はドライバーにアドバイスを送るナビゲーターの役割を持ちます。 ドライバーは何分かおきにナビゲーターとバトンタッチして、全員にドライバーを体験させます。

f:id:hiiiiiiihikaru:20170414155158j:plain

当日やったこと

elmでローマ字の足し算

1回目のモブプロは、elmという言語で、ローマ字の足し算をTDDで開発しました。 なんと、アジャイルジャパンの基調講演を行った Joshua Kerievsky もドタ参!!これは胸熱。

f:id:hiiiiiiihikaru:20170414165225p:plain

そのJoshuaの提案で、誰も触ったことがないelmで開発を行うことになりました。 ファシリテーター1人、ナビゲーターは飛び入りで人が入ったり抜けたりしていましたがだいたい6~8人いました。 10分でドライバーを交代し、休憩を挟みつつ合計1時間半モブプロを行います。

さて、これからモブプロ開始するかー・・となった時に、Joshuaから「Mobsterいいよ!(翻訳)」という声があがりました。 モブプロで時間管理を行うツールのようです。インストールして使ってみました。

github.com

モブプロの過程で、elmはjavascriptを生成する中間言語っぽいということがかろうじて分かりました。 関数型言語っぽいことも分かりました。 みんなの知識を足し合わせて、なんとかテスト、実装..を繰り返しながらいくつかのローマ字の足し算を実装することができました。

終わった後の感想

  • みんなが触ったことのない言語でもコードかけたのすごい!
  • Mobsterなかなか良い!
  • 普段触り慣れていないキーボードはストレス!
  • ナビゲーターからのアドバイスがないと、ドライバーが自分で考えてコードを打たなくてはならなくなり、それだと公開コーディングになり辛い。
  • ナビゲーターから見ると、ドライバーが勝手に書き始めるとドライバーが何をしようとしているのかわからなくて辛い。
  • 10分のドライバーは少し長く感じた。

ruby自動販売

2回目のモブプロは、rubyという言語で、自動販売機を(もちろんTDDで)開発しました。 ファシリテーター1人、ナビゲーター数名、 あとサプライチェーンマネジメントで有名な原田騎郎さんにプロジェクトオーナーとして入ってもらいました。 今回は7分でドライバーを交代して、45分間モブプロを行いました。

さーて、rubyだしGemfile作ってbundle installするかー・・となった時に、 bundle exec rpsecコマンドが効かないアクシデントが発生しました。 急遽別のPCでモブプロを行うことになりました。 そのPCの持ち主がvi使いで、カスタマイズされていて、みんな苦戦を強いられていましたw PCが入れ替わったことで、Mobster入れ直す?という話になったのですが、今回は人でタイムキープすることにしてみました。 まずは簡単にフローチャートを描いて、今からどこを作る、というのをみんなで共有できるようにしました。 1回目の反省を活かし、ドライバーは今から行うことを声で宣言しながら実装を進めました。 POから、ちょいちょいチャチャが入りつつ、もうみんなの集中力が限界に達したところで、モブプロ終了としました。

終わった後の感想

  • 皆でワイワイできた。楽しい!
  • 動いた時に拍手を行うと、テンポを感じられて良い!
  • 普段触り慣れていないキーボードはストレス!(2回目)
  • 環境で戸惑ってしまうから、チームで環境を揃えておくと良いのかも。
  • エディタを人で切り替えるのもあり。
  • でも一方で、知らない環境に触れることで知識が広がる。
  • 2回目はMobsterを使わないで、特定の人がタイムキープしてくれていたけど、ストップウォッチを押し忘れてしまうことがあったり、負荷があるなーと感じたのでMobsterいい。
  • ドライバー、7分だと短く感じた。

まとめ

ここ最近で一番、「プログラミングって楽しい!」と思えた時間でした。 私的に重要だと感じたポイントは、時間です。 一番ちょうどいいのは、1回あたり45分、1人あたり7~10分で回すことらしいです。それでやってみましたが、確かにちょうどいい感じでした。 前に会社で3人くらいでモブプロを行ったことがあったんですけど、 その時はモブプロに感動しなくて「知識を共有できるのはいいね〜」という感想くらいしかありませんでした。 1人30分を持ち時間として、1時間半くらいの時間で行っていたので、開発のテンポも乗らないし、集中力も切れていたのが原因なのかもしれないですね。 今回モブプロを体験してみて、過去のモブプロとの比較も出来たのでよかったです。 これはリベンジせねば。

f:id:hiiiiiiihikaru:20170414155358j:plain

*1:日本の権威あるアジャイルのイベント。www.agilejapan.org