ちょうぜつソフトウェア設計入門 の商品レビュー
TDDやクリーンアーキテクチャ、アジャイルなどそれぞれ単体の書籍が数冊あるような内容を、ぎゅぎゅーっとそれぞれ20ページくらいにまとめてあり、それでいて内容も練度が高い。よく、春に出回る「新人エンジニア向け本」リストの量に圧倒されてしまう場合この本からスタートすると良さそう
Posted by
- ネタバレ
※このレビューにはネタバレを含みます
# PHPで書かれた極めて素晴らしい設計の技術書 ## 面白かったところ - 想定読者が中級者向けの設計本に関わらず採用言語がPHPで、絶妙に痒い所に手が届かない感じが味わえるところ - クリーンアーキテクチャからドメイン駆動設計、テスト駆動開発まで幅広く `PHP` で学べる点 ## 微妙だったところ - サンプルコードをコピー&ペーストできるリポジトリがなかったところ ## 感想 初心者、入門者用PHPの技術書やフレームワークの専門書は夜にあふれているが、設計に関する本はなかなかない。 他の言語で上梓された設計本を手にとって自分なりにPHPで写経したことは今までで何度もあったけれど、1つの答えとして当本を手に取れたことはとても良かった。 デザインパターン周りはイマイチ頭に残っていないので、また必要になったら開きたい。
Posted by
クリーンアーキテクチャはあの有名な円だと思っている人やSOLIDなコードの実装例がピンとこない人にはすごく良い本だと思った。 言語の本を読み終わった入門者というよりは、実務経験を1~2年くらい積んだ人の方が良いかも。 先人をリスペクトしつつ、ソフトウェア設計開発のこれまでの歴...
クリーンアーキテクチャはあの有名な円だと思っている人やSOLIDなコードの実装例がピンとこない人にはすごく良い本だと思った。 言語の本を読み終わった入門者というよりは、実務経験を1~2年くらい積んだ人の方が良いかも。 先人をリスペクトしつつ、ソフトウェア設計開発のこれまでの歴史を学べる構成も巨人の肩に乗っている感があってすごく好き。
Posted by
<本のタイトル> ちょうぜつソフトウェア設計入門――PHPで理解するオブジェクト指向の活用 <本の紹介> 今回はIT技術書を読みました。2022/12/10に発売されたけっこう新しめの本みたいです。 「可愛いけど本格派!ソフトウェア開発のちょうぜつ技術がわかる!」との売り文句で...
<本のタイトル> ちょうぜつソフトウェア設計入門――PHPで理解するオブジェクト指向の活用 <本の紹介> 今回はIT技術書を読みました。2022/12/10に発売されたけっこう新しめの本みたいです。 「可愛いけど本格派!ソフトウェア開発のちょうぜつ技術がわかる!」との売り文句です。 第1章 クリーンアーキテクチャ 第2章 パッケージ原則 第3章 オブジェクト指向 第4章 UML(統一モデリング言語) 第5章 オブジェクト指向原則 SOLID 第6章 テスト駆動開発 第7章 依存性注入 第8章 デザインパターン 第9章 アジャイル開発 <感想・気づき> バリバリ普段から設計/プログラミング/試験しているエンジニアにとっては普通過ぎる内容らしいが 上流工程の業務が多い私にとってはなんだか全体的に難しく、 細かい内容はよくわからない部分が多かった印象です。。 「第1章 クリーンアーキテクチャ」 「第2章 パッケージ原則」 「第6章 テスト駆動開発」 のあたりが個人的には面白かったので、そこから少し内容紹介します。 ・汚い設計は生産性を落とす 行き当たりばったりの手続き、意味と名前が乖離した変数名、パズルのように入り組んだ条件分岐 などは、そもそも何をしているのかを意味を認識するのに時間がかかるという問題がある。 汚い設計の特徴は大きく2つ 1、まとまりが悪くてあちこち変更しないといけないので苦労する 2、同じところに意味の異なるものが混ざっており壊れやすい ・アプリケーションは責務で分ける 概念例として、PCの文字入力の調子が悪い場合を考える ー文字入力が悪いからといって、まさかPCを買い替える人はいませんよね。。 ↓ ー次にキーボードを買い替えるという選択肢が浮かんできそうですが、ちょっと待ってください。 キーボードが悪いのでしょうか。特定のキーの反応が悪いだけではないでしょうか。 こうするとキーボードを買い替えるまで行かなくても、部分的に修理をすれば良さそうです。 ↓ ーさてキーボードの一部のキーを付けかえて修理しました。 この結果影響があるのはキーボードの文字入力部分だけですよね。 言い換えるとキーボードを変えたせいでマウスの動きが悪くなるとかありえないですよね。 ↓ ー責務で分けるというのはこのように、疎結合というべきか、 責任分界点を明確にわけようということを言っている感じかと思います。 ↓ ーということを理解した上で、アプリケーションを細かく分けすぎるとちょっと、、、 となるかもですが、あとで切り出すのは難しいので、ちょっとやりすぎぐらいで まずは細かく分ける方が良いです。いずれにしてもコード量は大きく変わらないはずなので。 ・テスト駆動開発について 単体テストの記述方法で人気があるのはxUnitと呼ばれる手法です。 PHPであればPHPUnitというツールがあります。 PHPUnitを用いてアサーションメソッドを利用することでユニットテストができます。 参考:https://tech-blog.rakus.co.jp/entry/20200716/phpunit テスト駆動開発の基本サイクルは 「テストコード追加」「テスト失敗確認」「最小限の実装」「テスト成功」である。 実装することよりもテストコードを書くことを意識する。 テストコードはわざと失敗するデータパターンにして、失敗を確認後、 それまでのテストと、失敗したテストが両方成功するようにコードを最小限にとどめて変更する。 その繰り返しを行い、追加すべきシナリオが無いとなった時点でテスト完了となる。 ↓ このやり方で繰り返し実装をしていくと、めちゃくちゃ汚いコードになっているので、 テスト完了となった時点でリファクタリングを行い、リファクタリング後のコードが 前述のテストケースをすべてパスすることを確認することで単体試験が完了になる。 参考:https://www.techscore.com/blog/2018/12/16/drivendevelopment/
Posted by
phqでいろいろな設計名を説明してくれる本は珍しく、かつとても丁寧な説明の仕方で良いと思いました! Solid、オニオンアーキテクチャ、デザインパターンと(特にデザインパターン)数が多く、一回では認識しっかりできないけど、 うっすらとだけ中に物を詰めた引き出しが増えた気がします。...
phqでいろいろな設計名を説明してくれる本は珍しく、かつとても丁寧な説明の仕方で良いと思いました! Solid、オニオンアーキテクチャ、デザインパターンと(特にデザインパターン)数が多く、一回では認識しっかりできないけど、 うっすらとだけ中に物を詰めた引き出しが増えた気がします。 近しいパターンが出てきたときに何度も読み返して認識を深めるタイプの本かなと思います。
Posted by
- 1