2012要望つぶやいて、対応終了(もちろんリリース)まで1時間。SonicGardenさんさすが。要望つぶやいて、対応終了(もちろんリリース)まで1時間。SonicGardenさんさすが。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つのポイントこの対応についてはいくつか着目すべきポイントがあります。対応者は全員違う場所にいた@kuranukiはJaSSTの発表のため鹿児島に、@mat_akiは神奈川の自宅に、僕は兵庫の自宅に、それぞれいました。全員全くバラバラの場所にいたことになります。youRoomですべてやりとりした全員バラバラの場所にいるのになぜコミュニケーションができたのかというと、youRoomでやりとりしていたからです。ソニックガーデンではお客さんやメンバーとの非同期なコミュニケーションをすべてyouRoom上でやりとりしています。youRoom上では真面目な仕事の話から他愛もない雑談まで様々なトピックが立っているので、ソニックガーデンのメンバーは結構な頻度でyouRoomをチェックしています。@kuranukiの「すぐにやってほしい」というリクエストもすぐにキャッチできました。コードもサーバーもすべてクラウド上にあるyouRoomのコードはGitHubに、サーバーはAWSにそれぞれあります。ネットさえつながっていれば、誰がどこにいてもリモートで対応できます。兵庫であろうが、神奈川であろうが、アイルランドであろうが、関係ありません。コードをメンバー全員で共有しているソースコードはメンバー全員のものなので、誰でも変更できます。僕も気兼ねなく「やります!」と名乗り出ることができました。仕事とプライベートの境があいまいそれにしても、これを対応していた時間をよく見ると、ほとんど朝の8時台です。僕も@mat_akiもまだ自宅でのほほんとしていた(?)時間帯です。かかわらず、二人とも自宅でちゃっちゃと対応を完了させました。僕の場合、まだ「仕事モード」に切り替わっていませんでしたが、@kuranukiの「すぐにやってほしい」というリクエストが面白そうだったので、「じゃあ爆速で改造してやろう!」と思って着手しました。みんなコードを書くのが大好きなので、別に仕事の時間でなくてもコードを書いちゃうんですよね。設定していないので、みんな仕事とプライベートの境があいまいです。よって「今、対応すると業務時間外対応になりますがよろしいですか?」みたいなケチなことは言いません。コードが徹底的にDRYになっている僕はソニックガーデンに入ってまだ半年も経っていません。youRoomのソースコードの大部分は僕以外のメンバー(主に@mat_aki)が書いたものです。自分が全く関わっていないコードを修正するというのはたいていの場合、不安な作業になります。ソニックガーデンでは徹底的にDRYにこだわる文化なので、「たぶんここだな」というポイントを修正すれば、他の部分は考慮する必要がありません。今回僕が対応したときも「これで大丈夫」という自信がありました。本番リリース前にはコードレビューを受けている「DRYだからここを直せば大丈夫」といっても、目をつぶってそのまま本番リリースするわけにはいきません。今回が僕が変更した箇所は@mat_akiにレビューしてもらった上で、本番リリースされました。コードレビューはソニックガーデンの文化のひとつでもあり、頻繁にメンバー間でお互いのコードをレビューしあっています。コードレビューはコードの品質を上げるとともに、「良いコード」の定義をメンバーで共有する役割も果たしています。Trackerでチケットを作っています。して対応の記録を残し、メンバーと情報を共有するようにしています。ちなみにPivotalでチケットを作成する際は、youRoomの拡張機能であるyouRoomアシスタントを使って、自動作成させました。まとめというわけで、「ユーザーのつぶやきを1時間で対応」の舞台裏はこんな感じになっていたのでした。今回は変更の要望を1時間で対処しましたが、ソフトウェアに不具合があった場合も同様です。ソニックガーデンでは徹底的にテストしてバグのないソフトウェアを作ることよりも、「ソフトウェアがすぐに使えて、不具合があってもすぐに直してリリースする」ということを重視しています。昨日はたまたま@kuranukiがJaSSTのソフトウェアテストシンポジウムで、そういった内容を話していたので、昨日の「一時間対応」はある意味タイムリーで象徴的な出来事だったようにも思います。最後に、昨日の@kuranukiの講演内容に関するツイートをひとつ引用します。オンライン要望に今朝1時間で対応。改善スピードを上げる努力。何の商売をしてるのか。仕様の品質はビジネスを見るべき。2012こちらのツイートで言及されている「改善スピードを上げる努力」がどのような取り組みになっているのかが、今回のエントリで少しで伝わるとうれしいなと思います。ソフトウェアテストシンポジウムのツイートのまとめです。@kuranukiの講演内容がところどころに出てきます。try今回の対応でも大活躍したyouRoomに関する入門記事です。Driveで発表します!内容の詳細についてはこちらをどうぞ。みなさん、どうもお久しぶりです。はてなブログPro株式会社ソニックガーデンで働くRubyプログラマ。2017年11月に「プロを目指す人のためのRuby入門」を出版。blog)はてなブログをはじめよう!JunichiItoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。