書籍タイトル:図解入門TCP/IP 第2版
読む時間:12:20
はじめに
これまでWeb系エンジニアとして、フロントエンド・バックエンド問わず、さまざまな開発に携わってきました。
その中でよくお客様から聞かれるのが、
「なんでこの画面、表示が遅いんですか?」
「なんでデータの取得にこんなに時間がかかるんですか?」
という質問です。
実際には、実装を見直すことで改善できるケースもあれば、そうでないケースもあります。
特に「そうでないケース」の多くは、通信周りに原因があることが多いと感じています。
これまで私は、こういった質問を受けた際には、MDNなどのリファレンスをその場で調べながら、なんとなく回答してきました。
ただ、毎回そうやって調べるたびに「通信の仕組みを一通り、きちんと自分の中で理解しておきたい」という思いが強くなっていきました。
そんな経緯もあり、今回、本書を手に取ることにしました。
📚 本書の詳細情報
印象に残ったポイント
1. ソフトウェアエンジニアでも、通信機器(ハードウェア)を含め、L1からL7を理解したほうがよい
これは書籍の内容というより、実際に私が読んで感じたことです。
業務中に物理的なハードウェアを触る機会はあまりなくても、L3(ネットワーク層)やL4(トランスポート層)、L7(アプリケーション層)といった言葉には、API設計やインフラ構成の中でよく出会います。
特に、AWSの Load Balancer や API Gateway を扱う際など、「L4って結局どこの話?」「このエラーってL7のどの部分の影響?」といった疑問に直面することもあります。
こういった場面で、通信レイヤーに関する基本的な知識が曖昧なままだと、結合試験時のエラーシューティングや設計の判断が難しくなります。
だからこそ、「一度だけでいいから、通信の全体的な仕組みを俯瞰して理解しておくこと」、そして「各通信レイヤーの役割を自分の中でざっくりでも整理しておくこと」が、将来的にかなり役立つと感じました。
2. 少なくとも、TCP・IP・HTTPの知識が必須
こうした知識は、私が新卒でエンジニアになったときの研修(前職)では、まったくカバーされていませんでした。
周囲のエンジニアに聞いてみても、「プログラミング言語だけ教えて、あとは自分で頑張ってね」というスタイルの会社は、決して珍しくないように感じています。
でも私は、TCP / IP や HTTP をしっかり理解していないと、Webエンジニア(フロントエンド・バックエンド・インフラ問わず)を名乗るのは難しい、と強く思っています。
このあたりの基礎が曖昧だと、技術的な会話が噛み合いにくかったり、設計・実装・テストの進行がバラバラになったり、一人で問題を解決できないケースが増えてしまうと思います。
本書では、通信レイヤーごとのプロトコルについて、かなり細かい説明があり、
「ここは重要」「ここは一旦読み飛ばしてOK」といった作者自身の補足も丁寧に入っているため、非常にバランスの良いテキストだと感じました。
まとめ・感想
これまで約5年間、Web業界で仕事をしてきて感じたのは、「エンジニア」と「作業員」の価値の差は、最終的に知識の深さや姿勢によって分かれるということです。
私の考える「エンジニア」とは、
日々の業務の中で自ら学び、公式ドキュメントや技術書を丁寧に読み込み、それらを自分の言葉で理解し直す力を持っている人。
そして、システムの全体像を設計できたり、他の人にも自分の言葉で説明・共有できたりする、そういう姿勢とスキルを持った人です。
一方で、「設計書をただ読み、なぜそう設計されているのかを考えず、HTTPの仕組みも理解せずに、先輩の書いたfetch文をそのままコピペして実装する」といったスタンスは、
正直言って、下流の“作業員”的な立ち位置になってしまうのではないかと感じています。
前職では、そうした後者のような姿勢の先輩が多く、技術的な会話や成長の機会がなかなか得られず、限界を感じて転職を決意しました。
いまの会社では、技術への探求心がある方々と働けており、自分ももっと学んで成長したいという思いが強くなっています。
そして現在、AIの急速な進化によって、単なる作業者のような業務は、AIによって一瞬で代替されてしまう時代に入りつつあります。
だからこそエンジニアは、より深い技術知識を内製化し、自分の武器として持つ必要がある。
AIにコードを書かせるのではなく、そのコードをレビューし、正しく導ける立場になることが求められていると感じます。
このような危機感から、今後はさらに、通信やプロトコル、インフラまわりを含めた基礎技術のテキストを丁寧に読み、
知識を「調べて分かった」ではなく「自分の中に蓄積された本物の理解」へと歩んでいきたいと思っています。