Site Overlay

書評 ソフトウェア開発

  • [入門] はじめてのオブジェクト指向設計

以前住んでた近くの中央図書館にあったので、借りて読んでみた本です。
まずはオブジェクト指向ってなんなの?を知るためには読む本です。ただ、VBA対応のオブジェクト指向の本のため、業務でVBAを使わない場合はソースは参考程度に読み流す雰囲気で使うとよいかと思います。まぁ、オブジェクト指向の考え方はプログラミング言語に依存しないので、初心者が考え方を学ぶ点では読みやすくてよかと思います。


  • UMLモデリングの本質

少し古い(2004年)ですが、個人的におすすめの本です。対象業務に対して、オブジェクト指向分析を用いてモデリングを行う書籍です。概念を抽出し、概念から仕様と実装を行う方法を解説しています。最近のオブジェクト指向分析の本ですと、集合論まで踏み込んで説明する資料は皆無に近いですが、本書籍は集合論を使っており、本質的な説明に近いと個人的に感じます。
※集合論といっても、無限集合とかの知識は必要なく、高校で習う集合論の知識があれば十分です。
内容としては
1章 UMLの基礎知識
2章 クラス図作成の技法
3章 概念レベルから実装レベルへ
4章 パターンとリファクタリング
5章 ビジネスモデリングへの適用
6章 モデリングの実践1
7章 モデリングの実践2
8章 モデリングのスキルを高めるには
といった順番で解説しており、図書館貸し出しシステムや電車の自動改札システムを題材にして、概念モデルや実装モデルを解説しています。

概念とはエンティティセット、意訳すれば「実例の集合」と明記しており、かなりしっくりきたのを覚えてます。
どうやって業務をシステム化するのか、変更に強いモデリングとはなんなのかを知りたい場合は、この本がかなり参考になると思われます。ただし、発行年が古い(2004年あたり)ので、ソースはあくまで参考程度にしたほうがよいかと思います。

本書籍を購入してから気づいたのですが、「UMLモデリングの本質 第2版」が出てるようです。これから読むのであれば、第2版の方がよいかと思います。

  • 現場で役立つシステム設計の原則

ちょっとした修正が広範囲に影響してしまったり、修正箇所が複数にわたりして、バグることはよくあります。
そもそも変更に強い業務システムを作るにはどうしたらよいかについて、オブジェクト指向やDDDの考え方を用いて体系的にまとめた本です。

表題的にオブジェクト指向の本っぽいですが、ドメイン駆動設計(DDD)の初歩を解説しているので、エリックエバンズのDDD本に挫折した場合やオブジェクト指向ってどんな役に立つのかを知るには良い本です。データと機能を分けるCOBOL/C言語時代の実装方法からオブジェクト指向の実装方法に変更するにはどうしたらよいか等が詳しく書かれており、とてもわかりやすいです。

以下ざっくり目次です。
1 小さくまとめてわかりやすくする
2 場合分けのロジックを整理する
3 業務ロジックをわかりやすく整理する
4 ドメインモデルの考え方で設計する
5 アプリケーション機能を組み立てる
6 データベースの設計とドメインオブジェクト
7 画面とドメインオブジェクトの設計を連動させる
8 アプリケーション間の連携
9 オブジェクト指向の開発プロセス
10 オブジェクト指向設計の学び方と教え方

すでに経験豊富なエンジニアからすると説明が冗長に感じるかもしれませんが、初学者にはこれくらい何度も言ってくれた方が良い気もします。


  • Java言語で学ぶデザインパターン

GoF(Gang Of Four、4人の著者という意味)のデザインパターンについてサンプルコードを用いて解説しています。さすがに23パターン全てを覚えるのはきついですが、エンジニアであれば一度は読み倒した方がいいかと思われます。デザインパターンはもはや古典に近い感もありますが、今でもよく使うjava.lang.utilライブラリに使われていたり、最近はマイクロサービス/クラウドが主流ですがその基盤にデザインパターンが使われてたりします。


  • ドメイン駆動設計入門

DDD(ドメイン駆動設計)には、戦略的DDDと戦術的DDD(軽量DDDともいう)に分けられるのですが、本書籍はとくに戦術的DDDに特化した書籍です。DDDの要素となるエンティティ、値オブジェクト、サービス、集約やリポジトリなどの概念を、ユーザー登録するアプリケーションを通じて説明しており、DDDの入門としてはかなりおすすめです。
戦略的DDDも学ぶ必要がある場合は「エリック・エヴァンスのドメイン駆動設計」やバーノンの「実践ドメイン駆動設計」を読む必要があります。


  • エリック・エヴァンズのドメイン駆動設計

言わずと知れたドメイン駆動設計の原典です。
かなりボリューミーですが、DDDを本格的に学ぶのであればこちらの書籍はマストで読んだ方がいいです。

まずエンティティやバリューオブジェクト、ドメインサービスなどのDDDの構成要素、すなわち戦術的DDDの解説がなされ、その後に戦略的DDDの解説がされています。
以下目次です。

第1部 ドメインモデルを機能させる
 第1章 知識をかみ砕く
 第2章 コミュニケーションと言語の使い方
 第3章 モデルと実装を結びつける

第2部 モデル駆動設計の構成要素
 第4章 ドメインを隔離する
 第5章 ソフトウェアで表現されたモデル
 第6章 ドメインオブジェクトのライフサイクル
 第7章 言語を使用する:応用例

第3部 より深い洞察へ向かうリファクタリング
 第8章 ブレイクスルー
 第9章 暗黙的な概念を明示的にする
 第10章 しなやかな設計
 第11章 アナリシスパターンを適用する
 第12章 デザインパターンをモデルに関係づける
 第13章 より深い洞察へ向かうリファクタリング

第4部 戦略的設計
 第14章 モデルの整合性を維持する
 第15章 蒸留
 第16章 大規模な構造
 第17章 戦略をまとめ上げる

結論

いかにも和訳感のあるいいまわしが散見されますが、意味は通じるかと思うので問題ないかと思います。
実コードの説明というより理論/思想寄りの話が多いです。基本的なJava、GoFのデザインパターンの知識があればかなり読み進められるかと思います。

思想的な話が多すぎてもう少し実装寄りの話が欲しい、、という場合はバーノンの「実践ドメイン駆動設計」も参考した方がよいかと思います。

  • 実装ドメイン駆動設計

エリックエバンズの理論/思想を仮想案件(ソースコードを管理するシステムの構築)を例にして、説明した書籍で、まさに副題の通りエバンズの理論を実践する、になります。

実際にシステムを構築する際は、一般的に全体のシステム構成を決めて各サブシステムの責務を定義してから、それぞれサブシステムの設計開発に着手するのが一般的であることから、本書籍は戦略的DDDの解説や実践をしてから、戦術的DDDに入るという、エバンズ本とは逆の構成になってます。またエバンズ本には明記されていなかったドメインイベントについても触れられています。

DDDを用いて開発を行いたいのなら本書籍も通読した方がよいですが、なかなかボリューミーなため、基本的な部分は「ドメイン駆動設計入門」で理解して、不足分を本書籍で補う、といった使い方が現実かと思います。

  • AWS認定デベロッパーアソシエイト

AWSを勉強するために購入しました。当初は試験を受けるつもりはなく個人の勉強用に購入したのですが、コンパクトに網羅的に解説しているので、なかなか濃ゆいかと思います。。練習問題が豊富なので、記憶の定着につながります。

内容的には試験対策としても十分使えるかと思いますが、AWSの試験はパソコン上で受験するものなのでUdemyなどのパソコン上で受講する試験対策講座もした方が無難かと思います。


  • Web系エンジニアになろう

少し気になったところ、新しくできた近所の図書館に偶然置いてあった(!)ので拝借して読みました。

技術そのものの話というより、Webエンジニアになるにはどのようなスキルを身につけたらよいか、Webエンジニアはどんな仕事をするかなど心構えを述べた本です。Web系エンジニアとSI系エンジニアの比較も行っています。
エンジニアとして働くのであれば、一度目を通した方が良い書籍かと思います。

  • 絵で見てわかるマイクロサービスに仕組み



  • エンタープライズアーキテクチャのセオリー

EA(エンタープライズ・アーキテクチャ)について、著者の長年の経験を体系化した書籍です。本書ではDOA(データ指向アーキテクチャ)の考え方を中心としており、エンタープライズ領域全体でマスタとなるデータをデータHUB/サービスHUBにおき、これらを中心に疎結合にシステムをつなげるというものです。

たしかに会計/財務の処理はDOAが適切なのかもしれませんが、、なんとなくデータに重きを置きすぎている気がしないでもないです。現代ですとデータだけでなく、それらを操作するロジックも一緒に扱ういわゆるオブジェクトを中心にして考える、OOA(オブジェクト指向アーキテクチャ)が主流かと思います。
※歴史的にPOA(プロセス中心アーキテクチャ)→DOA→OOAと変遷してきた経緯があります。OOAの延長としてDDD(ドメイン駆動設計)、MSA(マイクロサービスアーキテクチャ)の考えを入れてシステム構成を検討するのが今では一般的です。

とはいえ、全体として、
・それまでEAはSoRの領域が主だったが、SoEやSoIの領域がDXでは重要になる。
・マスターデータは専用に管理するシステムをつくり、集配信を一元管理する。
・EAはBA、DA、AA、TAとあるものの、業務部門とはBA/DAと握る必要がある。etc.
などその通りで勉強になるところも多いです。特に社内SEでDXを検討されている方にはおすすめです。

  • アプリケーションアーキテクチャ設計パターン

書評 ソフトウェア開発」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です