読者です 読者をやめる 読者になる 読者になる

プログラミング C# - 翔ソフトウェア (Sho's)

C#/.NET/ソフトウェア開発など

『C#実践開発手法』レビュー

『C#実践開発手法』

C#実践開発手法』

C#実践開発手法』という本を監訳された長沢 智治さんにいただいた。 レビューしたい。

タイトル C#実践開発手法
サブタイトル等 デザインパターンとSOLID原則によるアジャイルなコーディング (マイクロソフト公式解説書)
著者・監訳・翻訳 Gary McLean Hall (著), 長沢 智治 (監訳), クイープ (翻訳)
出版社 日経BP
発売日 2015年6月4日
本体価格 ¥5,000+税
頁数 440頁
本の種類 単行本Kindle

原書 (英語) は次の通り。

タイトル Adaptive Code via C#
サブタイトル Agile coding with design patterns and SOLID principles
著者 Gary McLean Hall
出版社 Microsoft Press
発売日 2014年10月19日
頁数 448頁
本の種類 ペーパーバックKindle
内容

次のような内容となっている。

  • 開発手法であるスクラム
  • モジュールの依存関係の原則
  • インタフェイスを使った Adaptive な (適応力のある) 設計方法
  • ユニットテスト (単体テスト)リファクタリング (内部構造の改善)
  • SOLID の原則 (単一責務の原則、開放/閉鎖の原則、リスコフの置換原則、インタフェイス分離の原則、依存性反転の原則)
  • 開発のサンプル
  • Git などのツールの紹介

何故プログラマーには本書が重要か

ソフトウェアは変化し続ける

ソフトウェア開発は、常に追加・変更し続けるのが特徴だ。 一気に全体が出来上がる訳ではない。 最初の1行を書いてから、段々と機能が足され、また、改良されていく。 変更し続けるのが特徴なので、なるべく変化を受け入れやすい作り方をする方が良い。

本書には、そういう「Adaptive Code (適応力のあるコード)」を書くための原則とそれを実践するための方法としてベストプラクティスが書かれている。

原則は重要

ソフトウェア開発において、原則は重要だ。

C# 等のプログラミング言語の文法を覚えればそれだけでソフトウェアが書けるかというと、そうではない。 また、いつもいつも日進月歩の開発技術を一から習得しなおさないといけないかというと、それも違う。 経験があり優秀な技術者は、新しいプログラミング言語、新しい開発基盤でも実力を発揮するものだ。

そこには、個々の開発技術にそれほど依存せず、新しい技術が出てきたときにも使える知恵があるだろう。 つまり、プログラミング言語や技術のトレンド等の枠を超えて重要な、開発手法や原則、パターン、アンチパターン、ベストプラクティスというものがあるのだ。

それは、偉大な先人の知恵が集まったものだ。経験のあるプログラマーが長年掛かって身に付ける暗黙知のような技術を、先人が形式知として習得しやすくしてくれたのだ。 そうした知恵は広くソフトウェア開発に応用が効き、また、ドッグイヤーと言われるソフトウェア開発の技術革新の中でも古びない。 また、プログラマー同士がコミュニケーションするときの語彙としてもずっと重要なものだ。 プログラマーとしては是非とも知っておきたい。

「原則だのパターンだのは、実務では役に立たない」というのを聞いたことがある。 それは違うと思う。 パターンをどこにでも適用しさえすれば良い、ということではない。 サンプルコードそのものをコピー & ペーストして使え、という話でも断じてない。 原則やパターン等は、「守破離」でいう「守」だ。基礎なのだ。

確かに、単にそれらの開発手法や原則、パターン、アンチパターン、ベストプラクティスを並べただけでは、中々理解が難しい場合もある。 実務への応用が易しくない場合もあるだろう。抽象的な知識は、広く使えて古びないが、具体的な知識と違って、深く理解しないと現場で活かしづらい。

本書は、単なる原則論にとどまっておらず、豊富な C# のサンプルコードや Visual Studio 等のツールの使い方の例によって、具体的に実践方法をあげている。 ここが、とても重要なところだと思う。

プログラマーの必読書

過去にこうした知恵が書かれたプログラマーの必読書としては、次のようなものがあった:

本書『C#実践開発手法』は、C#プログラマーにとって、そうした本に並ぶものだと思う。 より新しい内容も含まれているし、何より Visual StudioC# による実装レベルにまで具体的に噛み砕いている。 中堅のC#プログラマーに必読だろう。