新機能だけが開発ではないのです

初めまして & こんにちは、Sustain チームの山口です。 趣味の紅茶を社内に広めるべく、日々努力をしています。新人と名乗っていたら、いつの間にか後輩が入ってくる時期になってしまいました。

このブログで Sustain チームが出てくるのは初めてのことなので、 今回はその紹介などをしてみようと思います。

Sustain チームって何?

Sustain チームは他の開発チームと違い、製品の不具合調査・改修を主な業務とする専門チームです。

担当している製品は主に Garoon で、Garoon チームと同じです。 もちろん、同じ製品を開発しているといっても同じことをやっているわけではありません。 Garoon チームは新規機能の開発を担当しているのに対して、 Sustain チームは不具合や脆弱性などの調査をしています。 また調査で見つかった不具合や脆弱性を重要度や危険度に応じて改修し、サービスパックやパッチとしてリリースする仕事も担当しています。

分かりやすく言うと、

  • 最新版の機能は Garoon チームの担当
  • 不具合の調査・改修やサービスパックが Sustain チームの担当

です。

メンバーは QA を含めて東京に8人、ベトナムに9人います。

不具合調査と改修

通常の開発フローでは

  1. 要件定義(PM)
  2. 設計・開発(PG)
  3. 試験(QA)

というように PM → PG → QA とタスクが流れていきますが、不具合調査の場合は逆になります。実際のタスクを例に開発フローを紹介いたします。

お客様からのお問い合わせ

ある日、次のようなお問い合わせがありました。

Garoon 3.5から Garoon 3.7へバージョンアップしてから、データベースエンジン再起動後の動作、およびポータル表示が遅くなった

Sustain にやってくる仕事は基本的には不具合、悪いときは脆弱性になります。 電話対応しているサポートチームやパートナー様を通じて、こういったお問い合わせが Sustain に流れてきます。

お問い合わせ内容の確認・再現性などの調査 (QA)

ログなどから調査したところ、

Garoon 3.7から電話メモポートレットに表示されるようになった「現在の予定」を取得するときにスローログが発生している

電話メモポートレットをポータルから外すとスローログが出力されなくなり、データベースエンジン再起動後の動作とポータルの表示が速くなる

ということを確認しました。

Garoon の電話メモポートレット
Garoon の電話メモポートレット

こうしたログの解析には独自開発したツールも使っています。

原因の特定・回避策などの検討 (PG)

緊急の対応として、該当部分のコードをコメントアウトしたものをパッチとして提供することとなりました。現在の予定は表示されなくなりますが、スローログを発行している部分は動かないので、とりあえず表示は速くなります。

次のバージョンでの要件定義・改修 (PM)

パッチとしてリリースしたものは「現在の予定を表示しない」ので、機能落ちとなります。そこで根本原因の改修が必要となり、次のバージョンで遅い部分のチューニングを行いました。

改修方針としては、

「現在の予定」を取得するときに、その時間の予定以外の表示する必要のないもの(終日予定や期間予定、予定の重複確認)も含めている

という部分が無駄なので、それを除くことになりました。

とはいえ、クエリを発行しているのは util なメソッドです。手を入れると試験範囲が大きくなりますので、まずは不要な処理をしている部分をロジックから取り除きました。

ただ、このチューニングではパフォーマンスは改善しませんでした。 結局ロジックをいじってもボトルネックはクエリだったので、フラグを新設して該当するクエリの発行自体を止めるようにしました。

Sustainではこのような形で毎日不具合の調査と改修を進めています。ちなみに、お問い合わせは1週間で10~20件がやってきます。その中から不具合を判別し、このような流れで改修していきます。

ベトナムとのコミュニケーション

上記の通り、Sustain は半数以上がベトナムのメンバーです。ベトナムにいる QA も PG も、日本メンバーと同じようにタスクをこなしています。前述の例も試験はベトナムで行いました。

不具合の調査や開発サイクルの短いパッチなどの場合は連絡を密にしなければならないので、コミュニケーションの方法が問題になります。ベトナムには翻訳を専門とするコミュニケーターもいますが、技術的なことが専門ではないので、仕様書から細かい連絡まで全てを翻訳してもらうのはコストがかかりすぎます。そのため、ベトナムとの連絡は基本的に英語です。タスクの管理やチーム内のやり取りは kintone を使っています。

  • kintoneのフィールド・ステータスはすべて英語
  • サマリは必ず英語でも書く
  • 詳細も日英2言語で書く(英語のみだと他のチームの日本メンバーが不便)
  • 仕様書もなるべく日英2言語で書く
  • ベトナムメンバーが英語で書いた場合は後で翻訳する

終わりに

今回は Sustain の業務について紹介させていただきました。 新機能の追加やメジャーバージョンアップと違って普段は表に出ない部署ですが、 日々お客様に快適に Garoon を使っていただくために頑張っています。 こういうチームもあるんだということを知っていただいて、Garoon を安心して 使っていただければ幸いです。


【変更履歴】 2015年6月2日 パッチ提供ポリシーについて誤解を招く記述が一部ありましたので、訂正しました。