2014/04/23

リリースに関するライフハック

こんにちは。らん事業部の石田です。

 

4/23に「Shopらん」の新しいバージョンをリリースしました。

今回のバージョンは、VMDコンテストなど店舗で撮影した写真を集めるようなときに各店舗の写真を一覧で表示するビューのほか、店舗での好事例をチェーン内で共有するようなアプリを作るためのアプリ雛形などの細かな新機能を追加しています。

前回のリリースが2014年1月でしたので、3ヶ月ぶりです。

作っている側からすると3ヶ月はあっという間ですが、不便に感じながら新機能を待っていただいたお客様にとっては待ちくたびれた3ヶ月だったかもしれません。

お待たせしてしまい申し訳ありませんでした。

 

さて、今日は「ソフトウェアにある機能が実装されてリリースされるまでの期間」について最近考えていることを書いてみたいと思います。

 

「スループット」と「レイテンシ」という言葉を聞いたことがありますでしょうか?

これはコンピューターの世界でよく使う言葉で、「スループット」とは一定時間内に処理できるデータの量を表し、「レイテンシ」とは処理に伴って発生する遅延時間のことをいいます。

Webページを開いたときに画像がゆっくり表示されたり大きなファイルのダウンロードがなかなか終わらないのは「スループット」が遅く、一方、衛星中継のように「あれ?音が・遅れて・聞こえて・くるぞ」みたいな状況は「レイテンシ」が大きいというわけです。

いずれもイライラします。

 

ソフトウェア開発の世界では、スループットは3ヶ月の間に実装された新機能の量、レイテンシはそれぞれの機能が要望リストに入ってからリリースされるまでの時間ということになります。

個々のお客様が欲しいのは機能満載の新バージョンのリリースではなく、自社の業務で必要な特定の機能であることを考えると、個々の新機能のレイテンシを小さくしていくという方向でリリースサイクルをチューニングしていくべきだと考えています。

レイテンシを小さくすれば、一部のお客様は満足できる可能性があり、リリースが遅くて全員が不満という状況からは多少は改善するというわけです。

 

では、どうすればレイテンシを小さくできるのか?

ヒントはやはりコンピューターの中に。

 

最近の俺的ライフハックのブームは、コンピューターの心臓部であるCPUにおける高速化手法であるアウトオブオーダー実行です。

どういうことかというと、「仕様が決まらないと設計できない」とか「画面が確定しないとマニュアルのためのキャプチャが撮れない」とか、よくある作業の依存関係を無視して、前工程が完成しなくても後工程をできるところまで先に実行して、仕掛中を抱え持つことにしています。

ときには前工程の予想結果を元に後工程を先にやったり。

こういうとすぐに、「要件定義をきちんとしないと下流工程で手戻りが・・・」と怒られそうですが、問題があれば正しい道まで戻ればいいじゃないですか。

まさに投機的実行ですね。

 

実装してみると設計のまずさに気がついたり、マニュアルを書いている中でもっと便利な機能を思いついたりと、1日かけて書いたコードをごっそり削除するようなときには心が折れそうになりますが、結果として全体としてみれば新機能がリリースされるまでのレイテンシは小さくなっているようです。

もちろん、トレードオフとしてチーム全体のスループットは低下しているので、「ファンクションポイント/人月」で生産性を測っているようなところにはまったくお薦めできませんが。

 

以上、レイテンシ短縮至上主義のShopらんチームにおいて、どう開発してリリースしていくかについてのライフハックでした。

 

ではまた。