プログラマーの矜持とサイボウズのリアクション機能のこと
2012年のことです。わたしたちのチームはサイボウズ Office バージョン9.1の開発に着手するところでした。サイボウズ Office は会社で使ったことがあるかもしれませんが、日本でシェア1位のグループウェアと呼ばれるソフトウェアで、当時で確か300万人くらいの利用者がいました。そのころのサイボウズ Office はクラウドサービスではなくて、会社のサーバーにインストールして使うタイプのソフトウェアだったので、リリースのたびにバージョンいくつ、と呼んでいました。今のバージョンはよく知りません。
バージョン9の開発から、経験のあるそれまでのPM(プロダクトマネージャー)に加えて、開発未経験の新しいPMが入り、ふたりPM体制になりました。PMというのはビジネス陣営からの要求を開発に伝えたり、開発スケジュールを管理したりして製品のリリースに責任を持つ人のことです。新しく入ったPMはなんとなく変化があったほうがいいという理由から、リリースする製品の名前をOffice 9でなくOffice Qにするといって営業を呆れさせるような女性でした。ロゴも作って確か社内運用もしましたが、何ごともなかったかのように製品はOffice 9として出荷されました。あるときはふたが開いたままのノートPCをふたつ、片手にそれぞれ鷲づかみにして社内をうろうろしていたのでその姿は一見するとデキるPMに見え、あるいはデキないPMにも見えました。
で、サイボウズ Office 9.1の開発が始まったわけです。通常、新しいバージョンの開発を行うときは、はじめに要件検討会議をやって、リリースに盛り込む要件を決めていきます(要件ってなに? と思う方もいるかもしれませんが、それがこの話のキモだったりします)。Office 9.1の開発は、PMとして彼女がメインで取り仕切ることが決まっていました。
彼女がニコニコ顔で提示した要件のひとつはこういうものでした。
わたしはこれを見てなんというべきか迷いました。サイボウズ Officeにいいね!ぼたんを搭載する。なるほど、こんな明快な要件はありません。いいね!ボタンはFacebookが遡ること2年前に発明して世界中を席巻していたおなじみのあれです。mixiやGoogleなど、各種Webサービスがすぐに類似の機能を追随していました。サイボウズ Office にも掲示板やメッセージの機能があるので、搭載して不自然なことはありません。いいね! やりましょう、といいながらキリっとサムズアップでもしてみせれば、その会議は円満に終わったことでしょう。でもわたしの開発者としての無駄なプライドはどうしてもそれを許さなかったのでした。
「ボタンを搭載する、は機能であって、要件とはいわないです。そもそもなんでこの機能を入れることにしたんですか?」
「ビジネス側からの要望です」
「いいね!ボタンってあのFacebookのボタンのことですよね?」
「そうです」
「Facebookでいいね!ボタンが果たす役割って大きくふたつあると思っていて、サービス内に良いコンテンツを拡散させることと、いいねをもらったユーザーに褒賞を与えて利用を継続させることです。これどちらかでも会社で使うグループウェアに必要ですか?」
「そういうのはいらないですね」
「じゃあ本当に解決したい問題ってなんでしょう。機能じゃなくてそれを要件としてもらいたいんです」
ああ面倒くさい面倒くさい。向こうにもぜったい面倒くさい奴だと思われている。しばらくそんな感じの噛み合わないやりとりが続き、いったんその会議はお開きになりました。神様お願いだから要件に機能だけを書くなとPMに伝えてほしい。あなたたちが信じてくれるなら、プログラマーは空を飛ぶことだって、湖の水を飲みほすことだってできるのに。
もしかしたら古き良き時代だったのかもしれませんが、わたしのいた世界では、PMが搭載したい「機能」を開発者に指示することはタブーとされていました。営業から来た要望をそのまま開発に伝えるなどというのはもってのほかです。PMは解決したい問題を定義し、開発はそれを解決する方法を考え、機能として実現する。それがエンジニアとしての矜持ともいえるものでした。もちろんあらかじめ解決方法が想定されている場合もあります。しかしまれに、PMが想定していたものを上回る解決方法をエンジニアが実現するときがあります。その瞬間をわれわれは「要件を超えた」と表現していました。わたしは要件を超えることこそが、エンジニアの存在意義だと信じていました。
既にあるものをいったん忘れてみる
翌日、改めて検討会議の場が設けられました。要件のリストからは「いいね!」ボタンを搭載する、という記述の代わりに、こう書かれていました。
昨日のやりとりは不毛なものではなく、わたしはデキるPMだった彼女が一晩ですべてを理解してくれたことを悟りました。本当にやりたいことは情報の拡散でも褒賞を与えることでもなく、コミュニケーションを活性化させることだと。これはとても共感できる要件でした。
例えば上司がグループウェアの掲示板に何か書き込むとします。そうするとすぐに掲示板が了解しました!みたいな返信で溢れてしまうことが、サイボウズ社内でも実際によく起こっていました。それだけではなくて、コメントごとに通知が来てしまうので、上司のトップページには「了解しました!」の通知が大量に届き、必要な通知が埋もれてしまいます。通知爆発と呼んでいたこの現象を恐れてあえて上司に返事をしない人もいました。これは明らかにグループウェア上のコミュニケーションを阻害しています。
「で、どうやって実現しましょうか」と彼女はいいました。
「いいねボタンみたいなものですかねえ。通知を通常のコメントのものと分けることで、通知爆発の問題も解決できそうです」
「そうですね」
たぶん相手は、内心なにをいってるんだこいつはアホなんじゃないかと思いながら、わたしを見ていたと思います。でもそれで議論は終わりませんでした。本当にやりたいことがコミュニケーションの活性化であれば、既にあるものをいったん忘れて解決方法を考えてみることで、Facebookのいいね!ボタンとは違うかたちで実現できるかもしれない。当時のFacebookのいいね!ボタンは文字どおり、いいね!という意思表示ができるだけのものでした。業務で使うものであれば了解しましたという意思表示ができたほうがいいし、ポジティブな感情やネガティブな感情も伝えられた方が、よりコミュニケーションの活性化につながるよね、みたいな議論を続けました。そうして出来上がったのが、4種類のアイコンでコメントに対する意思表示ができる「リアクション機能」でした。これは当時どこにもないものだったので、Facebookと同じものが欲しかった営業からは難色を示されましたが、アイコンを使いたくなければふつうのいいねボタンとして使えると説明して、納得してもらいました。
そして2012年の4月に、サイボウズ Officeのリアクション機能は無事リリースされました。リリースノートには、「人の書き込みに対して手軽に返事や意思表示する機能」と控えめに書かれています。
その4年後、わたしがサイボウズを退職した翌年に、Facebookから、いいね!にアイコンをつけられる「リアクション機能」が発表されました。期せずしてFacebookと同じ名前の同じ機能になってしまったわけです。相手が認識していたかどうかは知りませんが、これはわたしたちのチームにとって「要件を超えた」瞬間でした。さらにデキるPMとなった彼女とは今も公私共に仲良くさせてもらっていて、サイボウズと掛け持ちでクローバにもジョインしてもらっています。
とここまでが、Facebookも唸らせた(かもしれない)リアクション機能の話でした。実は来月からまたサイボウズ Officeの開発に関わることになりました。復職するわけではなくて、期間限定のお手伝いになります。サイボウズ Officeはもう20年以上も開発を続けているプロダクトなので、あまり若いエンジニアがやりたがらないらしく、それでおじさんで役にたつならとやらせてもらうことになりました。もちろんクローバの開発も並行してやりますのでご心配なく。サイボウズ Officeは個人的にとても愛着のあるプロダクトなので、なにかしら良い影響を残せたらと思っています。こんなに長い間多くの人に使われ、役にたっている日本のプロダクトというのは少ないですので、C++でフルスクラッチのWebアプリケーション作りたい人、要件を超えたい若いエンジニアのみなさんはぜひ志願してあげてください!