著者:ピーコックアンダーソン
ページ数:97

¥250¥0

この本の文字数は5万文字程度。世の中のオブジェクト指向設計などの解説書に比べると,若干文字数は少なめです。

さらに,世の中にはプログラムの天才みたいな人がいて,ケントベックやマーチンファウラーなんかが「テスト駆動開発」とか「リファクタリング」なんていう,すばらしい本を世に送り出しています。

ただ,この本は,天才たちの書いた本に比べて,確実にわかりやすい表現で書かれています。
天才たちの本は,天才であるがゆえに,難しい内容が多いです。
途中で挫折しそうになる本も何冊もありました。

私は,もともとミュージシャンをしていてプログラマーに転向したので,ズブズブの素人でした。その素人から,15年以上の歳月を経て,今では大手メーカーの製品開発部門でプロジェクトリーダーをしています。毎年入ってくる新人には教育を行い,毎日のようにコードレビューをして,どうすればわかりやすいコードが書けるかを指導しています。

そういう現場の声と,素人や初心者の気持ちのわかる私だからこそ,わかりやすい内容で本を執筆しています。

この本の中にある知識は,一冊5000円から10000円くらいする天才たちの書いた本を何冊も読み漁り,毎日10時間以上コーディングを何年もして,「製品販売後にバグを出さない,クレームを出さない,保守性の高いコードはどうやったらかけるのか?」,「誰が見ても改造しやすいコードってどういうコードなのか?」というテーマを徹底的に研究した内容をまとめたものです。

そんな本なので,値段は少々高くてもいい気がしましたが,この値段なのでかなりお買い得だと思います。この知識を得るのに,お金と歳月をかけてきましたが,それをあなたは数時間で得ることができます。

ただドメイン駆動開発やテスト駆動開発は奥が深く,簡単に理解できるものではないと思います。本気で保守性をあげるプログラミングを学びたいという方のみご購入ください。

——————————————————
プログラムコードが複雑になっていませんか?
今の実装方法に自信がありますか?

複雑なプログラムを修正すると,影響範囲がわからずに
別の不具合が発生してしまいます。

プログラムを一目見てどんな動きをしているか
わからないようであれば,そのシステムは
修正するたびに無茶苦茶になってしまいます。

5年前の私もそうでした。
しかし,ドメイン駆動開発,テスト駆動開発を学び
「オブジェクト指向でプログラミングするとはこういうことだったのか!!」とハタと気づきました。
この本の内容を実践すれば,シンプルで,変更に強いプログラミングができるようになり,
プログラマーは,バグの心配なく,ゆっくり夜眠れるようになります。

この本は,世の中のオブジェクト指向本,テスト駆動本,ドメイン駆動開発本をまとめて
なるべくシンプルに実践的な実装ができるように解説しています。
(Moqを使ったテストの書き方や,オブジェクト指向的クラスの作り方など)

はじめに より
C#でMVVMで実装し,ViewとViewModel以外はドメイン駆動設計で実装する方法。
ViewとInfrastructure以外の部分はすべてテストコードでカバーする方法。
本文中でわかりにくい部分は無料進呈のプログラムコード一式で実際のコードを確認してください。

ドメイン駆動開発
ドメイン駆動設計とは開発手法の一つで,一言でいうと「オブジェクト指向プログラミングを最適化したもの」というイメージになる。オブジェクト指向設計にはいくつかの原則と,有名なデザインパターンがいくつもあるが,オブジェクト指向設計という言葉が持つ意味は非常にあいまいさがあり,技術者それぞれで定義の異なるものである。

また,オブジェクト指向設計の原則やデザインパターンは,多くの指針や実装例が示されてはいるものの,ピンポイント的な実装例が多く,アプリケーション全体を示すものは少ない。保守性やテスト容易性を高めるために,アプリケーション全体をどのように作成し,どういったクラスをどこに配置するべきか?といったところまでは言及されていない。そういったことはおそらく開発チームごとに話し合い,決定していくべき事なのかもしれない。

ドメイン駆動開発とは,GOFのデザインパターンやマーチンファウラーのリファクタリング等,オブジェクト指向に関する書籍が成熟し,そのあと,集大成のような位置づけで発表されている。システム開発で解決すべきパターンを切り分け,不具合の発生しにくい設計手法を示している。

今回はそのドメイン駆動開発の設計パターンを元に,C#でテスト駆動開発を用いて実装する方法をポイントを絞って解説していく。

テスト駆動開発
テスト駆動開発とはプログラムコードをテストコードで検証しながら作成していく開発手法である。従来のプログラムコードをすべて書いてからテストを行うスタイルではなく,実現したい内容をまず数行のテストコードで表し,そのテストコードを成功されるために本番コードを実装するというやり方である。こうすることですべての本番コードはテストしやすいコードで書かれ,バグの混入にもすぐに気づくことができる。

テストしやすいコードというのはテスト容易性と表現され,今日のプログラミングでは非常に大事な要素である。また,プログラムは良いコードと悪いコードに分けることができるが,その指標の一つがテスト容易性といえる。

またそれ以外にも保守性があげられる。プログラムコードの一部を変更した場合,どこにどのような影響があるかがすぐにわかる,不具合発生時に調査すべき個所がすぐにわかる,機能追加が容易にできる等が指標となる。

ドメイン駆動開発により,どこにどのようなクラスがあるかがすぐにわかるようになり,保守性が向上します。また,テスト駆動開発により,テスト容易性が上がります。今回はこのような開発手法をC#を使って順番に解説していきます。

目次
はじめに
ドメイン駆動開発
テスト駆動開発
良いコード,悪いコード
悪いコード
潜在的なBADポイント
潜在的なBADポイント2つ目
テストしやすいコード
アーキテクチャーについて
階層化アーキテクチャー
ヘキサゴナルアーキテクチャー
ドメインロジックとクライアントコードについて
実装
プロジェクトの追加
最初の実装
Repository
Mock
Moq
UIとインフラストラクチャー
Entity
ValueObject
リスト表示
保存(Save)
エラー処理に関して
おわりに

シリーズ一覧

  • 同シリーズの電子書籍はありませんでした。

 

  Kindle Unlimitedは、現在30日間無料体験キャンペーンを行っています!

この期間中は料金が980円→0円となるため、この記事で紹介している電子書籍は、すべてこのKindle Unlimited無料体験で読むことが可能です。

Kindle Unlimited 無料体験に登録する