msksgm’s blog

msksgm’s blog

Webエンジニアです。日々の勉強記録、技術書感想、美術観賞感想を投稿します。

「マスタリング TCP/IP 入門編(第 6 版)」感想

概要

マスタリング TCP/IP 入門編(第 6 版)を読みました。 感想を書きます。

www.ohmsha.co.jp

前提

目的

本書を読んだ背景は以下です。

事前知識

過去に読んだネットワークの書籍は以下です。ネットワークの基礎知識を定着するために応用情報技術者試験の内容を勉強し、2023 年 10 月に受験しました。普段は Web アプリケーションエンジニアとして勤務しているため、基本的な HTTP の知識は持っています。

日は本書も以前読んだので、2 回目になります。以前はほぼ初めて読んだネットワークの書籍でしたので、あまり内容が入ってきていませんでした。

msksgm.hatenablog.com

読了時間

だいたい、6 ~ 8 時間ほどで読みました。 少し込み入って理解が難しそうな部分は、読み飛ばして進めたので、予定よりも早く読み終わりました。

感想

1 回目も読んだときの感想と同様に、TCP/IP 周りについて図も加えた説明で体系的に学びやすい文章だと思いました。 初学者でもとりあえず眺めるだけでも体系的に学ぶことができる書籍だと引き続き考えています。

2 回目を読んで思った感想は、本書が初めて読むネットワークの書籍ならば、もう少し簡単な書籍で一通り学んだり、手を動かして学んだ後に本書を読んだ後に読み直すと良さそうだと思いました。 具体的には下記の書籍で前者の書籍で簡単にネットワークを学び、後者の書籍で手を動かして学びました。 それらを踏まえて本書を読むことで、以前よりも内容が入ってきました。

特に TCP/IP のヘッダの詳細な図解だったり、歴史的背景、細かいところに手が届いた内容で説明されているので、より知識を定着できた実感があります。

逆にいえば、現時点では込み入った部分(特に第 7 章「ルーティングプロトコロル(制御プロトコル)」)の理解が難しかったです。 この領域は、実際にネットワークを構築やネットワークスペシャリストを受験するタイミングであらためて整理しようと考えています。

次に関連で勉強すること

引き続きネットワーク系の知識を拡充していきます。 以下の書籍も検討していますが、ネットワークスペシャリストの勉強を始めていこうと考えています。

まとめ

マスタリング TCP/IP 入門編(第 6 版)の 2 回目を読みました。 ほかのより初歩的な書籍を読んだ上での再読だったため、以前よりも知識を定着させながら読めました。 難易度の高い部分はまだまだですので、ネットワークスペシャリストの勉強を開始して自身のネットワークの知識を向上させていきます。

「Linux で動かしながら学ぶ TCP/IP ネットワーク入門」感想

概要

Linux で動かしながら学ぶ TCP/IP ネットワーク入門を読みました。 感想を書きます。

前提

目的

本書を読んだ背景は以下です。

  • 2023年10月〜12月の目標の注力分野の 1 つにネットワーク・Linux を掲げていた
  • SRE に関心があるので、ネットワーク周りの知見を深めたかった
  • ネットワークの知識はほとんど初心者で、学んだ知識も読み物ベースだったので、手を動かしながら学べる内容を優先した

事前知識

ネットワークの知識は以下ぐらいです。普段は Web アプリケーションエンジニアとして勤務しているため、基本的な HTTP の知識は持っています。

読了時間

本書の構成は下表の 10 章構成となっています。 1 ・9 ・10 章を除くと、7 章を 1 つの章に 1.5 ~ 2.5 時間で読んだので、だいたい 10.5 ~ 17.5 時間で読みました。 ネットワークの用語は単語レベルでは意味を知っていたので、手を動かしてなにをしているのか理解するのに時間をかけていました。

タイトル
1 はじめに
2 TCP/IP とは
3 Network Namespace
4 イーサネット
5 トランスポート層プロトコル
6 アプリケーション層のプロトコル
7 NAT
8 ソケットプログラミング
9 おわりに
10 付録

所有している PC が Apple Silicon の M1 Max のため、AWS の EC2 を利用しました。 マシンイメージは Ubuntu 20.04 LTS を利用し、勉強を開始するたびに新規作成し終了のとき破棄していたので、数百円程度ですみました。

本書を読む前に著者の書籍紹介にも目を通しました。

blog.amedama.jp

感想

TCP/IP の内容を、詳細な解説とサンプルコードによって、手を動かしながら学ぶことができる非常に良い書籍でした。 今まで学んできたネットワークの知識を本書で手を動かしながら学ぶことができたので、確実に理解を深めることができたと考えています。 今後初学者にネットワークの知識を学びたいと聞かれたら、読み物ベースで 1 冊学んだあとに、手を動かしながら読む書籍として本書を強く推薦します。

具体的に良かった点は 2 点あります。
1 点目は、基礎的な部分を手を動かしながら学べることです。 Linux を利用することで Network Namespace を利用しながら、ネットワークを簡単に構築できて、簡単に捨てられます。 自分はネットワーク初心者ですので、ネットワークを学ぶには物理的に用意したりパブリッククラウドを利用する必要があると考えていました。 しかし、本書の内容で大きな準備も不要で基礎的な部分を繰り返し学べて良かったです。
2 点目は、サンプルコードが充実していることです。 特に、本書で説明されているネットワークを構築する手順が 1 行ずつまとめられているだけでなく、呼び出すだけですべて再現されるスクリプトが用意されていることが好印象でした。 最初に学ぶときには逐一実行して、復習のために再確認したいときには、自動で再構築できるため、理解を深める一助になっていたと考えています。

ネットワーク初学者が最初に本書を読んでも良いですが、個人的には、ほかの読み物ベースのネットワーク入門書([改訂新版]3 分間ネットワーク基礎講座など)を一冊読むことをお勧めします。 本書でもネットワーク用語の解説がありますが、まずは一通り単語と意味を知ったあとに、本書で手を動かすと良い補完になり理解を深められると考えています。

次に関連で勉強すること

引き続きネットワーク系の書籍を読み進めていきます。 現段階では以下の書籍を考えています。 今回は、手を動かしながら学ぶ書籍でしたので、次回は読み物の書籍を読もうと考えています。読み物の書籍の度に本書を読んでも良いのではないかと考えています。 また、ネットワークスペシャリストの受験も検討しています。

まとめ

ネットワーク初学者が手を動かしながらネットワークを学べる良い書籍でした。 サンプルコードがすばらしく、繰り返し復習できる内容となっています。 ネットワークを学びたい初学者にお勧めの本がないか聞かれたときには、本書と[改訂新版]3 分間ネットワーク基礎講座をお勧めします。 次は、読み物に戻って、マスタリング TCP/IP―入門編を読みます。

「Real World HTTP 第 2 版」感想

概要

Real World HTTP 第 2 版を読みました。 感想を書きます。

www.oreilly.co.jp

前提

目的

本書を読んだ背景は以下です。

  • 2023年10月〜12月の目標の注力分野の 1 つにネットワーク・Linux を掲げていた
  • SRE に関心があるので、ネットワーク周りの知見を深めたかった
  • ネットワークの知識はほとんど初心者だったので、本書の内容が Web アプリケーションよりのだったため、読みやすそうだと考えて読むことにした

事前知識

ネットワークの知識は以下ぐらいです。普段は Web アプリケーションエンジニアとして勤務しているため、基本的な HTTP の知識は持っています。

他には、体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版の第 3 章が HTTP の内容でしたので、その内容をベースとした HTTP の知識を持っています。

読了時間

平均 1.5 時間で 10 日間かけずに、読了したので 15 時間足らずで終えたと考えています。 全部で 14 章構成となっており、一部のコードは写経しつつ読み進め、一部は読み物として読んでいたため章ごとにかかった時間はまばらでした。

感想

Web アプリケーションが知るべき HTTP の基本的な知識を歴史も踏まえて学ぶことができる一冊でした。 題材が幅広くカバーできており、最近の内容まで抑えられているため、エンジニアになりたての初学者にお勧めできる一冊だと思いました。 個人的な意見としては、「Web を支える技術」の一部の内容が若干古くなってきているため、「Web を支える技術」を読むことを検討している人には合わせて本書をお勧めします。

具体的によかった部分は 3 つあります。
1 つめは、HTTP について歴史から学ぶことができ、文献も RFC を引用していることです。 HTTP の基本的な 4 つの要素(メソッド、ヘッダ、ステータス、ボディ)から始まり、HTTP/2 と HTTP/3 の解説があります。 XHR では当たり前になっている、DELETE、PUT メソッドがいつから導入されたのかだったり、HTTP/2 と HTTP/3 の特徴的な部分が詳細でわかりやすかったです。 本書を読む際には、大きな事前知識なしで HTTP/2 と HTTP/3 を学べました。
2 つめは、HTTP をベースにしたほかの技術の説明があることです。 Fetch API、Server-Sent Events、WebSocket、WebRTC といった技術は名前だけは知っていましたが、成り立ちや具体例については知見がありませんでした。 本書はそれらについても触れられているのがよかったです。 特に、WebSocket について関心があったのですが、良い学習方法が見つかりませんでした。 そこで本書が gorilla/websocketexamples が紹介されており、非常に参考になりました。 WebSocket を学ぶ際の参考にしようと考えています。
3 つめは、Web アプリケーションに対しての説明も豊富なことです。 12 章から 14 章にかけては、Web アプリケーションよりの内容です。 近年の Web アプリケーションの構成の分類から、クラウドによって一般化された技術、そしてセキュリティとの関わりについて記述されていて、読み物ですが非常に実践的でした。 これらの分野は受動的に学ぶ機会が乏しいと考えているため、特に初学者に読んでほしい内容だと思いました。

総じて、タイトル通り HTTP の内容から始まり、HTTP をベースにしたほかの技術の説明、最終的には最近の Web アプリケーションにまつわる内容まで説明している書籍でした。 本書はすでに第 2 版となっていますが、今後の更新も楽しみです。

次に関連で勉強すること

引き続きネットワーク系の書籍を読み進めていきます。 現段階では以下の書籍を考えています。 読み物としての書籍と、手を動かしながら学ぶ書籍の良い塩梅をとりながら読み進めていくことを考えています。 また、ネットワークスペシャリストの受験も検討しています。

まとめ

ネットワークの基本的な知識を抑えるために、Web アプリケーションエンジニア観点から読みやすそうな本書を読みました。 Web アプリケーションが知るべき HTTP の基本的な知識を歴史も踏まえて学ぶことができる一冊でした。 HTTP だけでなく、モダンな内容についても触れられており実践的でした。 今後も引き続きネットワークの勉強をしていきます。

2023年11月の目標

概要

2023 年 11 月の目標です。

勉強関連

SRE・DevOps、Linux・ネットワーク、LT 発表を対象に OKR を実施しています。

10 月〜12 月の目標

10 月〜12 月を終えた時点での目標は下記です。

注力分野 Objective(3 ヵ月経過後の目標) Key Result(必要だと考えていること)
SRE・DevOps SRE の継続的な学習に取り組んでいる。トイルの削減と監視・モニタリングの導入を行う 「サイトリライアビリティワークブック」「SRE の探求」の勉強会を行う。トイルの削減と監視・モニタリングの導入を行う
ネットワーク・Linux SRE に必要な技術的要素として、継続的な学習をしている。 Linux・ネットワーク系の書籍を読んでいる。応用情報技術者試験を受験する。ネットワークスペシャリストの受験を検討する
LT 発表 説明能力向上のため、業務内外問わず登壇した経験がある 毎月 LT 発表する

msksgm.hatenablog.com

11 月の目標

それを達成するための 11 月の目標は以下になります。

注力分野 Objective(1 ヵ月度ごとの目標) Key Result(具体的な行動予定)
SRE・DevOps 個人で SRE について継続的な学習をしている。業務でトイルの削減と監視・オブザーバビリティを説明、導入する 「SRE の探求」の勉強会を開催する。業務で監視またはオブザーバビリティツールについてまとめる
ネットワーク・Linux ネットワークについて知見を深めている。 Real World HTTP 第 2 版」を読む。ほかの書籍も読む。
LT 発表 LT の経験を得る 業務内外問わず、LT 発表を 1 回行う

読書

OKR の本では下記の本を読みます。

2023年10月の振り返り

概要

2023 年 10 月の振り返りです。

勉強概要

今月は下表のように勉強していました。 合計、約 147.4 時間です。 今月は目標にしていた、120 時間 ~ 150 時間を無事に達成できました。

項目 1 週目 2 週目 3 週目 4 週目 5 週目(10 月 30 日、10 月 31 日)
平日朝の勉強時間 約 18.3 時間(44 ポモドーロ) 約 12.5 時間(30 ポモドーロ) 約 15.4 時間(37 ポモドーロ) 約 16.7 時間(40 ポモドーロ) 約 7.92 時間(19 ポモドーロ)
平日夕方の勉強時間 約 1.25 時間(3 ポモドーロ) 約 0.833 時間(2 ポモドーロ) 0 時間 約 2.08 時間(5 ポモドーロ) 約 1.67 時間(4 ポモドーロ)
休日の勉強時間 約 22.5 時間(34 + 20 ポモドーロ) 約 19.6 時間(14 + 33 ポモドーロ) 約 11.2 時間(22 ポモドーロ + 2 時間) 約 10.4 時間(25 ポモドーロ) 0 時間
「SRE ワークブック」/「SRE の探求」勉強会 約 2 時間 約 2 時間 約 1.5 時間 約 1.5 時間 約 0 時間
そのほかの勉強会 0  時間 0 時間 0 時間 0 時間 0 時間
合計 約 44.1 時間 約 34.9 時間 約 28.1 時間 約 30.7 時間 約 9.59 時間

10 月の OKR 結果

2023 年 10 月〜12 月の目標

2023年10月〜12月の目標に記述した OKR 目標は、SRE・DevOps、ネットワーク・Linux、LT 発表です。 具体的には下表の通りになります。

注力分野 Objective(3 ヵ月経過後の目標) Key Result(必要だと考えていること)
SRE・DevOps SRE の継続的な学習に取り組んでいる。トイルの削減と監視・モニタリングの導入を行う 「サイトリライアビリティワークブック」「SRE の探求」の勉強会を行う。トイルの削減と監視・モニタリングの導入を行う
ネットワーク・Linux SRE に必要な技術的要素として、継続的な学習をしている。 Linux・ネットワーク系の書籍を読んでいる。応用情報技術者試験を受験する。ネットワークスペシャリストの受験を検討する
LT 発表 説明能力向上のため、業務内外問わず登壇した経験がある 毎月 LT 発表する

2023 年 10 月の OKR 目標

2023年10月の目標に 10 月の目標は下表に落とし込んでいました。

注力分野 Objective(1 ヵ月度ごとの目標) Key Result(具体的な行動予定)
SRE・DevOps 個人で SRE について継続的な学習をしている。業務でトイルの削減と監視・オブザーバビリティを調査する ワークブックの勉強会を終える。業務で監視またはオブザーバビリティツールについて調査する
ネットワーク・Linux Linux について知見を深めている。応用情報技術者試験を受験 Go ならわかるシステムプログラミング 第 2 版」または「Linux で動かしながら学ぶ TCP/IP ネットワーク入門」を読む
LT 発表 LT の経験を得る 業務内外問わず、LT 発表を 1 回行う

2023 年 10 月の OKR 結果

今月は以下のようになりました。 全体的にバランスよく取り組めたと考えています。

注力分野 達成度(100 点満点) Key Result(行動結果)
SRE・DevOps 80 点 ワークブックの勉強会を終えた。業務でシステムトラブル発生時の対応訓練を始めた。モニタリング・オブザーバビリティについて調査できなかった
ネットワーク・Linux 75 点 Go ならわかるシステムプログラミング 第 2 版を読んだ
LT 発表 90 点 業務内で 5 回の LT 会を行った

注力分野の振り返り

1 週目に勉強内容や、普段の生活について ToDo を整理できていない部分が多く感じたので、Trello の利用を開始しました。 利用してみると、1 週間で忘れがちな内容が多かったことを実感したので、活用を始めてよかったと考えています。

SRE・DevOps

SRE・DevOps は 80 点でした。 理由は、「サイトリライアビリティワークブーク」を通じて継続的な SRE の学習ができたこと、業務でも信頼性に対する理解を深めたり向上させたりする取り組みができたからです。 具体的に振り返ります。

個人的な側面では、「サイトリライアビリティワークブーク」を読み終えました。 読み残していた 8 章 ~ 21 章を読み切りました。 「SRE サイトリライアビリティエンジニアリング」(SRE 本)と比較して、原理原則がわかりやすかったり、具体例も SRE 本と比較して身近だったりと学ぶことが多かったです。 本書を元に、継続的に信頼性を深める取り組みを行います。 引き続き、書籍を通じた SRE の学習も継続して行います。 具体的にはSRE の探求を読み進めます。

業務でも信頼性に対する理解を深めたり向上させたりする取り組みを行いました。具体的には 2 点あります。 1 点目は、信頼性に対する理解を深めるために、モニタリング・オブザーバビリティと関連して SLO やエラーバジェットによる運用の話をしたことです。 信頼性とは何なのかを SRE の用語ベースで解説をすることで、信頼性の解像度を単語レベルで深める取り組みを行いました。 2 点目は、信頼性を向上させるために、障害時の対応訓練を実施したことです。 チームの課題として障害発生時の対応メンバーに偏りがあるため、ドメイン知識や対応手順の経験に差が生まれており課題となっていました。 そこで、訓練を行えないかと計画しました。 SRE 本にも記載されているディザスタロールプレイイングが活用できないかと考えました。 少し調べたところ、LINE ヤフー株式会社(旧ヤフー株式会社)のテックブログで、SRE 事例 システムトラブル発生時の対応訓練(ディザスタリカバリトレーニング)の紹介があったので参考にしました。 過去の不具合発生時を再現できるように、ストーリー形式で問題を進めるようにしました。 時間がかかるので、30 分かけてだいたい半分ほど完了しました。 参加者からの反応もよく、今まで共有してきたドメイン知識の関連付けるきっかけとなりました。 まだ途中段階ですが、手応えがあるので今後も継続できるような取り組みにしてたいです。

今月の課題は、モニタリング・オブザーバビリティの向上策についてはまだまだ途上の段階であることです。 個人的には社内で利用しているモニタリングツールの簡単な調査から開始しており、直近では不具合発生時にログのパースを迅速に行い影響範囲の調査にコミットできました。 しかし、具体的な使い方を周囲に根付かせることができていません。 改善策は決められていませんが、ほかの勉強内容と重みづけしつつ、取り組んでいきます。

ネットワーク・Linux

ネットワーク・Linux75 点でした。 順調に継続して学べています。 今月、ネットワーク・Linux 関連で終えたことは 2 つあります。 1 つめは、応用情報技術者試験を受験したことです。2 つめは、Go ならわかるシステムプログラミング 第 2 版を読み終えたことです。 それぞれ振り返ります。

応用情報技術者試験は 10 月 8 日に受験しました。 合格発表は 12 月 21 日です。 午前試験は自己採点で合格したことがわかったので、午後試験次第となっています。 手応えは割とあったのですが、合格発表までわからないので、とりあえず待ちます。 もともとはネットワークスペシャリストの午前 Ⅰ 免除が目的ですので、12 月までネットワークや OS の勉強をして待ちつつ、受験を判断します。

Go ならわかるシステムプログラミング 第 2 版を読み終えました。 Go から OS や低レイヤのしくみを学ぶことができて、一段階理解を深められました。 Go と OS 周りがほとんど初心者のときに本書を読み挫折した経験があったため、読みきれて良かったです。 同様に、Go と OS 周りがほとんどわからなかったら本書を読み進めるのは難しそうだと思いました。 来月は、ネットワークを学んでいきます。

LT 発表

LT 発表は 90 点です。 理由は業務でチーム向けに 4 回発表し、部署向けに 1 回発表できたため、当初の予定だった月 1 回発表を大きく上まったからです。 外部発表がなかったことと、特に外部発表の予定も立てられていないことから、90 点にしました。

チーム向けの 4 回の発表では、例外設計について発表しました。 過去に学んだ知識を総動員させて、スライドにまとめました。 自分が正しいと考えている内容を説明して、参加側が納得感を持ちながら聞けているようで良かったです。 特に、例外から紐づけて SLO やエラーバジェットの話につなげられたのが、個人的には良いまとめ方でした。 今回の内容では社内向けにまとめたので、一般公開できませんが、そのうち一般公開できる内容にして、どこかで発表しようと考えています。

部署向けの発表では、チームで DevOps Research and Assesment について話しました。 チームのコンテキストを把握していない相手に対して社内 LT をする初の経験でしたので良い体験になりました。 発表中に感想や質問もいただけて、良かったです。 内容としては、道半ばな部分も多いので、どこかで続き的な内容で発表したいです。

総じて、今月は目標を大きく達成しました。 個人的に一番良かったことは、自身が関心のある領域である開発生産性・設計・例外・信頼性を一連としてまとめられたです。 チーム外にも発表する機会があり、良い経験になりました。 年末までにはパブリックな勉強会で LT 発表しようと考えているので探します。

11 月の OKR

11 月の OKR は下表のようにします。 内容が継続的な学習となっているので、都度具体的な学習に移していきます。

注力分野 Objective(1 ヵ月度ごとの目標) Key Result(具体的な行動予定)
SRE・DevOps 個人で SRE について継続的な学習をしている。業務でトイルの削減と監視・オブザーバビリティを説明、導入する 「SRE の探求」の勉強会を開催する。業務で監視またはオブザーバビリティツールについてまとめる
ネットワーク・Linux ネットワークについて知見を深めている。 Real World HTTP 第 2 版」を読む。ほかの書籍も読む。
LT 発表 LT の経験を得る 業務内外問わず、LT 発表を 1 回行う

読書

今月は、OKR に関連する書籍の感想を 2 つ書きました。

サイトリライアビリティワークブック

msksgm.hatenablog.com

Go ならわかるシステムプログラミング 第 2 版

msksgm.hatenablog.com

技術記事の作成

特になし。

その他

先月参加したカンファレンスを、いまさらですが感想を書きました。

SRE NEXT 2023 参加感想

先月の内容ですが、SRE NEXT 2023 に参加した感想を投稿しました。 セッション毎に感想を書くと振り返りにもなりましたし、自身が興味のある領域を可視化できました。

msksgm.hatenablog.com

10 月の振り返りまとめ

今月は、全体的にインプットとアウトプットを両立できた印象です。 インプットするべき内容とアウトプットするべき内容を適切にコミットできたと考えています。 ただし、3 ヵ月の勉強計画によくあることで、1 ヵ月目に新規で学べることが多くうまくいっているように考えてしまうパターンがあります。 そのパターンに陥らないように気を付けます。

今月の勉強を振り返って、あらためて自身のやりたいことやキャリアに対する考え方がつかめてきたことを実感しています。 特に SRE 周りは学習していて、SRE そのものに対するキャリアの考え方が変わりました。 以前は SRE を体験できるチームへの所属や、会社に転職したいという気持ちがありましたが、ここ最近で SRE は必ずしも役職にとらわれるものでもないと思いました。 現時点ですでに Embedded SRE 的な振る舞いをしており、興味も開発現場に信頼性を向上させたり可視化するためにはどうしたら良いのかと日々考えています。 もちろん、SRE 専任のチームが必要になる場合もありますが、自分が所属しているチームではその限りでなく、専任の SRE なしで自立した信頼性の文化が構築できるかどうかが重要だと考えています。 そのため、現時点で SRE の原理原則をもったプロダクト開発ができるか考え、転職するにしてもいきなり SRE ポジションを選ぶことはないと考えています。 これらについては、今までの学習内容から今月行った LT 会と SRE の勉強を通して、ドメイン駆動設計・例外設計・SLO の関連を言語化できたことも理由の 1 つです。 プロダクト開発からできる信頼性に対するイメージをつかめたので、それらを実践したいです。 現チームでそれができなければ、キャリアについてまた考えます。

総じて、今月は目標についてうまくコミットできた月だと考えています。 まとめの最初にも書きましたが、最初の 1 ヵ月はうまくいって残り 2 ヵ月は尻すぼみになるパターンが多いでの、2 ヵ月目以降も継続できるように、11 月の計画を立てます。