放浪から定住へ - ぼくらのモブプロを紹介します!
CyberAgent の LODEO というチームでエンジニアをやっている、陶山と申します。LODEOとは、モブプロとは...については以前にも記事を書いているので、よろしければこちらもご覧いただければ。
昨年のAgileJapan, Woody Zuil氏の基調講演に感銘を受け、また会場でモブプロを実践してから、モブプロが大好きになりました。
ちなみにこれが僕です。写真は みんなのモブプロ よりお借りしました。
Woody 氏のとなりで、平鍋さんと一緒にモブプロしてますね... 今思うとすごい経験です。たしか Haskell で FizzBuzz を実装したのですが、すごく楽しかったです!
LODEO では2年ほど前からモブプロを取り入れ、半年ほど前にモブプロをデフォルトの働き方として採用しています。モブプロがデフォロトの働き方になってから、いろいろとノウハウも溜まってきました。
今回はその一部を紹介したいと思います!
「場所重要」、でもやりたい気持ちが一番重要!
モブプロをやるにあたって、スペースの確保は課題の一つだと思います。
快適にモブプロを行うには
- 気兼ねなくうるさくできる、ある程度隔離された部屋
- ディスプレイに対して向き合う形で座れる机
- 複数人がパーソナルスペースを確保できる程度に離れて座ってもまだ視認性のよい大型のディスプレイ
...あたりがあるととても良いです。
でも、「場所がないからウチではモブプロできない...」と考えている方がいらしたら、ちょっともったいないかもしれません。
「みんなでやりたい」その気持ちさえあれば、あとは何とでもなります!
すこしだけ近くに寄ればディスプレイだって小さくていいし、自分の机(は流石にあると思われます)に椅子を持ち寄ってやってもいいじゃないですか。
それでもきっと、モブプロの楽しさを感じられるはずです。
いまでは、わたしたちのチームは安定して使えるスペースを確保できましたが、それまでは放浪モバーよろしく色んな所を転々としていました。
利用シーンとあわせて、幾つかモブプロしていたスペースをご紹介してみたいと思います。
はじめてのモブプロ! - 合宿形式 / 貸し会議室
初めてのモブプロは、開発合宿などを企画していつもと違う場所で、違う雰囲気でやってみるのが良いと思います。
僕たちはそうやってモブプロをはじめました。
騒げる場所を確保でき、新しいことを始めるきっかけにもでき、一石二鳥です。なるべくクリエイティブで、リラックスできるところがおおすすめです。和室は最高におすすめできます。
また CyberAgent では開発合宿などの目的で利用できる施設があり、これを利用していました。
おしゃれな内装、壁掛けデュアルディスプレイ、隔絶された専用空間と文句なしに最強のモブプロ環境だったのですが、残念ながらこの会議室は閉鎖されてしまいました...。
ときどきモブプロ! - 会社の会議室
モブプロの良さがチームで認知されてくると、定期的にモブプロをやりたくなってきます。この段階のころ、僕たちは社内の会議用スペースにディスプレイを持ち込んだりして2〜3時間籠もる、という具合でした。
日々の業務のうち、重要(ということはだいたい複雑)なモジュールのリファクタや、今までにやったことのない機能追加など、難しい課題をピックアップしてモブプロで立ち向かうと、きっとその効果に驚くと思います。
なお弊社の会議室にはほぼすべてディスプレイが置いてあります。
40V程度、4Kのモニタが配備されているケースもあり、モブプロに最適で最高に快適ですが、他のチームも会議室を使いたいため占領するのは心苦しい、という欠点があります。
こんな席もあります。
社内にカフェがあるのですが、その中に設置されているMTGスペースで通称「ファミレス席」です。こちらは予約せずに使えるため、高頻度で利用しました。「気軽にディスカッションができる」という目的で設計された空間なので割と賑やかで、気兼ねなくモビングできるので最高です。
一つだけ欠点を上げるとすると、このスタイルの座り方はディスプレイが横にあるため、常に首を横に曲げた状態になり首が痛くなります。セッションごとなど、定期的に左右を入れ替わると良いです。
四六時中モブプロ! - 専用スペース
最終的に、執務エリアの一角を間借りしてモブスペースを作ることで落ち着きました。大型ディスプレイを備え、5人程度収容できとても快適です。自分専用の席ももちろんあるのですが、最近は殆ど席にいません。
ぼくらのモブそうび
僕たちのふだんのセットアップをご紹介します!
共通マシン
なくても良いですが、10~15minでドライバーを切り替える中でディスプレイを切り替えて、コードをチェックアウトして、ビルドして...に1minくらい取られると積もり積もってロスが大きくなるので、やっぱりマシンは共通のほうがストレスなくスムーズです。
もともと、自分のマシンを持ち寄って、交代ごとにマシンも切り替えて... という感じでやっていました。JIS/USのキーボードの差や、こだわりのアプリ、エディタ、キーボードの差などがおおよそ適応出来なそうな問題に思えていたからですが、上記の問題から、結局共通マシンを利用するかたちに落ち着いています。
HDMIセレクタやVisual Studio Live Shareを使うとか、自分のマシンで快適にモブプロするためにもいろいろ方法はあると思います。
いろいろ実験してみて、チームに合う方法を探すのもまた楽しいです!
キーボード&マウス
JIS / US は一度慣れてしまうと越えられない壁。僕はキーストローク浅めでUSキーボードであれば特にこだわりがないのでなんでも良いのですが、自分の好きなキーボードを持ち寄るのが良いと思います。
僕たちのチームでは Magic Keyboard2 を準備しました。
ライトニングケーブルでの接続、Bluetooth 接続できるなのになんでいるんだろ〜と思っていたのですが、ケーブルつなぐだけで高速にペアリングをするマシンを切り替えられるのですごく快適です。モブプロをやるためのキーボードと言っても過言ではないでしょう。(※個人の感想です
最近はモブが2つに分かれることもあるので、JISキーボードとUSキーボードを2つずつ準備しています。誰かが休んだりモブを抜けたりして、一人一つずつキーボードが割りあたると恐ろしく快適です。
ペアリングマシン切り替えが楽、という理由からマウスも Magic Trackpad を使っています。
ディスプレイ&解像度
なるべく大きい方がいいのは言うまでもありません。3人までなら27 ~ 29 inch でもなんとかなります。4人を超えてくるとそれ以上の大きさがあると適度に距離を取りやすくて良いです。
4K まで解像度出せる 50V のサイズのディスプレイを利用していますが、解像度を落として使っているので 4K はまだ人類には早すぎるといえます。さらに、共通マシンは各エディタやターミナルのフォントをあらかじめ大きめに設定してあります。(14 ~ 16程度)
ディスプレイには、反射の映り込みが気になったのでアンチグレアシートを貼っています。モブプロに興味がある、と言って私達のチームに視察に来てくれたエンジニアを捕まえて一緒に貼りました。
なおアンチグレアシートを職人並の精度で貼った彼は、その後チームにジョインしました。
タイマー
Mobstar が良いのですが、マルチウィンドウにした状態では時計が起動したウィンドウにしか表示されなかったり、全画面モードのアプリがあると終了時間がわからなかったり、タイマー実行中にうっかり Mobstar を実行してしまうと2重でタイマーを表示してしまったりと、ちょっとした不満がありました。
しばらく専用のPCで Agility をひらいて使っていたのですが、PCを開くのが面倒になって結局いまは MobStar をつかっています。
普通のキッチンタイマーとかでも良いと思います。
お菓子
「おやつ神社」「なにか食べながら」。
モブプロをやっていると、普段より会話するからか、集中しているからか、とにかくものすごく疲れます。疲れを癒やし、脳にエネルギーを供給するのにおやつが最高です。運営は適当で、なくなったらだれかがデプロイします。
僕は Amazon パントリーで適当に頼んでデプロイしています。甘い物が好きなので、僕が選ぶとチョコ多めです。
食べていると緊張がほぐれ、活発な議論の促進に一役買っていると思っています。
「頭を使ってるから...」みたいな脳内言い訳をしてパクパク食べていたのですが、あんまり食べすぎると普通に太ります(ました)。
ホワイトボード or ノート&マジック
少し抽象度の高い概念を議論するときや、実装方針を決めるときなどは手を止めて話し合うのですが、だいたい何か書きながら議論を行います。
今はホワイトボードも近くにあるのですが、もっぱらノートを使っています。テーブルから動くのが億劫だから... というのもありますが、目線が集めやすいし誰でもすぐ書き込めるのでテーブルの上においておくのおすすめです。
ぼくらのモブTips
モブプロを続けるうちに気づいたTipsを少し紹介したいと思います。
時間を守る&休憩を取る
モブプロを一日中やるとものすごく疲れます。
1ヶ月もやっていると慣れてくるのですが、特に新規メンバーはジョインして最初の日は帰ってすぐ泥のように寝た、とみんな言います。
私達はいま 45分 を1セッションとして、1セッションごとに 5分ほど休憩を入れています。人数が増えても45分は変更しません。ドライバーは人数に応じて15分〜10分毎に交代します。
セッション時間30分とか1時間とか1時間半とか、交代の時間もいろいろ試したのですが、今のところこれに落ち着いています。
休憩は特に注意して取ったほうがいいです。休憩してないとだんだん疲れが出てきて、発言が少なくなって進みが悪くなってきます。
休憩時間もだいたい同じところに座っているので、プライベートのことや今注目している技術など自然と会話が発生してコミュニケーションの活性化にも一役買っています。
ピンチのときほどプロトコルに従う
モブプロを初めて2〜3ヶ月の頃は、例えば障害が起こった時や、複雑で当時の実装意図もわからないいわゆる技術的負債と戦っている時、集まってはいるけど各自違うことを調べていたり、説明を端折って誰かがドライバーで突き進めたり... ということが起こっていました。
こういう焦ったときや、よくない空気になっている時はだいたいタイマーをセットするのを忘れたり、休憩を無視して続けたりしてしまうのですが、本当に驚くほどこのパターンに嵌ったときは成果が出ないです。
このようなケースをモブプロで対応したほうが成果が出せる原因として、
- 多様な目線から多角的な気付き、アイディア
- 説明するための言語化による自省
などが思いつくのですが、定かではありません。結局、会話することが一番手っ取り早く課題を解決できるんだなくらいに考えています。
これらの経験から、ピンチのときほど、自分たちの一番信じる最速の手段で立ち向かうべきだと今は感じています。
エディタ/IDE/ショートカット等は最大公約数
LODEO では サーバーサイドに Scala, フロントは TypeScript をメイン言語として採用していますが、他にも Ruby や Python, Golang の資産があり日常的に複数の言語でコーディングします。
このような事情もあり、IDEとしてJetBrainsシリーズを利用していますが、特にショートカットまわりの設定はなるべくデフォルトのまま利用するようにしています。
僕たちのそうびの特性上、カリカリにチューニングした自分のマシンでなくても、そこそこの作業効率を発揮できるようにしたいためです。
最近では、5月にジョインした新卒エンジニアによって vim が布教されています。すべてのエディタに vim バインドがインストールされていますが、ショートカットで簡単にOn/Offを切り替えることが出来るので、気に入らないメンバはOffにしたりしています。
その他、キーリピートやカーソルスピード、BetterTouchToolなどグローバルのショートカットなどは持ち寄っています。だいたい Fist to Five でさっと合意を取って設定してしまいます。大方のものはそのうち慣れるし、だいたい自分がやってなかったことを真似すると生産性が上がります。
ショートカットで簡単にできる操作があるときは、ナビゲータが積極的にキー操作を教えるようになっています。
おわりに
いかがだったでしょうか。
これからモブプロを取り入れたいな、やってみたいなと考えている方々になにか少しでもヒントになれば、と思います。
私達も少しずつ実験と変化を繰り返しているので、1ヶ月後、また半年後には違うやり方をやっているかもしれません!
なお Agile Japan 2019 で、私達のチームでのアジャイルの旅についてお話しさせて頂く予定です!
“ビジネス側” “開発側” を超え、アジャイルなチームをつくる
〜失敗から学んだ、大切だった5つのこと〜(仮)
こちらにも是非お越しいただければと思います!