C#5.0入門書の決定版 – 書評:『スラスラわかるC#』

スラスラわかるC# (Beginner’s Best Guide to Programmin)

一通り読み終えたので、感想も兼ねて書評を。

タイトルでも書いた通り、本書は、C#5.0の入門書として、日本語で読めるものの中ではベストだと思う。C#は結構言語仕様が大きくて、便利機能がたくさんある反面、覚えることも多い。

C#入門者の多くはWindowsでデスクトップアプリが作りたくて学び始めると思うけど、GUIの作り方とC#の書き方を並行して覚えるのはかなり大変。急がば回れで、まず言語仕様を押さえてから、GUIの作り方を学んだほうがよいと思う。

本書『スラスラわかるC#』の良いところは、解説を言語仕様に絞って、適切なボリュームで、十分なサンプルコードとともに説明しているところ。

言語仕様解説のコンパクトさなら『パーフェクトC#』のほうが上だけど、コンパクトすぎてサンプルコードが少ないという問題がある(その割に結構詳しいことまで解説しているので、行間を補いながら読む必要があり、プログラミング経験者でも、C#未経験の場合は読みこなすのが難しい)。

なお、表紙を見ると「プログラミング知識ゼロでも大丈夫」的なことが書いてあるが、鵜呑みにしないこと。これでプログラミング入門は相当難しい。逆に、ifとかforとかいった制御構造にやたら分量をとっていたり、オブジェクト指向とは…的な内容を延々語ってたりすることがないので、プログラミング経験者でも無駄なく学ぶことができる。

今年にはC#6.0が出るけど、それほど大きな言語仕様の変更があるわけではないので、あと2, 3年は本書の価値は失われないはず。

.NET Frameworkのクロスプラットフォーム戦略は、Javaが20年前に通った道をこれから歩むのか…って感じでちょっとつらそうだけど、C#にはUnityという強力なサポーターが生まれたし、C#の言語仕様は静的型付けのオブジェクト指向言語の中ではかなり先進的(Java8には2014年に入ったラムダ式を、C#は2007年のC#3.0でサポートしていた)。Windows環境があるなら、学んで損はない。

『自分のペースでゆったり学ぶ TCP/IP』を読了

[改訂新版] 自分のペースでゆったり学ぶ TCP/IP

3分間ネットワーク基礎講座』シリーズの網野衛二氏が、『3分間ネットワーク基礎講座』よりもさらに初心者向けにやさしく書いた入門書。

タイトルには「TCP/IP」とあるけど、物理層からアプリケーション層まで、OSI参照モデルの全レイヤーを扱っている。1冊を通して読むことで、TCP/IPでデータがネットワーク上を流れる際の「流れ」を概観することができる。

具体的には、以下のような流れ(HTTPの場合)。

  1. クライアントがHTTPのプロトコルに基づいたリクエストを発信する
  2. トランスポート層でリクエストに宛先と送信元のポート番号がつけられ、スリーウェイハンドシェイクのデータが用意される
  3. インターネット層でデータに宛先と送信元のIPアドレスがつけられ(IPパケット)、LAN内のルータに送信される
  4. インターフェイス層で宛先と送信元のMACアドレスがつけられ(イーサネットフレーム)、宛先のルータに送信される
  5. ルータにデータが届くと、イーサネットヘッダが外される
  6. ルータはインターネット層でIPヘッダを確認し、自分が宛先でない場合はルーティングを行って新しいMACアドレスをつけ、別のルータに転送する
  7. 宛先のルータにデータが届くと、イーサネットヘッダ・IPヘッダが取り外され、スリーウェイハンドシェイクのレスポンスを返す
  8. スリーウェイハンドシェイクが完了すると、サーバはリクエストされたデータを返す

逆に言えば、上に書いたような流れがすでに理解できている人は読む必要がない。第6章で流れがまとめられているので、読むかどうか迷っている人は、まず第6章を読んで、知っていることしか書いてないようなら別の本を読んだほうがいい。また、プロトコルやヘッダの実際については書いていないので、具体的なヘッダの中身等が知りたい人にも向かない。

ターゲットがきっちり定まってて、対象読者なら読めば学びがあるし、読む必要が無い人は読まずに済ませられるという点で、かなり良書だと思う。

また、随所に「○○を忘れてしまった人はxxページ参照」というリンクがちりばめられているので、ゆっくり読んで前に学んだ内容を忘れてしまっても大丈夫。本の作りは、技術書というよりも学習参考書に近い。

『AngularJSアプリケーション開発ガイド』を読了した

AngularJSアプリケーション開発ガイド

AngularJSの開発メンバーが書いているだけあって、「なぜ、AngularJSを使うのか」という部分の動機付けはばっちり。また、2章まで読めばAngularJSの全体像がつかめる構成になっていて、ここも非常に良い。一方、フロントエンド技術という移り変わりの激しいものを扱っている書籍という限界から、2014年12月現在、既に古くなっている部分も結構ある。第3章のyeoman関係は、現在では全く役に立たない。

そういった事情から、良い点もあるのだけど、他人にお勧めはしづらい。会社に1冊置いておいて、AngularJS入門者にはまず2章まで読ませ、その後『AngularJSリファレンス』を渡す、といった使い方が良いのでは。

ちなみに、本書の改訂版(?)である『AngularJS: Up and Running』も既に発売されている。本書の内容をアップデートし、さらに加筆したものらしい(ページ数が200→300に増えている)。