TRACERYプロダクトマネージャーの haru です。
システム開発と一般的にいいますが、そもそも「システム」とはなんでしょうか。
この記事では、「システム開発」における「システム」について説明します。
システム開発の仕事をするうえで、システムそのものの意味や定義を知っておくことは重要です。
プロジェクトの範囲や目的が明確になり、クライアントやステークホルダーと共通の認識を持つことで、システム開発の成功の鍵を握る要件定義段階での誤解やミスを減らすことができます。
- 「システム」とは
- システム開発における、狭義のシステムと広義のシステム
- 狭義のシステム
- 広義のシステム
- システム思考を取り入れ、戦略や施策の仮説を立てる
- V字モデルと広義のシステム開発、狭義のシステム開発、ソフトウェア開発の関係
- 最後に
「システム」とは
システムとは「極めて多数の構成要素から成る集合体で、各部分が有機的に連携して、全体として一つの目的を持った仕事をするもの」です。
この定義は新明解国語辞典第7版の説明を引用したものであり、本記事でもこの定義をベースに説明します。
システム開発における、狭義のシステムと広義のシステム
システム開発における「システム」は「狭義のシステム」と「広義のシステム」で考えられます。
まず、狭義のシステムは、特にソフトウェアとハードウェアが連携して動作する仕組みを指します。たとえば、ソフトウェアはオペレーティングシステム(OS)、ミドルウェア、アプリケーションなどがありますがこれらが連携して機能を提供します。ハードウェアはスマートフォン、PC、家電などの物理的な装置があげられ、ソフトウェアと連携して動作します。たとえば、OSはハードウェア資源を管理し、アプリケーションがユーザーの操作に応じて動作する仕組みです。このように、狭義のシステムは主に技術的な要素に焦点を当てた仕組みです。
システム開発に携わるエンジニアの方々は、この狭義のシステムに馴染みがあるのではないでしょうか。
一方で、広義のシステムは、人、物、金、情報など、さまざまな要素が連携して動作する全体の仕組みを指します。例えば、会社全体の経営システムを考えてみましょう。ここでは、従業員(ヒト)、製品や原材料(モノ)、予算や資金(カネ)、社内データ(情報)などがすべて連携して、会社が効率的に運営されるように働いています。このように、広義のシステムは複数の異なる要素が連携して目的を達成するシステムと考えられます。上図のように狭義のシステムは広義のシステムの中に含まれます。
次の節では、狭義のシステムと広義のシステムについて、それぞれの例をあげて説明します。
狭義のシステム
狭義のシステムとは、先に説明したようにソフトウェアとハードウェアが連携して動作する仕組みを指します。
ここでは、iPhoneアプリとサーバーという構成でつくられたシステムを例に説明します。
以下に、システムの構成要素とそれらの役割を列挙します。
ハードウェア
- iPhone:
- ユーザーが直接操作するデバイス
- アプリケーションの実行環境として機能し、ユーザーインターフェースを提供する
- サーバー:
- データ処理やストレージ、バックエンドのロジックを処理するためのマシン
- iPhoneからのリクエストを受け取り、必要なデータやサービスを提供する
ソフトウェア
iPhone内のソフトウェア:
- スマホアプリ:
- ユーザーが直接操作するアプリケーション
- データの表示やユーザーからの入力を受け取り、処理する
- iOS:
- iPhoneのOSで、ハードウェアリソースを管理し、スマホアプリの実行を支援する
- アプリケーション間の通信やデバイスの管理、セキュリティ機能を提供する
- SQLite:
- iPhone内で使用される軽量のデータベースシステム
- アプリケーションがローカルデータを保存および取得するために使用される
- スマホアプリ:
サーバー内のソフトウェア:
- Web API:
- iPhoneのスマホアプリからのリクエストを受け取り、適切なデータや処理結果を返すインターフェース
- サーバーとクライアント(iPhone)間の通信を管理する
- Python:
- サーバーサイドのプログラミング言語
- Web APIやデータ処理ロジックの実装に使用される
- Ubuntu:
- サーバーのオペレーティングシステム
- ハードウェアリソースを管理し、PythonやDjangoを実行する環境を提供する
- Django:
- Python製のWebアプリケーションフレームワーク
- Web APIの構築やデータベース管理、ユーザー認証などの機能を提供する
- Web API:
これらのシステムの構成要素、つまりハードウェア(iPhoneとサーバー)とソフトウェア(iOS、スマホアプリ、SQLite、Web API、Python、Ubuntu、Django)は単一では動作せず、それぞれ連携して動作することで、ユーザーにサービスを提供します。
広義のシステム
広義のシステムについて、Webのフリマサービス*1を例として説明します。このシステムには以下の構成要素が含まれるとします。
- 購入者: 商品を探し、購入するユーザー
- 出品者: 商品を登録し、販売するユーザー
- コンビニ: 購入者が商品を受け取る場所であり、物流会社へ商品を渡す中継地点
- 物流会社: 商品を出品者から購入者へ配送する役割を担う会社
- お金: 購入者から出品者への支払い、およびフリマサービス運営会社の手数料として利用される資金
- 商品: 出品者が販売し、購入者が購入する物品
これらの要素がどのように連携しているかを説明します。
- 出品者が商品を出品: 出品者はフリマのプラットフォーム上に商品を登録し、販売を開始する。ここで商品情報(情報)が登録される
- 購入者が商品を購入: 購入者はプラットフォーム上で商品を検索し、購入する。購入手続きが完了すると、購入者からお金が支払われる
- 商品をコンビニへ持ち込む: 出品者は商品を近くのコンビニに持ち込む。コンビニは商品を受け取り、物流会社に引き渡す
- 物流会社が商品を配送: 物流会社はコンビニから商品を受け取り、購入者の住所まで配送する。配送が完了すると、購入者は商品を受け取る
- 取引の完了と評価: 購入者が商品を受け取り、問題がなければ取引が完了する。購入者は出品者に対して評価を行い、これが他の購入者への情報となる
このように、Webのフリマサービスは、購入者、出品者、コンビニ、物流会社、お金、商品という多様な要素が有機的に連携することで成り立っています。それぞれの要素が連携し、システム全体が円滑に機能することで、ユーザーにとって便利で効率的なサービスが提供されます。
システム思考を取り入れ、戦略や施策の仮説を立てる
システムが運用され、うまく回るようにするためには、システムが発展、成長していくための施策を考える必要があります。
その際、システム思考*2という考え方を取り入れることで、システムに持続可能な好循環を生み出す戦略や施策を考えることができます。
システム思考とは、個別の要素だけでなく、それらの相互作用や全体の関係性に着目して問題解決や改善策を考える方法です。
システム思考は、まさに広義のシステムを対象とした思考法といえるでしょう。
下図に、システム思考の観点からWebのフリマサービスを発展、成長させていくため具体的な施策とその効果の例を示しました*3 。
上図の例では重要施策を3つ示しました。重要施策の具体案を以下に示します。
- 出品者増加施策
- 出品キャンペーンの実施
- 手数料の一部無料化
- 出品ガイドやサポートの充実
- 出品/購入機能の利便性向上
- モバイルアプリの機能強化
- 直感的なユーザーインターフェース
- AIを活用したおすすめ商品機能
- コンビニや物流会社との連携強化
- コンビニでの発送受け付け
- 提携物流会社による迅速な配送サービス
- 発送時の割引サービス
これらの施策を実施することによる効果は以下のとおりです。
- 出品者増加施策、出品/購入機能の利便性向上によって期待される効果
- 出品者が増えると、プラットフォーム上の商品数が増加する
- 商品の種類や選択肢が増えることで、購入者にとって魅力的な選択肢が広がり、購入者が増加する。これにより、システム内の「購入者」が増える
- 購入者が増えると、自然と売上が増加する
- 増加した売上は、出品/購入機能の利便性向上に再投資する。具体的には、モバイルアプリの機能強化や直感的なユーザーインターフェースの改善に投資する
- 利便性が向上することで、ユーザーの満足度が高まり、リピーターが増加する。さらに出品者が増加するという好循環が形成される
- コンビニや物流会社との連携強化によって期待される効果
- 出品者は、商品をコンビニで手軽に発送できるようになり、発送の手間が減る。これにより、システムの「物流会社」と「コンビニ」が効率よく連携する。
- 手間が少なくなることで、出品のモチベーションが向上し、出品者が増加する
- 購入者は、コンビニで商品を簡単に受け取ることができ、受け取りの利便性が高まる
- 商品を受け取りやすくなることで、購入者の購入意欲が高まり、購入者が増加する。これにより、システムの「購入者」が増え、システム全体の取引数が増加し、サービス全体の活性化につながる
このようにシステム思考を取り入れることで、施策を単独で考えるのではなく、サービス全体を一つのシステムとして俯瞰し、施策とその効果を関連付けて捉えることができます。
これによりサービスが持続的に発展していくための効果的な戦略や施策、改善策、そしてそれらが生み出す効果などの仮説を立案できます。
V字モデルと広義のシステム開発、狭義のシステム開発、ソフトウェア開発の関係
V字モデルはシステム開発プロセスを表すモデルです。企画、要件定義から設計、実装、テスト、リリースまでの各段階を示します。
V字モデルと、これまでに説明してきた狭義のシステム開発、広義のシステム開発、そしてソフトウェア開発の関係を下図に示しました。
- 広義のシステム開発
- V字モデル全体に対応する。事業全体の観点からシステムを構築するプロセスであり、事業目標や業務プロセスの設計から、具体的なシステムの設計・開発・運用までを含む
- 狭義のシステム開発
- V字モデルの下半分に該当し、システムとソフトウェアの開発に焦点を当てる
- ソフトウェア開発
- V字モデルの一番下のレイヤーに該当し、ソフトウェアの設計や実装に特化したプロセス
上図のV字モデルを見ると、要件定義には「業務要件定義」と「システム要件定義」の2種類があり、「広義のシステム開発」と「狭義のシステム開発」の両方がスコープに含まれていることがわかります。
そのため、要件定義を成功させるには、開発から運用までをイメージするスキルやシステム全体を捉えるスキルなど、幅広いスキルが必要です。具体的には以下の記事を参照してください。
最後に
本記事では以下のことを説明しました。
- 「システム」の一般的意味
- 狭義のシステムと広義のシステム
- システム思考を取り入れ、施策の仮説を立てる
- V字モデルとシステム(広義、狭義)の関係
システムを技術の観点から見た狭義のシステムだけでなく、広義のシステムで捉えると、生態系(エコシステム)のように見えてきます。
そのように考えるとITが不可欠なこの時代において、システム開発の仕事は社会の生態系(エコシステム)、仕組みやインフラを構築し、社会を発展させる重要な役割を担っていると言えるのではないでしょうか。
以下の記事では、実際にシステム開発を進める際にV字モデルを使ってシステム開発のプロセスを組み立てる方法を説明します。