拙著「Linuxネットワークプログラミング」

2010/2/25-2
Linuxネットワークプログラミング

Linuxネットワークプログラミング」という本を書きました。 LinuxでCを利用してネットワークプログラミングを行うための解説書で、私にとって初の書籍執筆です。

昨年2月にソフトバンククリエイティブさんから書籍執筆のオファーを頂き、開始から約一年後の発売となります。 今回、C言語によるLinuxのネットワークプログラミング解説書籍を執筆する機会を頂けたのですが、書籍の大きな方向性として以下の点が挙げられます。

  • 可能な限り、ソースコード全文を掲載する。断片的なソースコードだと手元で即座に試しにくい
  • メインはIPv4を意識しながら書く
  • ただし、getaddrinfo()を前提とし、IPv6が存在することを前提に書く
  • IPv6移行がメインの書籍ではない。インターネットの世界がIPv4/IPv6デュアルスタックで運用されることになるという前提でネットワークプログラミング解説書を書いているだけ
  • select/pollは旧APIとし、epollを前提に書く
  • gethostbyname, inet_addr, inet_ntoa, select/pollなども軽く紹介する
  • 通信だけではなく、ネットワーク設定やIPCなど必要になりそうなものを広く紹介する
  • ioctlによる情報取得/設置とともにNetlinkなどの比較的新しい方法を紹介する
  • Wiresharkによるデバッグ方法を解説したり、生パケットプログラミングなども解説して「ネットワークそのもの」への興味と理解を促せたら嬉しい
  • 世の中Webを利用した検索が当たり前なので、拙著だけで全て完結しようとせず、キーワードを示して興味を促すことも目指す。キーワードを知って興味を持たないと検索ができないため

だいたいこのような感じで書いてみましたが、私は学生時代はネットワークデーモンを作ったり、会社員時代はホームネットワーク家電の組み込み開発をしていたので、全体的に多少視点が偏ってるかも知れません。

拙著の章目次は以下のようになっています。

Chapter 1 インターネットの仕組み
Chapter 2 TCP通信の基礎
Chapter 3 UDP通信の基礎
Chapter 4 ネットワーク情報の取得と設定
Chapter 5 Netlinkによる情報取得と設定
Chapter 6 基本的な通信関連関数
Chapter 7 プロセス間通信
Chapter 8 複数のソケットを扱う
Chapter 9 通信プログラムのデバッグ
Chapter 10 サーバプログラミング詳解
Chapter 11 デュアルスタックプログラミング
Chapter 12 生パケットプログラミング
Chapter 13 マルチキャストプログラミング
Appendix

書籍発売に伴い、このサイト内にあるLinuxネットワークプログラミング解説コーナーに拙著「Linuxネットワークプログラミング」の紹介というコーナーを新設しました。 節を含むさらに詳細な目次や、PDFによる本文サンプルへのリンク、ソースコードまとめダウンロード、ソースコード個別参照用ページ、書籍中の間違い一覧、などの情報を公開しています。

PDFによるサンプル配布はソフトバンククリエイティブさんにお願いして実現しました。 はじめに、目次、Chapter 1 インターネットの仕組み、Chapter 2 TCP通信の基礎、Chapter 3 UDP通信の基礎が含まれるPDFです。 前半100ページ分になります。

技術書は価格が高くなりがちですが、拙著も例外ではなく決して安価ではありません。 そのため、ネット上から購入するにしても、事前に内容や作風ををある程度見て頂ける環境を整えることが最善だと考えています。 ソースコードに関しては、全て公開してあるので、目次とソースコードを眺めながらPDFで公開していない部分を想像していただき、全体的にどのような内容であるかや、この書籍の守備範囲などを見て頂ければと思います。

あと、今回の執筆にあたり、私の知識や能力が足りなかった部分も非常に大きく、原稿納期との戦いでもあったので、色々と不備があるかも知れません。 ご指摘を頂いた不備は確認しつつ、修正をネット上に公開していきたいと思います。 また、チャンスがあれば書籍側にも反映できれば嬉しいと考えています。

デザイン

カバーデザインは、永松大剛氏(http://www.buffalo-gym.com/)によるものです。 お会いした事はありませんが、良い色合いが出ずに通常よりも多く作り直しが行われてカバーデザインに時間がかかったという話は伺いました。 こだわりのカバーデザインであるとのことでした。

Amazonなどでの書籍写真では灰色の地味な書籍カバーに見えますが、実物を見ると多少イメージが違います。 書籍外側のカバーとしてレザックが利用されており、表面加工によるテカリとレザックのシワが独特の雰囲気を出している気がします。

斜めから見た感じと、表面のアップは次のような感じになっています。



本文デザインと組版はクニメディア株式会社さんが行われたようです。 こちらもお会いした事はありませんが、ここでお礼を申し上げたいと思います。 今回はギリギリまで色々と大幅な変更や図の追加等を行いまくったので、ご負担をかけたような気もしています。 念のため、ここでお詫びも申し上げておこうと思います。

最後に

初の単著ということで、文章をまとめたり、書籍を執筆するということに関して考える良い機会でした。 関わった皆様、ありがとうございました。

読者となる皆様、よろしくお願い致します。

プロフェッショナルIPv6解説動画シリーズ再生リスト

動画で学ぶ「プロフェッショナルIPv6」を作っています。 もしよろしければご覧ください。お楽しみいただければ幸いです!