この記事を読むのに必要な時間:およそ 1 分
「C#の基本的な文法はある程度理解したけど,覚えた文法をどうやって適用し,どうプログラムを組み立てたら良いのかよくわからない」 ——初級者プログラマーの多くはそんな悩みを抱えているのではないでしょうか。この本は,そういったC#プログラマーになり立ての人のために書かれた本です。
C#の文法を理解しただけでは,プログラムは作成できません。解こうとする問題の手順と利用するデータ構造を考え,それをC#のコードとして記述するスキルが必要になってきます。.NETが用意しているさまざまなクラスの活用方法も身につけなければなりませんし,メンテナンスしやすいC#らしいコードを書くための知識も必要です。
これらのスキルを手に入れる近道は,現場で利用されている「イディオム」や「定石」といった「パターン」を学習することです。このパターンを自分の中に叩き込むことが上達の早道なのです。
そのため,本書では,オブジェクト指向でのわかりにくい考え方の再確認から出発して,C#に備わっている便利な機能の使い方,データの扱い方,フレームワークの利用の仕方を,現場で使われる「イディオム/定石」を中心にわかりやすく平易な言葉で解説していき,読者がC#プログラミングの世界に入っていくお手伝いをします。なお,無味乾燥なパターン集,カタログ集とならないよう,覚えた文法をどうやって適用したら良いのか,どうプログラムを組み立てたら良いのか,なぜそのような記述にするのかといった点についても,できるだけ書き添えるようにしています。それが本書の大きな特徴となっていると思います。
もう一つ,プログラミングを上達させるうえで重要なことは,小さなプログラムでよいので自分の力で書いてみることです。それも何回も何回も。それが似たようなプログラムであってもかまいません。とにかく数多くのコードを書くことが大切です。自分が完全に納得するまで先に進めない——そう思っている人は,なかなかプログラミングが上達しません。とにかく手を動かし,イディオムや定石を自分自身に叩き込む。これを繰り返すことです。そうすれば,魔法の呪文のように思えたコードが自分の中で消化され,それがどんな意味を持つのか,なぜそう書くのが良いのかがわかってくるはずです。
「習うより慣れよ」そうすれば,この場合はあのデータ構造を使おうとか,このイディオムを使おうとか,こういったクラスを作ろうといったことが,頭の中に思い浮かぶようになるはずです。そのため,本書では各章の最後に演習問題を載せています。ぜひ,本書で学習したイディオムや定石を活用して,自分の力で問題を解いてみてください。
そんな初版『実戦で役立つC#プログラミングのイディオム/定石&パターン』の2017年3月の発売から7年以上を経て,今回,全面改訂を行いました。初版では.NET Framework4.6+C#6.0を扱っていましたが,改訂版では「.NET8.0+C#12.0」がターゲットになっています。
この7年間で,C#の世界は大きく進化しました。とくに.NET Frameworkから.NET Coreおよび.NET 5以降への移行が大きな変革をもたらしたと言えます。また,Linux, macOSでもWindowsでも動作するマルチプラットフォーム対応になりました。C#の文法も,null参照許容型,レコード型,パターンマッチングなどさまざまな機能が追加され,より表現力に磨きがかかっています。
今回の改訂ではこれらに対応し,すべてのサンプルコードをゼロから見直しWindowsに加えて,macOSでの動作検証を実施しました。また,書籍の内容構成としては,初版での反響を踏まえ,改訂版では最新のC#のクラスにまつわる文法を解説するChapter 5「クラスに関するイディオム」,C#のさらなる優れた機能を収録したChapter 16「C#を使いこなす」,.NETの便利な小技を集めたAppendix「その他のプログラミングの定石」を新設/構成変更を行いました。
本書を読み始めるにあたっては,C#のすべての文法を覚えている必要はありません。実際,C#の学習を始めたばかりで文法がすっかり頭に入っているなんて土台無理な話です。自分の知らない文法が出てきたらそのつど調べ,焦らず,少しずつ覚えていけばよいのです。初心者にとって理解が難しい,あるいはなじみの薄いと思われる文法については,可能な限りコラムや脚注で説明をしていますので,それも参考にしてください。
なお,本書は「現場」の視点で書かれています。内容的に妥協はしていないつもりですので,少し経験を積まれた方にも十分に参考になるものと自負しております。
読者の皆さんが,本書を活用して,さらに実力をつけ,プログラミングの楽しさ,C#のすばらしさを感じ取っていただければ,筆者にとってこれほどうれしいことはありません。