C# .NETネットワークの入門書なのに...

区立図書館でネット予約して、「Visual C#ではじめるネットワークプログラミング1基礎編」という本を借りた。

まぁ、全くできないわけではないけど参考になる情報が少しでも得られれば、と思って借りてみた。

がっかりした。プログラミングの本なのに、TCP/IPの基礎から書いてある。意味が無い。IPアドレスの体系、今やほぼ死語?となりつつあるクラスの概念、サブネットの話とか、プロキシやNATの話まで書いてある。正直、ネットワークプログラマには必要のないレベルの話である。

一応、私個人は経済産業省の「テクニカル・エンジニア(ネットワーク)」の試験に昔合格したこともあるので簡単に書いておく。

上記の話は、ネットワークを構築する人間がわかっていればいい話であって、プログラマはせいぜい、IPアドレス(V4が基本だろうが、今からならV6も必要になってくるだろう)とDNSの話程度が理解できていれば充分なのである。

というのも、ネットワークアプリケーションから見た場合、通信相手がIPリーチャブルかどうかは一切関係ないからである。この本でもネットワークプレイヤーの話を書いているが、階層レベルを作るというのはそういうことなのである。プログラマはNATされていようがされていまいが気にする必要は全くなく、そんなものに特別な意識を払ってプログラミングする必要もない。レイヤーが違うのであるから。

プロキシはアプリケーションレイヤーで動くので、ヘッダが書き換わるため、意識しなければいけない部分があるかもしれないが、それでもプロキシの存在をアプリケーションレイヤのプロトコルに含めれば同じ話になってしまう。

サブネットマスクが違うから通信できないなどという話は、ネットワークプログラムを行う人間が考える話ではなく、PCの設定をする人間が知っていなければならない話であろう。そういう意味で、この本はただでさえ薄いのに内容がなくなってしまっている。

そもそもC# .NETでネットワークプログラムをする人間が本で勉強する、といった場合、その時点でプログラミング初心者ではないと考えられる。私が想定できるパターンは次のどちらかだ。

  • 他の言語でネットワークプログラムを作成した経験はあるが、C# .NETではやったことがない
  • C# .NETでスタンドアロンのアプリケーションを作ってきて、新たにネットワークを使った開発をしたい

どちらにも当てはまらない人間に向けていきなりこのテーマはありえないと思う。また、IPアドレスやDNSの仕組みが理解出来ないのであれば、PC入門書のネットワーク設定の項目を読むか、ネットワークの本で勉強すべきであろう。このような本にまとめられても冗長になるだけだ。

と、ただの感想。

コメント