『C#実践開発手法』
『C#実践開発手法』という本を監訳された長沢 智治さんにいただいた。 レビューしたい。
原書 (英語) は次の通り。
内容
次のような内容となっている。
- 開発手法であるスクラム
- モジュールの依存関係の原則
- インタフェイスを使った Adaptive な (適応力のある) 設計方法
- ユニットテスト (単体テスト) とリファクタリング (内部構造の改善)
- SOLID の原則 (単一責務の原則、開放/閉鎖の原則、リスコフの置換原則、インタフェイス分離の原則、依存性反転の原則)
- 開発のサンプル
- Git などのツールの紹介
ソフトウェアは変化し続ける
ソフトウェア開発は、常に追加・変更し続けるのが特徴だ。 一気に全体が出来上がる訳ではない。 最初の1行を書いてから、段々と機能が足され、また、改良されていく。 変更し続けるのが特徴なので、なるべく変化を受け入れやすい作り方をする方が良い。
本書には、そういう「Adaptive Code (適応力のあるコード)」を書くための原則とそれを実践するための方法としてベストプラクティスが書かれている。
原則は重要
ソフトウェア開発において、原則は重要だ。
C# 等のプログラミング言語の文法を覚えればそれだけでソフトウェアが書けるかというと、そうではない。 また、いつもいつも日進月歩の開発技術を一から習得しなおさないといけないかというと、それも違う。 経験があり優秀な技術者は、新しいプログラミング言語、新しい開発基盤でも実力を発揮するものだ。
そこには、個々の開発技術にそれほど依存せず、新しい技術が出てきたときにも使える知恵があるだろう。 つまり、プログラミング言語や技術のトレンド等の枠を超えて重要な、開発手法や原則、パターン、アンチパターン、ベストプラクティスというものがあるのだ。
それは、偉大な先人の知恵が集まったものだ。経験のあるプログラマーが長年掛かって身に付ける暗黙知のような技術を、先人が形式知として習得しやすくしてくれたのだ。 そうした知恵は広くソフトウェア開発に応用が効き、また、ドッグイヤーと言われるソフトウェア開発の技術革新の中でも古びない。 また、プログラマー同士がコミュニケーションするときの語彙としてもずっと重要なものだ。 プログラマーとしては是非とも知っておきたい。
「原則だのパターンだのは、実務では役に立たない」というのを聞いたことがある。 それは違うと思う。 パターンをどこにでも適用しさえすれば良い、ということではない。 サンプルコードそのものをコピー & ペーストして使え、という話でも断じてない。 原則やパターン等は、「守破離」でいう「守」だ。基礎なのだ。
確かに、単にそれらの開発手法や原則、パターン、アンチパターン、ベストプラクティスを並べただけでは、中々理解が難しい場合もある。 実務への応用が易しくない場合もあるだろう。抽象的な知識は、広く使えて古びないが、具体的な知識と違って、深く理解しないと現場で活かしづらい。
本書は、単なる原則論にとどまっておらず、豊富な C# のサンプルコードや Visual Studio 等のツールの使い方の例によって、具体的に実践方法をあげている。 ここが、とても重要なところだと思う。
過去にこうした知恵が書かれたプログラマーの必読書としては、次のようなものがあった:
本書『C#実践開発手法』は、C#プログラマーにとって、そうした本に並ぶものだと思う。 より新しい内容も含まれているし、何より Visual Studio と C# による実装レベルにまで具体的に噛み砕いている。 中堅のC#プログラマーに必読だろう。