かんたんで複雑な、ウェブサービスの作り方を紐解くブログ

サービス運用までを想定したシステム開発の進め方とは?

Programming
2021/07/15

ウェブサービスを作る場合、作るまでのみではなく「作ってからのサービス運用」を含めて考えていく必要があります。 けれども、例えば「自社サービスを一般ユーザーに提供するウェブサイト」の場合、すべてを自動化することは難しく、そのウェブサイトを運営していくメンバーが必要になります。 では、そのような「人の手で運用していく必要のあるウェブサイトとシステム」の場合、どのように制作を進めていけばよいのでしょうか。

一般ユーザー・運用担当者の両観点からフローをまとめる

まず「運用が必要となるウェブサービス・システム」の場合、「ウェブサービスを利用する一般ユーザー」「ウェブサービスとシステムを運用する運用担当者」の2つの観点から、すべての利用フローをまとめる必要があります。 例えばSNSサイトであれば、「コメントや写真を投稿する一般ユーザー」と「投稿が適切かどうかを判断し、不適切な場合は削除する運用担当者」の2観点からフローを考える必要があります。 もちろん、まずは一般ユーザーを重視するケースが多くなります。ただ、一般ユーザーだけのことを考えてウェブサービスを構築してしまうと、実際にサービスを開始してから運用が行えなくなったり、不適切なコンテンツや品質の低いコンテンツが増加してしまい、結果的にサービス価値が低下し、ウェブサービスの価値を下げてしまうことも発生します。 そのため、以下のような形で「一般ユーザー」「運用担当者」の両者にとって適切なフローを、まずはまとめる必要があります。 【1】ユーザーがコメントを投稿する 【2】投稿されたコメントが自動送信メールで運用者に通知される 【3】通知されたコメントを運用者が確認し、公開/非公開かを判断する 【4】コメントが公開された場合、ユーザー側に自動送信メールで通知が行われる

フローの中で自動化すべき部分をまとめる

一般ユーザー・運用担当者の両者の運用フローがまとまったら、次にやるべきことはそのフローの中でどの部分が自動化されるべきかをまとめます。 これは「自動化される=機能・システム開発が必要になる」ためです。例えば「自動送信メールが飛ぶ」という箇所であれば「自動送信メールを飛ばすためのシステム開発」が必要となります。また「一般ユーザーが登録した情報が、自動でチャットに通知される」部分なども、機能開発が必要となります。 そのため「フローの中でどの部分を自動化する必要があるか?」をまとめていけば、自ずと「どのようなシステムと、機能開発が必要となるか?」が明らかになり、プロジェクトの全体像があぶり出されていきます。 また逆に、全てを自動化すべきではないということも考慮すべきポイントです。あまりに自動化を行いすぎてしまうと、ユーザーに取って使い勝手が悪いサービスになってしまったり、また不満を感じた部分が自動化されすぎると検知されないという問題も発生します。

システム・機能の開発方法をまとめる

フローと自動化箇所を基準にして「どのようなシステム・機能開発が必要となるか?」の全体像が見えてきたら、次にやるべきことは「そのシステム・機能開発箇所1つひとつに対して、どのような方法で開発を行うか?」を決定していく作業に入ります。 開発方法の決定には、大きく3つの観点があります。 1つ目は「既存のシステムを利用して追加開発を行うか?」「新しいシステムを開発するか?」の視点です。例えばデータベースなどを持つシステムの場合は、新しいシステムを導入する場合、既存のシステムから新しいシステムへのデータの移管が必要となります。 それら観点を踏まえつつ、既存のシステムをそのまま利用することが効率的か、それとも新しいシステムを導入することが効率的かを判断していくことが、選定の観点です。 2つ目は「スクラッチで新しく作成するか?」「他社から提供されているパッケージシステム(ASP / SaaS)を利用するか?」の観点です。当たり前ですがスクラッチで作成するほうが、圧倒的に自由度が増します。ただ全てを一から作成するため、スケジュールやコストが増大する可能性が大きくなります。 一方パッケージシステムを利用する場合には、予め必要な機能がある程度用意されています。 例えばコンテンツを更新するシステム(CMS)をパッケージとして利用する場合には、「コンテンツの作成機能」「承認ワークフロー機能」「自動送信メール機能」「コンテンツのバージョン管理機能」などが多くのCMS内部に予め存在します。そのため、それら基本機能を新たに作成する必要がありません。 一方で、パッケージシステムの場合には自由度の高いシステムを構築することが圧倒的に難しくなります。基本的には与えられた機能の範囲で対応していく必要が出ます。 3つ目は「システム間のデータ連携が発生するか?」を考える必要があります。とくにパッケージシステムの場合、データはパッケージシステム内部で保持することが多く、API利用などは一部可能な場合もあるものの、外部のシステムとの連携ハードルは格段に上がります。 そのためシステム間のデータ連携がどの程度発生するかを踏まえ、利用システムを決定していく必要があります。 これら「既存システムか新規システムか?」「スクラッチ開発かパッケージシステム利用か?」「システム間の連携はどの程度か?」の3観点から必要なシステムについて考えていく必要があります。

最後に感想として

このように、まず最初に一般ユーザー・運用担当者の両観点を踏まえてフローをまとめることにより、サービス開始後の運用を考慮したシステムを作り上げることができます。 どうしても一般ユーザーを重視しなければならないことはもちろんですが、運用負荷をきちんと考慮できていれば運用負荷を下げ、よりユーザーのためになる部分に人をアサインできるようになるため、長期的な観点からも重要なプロジェクトの進め方となります。 読んでくださった方、ありがとうございます。