システムエンジニアになって、経験を積んでいくと設計を任される機会も増えてきます。
それまでのシステム開発に携わってきた経験や先輩社員などから教わることで設計スキルを身につけた人は少なくないのではないでしょうか。
私自身も同じような形で設計スキルを学んでいたのですが、自社内で身につけた設計スキルが必ずしも他の現場で通用する標準的な設計スキルとは限りません。
会社やプロジェクトごとで設計方法に特徴があり、もしかすると偏った設計スキルしか得られていないこともあります。
私は転職活動をした際に色々な会社との面接・面談を通して、今まで学んできた設計方法が他でも通用する標準的な考え方ではないことに気づかされました。
そういった経験からIT業界一般の標準的な設計方法や思考については書籍からも学ぶことをしていました。
その中で、標準的なシステム開発の設計スキルを1から学ぶことができるおすすめの書籍がありましたので紹介させていただきます。
その書籍が、「はじめての設計をやり抜くための本 第2版」となります。
設計に関して、知っておくべき知識が体系的にまとめられた1冊になっています。
おすすめのポイントを抜粋しながら、この書籍の良さをお伝えしたいと思います。
・なぜ設計をするのか、設計の目的とは
・外部設計、内部設計の手法
・アーキテクチャ設計のアプローチの仕方
書籍の概要
タイトル:はじめての設計をやり抜くための本 第2版 概念モデリングからアプリケーション、データベース、アーキテクチャ設計、アジャイル開発まで
著者 :吉原 庄三郎
発売日 :2022年4月18日
出版社 :翔泳社
価格 :2,728円(税込み)
ページ数:344ページ
もともと2008年に出版されていた「はじめての設計をやり抜くための本」を14年ぶりにリニューアルし、システム設計をするのに必要な知識が説明されています。
14年たっても変わらない必須となるシステム設計の考え方を解説し、設計をやり抜くというところで大規模なシステム開発で必要な設計工程すべてに関わる部分を丁寧に解説されています。
全体のページ数も344ページとかなりのボリュームがありますが、その分設計に関する内容だけでなく、設計の必要性やエンジニアとしてのやりがいについても記載があり、無駄がなく興味深いため、最後まで読み切れる全量となっています。
書籍の内容について
本書は全体で7章ある構成となっています。
各章でテーマがあり、1章から順番に読んでいくと内容が理解しやすい構成になっています。
各章ごとにどのような内容が整理されているかを簡単にお伝えます。
※本書に記載されている文言とは異なる部分もありますので、ご留意ください。
第1章 はじめての設計をやり抜くために
・設計に必要な3つのことは、「目的を把握すること」、「必要なテクニックを知ること」、「コミュニケーションをとること」である。
・エンジニアとしてのやりがいからキャリアパスを考える。その中で設計スキルが必要となることが多いため、理解しておくと良い。
第2章 設計の目的
・システム設計、アプリケーション設計、アーキテクチャ設計など様々な設計がある。各設計の概念と説明を理解することから始める。
・開発プロジェクトを進めるにあたって、各プロセスに必要な作業を理解する。
・設計の目的は「要件定義の内容をシステムでどのように実現するかを検討する」、「要件定義で明確になっていない外部仕様を検討する」、「開発の関係者間で情報を共有する」、「システムの品質を高める」、「メンテナンスのために設計情報を残す」ことである。
・設計工数の見積りをするために必要な用語、知識を理解する。
第3章 外部設計の手法
・外部設計は利用者や外部システムに対して提供する機能を具体的に決めることである。
・お客様の業務を学び、ユースケース分析を行い、ビジネスルールを作成するまでの手法を理解する。
・概念モデリングを行い、概念モデルを用いた表現手法を理解する。
・画面設計、外部システムI/F設計、バッチ設計、帳票設計、データベース論理設計などの外部設計手法を理解する。
第4章 内部設計の手法
・内部設計ではシステムの入出力、システム内部のプログラム処理、データ管理方法、データベースの物理設計などを決める。
・画面プログラム設計として、Controller設計、画面共通部品の設計、HTTPセッションの設計を理解する。
・ビジネスロジックプログラム設計、データベースプログラム設計について理解する。
第5章 アーキテクチャの目的
・アーキテクチャとは「コンポーネントが連携するための設計コンセプトに沿ったシステムの基本構造」である。
・アーキテクチャの目的である「保守性の向上」、「合目的性の向上」、「見積への応用」、「技術リスクの局所化」、「ソースコード自動生成への応用」、「フレームワークへの応用」について理解する。
第6章 アーキテクチャ設計のアプローチ
・システムの処理を分割すると「受信」、「加工」、「保存」、「応答」となり、シンプルな概念からどのような実現を図るかを考えるのが、アーキテクチャ設計のアプローチの基本となる。
・オブジェクト指向設計、サブシステム分割、レイヤー、処理の共通化、設計とプログラムのトレーサビリティ、依存性の注入、マイクロサービスについて理解する。
第7章 本当に設計は必要か
・設計が必要な理由、不必要な理由、近年のアジャイル開発の普及等を踏まえて、設計の意味を改めて考える。
良かった点
・要件定義、外部設計、内部設計の各工程で必要な作業を網羅して説明されており、一から設計を学ぶには教科書のような内容であり、IT業界一般的に通用する知識を学べる。
・実際のシステム開発業務と同様の流れで解説があり、具体的な手法をそれぞれ学ぶことができ、そのまま業務に活かせる内容である。
・手厚い説明により、普段意識できていなかった考え方に気づくことができ、より良い設計を考えてできるようになる。
・説明の文字量が多い部分があるが、要点で図解がついているため、説明と図を併せてみると理解がしやすかった。
悪かった点
・内部設計やアーキテクチャの部分でJavaのフレームワークを使用した説明が出てくるが、Java言語以外の開発時は考え方が異なるため、汎用的ではないと感じた。
・4章の内部設計の手法が他より難しく読みにくいと感じた。前提としてデザインパターンを知っておかないといけないので、初心者が苦労しそうであった。
・本書の内容はウォーターフォール(Java)のシステム開発をメインにして説明されているイメージとなる。アジャイル開発等や自社パッケージ製品を開発している場合には、各工程のアプローチが異なる場合もあるので、読む人は注意が必要。
さいごに
システム設計に関して1から学ぶことが出来る書籍「はじめての設計をやり抜くための本 第2版」を紹介しました。本書に書かれている内容と実務で経験したことを比べながら、芯のある設計スキルを身につけてもらいたいと思います。
書籍に書かれていることは何年たっても役に立つ内容だと思いますので、定期的に見直しをして知識の再確認をしてみたり、会社の勉強会などで共有し、全員の認識を合わせることに活用してみてください。
1回読むだけではなく、自身の成長とともに何度も見直しすることで、新たな発見も見つかると思います。
システム開発において、設計の重要さは多くのシステムエンジニアが理解していると思います。
是非、一度読んでみてもらえればと思います。
最後までお読みいただきありがとうございました。
コメント