Webサービスを運用していると、こんなことがしたい!あんなことがしたい!という要望が多々上がってくることがあります。私が関わっているプロダクトでも、こんな機能があったらなーと要望を受けることがたくさんあります。それを全て実装していたら、なんでもできるけど、すごく使いにくいみたいなことも起こり得ます。その失敗談も交えつつ、どんな基準でシステム化していくのか私なりの考えをまとめてみました。
運用でカバーとは
まず、運用でカバーするという考え方についてです。
運用する際に少し手間がかかるが、人力でどうにかしていくということです。メリットは実装時間が0で運用が回り始めること。デメリットは、運用の工数がかさんでいくことと、運用者の知識レベルによってはアプトプットされるもののクオリティに差が出てしまうことです。ボタンを押すだけの作業で済むのであれば、この差は気にしなくて良いと思います。一方、HTMLを少し編集するといったレベルになると、差が大きくなってくると思います。ここまでくると運用でカバーするのが厳しくなってくるでしょう。
もちろん全員がHTMLを書けますという環境なのであれば、運用でカバーしても良いでしょう。
システム化するべき時って?
次にシステム化していくべき時についてです。システム化するということは、開発コストがかかってきます。なので、運用のコストと開発した際のコストを天秤にかけて判断すべきでしょう。また、運用でカバーしきれない・フローが複雑になるときもシステム化した方が良いと思います。
システム化するか微妙なときは、まずは運用で回してみて、周りきらないなと感じた時にシステム化していくという進め方もあると思います。
私が携わっているシステムでは、本当にその機能が必要なのかを判断するようにしています。継続して使われる見込みがあるのか、他のシステムなどでは代替ができないのかを軸に判断し、システム化するかを検討してます。
システム化する際のフロー
システム化しようとなった際には、改めて要件を詰めていきます。
実際に運用する人にヒアリングし、本当に必要な機能はなになのかを検討します。要望通りに作ると無駄な機能がてんこ盛りになってしまったり、運用のことを理解しないで作った結果、使いにくい機能になってしまうことがあるからです。
しっかりと運用側と開発側で使う状況のイメージをすり合わせてから開発に入ると良いでしょう。
開発と運用の使うイメージがずれていた結果。。。
上に書いた通り、しっかりとイメージのすり合わせができていないと使えない・使いにくいものが出来上がってしまいます。
私が携わっているシステムでは、ユーザー向けのメルマガを一括送信できるようなシステムを構築していました。そこに運用側から特定のユーザに送信したい。という要望を受けて、ユーザー検索をし特定ユーザーにのみメール送信ができるような機能の開発を行いました。開発者はユーザー検索の際に色々な切り口から絞り込めたら良いだろうと考え、IDや年齢・ニックネームなどたくさんの検索フォームを実装しました。しかし、開発が完了運用が開始すると、IDの検索があれば十分だったことがわかりそれ以外の検索機能は使われなくなってしまいました。さらに、新しく入った運用者は充実しているので、どこを触ったら良いのかわからず開発へ問い合わせるといったことが発生してしまいました。
この例では、開発が実装する前に、どんな検索を行うのかすり合わせができていればID検索だけを実装すればよかったのです。その結果開発コストも安くすみ、運用者も混乱せずに運用ができたはずでした。
どんなシーンで使われるのか開発者もイメージしておこう
開発だけに集中していると、どんな運用シーンで使われるのかがイメージできずにあれもこれもできるから開発しておこう!ということになってしまうことがあるかと思います。しかし、運用する人にとって何が一番使う機能なのかが明確にしてから開発していくことが大切だと思います。