C# 再履修者向けブックガイド

C# Advent Calendar 2013 12月24日分の記事です。

皆さんメリークリスマス。クリスマス・イブの日、ご家族や恋人と過ごされていますか?

ま、大きなお世話ですよね!

さて、C#も10年を超え、11年目になってきました。おそらく私と同世代、アラフォー世代の多くの皆さんが、Visual Studio 2003や2005のあたりから本格的にC#を使っていると思います。

新しい言語、環境にすごいわくわくしましたよね。

そんな皆さんも、アラフォー世代となり、それなりに責任のある立場になっていると思います。

ところで皆さん、いろいろな知識や考え方がそこで止まっていませんか? その時に一生懸命勉強したからいいやになってません? @ITとかで新機能は一応チェックはしてみるものの別に使わなくていいやとかになっていませんか?

最近ちらほら「LINQ禁止」だとか、「ラムダ禁止」とか聞くようになってきました。XPのサポート終了にあわせて、.NET Fx1.1や2.0でのアプリケーションを4.5にするお仕事とか増えてきているんだと思います。そんななか、自分が知らないからって、自分がコーディング規約を作る立場だからだといって「LINQ禁止」だとか、「ラムダ禁止」とかして、若い人たちをを苦しめていませんか?

ワケわからないから禁止。気持ちはわからないこともありません。でもそれじゃ、あなたも私も20代や30代前半で嫌っていたあの「老害」です。皆さん多少なりとも当時の「老害」と戦って.NETとC#の開発に移行させてきたはずです。

あなたたちが戦う相手だった「老害」になってどうするんですか。

今回はそんな老害にならないために、C#を最履修するためのブックガイドです。

若い人たちをいわしてしまうぐらいに最新のC#を学んでしまいましょう。

C#と.NET Framework

プログラミングC# 第7版
プログラミングC# 第7版 Ian Griffiths 鈴木 幸敏

オライリージャパン 2013-11-29
売り上げランキング : 38212

Amazonで詳しく見る by G-Tools

先月出たばかりのプログラミングC# 第7版です。この版より著者が変わり、構成も抜本的に変更されています。モダンなC#を学ぶために必要な事が一通り網羅されているので、先ず、頭の中を新しくするために、過去の版と見比べつつ前ページ読み通しましょう。

特にラムダの9章、LINQの10章、Reactive Extensionsの11章、asymc/awaitの18章の非同期周りは必ず手を動かして、実際にデバッガを使いながらその使い方と動作になじんでください。この二つはモダンなC#を取得するための基礎です。19章のXAMLと20章のASP.NETも同様にして、第7版で消えたWindows FormとWeb Formは過去互換性のためのレガシーテクノロジーだと頭に刻みつけましょう。

C#プログラマのための.NETアプリケーション最適化技法 (Programmer’s SELECTION)
C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION) Sasha Goldshtein Dima Zurbalev Ido Flatow サシャ・ゴルドシュタイン ディマ・ズルバレフ イド・フラトー 株式会社プロシステムエルオーシー

翔泳社 2013-07-23
売り上げランキング : 134665

Amazonで詳しく見る by G-Tools

皆さんもそれなりに.NET Frameworkのパフォーマンスチューニングについて知識や技術をお持ちだとは思いますが、それこそASCIIからMSDNマガジンの翻訳が出ていた頃の知識だけで何とかしようとしているなら、先ず立ち止まってこの本を読むべきです。とくに、2.0,4.0のタイミングでCLRも大きく変わっていますし、GCの動作も変わっている部分もあるので、もう一度この本で手法について再確認と再検討をしましょう。

プログラミング.NET Framework 第4版 (プログラミングシリーズ)
プログラミング.NET Framework 第4版 (プログラミングシリーズ) Jeffrey Richter 藤原 雄介

日経BP社 2013-10-10
売り上げランキング : 190544

Amazonで詳しく見る by G-Tools

CLR、特にスレッドとメモリ管理に関してもう一度この本でおさらいしましょう。とくにasync/awaitについてその仕組みをこの本で理解しておきましょう。

.NETのクラスライブラリ設計 (Microsoft.net Development Series)
.NETのクラスライブラリ設計 (Microsoft.net Development Series) Krzysztof Cwalina Bard Abrams 藤原 雄介

日経BP社 2009-12-23
売り上げランキング : 231837

Amazonで詳しく見る by G-Tools

C#のコーディング規約を、昔のオブジェクト倶楽部で公開された物や、電通国際システムが著者の書籍を参考にしたもののままにしていませんか?新しい言語バージョンやテクノロジーにあわせて、新しいコーディング規約も必要です。

この本は。実際にMSが.NET Frameworkを作った上での知見が詰まっているので、命名規則そのほか大いに参考に成ると思います。

また、中括弧に位置やコメントの有無、プロパティとコンストラクタはどっちを先に書くかと言ったくだらないことは、StyleCopやReSharperの様なツールに任せてしまった方が健全です。

コードの文書としてスタイルをこうしろでは無くて、どうしてそのスタイルが必要なのかを書くべきですし、枝葉末節な部分では無く、本質的な部分でどうコーディングすべきかをコーディング規約には書くべきだし、コードレビューでもそこを議論すべきです。

以下のCodePlexで公開されている以下のAviva Solutionのコーディング規約も非常に参考になります。
http://csharpguidelines.codeplex.com/releases/view/46137

如何に作るか

皆さんはただコードを書くと言うより、システム全体の設計をしていく立場であったりもすると思います。そこで大事なのが如何に作っていくかと言うところですが、そこも大きく変わってきています。

この秋にマイクロソフトから久々に如何に作るかのガイドライン「ビジネス アプリケーション向け .NET テクノロジ ガイド」が発行されました。それこそ.NETが登場した頃のWindow DNAから引き継いだ三階層構造、SOAPでの連系と言ったところからよりモダンなシステムアーキテクチャの構築に舵を切っていくためのガイドラインです。まずはこれをしっかり読んでいきたい。

次よりダウンロード http://www.microsoft.com/ja-jp/net/

如何に作るかの部分で、このガイドラインの中では大規模な開発での設計手法としてドメイン駆動設計が挙げられています。

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)
エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践) エリック・エヴァンス 今関 剛

翔泳社 2011-04-09
売り上げランキング : 77039

Amazonで詳しく見る by G-Tools

ドメイン駆動設計(DDD)の原典となる本です。大著ですし、翻訳が遅すぎた感もありますが、DDDを理解する上で外せませんし、自分のやり方を見直す良い機会に成ると思います。

ドメイン駆動 (Programmer’s SELECTION)
ドメイン駆動 (Programmer’s SELECTION) Jimmy Nilsson 尾島 良司

翔泳社 2008-03-20
売り上げランキング : 510523

Amazonで詳しく見る by G-Tools

前著を受けて、C#/.NETではどうすれば良いのかというのがこの本になります。

規模が小さければ確かにRAD的な開発でも、うまくやっていける場合も多いですが、意外に長く使われるシステムだと、後々大変なことになるので、DDDを取り入れた方が良いこともあると思いますので、あまり関係ないと思わずにDDDも勉強しましょう。

さらに進める

奴らの半歩先を行きたい方は、気になったキーワードでじっくり洋書を探していくか、Blogの検索をしていきましょう。LINQにしても、async/awaitにしても、Rxにしてもそれだけで1冊以上内容の濃い本があります。残念ながらそれらが翻訳されることは先ず無いので、Safari Books Onlineなども活用しつつ、洋書にもチャレンジしていきましょう。

まとめ

自分が嫌っていた「老害」にならないためには、奴らの半歩先を行く覚悟で新しい技術、手法を学んでいくしかありません。家庭もいろいろ難しくなってきて、子供が反抗期だったり、会社は会社でいろいろ大変だとは思いますが、せめて若い人たちのやりたい事を理解してあげられる、それも好好爺的にいいよいいよではなく、ちゃんと技術の善し悪しもわかった上で良いも悪いも言える「老害」でありたいものです。

さて、明日はいよいよオーラス25日はAi Lightさんです。では新潟からハリキッテどうぞ!!

7 thoughts on “C# 再履修者向けブックガイド”

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください