富士通システムズウェブテクノロジー Advent Calendar 2019 10日目の投稿です。
記事の内容は全て個人の見解であり、執筆内容は執筆者自身の責任です。所属する組織は関係ありません。
#はじめに
アジャイル開発を進めていく上で外せない”価値”という言葉についてすこし考えてみました。
※最初に断っておくと本投稿は完全な読み物です。コードTipsを探している人ごめんなさい。
他をあたってください。
#品質もスピードも価値に通ずる
アジャイル開発を進めていく中で価値があるか?、ないか?は最も重要な指標と言われています。
従来であればQCDのようなプロジェクト管理に近い指標もプロダクトの価値に紐づけて語られます。
狩野モデルは品質の特性を「当たり前品質」、「一元的品質」、「魅力品質」、「無関心品質」に分類し各カテゴリの充足度からユーザーに与える心象・効果を測り使い分けるべきとする考え方です。アジャイル界隈の人がこの話を出す時、従来型開発においてユーザーの関心が低い部分に対して過剰に品質を追及する姿へのdisが込められていたりもしますが、本質的には当たり前品質の確保を自動化などで省力化し、いかに魅力品質(+αの価値)へ注力していけるか?が重要になってきます。
###リリーススピードと価値の関係
DevOps界隈ではCI/CDなどでリリース頻度をどれぐらい上げられるか?に関心が集まっています。開発をすればするだけ価値が高まると仮定すると(実際はそんなことないのですが)開発・リリースのスループットを上げることは価値を継続的に高めていく近道と言えるでしょう。
リリース回数を増やすと価値を伸ばす機会が増える(イメージ)
このように品質もスピードも”価値”という言葉に集約していくことで、”価値”が重要なKPIとなり、価値を高められるか否か?を判断基準としてより合理的な作業スタイルを確立することができます。
#”価値”って何なんだろう?
少し前置きが長くなりましたが、”価値”という言葉を深く考えずに乱発しているとだんだん”価値”とは何なのか?がよく分からなくなってしまう気がします。今自分が開発に携わっているプロダクトやサービスの”価値”っていったい何なのか?どうなったらそれが高まるのか?という自問自答にはまり込んでしまうかもしれません。
例えば、ある機能をリリースしたことで以前に比べて60%売上が上がったとか20%効率が上がったといった具合に、狙いに対して直接的な効果が出るものは比較的分かりやすく価値として捉えることができるでしょう。ですが、そのようなものは稀だと思います。利用者がどのように使い、どのように感じているのか?それがどのような価値に繋がっているのか?把握するのが難しいケースのほうがほとんどではないでしょうか?
#視聴率って意外に優秀なKPIなのでは?という仮説
いろいろと考えを巡らせた結果、似たような話としてテレビの視聴率にたどり着きました。テレビのコンテンツは私たちが開発しているアプリケーション以上に価値が測りにくいものだと思います。しかしスポンサーになる広告主に対してはこの番組がどれぐらいの価値を持っているかを事前に予測し、事後もきちんと予測した広告的価値が提供できたか?を把握することが必要になります。
視聴率があることによって作り手も受け手もスポンサーも一定の基準で価値を把握することができます。時に過激な視聴率競争が批判されたり、視聴率より心に残るテレビドラマが評価されたりすることもありますが、作り手が視聴率という非常に分かりやすい価値指標を血眼になって上げる努力をし、結果に一喜一憂する様はどことなく共感できなくもありません。
- 視聴率の良いところ(私見)
- 皆が直感的に理解できるシンプルな指標であること
- 視聴率⇒広告的価値がある程度立証されていること
- 作り手が一丸となれる指標であること
#アプリケーションの視聴率はどうやって取るべきか?
そこでアプリケーションにも視聴率調査に代わる利用量のメトリクスを仕込んでみてはいかがだろうか?というのが今回の記事の趣旨です。ログを取っていないようなアプリケーションは少ないと思われますが、以下のような工夫を入れてメトリクスを取得するとより柔軟な価値分析に繋がるかと思います。是非お試しください。
###ベタにログを回収する方式
アプリケーションの操作ログをfluentdやdatadogなどで回収し回数を集計します。
最低限、何が何回実行されたか?を識別するための機能や画面、ボタンオペレーションの種類の情報をログへ出力しておくことが望ましいです。
###スライス観点をDI等で注入する
視聴率調査をより効果的に活用するために視聴者のセグメントを分析するのと同じように、ユーザーの所属や属性など集まったデータを細分化する条件を取得できるとより柔軟な対応が可能になります。分析の切り口は後から分かることも多いのでログの詳細な実装はDI等で後から注入できるようにしておくことも効果的です。
###AOPの方が優秀かも
そもそも操作ログがきちんと実装されていなかったり、必要な情報が取得できる場所にログがきちんと実装されていないケースには、AOPのようなアプローチを使ってアプリケーション上の任意のタイミングに情報取得処理を後付けするような手法も有効になります。
#まとめ
アジャイル開発で作ったプロダクトやサービスの価値を測る方法として視聴率の有効性とその実現方式について書いてみました。まずはシンプルなログの収集・カウントから始めるといいと思います。
DIとかAOPとかよく分かんないし覚えたくないって人はDynamicPULSEで弊社に問合せてくれるともしかしたら良いことがあるかもしれません。