hi, hikaru

『駅すぱあと』でお馴染みヴァル研究所で、テクニカルエバンジェリストとして働いている丸山が綴るブログです。

モブプロって楽しい!

こんにちは。 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