オルタナティブ・ブログ > プログラマー社長のブログ >

プログラミングでメシが食えるか!?

著書:ソースコードで体感するネットワークの仕組み

»

昨年、IPAのセキュリティ・キャンプに講師として参加し、講義に使った内容がようやく「ソースコードで体感するネットワークの仕組み」という著書として発売になります。昨年の夏までにはサンプルソースはとっとと出来上がっていたのですが、解説などを書くのに時間がかかり、ようやくまとまりました。まあ、正確には書くのに時間がかかったのではなく、書く気分になるために時間がかかったわけですが・・・。

技術書としては「ルーター自作でわかるパケットの流れ」に続いて9冊目?で、他はプログラマー向けの読み物などが4冊で、13冊目の著書です。今までで一番ソースコードの割合が高い気がしますが、ソースコードは実質5日程度で完成し、少ししかない説明文に数ヶ月かかっています(本当に書いている時間自体は短いですが)。ソースコード作成は生み出す楽しみがありますが、説明文は、ほぼ自分で知っていることを書き出す作業だけですので、ほとんど楽しみがありません。

さて、「ルーター自作でわかるパケットの流れ」でも十分マニアックで、良くこんなものを本にしてくれたものだと技術評論社さんにはビックリしましたが、今回の「ソースコードで体感するネットワークの仕組み」は、要するに「TCP/IPを自作しよう!」という感じの本ですので、これまた実にマニアックです。TCP/IPスタックなど自作しなくてもOSに備わっていますので、「何のために作るの?」「どうせ中途半端で使い物にならないのでは?」と思われるでしょう。しかし、たとえばRFC793を読んでTCP/IPをどれだけ理解できるものでしょうか?

何事でも同じですが、本を読むよりも、体験してみる方がはるかに理解は深まります。TCP/IPスタックを自作してみれば、TCP/IPのシーケンス管理がどうしてこれで成り立っているのか、など、身に染みてわかるものです。Linuxなどのカーネルのソースコードを読んでも、本を読むよりは理解できると思いますが、カーネルのソースコードはかなり複雑で難解です。それよりも、まずは基本部分だけでも良いので自作してみる方が細かいところまで体験でき、理解できると私は思っています。

もちろん、本当は私の著書など読まずに、RFC793を読みながら自分でゼロから作ってみる方がより良いと思うのですが、プログラミングでは「なにもないところから作り出す能力」と「参考になるものがあって応用する技術」で、かなり要求する能力が異なり(どちらが上か下かの話しではなく)、なにもないところから作り出すのは苦手な人が多いと私は感じてきましたので、こんな本でもあればやってみるきっかけになるだろうと書いてみました。コロンブスの卵と同じで、「TCP/IPスタックを作ると言っても、こんなしょぼいやり方なら、誰だってできるよ」と思うくらいシンプルで簡単なソースで作ってみましたが、意外とゼロから作れる人は少ないものです。

「こんなものを自作しても、何の役にも立たない」と考える人もいるかも知れませんが、実はこれをベースにしてある製品のエンジン部分に組み込むようなことをしています。なんでもあるものを使えば良いってものでもないと私は思っています。

「ルーター自作でわかるパケットの流れ」でも、この本をきっかけにネットワークパケットの世界にのめり込んだ、という人がいたりして、書いた本人としては嬉しい限りなのですが、今回の本も読んでくれた人にとって1つでも何かのきっかけになるようなことがあれば、著者としてなによりの喜びです。そして、書く機会を与えてくださった技術評論社さん、そして、これまでの著書を読んでくださった皆様のおかげで、今回も本として世に出すことができたことに心から感謝しています。

Comment(0)