はじめに
昨日の朝、Twitter上でこんなやりとりがありました。
youRoomをメモ代わりとして使うこともあるんだけど、書いた月日は分かっても「年」までは表示されていないので、ちょっと困った #youRoom
— yoh nakamura (@yohhatu) October 31, 2012
困ってないで@kuranukiさんに要望を伝えれば… RT @yohhatu: youRoomをメモ代わりとして使うこともあるんだけど、書いた月日は分かっても「年」までは表示されていないので、ちょっと困った #youRoom
— Ryutaro YOSHIBA (@ryuzee) October 31, 2012
やりましょう。 RT @ryuzee: 困ってないで@kuranukiさんに要望を伝えれば… RT @yohhatu: youRoomをメモ代わりとして使うこともあるんだけど、書いた月日は分かっても「年」までは表示されていないので、ちょっと困った #youRoom
— Yoshihito Kuranuki (@kuranuki) October 31, 2012
1時間後。
やりました! RT @kuranuki: やりましょう。 RT @ryuzee: 困ってないで要望を伝えれば…RT @yohhatu: youRoomをメモ代わりとして使うこともあるんだけど、書いた月日は分かっても「年」までは表示されていないので、ちょっと困った #youRoom
— Yoshihito Kuranuki (@kuranuki) November 1, 2012
要望つぶやいて、対応終了(もちろんリリース)まで1時間。SonicGardenさんさすが。 #youRoom
— yoh nakamura (@yohhatu) November 1, 2012
すげぇ!! RT @yohhatu: 要望つぶやいて、対応終了(もちろんリリース)まで1時間。SonicGardenさんさすが。 #youRoom
— Ryutaro YOSHIBA (@ryuzee) November 1, 2012
何が起きたのかというと、ソニックガーデンが開発しているyouRoomに関するユーザーの要望が1時間で本番リリースされた、というものです。
この件については僕もyouRoomの開発者として絡んでいたので、今回のエントリではこの舞台裏をちょっとご紹介したいと思います。
対応の流れを追ってみる
まず、この件の一部始終を時系列にまとめるとこんな感じになります。
- 8:11
- @yohhatuさんが「ちょっと困った」とTwitterでつぶやく。
- 8:17
- @kuranukiが「やりましょう」と(どこかの社長のように)答える。
- 8:26
- @kuranukiがyouRoomで「すぐにやってほしい」とメンバーに伝える。
- 8:40
- 僕がyouRoomの書き込みに気づき、改造ポイントの調査を開始。すぐにポイントが見つかったので、「やります」とyouRoomに返信する。
- 8:47
- 変更が完了し、ステージング環境にデプロイ。youRoom上で@mat_akiに変更箇所のコードレビューと本番環境へのデプロイを依頼する。
- 9:00
- @mat_akiのコードレビューと本番環境へのデプロイが完了。youRoom上で報告する。
- 9:16
- @kuranukiがTwitter上で「やりました」を宣言する。
次に、この対応の舞台裏で何が起きていたのか、もうちょっと掘り下げて見ていくことにします。
着目すべき8つのポイント
この対応についてはいくつか着目すべきポイントがあります。
1. 対応者は全員違う場所にいた
@kuranukiはJaSSTの発表のため鹿児島に、@mat_akiは神奈川の自宅に、僕は兵庫の自宅に、それぞれいました。つまり、全員全くバラバラの場所にいたことになります。
2. youRoomですべてやりとりした
全員バラバラの場所にいるのになぜコミュニケーションができたのかというと、youRoomでやりとりしていたからです。
ソニックガーデンではお客さんやメンバーとの非同期なコミュニケーションをすべてyouRoom上でやりとりしています。
また、youRoom上では真面目な仕事の話から他愛もない雑談まで様々なトピックが立っているので、ソニックガーデンのメンバーは結構な頻度でyouRoomをチェックしています。
なので、@kuranukiの「すぐにやってほしい」というリクエストもすぐにキャッチできました。
3. コードもサーバーもすべてクラウド上にある
youRoomのコードはGitHubに、サーバーはAWSにそれぞれあります。
なので、ネットさえつながっていれば、誰がどこにいてもリモートで対応できます。
兵庫であろうが、神奈川であろうが、アイルランドであろうが、関係ありません。
4. コードをメンバー全員で共有している
ソースコードはメンバー全員のものなので、誰でも変更できます。
なので、僕も気兼ねなく「やります!」と名乗り出ることができました。
5. 仕事とプライベートの境があいまい
それにしても、これを対応していた時間をよく見ると、ほとんど朝の8時台です。
僕も@mat_akiもまだ自宅でのほほんとしていた(?)時間帯です。
にもかかわらず、二人とも自宅でちゃっちゃと対応を完了させました。
僕の場合、まだ「仕事モード」に切り替わっていませんでしたが、@kuranukiの「すぐにやってほしい」というリクエストが面白そうだったので、「じゃあ爆速で改造してやろう!」と思って着手しました。
みんなコードを書くのが大好きなので、別に仕事の時間でなくてもコードを書いちゃうんですよね。
というか、そもそもソニックガーデンには明確な始業時間、終業時間を設定していないので、みんな仕事とプライベートの境があいまいです。
よって「今、対応すると業務時間外対応になりますがよろしいですか?」みたいなケチなことは言いません。
6. コードが徹底的にDRYになっている
僕はソニックガーデンに入ってまだ半年も経っていません。
youRoomのソースコードの大部分は僕以外のメンバー(主に@mat_aki)が書いたものです。
自分が全く関わっていないコードを修正するというのはたいていの場合、不安な作業になります。
しかし、ソニックガーデンでは徹底的にDRYにこだわる文化なので、「たぶんここだな」というポイントを修正すれば、他の部分は考慮する必要がありません。
なので、今回僕が対応したときも「これで大丈夫」という自信がありました。
7. 本番リリース前にはコードレビューを受けている
「DRYだからここを直せば大丈夫」といっても、目をつぶってそのまま本番リリースするわけにはいきません。
今回が僕が変更した箇所は@mat_akiにレビューしてもらった上で、本番リリースされました。
コードレビューはソニックガーデンの文化のひとつでもあり、頻繁にメンバー間でお互いのコードをレビューしあっています。
コードレビューはコードの品質を上げるとともに、「良いコード」の定義をメンバーで共有する役割も果たしています。
8. 短時間でもチケットを作って記録を残す (2012.11.02 11:00追記)
短時間の対応でしたが、通常の対応と同様にPivotal Trackerでチケットを作っています。
こうして対応の記録を残し、メンバーと情報を共有するようにしています。
ちなみにPivotalでチケットを作成する際は、youRoomの拡張機能であるyouRoomアシスタントを使って、自動作成させました。
まとめ
というわけで、「ユーザーのつぶやきを1時間で対応」の舞台裏はこんな感じになっていたのでした。
今回は変更の要望を1時間で対処しましたが、ソフトウェアに不具合があった場合も同様です。
ソニックガーデンでは徹底的にテストしてバグのないソフトウェアを作ることよりも、「ソフトウェアがすぐに使えて、不具合があってもすぐに直してリリースする」ということを重視しています。
昨日はたまたま@kuranukiがJaSSTのソフトウェアテストシンポジウムで、そういった内容を話していたので、昨日の「一時間対応」はある意味タイムリーで象徴的な出来事だったようにも思います。
最後に、昨日の@kuranukiの講演内容に関するツイートをひとつ引用します。
オンライン要望に今朝1時間で対応。何故出来るか。改善スピードを上げる努力。何の商売をしてるのか。仕様の品質はビジネスを見るべき。 #Jasst12Q
— みかまま (@mikantsuki) November 1, 2012
こちらのツイートで言及されている「改善スピードを上げる努力」がどのような取り組みになっているのかが、今回のエントリで少しで伝わるとうれしいなと思います。
あわせて読みたい
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12Q
JaSST12九州ツィートまとめ - Togetter
JaSST12九州 ソフトウェアテストシンポジウムのツイートのまとめです。
@kuranukiの講演内容がところどころに出てきます。
入門youRoom ~メールでよくある5つの不満と、それを解消した知られざる情報共有ツール~ - give IT a try
今回の対応でも大活躍したyouRoomに関する入門記事です。
告知
2012年11月11日(土)、DevLOVE関西2012 Driveで発表します!
内容の詳細についてはこちらをどうぞ。
発表内容を改め、「なぜ私はソニックガーデンのプログラマに転身できたのか? 」というテーマでお話しします - give IT a try