Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

「#ぶつかり稽古」という事件について

去る11月23日、あるイベントが開催された。「秋のエンジニアぶつかり稽古 2013」という。何を目的にしたイベントなのか誰も(主催者側ですらも)わからないまま始まったこのイベントは、しかし、最後までその目的が明らかにならないままに、なぜか大成功の余韻だけはしっかり残して終わった、異常な「事件」と呼ぶ他ないものとなった。

事の発端

そもそもの始まりからして意味不明だったのである。発端はこれだ。

2ヶ月ほど前、YAPC::Asia 2013という、「エンジニアのエンジニアによるエンジニアのためのお祭り」と銘打った大規模な技術カンファレンスが行われた。カンファレンス自体素晴らしいものであったのだが、その内容についてはここではおいておく。

協賛企業の各社がさまざまなノベルティを提供するのだが、面白法人カヤックさんが配った、上記写真に見られる葉書に対して、かんさんが悪ノリし、上述内容で応募したところ、本イベントの主催企業が悪ノリをかぶせて企画されたのが「秋のエンジニアぶつかり稽古 2013」というイベントの実態である。

YAPC::Asiaのことはもちろん、そこでそのようなことが行われていることなど知るはずもない人事担当者は、技術を統括する立場であるmizzyさんの元へ、「いったいこれは何であるのか?」ということをたずねにいったとのことである。その意味を把握した後、技術者にとって価値のあるイベント開催を目論んでいた人事担当者はすかさず申し出を了承、すぐさまイベントページを立ち上げたのだった。

「イベントをやることになったのでよろしくお願いします」そんな感じで、当の僕がいないところで話はトントン拍子に進んでいき、また、ぶつかり稽古といっても何をやればよいのだろうかと思い悩みつつ台湾旅行にいったりしていたところ、「エンジニアにとってのぶつかり稽古といえばペアプロだろう」などと話が勝手に進んでおり、僕の関与するところは1ミクロンもなく、本人のあずかり知らぬところで何もかもが事後的に決定事項として知らされるばかりなのだった。

さながら、数々の無茶ぶりを「これで決まったから」と次々にもってこられ「大人は信じられない!」とただただ叫ぶしかないももクロちゃんたちのように、僕の運命は翻弄されているのである。このようなことはこれまでも多々あって、ある時は社内のスケジューラに「撮影」という予定が突然登場し、「これを着てください」「これを顔に塗ってください」などということもあり、会社のコンテンツとしての業務をこなしている日々である。

当日

参加者には、以下の画像に見られるチラシが配布された。

俺の本気を見せるプレゼンタイム

イベントの募集は、告知当日のうちに満員状態。しかし、そもそもなんのイベントであるかも判然としないありさまであるのだから、どれほどの人数が実際に集まるのかまったくわからない状態での開催となったのだったが、蓋を開けてみると50人以上は訪れたのであろうか、ともかく大盛況である。しかし、人間が大勢いたからといって、そもそものこのイベントの意味不明ぶりが覆るわけではない。むしろ、「なぜこのイベントに人々がこのように多数集まっているのだろうか」という、不安に似た静けさが会場を支配している。

イベントの前半は、4人のエンジニアによる「俺の本気を見せるプレゼンタイム」という出し物が行われた。各社の精鋭が謎の基準によって集められ、なにやら本気を見せるという。@r7kamura氏が登壇した経緯は以下のとおりである。

Butsukari Geiko // Speaker Deck

そんな中、まずトップバッターのひさいち氏が登壇した。プロジェクタに大きく映しだされた「吉高由里子と僕」という文字列。「意味不明だと思いながらなにかを期待してきてみたものの、トップバッターからして吉高由里子がどうのなどと言い出し、この先どうなってしまうのか」と、会場の不安感が極度に高まり、緊迫したムードの中セッションが始まった。

さわやかな容貌と語り口でもって、吉高由里子さんをいかに愛しているのかを滔々と語り、また、自作の各種プロダクトを説明するその様子は、立場は違えども、似ているところがないわけでもない立場にある吉高さんの苦悩を思うに余りある熱烈ぶりであり、我々の仕事の大変さを思って吉高さんに同情した。

ますますわけがわからない状態になっているところに2番手として現れたのが、ハイ意識で名高い中村氏であった。彼とは前職の頃に職場を同じくしていたので、その若者がいまやこのような怪物に育ってしまったことにただひたすら驚くばかりだ。好きすぎて憎い、そんな思いが爆発して「一日で作りなおす芸人」と成り果ててしまった彼の異常な高意識により、会場は焼尽と化した。

登壇後、「さすがにクックパッドを一日で作りなおすのは無理だよね」と問いかけられた中村氏は「実はそれ一度やろうとしたんですよ」などと具体的な計画について語りだし、楽屋をドン引きさせるという事件が起こったことも付記しておこう。

既にして精神がもうへろへろ化したところに追い討ちをかけるかのようにhiratara氏のトークが始まった。hirataraさんの本気といえば、「すべては@__kanになる」と題しての、ガチ圏論(カン拡張)な内容。「圏論についての基礎的理解は前提としていますので」という発言により抵抗しても無駄なのだと悟った聴衆は、ただひたすら淡々とその素晴らしさを語る発表者を、呆然と見守るしかなかった。

本イベントはUstreamで放送していたのだが、突如の雰囲気の転換に驚いた人々が「吉高由里子さんとか高意識とかにやられていたら、なぜかとつぜん放送大学が始まった」などと、戸惑いの声が上がっていた。我々にしてみれば、意識を前後左右にただただひたすら揺さぶられるにまかせる状態であり、既に正常な判断能力を失っている。

前半最後の登壇者はmizzy氏である。5人の子供を持つお父さんであり、paperboy&co.の技術を統括する重責を担いながらも、現役の大学生として学業に励んでいるばかりか、上位3%にのみ適用されるという学費の一部免除までされるほどの優等生ぶりは、それを語る口調の淡々との対比の大きさにより、あるいは最も大きな本気度の違いを見せつけられるというプレゼンテーションだったかもしれない。並の本気じゃともてあそこまでできないよ。

こうしてイベントの前半が終わった。しかし、このイベントがなんであるのか、我々にはまだなにも見えてはいなかった。

中入り

この動画が流れていた。会場は極度の不安に陥れられ、もはや暴動寸前であった。

ぶつかり稽古

なんだかよくわらない太鼓やらおはやしやらの相撲っぽい音楽が流れだし、ふたりの男たちが入場する。さきほどまで4人の登壇者がそれぞれの「本気」を語っていた会場前方には土俵らしきものが用意され、横に並べて据え置かれた机を前に、ふたりが腰掛けた。本イベントのメイン企画であるとされているイベントの始まりだ。

その前々日のこと、そろそろイベントでなにをやるか考えないとならないのでは?と思った我々は、ようや連絡をとったのだった。その時点で何のプランもない。「ぶつかり稽古」と「ペアプロ」というワードをマリアージュさせるという課題を与えられた我々は、「なにをやったらぶつかり稽古なんでしょうねえ」と頭を悩ませていたのだった。まあ、とりあえず相撲っぽいなにかをコードで書いてみよう。それぐらいのざっくりした打ち合わせのみを持って、当日、我々は会場入りしたのであった。

当日の朝、シャワーを浴びているときにふと思いついた。単にペアプロするだけでは「ぶつかり」感は出ない。ぶつかり感を出すには、お互いがなにか問題についてやりあうという構造が必要なのではないか。では、プログラミングにおけるそのような構造とは何か。それはテストと、それを満たす実装ではないか。そうして得た着想を、さっそく会場入りしてきたかんさんに話しみたところ了承を得られ、イベント当日にしてようやく、「ぶつかり稽古」とはなんであるのかが確定したのであった。もちろん、決まったのはそれだけで、なんの筋書きもない。

まず、そもそもなぜこのようなイベントが行われてしまったのか、今日我々が聴衆に対してどのような見世物を提供するのかについて簡単に説明した後、おもむろにテストを書き出す。Perlを書くのは久しぶりのことでもあるし、多くの注目を浴びながらのことでもあるので、それなりに緊張する。おまけに、なにを作るのかについての説明や、進行をしながらのコーディングである。僕がテストを書き、かんさんがそれを満たす実装を書くという流れでいくことにした(それもその場で決めたことだ)。

いきなりコアなところから書き始めてもしかたないので、少しづつ簡単な仕様を積み上げることで、徐々に完成に近づいていくスタイルを取る。ストロングスタイルのTDDだ。聴衆向けのイベントとしても、思考や実装の過程をトレースしやすい、そうしたスタイルのほうがイベント向きでもあろう。hirataraさんがお書きになっていることが、そのメリットをよく表しているように思う。

「ぶつかり稽古」はあんちぽさん(@kentaroさん)が考案した新しいエンターテインメントペアプログラミングのスタイル。単体テストを書く"受ける側"と、そのテストを通すために実装する"ぶつかる側"が交互にコードを書いて行き、聴衆はそれを観覧する。一種のライブコーディングではあるのだが、2人が実装に関わるため、事前の想定と違う方向にコーディングが進み易く、実装者のよりリアルな問題への対処方法を観察することができる。その人が普段どのようにコードを書いているかも、より正確に想像しやすい。参加者もテストを通す側の立場に立って内容を考えられるので、自分の実装と参加者の実装の癖の違いを楽しむこともできる。ぶつかる側だった@__kanさんは懇親会で寝落ちするほど精神力を使うきついセッションだったようだが、見ている方は新鮮な気持ちで楽しめた。

もっとテストがこけて会場大盛り上がりみたいな展開を予想していたのだったが、思いの外順調にいってしまった前半を過ぎ、極度の緊張とプレッシャにじょじょに落ち潰されてきた我々は、刻々と迫る予定時間によって精神が削られていき、ついには@tmpだとか$fooだとかの変数を使い始めたり、実装が明らかにボロボロに成ったり、そもそもテストが間違っていたりなどという、実際に現実世界に起こりがちな状況、つまりはエンジニアにとって身近な体験を、客観的に見えるものとしてありありと、しかも短時間のうちに示すというエンターテインメントを提供することになった。

この時の模様はもちろん、先述の4人による「本気」トークについても、以下で完全に録画されている(このイベントの異様な雰囲気は、動画ではなかなか伝わらないと思うけどw)。


Video streaming by Ustream

「ぶつかり稽古」の今後

今回のイベントは伝説的なものであった。来場者はその目で伝説を目撃できたことに、後世まで深い印象を抱き続けることだろう。しかし、これで終わらせるのももったいないことである。そもそも僕はコードを書くのがそんなに得意ではないので、かんさんのお相手としては役不足であっただろう。本当の「横綱級」エンジニアによる実演を見てみたいところである。

ぶつかり稽古とはなんであるか。それは、

  • 知的なエンターテインメント
  • なにが起こるかあらかじめわからないライブ

である。知的なエンターテインメントとしての側面についてはわかりやすいだろう。ふだん我々は、基本的にはひとりで黙々とコードを書いている。ひとがそれをどのように行っているかについて興味はあっても、なかなかそれを観ることはできない。単純に、それが見られるだけでも楽しみは大きい。この点は、いわゆるライブコーディングも同様である。

稽古が稽古であるところの面白さとは何か。それを考えることが、ライブコーディングをさらなるエンターテインメントに飛躍させることにつながる。エンターテインメントの基礎は、物語にある。物語の基礎は、対決にある。単なるペアプロでも、単独の実装の優美を愛でるライブコーディングでもない「ぶつかり稽古」は、テストと実装という対立軸を持ち込むことにより、物語性を確立する。

また、単なる物語性ではなく、先のhirataraさんの記述にもある通り、異なるふたつの人格がコーディングという抽象的な作業によりコミュニケーションを図ることで、意思のすれ違いやそのすりあわせ、葛藤が生まれ、さらには事前に準備どころか、なにをやるかも考えていないという怠慢ぶりもあいまって、当事者にすら何が起こるかわからないというライブ感が醸成されるのである。

思えば僕の仕事の一部は、日々こうしたことを繰り返すことでもあった。「アジャイル開発プロセスの実証的効果検証について」や「組織パターンを実践する」などのエントリに書いている通り、その場その場での当意即妙こそが開発プロセスを改善する仕事には必要であり、もっといえば、そうしたライブの繰り返しこそが、常に変容し、生きている組織における「仕事」というものなのである。そうした経験と今回の「ぶつかり稽古」は、やっている内容に違いはあれども、僕の仕事のある面における集大成であるともいえるだろう。

そうした意味においてぶつかり稽古を定式化することは難しい面もあるにしても、仕組みについては解明されている点も多々あり、また、実際に今回それが実践された。その「物語」にもバリエーションをつけることが可能だ。たとえば:

  • 各社師弟対決(例: モリスさんとすたじおさん)
  • スーパーハッカーが10人を相手に稽古する
  • エクセルによるテスト仕様書が得意なディレクタとプログラマ

など、様々なやり方が考えられる。我々が業界に対して、いや、世界に対して身を挺して切り開いたこの道を、是非広げ、つないでいっていただきたい。それが我々の目下の望みである。

その他のまとめ記事