鎌玉のよしなしごと

日々のよしなしごとをつぶやいているだけ。由無し言(とりとめもない話)か、良しな仕事(nice job!)かは、あなた次第。

『システム設計の謎を解く』を読んだ感想

読者の皆さんは普段は、どのようなプロセスでAndroidアプリの開発を行っていますでしょうか。
筆者自身の経験や他案件の観察から気付いた、よくあることは、「企画書と画面遷移図からデモ実装に入り、それがそのまま本流として扱われ、発注側の感覚的な受け入れテストや隠れたマーケット側のリスクを突破できずに撃沈する」パターンです。

Androidアプリ開発テスト入門(終):アプリ納品時に泣かないための受け入れテストの基礎知識 (2/3) - @IT

みなさんは、最近、しっかり『システム設計』できていますか?
短納期の仕事が増えて、おろそかになっていないですか?
前述の例は、Androidアプリですが、業務系システムなどで、もう少し詰めておくべきだったと後悔したことがないですか?
私自身は…。

そもそも『システム設計』のやり方を知っていますか?
私自身は、自社あるいは元請けが用意している開発標準の成果物一覧にそって設計したり、以下の雑誌に書かれている実例を読んできて、何となくやってきましたが、さて人に『システム設計』のやり方を伝えられるかというと自信がないです。


そんなとき、この本が発売前に、書評を書くことを条件に SBクリエイティブ:【モニタープレゼント・キャンペーン】 『システム設計の謎を解く』 でいただけました。

発売から大分日数が経ってしまいましたけど、感想を書きます。
著者の高安さん、ソフトバンククリエイティブの編集者の三津田さん、申し訳なかったです。*1

おすすめポイント

この本は、『システム設計』のポイントを再復習するのに最適な本でした。

筆者は「設計とは"考えること"であり、アウトプットはその一側面である」と考えているからです。設計は単純に右から左に書き写せばよいものでもありませんし、機械的にできるものでもありません。設計に他にも重要な要素がありますが、最も重要なのは「考えること」です。
 システム設計の謎を解く 強いSEになるための機能設計と入出力設計の極意(はじめに)

この言葉どおり、「考える」ということに、フォーカスをあてています。
机上の論でなく、開発の現場で戦ってきた知見を元に、具体例を出して、演習問題を交えながら、読者といっしょに『システム設計の謎』について考えていきます。
また、「よい」設計を行うために「考える」ポイント、そこに至るまでの前提や背景について非常に丁寧に説明してくれています。
しかも、コンパクトに!

本書の特徴

本書が対象とするのは『システム設計』

本書が対象としているのは、要件定義 → 基本設計 → 詳細設計 という開発フェーズのうち、基本設計となります。
また、一口に設計といっても人、プロジェクト、組織によって「設計が意味するところ」や「各工程における設計の範囲」が異なるため、ページ数をさいて『設計』の定義から始まっています。

私は、『設計』の定義は、巻末の参考図書に載っていて、IPA独立行政法人情報処理推進機構)ソフトウェア・エンジニアリング・センターが規格統一を図るために策定した『共通フレーム2013』*2を使えばいいんじゃないかなと思いました。しかし、『共通フレーム2013』では「システム要求定義」「ソフトウェア要求定義」「システム方式設計」「ソフトウェア方式設計」とか新しい用語で再定義しなおしていました。現場で使わない用語を持ち出しては混乱を招くばかりで、それらを使わず、あえて丁寧に説明をするところに高安さんの意気込みが受け取れました。

そして、本書では、設計書の形で設計を行っています。
それは、多くの人の知識が共有しやすく、学びやすい形だからと思われます。
最後の説では、アジャイル開発への発展について、以下のように語られています。

  • アジャイル開発でも設計を行う。
  • アジャイル開発でも、コミュニケーションの助けになるように文書の形にすることもある。
  • 経験の豊富でない読者はぜひ、まずは『システム設計』の基本を身につけよう。

現在、日本でアジャイル開発者としてトップを走っている人たちは、『システム設計』の知識や経験が豊富な人たちばかりです。
アジャイル開発をやりきるには『システム設計』の知識・経験「も」必要だと個人的に思っています。

本書は『コンパクト』

本書のような設計にフォーカスした本があまりないのは、設計とは奥深いもので、プロジェクトの状況しだいで判断が異なることが多く、それらを意識して網羅的に解説しようとすれば分厚い辞書のようなものになってしまうからでしょう。
 システム設計の謎を解く 強いSEになるための機能設計と入出力設計の極意(はじめに)

本書は『コンパクト』にまとまっていて読みやすく、押さえるべきポイントもしっかりと押さえられています。
ER図やユースケース図などの設計手法や、トランザクション管理やセッション管理などのシステムアーキテクチャについて、使い道については書かれていますが、やり方については詳細は書かれていません。
しかし、巻末に参考資料があり、そこを道標として学習していくことができるようになっています。

お知らせ

高安さんが、8/1に東京で開催される 夏サミ (Developers Summit 2013 Summer) で公募セッション (持ち時間:10分) をされるみたいです。

基本設計工程における、設計要素に対してアウトプットを中心に一つの要素を30秒くらいで見ていきます。たった30秒ですので説明しきれないものも当然ありますが、設計要素をざっと見たいという方は是非ご参加ください。
Developers Summit 2013 Summer:エンタープライズに向けた「DevOps」&「Mobile」のカンファレンス

東京なので残念ながら行けませんが、興味のある人は無料だし是非参加してtwitterやブログで感想を共有して欲しいです。


他の設計手法について

ちょっとコンパクトでないけど、超上流(要件定義時)も含めた開発全体の設計や開発プロセスを知りたい方は、以下を参考に。

 

*1:重版、おめでとうございます。^^

*2:参考図書に掲載されているのは2007ですが、今年3月に改訂されました

*3:最近、つぶやきが止まっているみたいですが

*4:もらえるのが最新のものか、どうか分かりませんが