この記事を読むのに必要な時間:およそ 1 分
ITプロジェクトにおけるシステム設計は,要件定義のあとに行なわれる工程で,システムを実現するにはなくてはならないものです。定められた要件を実際に使う技術へとマッピングし,どのようにシステムを組み立てるかを明確化すること。それがシステム設計です。
一見すると,要件そのものや採用する技術によってケースバイケースであり,ベストプラクティスのないたいへん難しい作業に感じられるかもしれません。それはたしかに,一面では正しいのですが……それでも,どんなシステムにおいても変わらない「本質」もあります。なぜなら,どんなシステムの設計においても,要件をマッピングすべき先の技術は次の3種類のうちいずれかであるはずだからです。
まず,それがどんなシステムであっても人間が操作するものである以上,「人間とやりとりする」という部分が必要です。いわゆるUIの部分ですね。Webサイトで言えばHTML/CSSやJavaScriptを用いて実装されるところです。これを「フロント層」と呼びましょう。
次に,手作業ではなくコンピュータでの処理なのですから,入力されたり保管されているデータを使って「自動で処理をする」という部分も必ずあることでしょう。これは,WebであればRuby on Rails などを用いて実装されているような,バックエンドでの処理を行う部分と言えます。これを「バック層」と呼ぶことにします。
最後に,システムはその場かぎりのものではありませんから,入力されたり取得したデータを保管し,必要になったときに呼び出せる機能を持つはずです。現代のほとんどのシステムでは,この部分をデータベースが担うことになるでしょう。同様にWebで考えるならば,たとえばRDBMSであるMySQLなどを使っているかもしれませんね。これはそのまま「DB層」でよいでしょう。
したがって,システムを構築するにあたりどんな技術を使うとしても,この「フロント層」「バック層」「DB層」それぞれに対するシステム設計の「ポイント」を知っていれば,あとはそれをあてはめればよい……ということになります。こうした整理のもとにシステム設計のポイントを解説しているのが,『はじめよう! システム設計』です。
たとえばフロント層であれば,画面のデザインをどうまとめるか,それによってどういった流れで操作していくかといったUI設計の考え方を身に付け,設計書として表現できる必要があるでしょう。DB 層で言えば,RDBMSにおけるテーブル設計に代表される,データの持ち方について整理する方法を習得していなければならないでしょう。
本書を読むことで,従来型のプロジェクトはもちろん,AIやIoTといったいまどきのテクノロジーを使ったシステムにおいても変わらない,そういったシステム設計の本質的な方法論が身に付き,業務のなかで活かすためのヒントが数多く見つかることでしょう。
ところで……システム設計には要件定義が必要でしたね。そして,要件定義をするためには,実際の業務の流れやユーザーの行動(プロセス)が現在どうなっているか,今後どうしたいかを理解することが必要です。この「要件定義」およびその前に行うべき「プロセス設計」については,本書のシリーズ既刊である『はじめよう! 要件定義』『はじめよう! プロセス設計』をそれぞれ参考にしてみてください。
この3つをしっかりと,一連の流れに沿って行えば,あなたのプロジェクトはスムーズに進み,ユーザにとっても嬉しいプロダクトが出来上がるに違いありません!