TECHBLOG

「設計する」ということについて

常々、「設計すること」とは「分解すること」だと思っています。

システムとは、課題や目的を達成するためのツールでなくてはなりません。
ご依頼・ご相談をいただく時点で、お客様には必ず目標が存在します。その目標を実現化するために、現在ある障壁を取り除いたり、乗り越えやすくしたりする為のものがシステムです。

システム開発そのものは目標ではなく、開発されたシステムが新しい手段となり、また、そのシステムによって利益がもたらされる必要があります。
そしてシステムを開発するには、必ず設計の工程を踏みます。

一見、設計とは0から作り上げていくことのように思えます。
お客様から伺った要望、双方でまとめた要件を、機能とフローを完成形まで積み上げていく。

しかし、実際の設計とはその逆です。目標に対して必要なステップを明確にし、明確化した各ステップを機能に分解、機能を処理に分解していく作業がメインとなります。
0の状態から目標にむけて積み上げるのではなく、目標達成を100の状態として、必要な工程を0まで崩していく作業です。

「この目標を達成するためには、このステップが必要だ」
「このステップを行うためには、この画面と機能が必要だ」
「この機能を実装するためには、この処理が必要だ」
「この処理をするためには、このデータテーブルが必要だ」

このように考えると、分解や逆算という考え方はとても自然だと思います。システムを一つでも設計段階から完成させたことのある方にとっては、当たり前のことのように感じる。もしくは、無意識に行っている作業だと思います。
しかし、お客様の要望を伺い、システムを設計する段階では、この意識は非常に重要です。

必要なシステムの大枠が見えてきて、
「さて、では必要な機能を精査していきましょう」
という段階になると、以下のような話がよく出てきます。

「こんなことがあったから、この機能があったほうがいいかもしれない。」
「この作業にこういうパターンが発生する場合があるので、この機能もあったほうが便利かもしれない。」

パターンを出し、それに応じて条件分岐し、必要な処理や項目を仕様に加えるのは非常に重要です。しかし、予算や期間がある以上「それが、目的達成のための必要条件であるのか」を吟味する必要があります。

個人的に私は、”かもしれない設計”みたいな言い方をしたりしますが、”かもしれない設計”によって機能が実装された時、何が起こり得るでしょうか。

開発工数が増える、コストが嵩む。この辺りはもちろんです。
機能によっては「他の機能への影響を考慮する必要が出てくる=バグの可能性」や、ユーザーや担当者からすると「使い方を覚えなければいけない(他者に説明しなければいけない)機能が増える」なんて事もあり得ると思います。

システム開発の失敗談や、IT化を進める上での懸念点を伺うと、「コストをかけて開発したシステムが、使い物にならない」という話が多く出てきます。
原因が設計以外にある事もあると思いますが、設計段階で「本当に必要な物が何かを見極め、それだけを開発」すれば、多くの失敗や懸念を取り除くことが出来るのでは無いでしょうか。少なくとも、「使いこなせなかった」なんてことは随分減るでしょう。

「設計は分解」をもう一度考えます。

目標達成のための道のりは、シンプルな一本道の方が迷わず、余計な手順を踏まないのでいいでしょう。
その道のりを”分解”することによって、逆算しながら設計していくと、自ずと必要な機能のみに絞られた設計書が作られていくはずです。
「無い機能を分解する」ことはできませんし、「無い計算工程を逆算する」ということもできません。

機能の精査を行う時には、機能が目標達成までの一本道から外れていないかを確認する必要があります。

お客様と共に「システムのリリース」というゴールに向かって歩みを進めていくと、理想や話は大きくなり易いです。深くヒアリングを行えば、本来の目標から道が逸れる話も出てきます。
場合によっては必要になる”かもしれない設計”もあると思いますし、工数や予算に余裕があれば実装する事もあります。

しかし本当のゴールは、課題を解決し、目標を達成していただくことです。
そのためには、限られた予算や期間の中で、”使いこなすことのできるシステム”を開発する必要があります。
時にお客様が見る方向を正しながら、まずは道のりから逸れずに本来の目的を見誤らないことが最優先事項。

「本当に求められていることは何なのか」
「ご相談のフェーズから開発をスタートすることができる意義は何なのか」
「本当に喜ばれるシステムは何なのか」

そう考えると、「設計する事」は「分解する事」なのではないかと思うのです。

このサイトは、Internet Explorerでの表示に対応していません。

Microsoft EdgeGoogle Chromeなどからご覧ください。

Edgeで見る