msksgm’s blog

msksgm’s blog

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

「詳解システムパフォーマンス」感想

概要

詳解システムパフォーマンスを読みました。 感想を書きます。

読了時間

900 ページ以上ある書籍ですので、知人と勉強会を計画し、一部の章(8 章分)を選び 2 ヵ月ほどで読みました。

目的

本書を読んだ理由は以下です。

  • SRE に興味関心があるので、SRE の関連書籍である本書を読むことにした。

事前知識

ネットワークと Linux 周りの書籍では以下の書籍を読んでいました。
感想にも記述しますが、これらの書籍を読んでいて良かったですし、事前に読む書籍はあった方が良いです。

感想

重厚な見た目ですが、存外読みやすい部分が多く、パフォーマンス観点から Linux について学べる書籍でした。
自身の力不足な点が多く、ほかの書籍も読み直しつつ、本書を再度読み直す必要があると思いました。
良かった点について述べていきます。

良かった点は、2 点あります。

1 つめは、見た目通りの低レイヤについて網羅的な内容です。 低レイヤ周りの内容で単語レベルでは知っていても、少しでも深堀した内容はまったく知識がありませんでした。 本書は Linux ベースで基本的な単語に用語やパフォーマンスについて述べてあるので、非常に勉強になります。 章ごとに内容がきれいに分割されているので、気になった部分から学べます。

2 つめは、章末に練習問題があるため、読む際のとっかかりにしやすいことです。
章がそれなりに長いので、すべての内容を精読するのは困難ですが、とりあえず練習問題の内容から読み進めることができました。
ただし、練習問題にも簡単な問題と難しい問題があるため、練習問題も取捨選択が必要です。 今回は 1 周目ととらえて難しい問題はとりあえず飛ばしました。

本書を読む注意点は以下の 2 つです。

  • 文章量が非常に多いので一度に読み切らない方が良いことです。
  • ほかの書籍と合わせて読んだ方が良いです。

次に関連で勉強すること

低レイヤ周りの関連書籍を読み、再度本書を挑戦しようと考えています。
まずは、[試して理解]Linux のしくみ【増補改訂版】の読み直しを検討しています。

2024年5月の目標

概要

2024 年 5 月の目標です。

勉強関連

SRE・DevOps、Kotlin、英語を対象に OKR を実施しています。

4 月〜6 月の目標

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

注力分野 Objective(3 ヵ月経過後の目標) Key Result(必要だと考えていること)
SRE・DevOps SRE・DevOps の文化を導入しシステム化する。SRE の技術的な要素も押さえる SRE 業務における目標設定、毎月評価する。「詳解システムパフォーマンス」を読む
Kotlin Kotlin・Java の知識を深める OSS(Arrow-kt、SpringBoot) のコードリーディング。Kotlin Fest に参加する
技術英語 英語で技術系コンテンツを学べるようになったことを定量化している ポッドキャスト・英語の技術書に毎月・毎週の進捗目標を設定し遂行する

5 月の目標

3 月時点に設定した目標と 4 月の実践結果を踏まえた、5 月の目標を以下です。

注力分野 Objective(1 ヵ月度ごとの目標) Key Result(具体的な行動予定)
SRE・DevOps 業務で SRE(・DevOps)に対する貢献 期待値に対して 1 ヵ月でコミットできたことを評価する。「詳解システムパフォーマンス」の勉強会を再開する
Kotlin OSS のコードリーディングを通じて Kotlin の知識を拡充する Arrow-kt(Either.kt) のコードリーディングを完了させる。わからなかったことを zenn の scrap にまとめる
英語 定量的な指標をもとに自身の英語力の遷移を可視化する 英語の技術書を 25 分で 2000 単語、ポッドキャストは 25 分で 5 分の内容をシャドーイングしつつ理解しながら進める

読書

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

2024年4月の振り返り

概要

2024 年 4 月の振り返りです。

勉強概要

今月は下表のように勉強していました。 合計、約 69.6 時間です。 今月も個人的な事情により普段よりも確保できた時間が少なくなりました。 来月以降は確保できる時間が増える予定です。

項目 1 週目 2 週目 3 週目 4 週目 5 週目
平日朝の勉強時間 約 7.97 時間(19 ポモドーロ) 約 10 時間(24 ポモドーロ) 約 9.58 時間(23 ポモドーロ) 約 8.75 時間(21 ポモドーロ) 約 5 時間(12 ポモドーロ)
平日夕方の勉強時間 0 時間 0 時間 0 時間 0 時間 0 時間
休日の勉強時間 約 7.5 時間(18 ポモドーロ) 約 5.83 時間(14 ポモドーロ) 約 8.33 時間(20 ポモドーロ) 約 6.67 時間(16 ポモドーロ) 0 時間
OSS コードリーディング会 0 時間 0 時間 0 時間 0 時間 0 時間
そのほかの勉強会 0 時間 0 時間 0 時間 0 時間 0 時間
合計 約 15.5 時間 約 15.8 時間 約 17.9 時間 約 15.4 時間 約 5 時間

4 月の OKR 結果

2024 年 4 月〜6 月の目標

2024年4月〜6月の目標の目標に記述した OKR 目標は SRE・DevOps、Kotlin、英語です。 具体的には下表の通りになります。

注力分野 Objective(3 ヵ月経過後の目標) Key Result(必要だと考えていること)
SRE・DevOps SRE・DevOps の文化を導入しシステム化する。SRE の技術的な要素も押さえる SRE 業務における目標設定、毎月評価する。「詳解システムパフォーマンス」を読む
Kotlin Kotlin・Java の知識を深める OSS(Arrow-kt、SpringBoot) のコードリーディング。Kotlin Fest に参加する
技術英語 英語で技術系コンテンツを学べるようになったことを定量化している ポッドキャスト・英語の技術書に毎月・毎週の進捗目標を設定し遂行する

2024 年 4 月の OKR 目標

注力分野 Objective(1 ヵ月度ごとの目標) Key Result(具体的な行動予定)
SRE・DevOps 業務で SRE の目標設定をする。SRE の技術的知識の拡充 業務において SRE として動くのは初めてなので目標設定やすり合わせを実施する。「詳解システムパフォーマンス」の勉強会を再開したい
Kotlin OSS のコードリーディングを通じて Kotlin の知識を拡充する Arrow-kt(Either.kt) のコードリーディングし、zenn に読んだ内容をまとめる。内容によっては記事にする
技術英語 技術英語の習熟度を把握するための継続的かつ定量的な指標を設定する 普段の勉強記録からおおよその進捗を把握し、目標設定する

2024 年 4 月の OKR 結果

今月は以下のようになりました。

注力分野 達成度(100 点満点) Key Result(行動結果)
SRE・DevOps 30 点 SRE 業務に関わるようになったが、所属したチームに慣れきれず成果に貢献できなかった。「詳解システムパフォーマンス」の勉強会を再開できなかった
Kotlin 70 点 OSS のコードリーディングを継続した。Kotlin Fest にプロポーザルが採択された。
英語 60 点 ある程度の目標ができた。このままのやり方を続けても英語が上達しそうになかったので、やり方を変えてみたが時間がかかりすぎる

注力分野の振り返り

今月は注目分野の振り返り以外に、ソフトウェアエンジニアとしての姿勢と心構えについて考察をしていました。 内容を「ソフトウェアエンジニアとしての姿勢と心構え」を実践するにまとめました。 4 月と 5 月でそれらの目標設定はしませんが、6 月を目処に目標設定しようと考えています。

SRE・DevOps

SRE・DevOps は 30 点です。 理由は以下です。 それぞれについて深堀していくます。

1 つめは、SRE 関連の業務にアジャストできなかったことです。 今月から SRE 関連のチームに所属しました。 しかし、チームのやり方ややっていることなどにアジャストできずに 1 ヵ月が終わってしまった感覚です。 とりあえず 1 ヵ月目と考えられれば良いですが、SRE 関連は抽象的な部分が多いので、方針が決まらなければ時間だけがすぎるので、気を引き締めたいと考えました。

2 つめは、「詳解システムパフォーマンス」の勉強会の再開を目標にしていましたが、できませんでした。 これは、家庭的な事情からうまく時間をまわせませんでした。

3 つめは、スクラムの書籍を読みきれなかったことです。 The Scrum Field Guide: Agile Advice for Your First Year and Beyond, Second Editionを読んでいました。 2 月ぐらいから読む始めているので、読み切りたいのですが、英語学習も兼ねているので時間をかけている結果、進捗がよくないです。

まとめると、時間が限られている中で時間をうまくやりくりできずに 1 ヵ月が経過してしまいました。 時間が限られているのは自分だけではないので、個人の力量不足を実感しました。

Kotlin

Kotlin は 65 点でした。 理由は以下です。

  • 良かった点:Arrow-kt のコードリーディングを継続できた。Kotlin Fest にプロポーザルが通った
  • 良くなかった点:Arrow-kt が 2.0 に向けて Deprecated な機能が多かったので読みづらかった。理解できなかった部分を後回しにして理解する時間に割けなかった

良かった点は、Arrow-kt のコードリーディングは継続できたことです。 読んだ結果をArrow の Either.kt を読むにメモを毎日残していました。 Kotlin のジェネリクス、kotest、contract について学べて勉強になる部分が多かったです。
また、Kotlin Fest に提出した以下のプロポーザルが通過しました。 ハンズオンで学ぶサーバーサイド Kotlin を作成したときから、ずっと構想していたことでしたので採択されて非常にうれしいです。

fortee.jp

良くなかった点は、コードリーディングによって Kotlin を適切に学べていないことです。 まず、見積もりが甘かったのですが、Arrow-kt が 2.0 に向けて Deprecated な機能が多かったので読みづらかったことが挙げられます。 テストが記述してあるメソッドを追っても Deprecated だったり、2.0 以降も残るメソッドが呼び出されていたりしてつらかったです。
そして、わからないことだけメモ書きした内容を棚卸しする機会がなかったのは不味かったと思いました。

1 ヵ月をまとめると、継続できた部分は良かったですが、改善の余地があると思いました。 Arrow-kt については、2.0 が main ブランチにマージされたので、いったんリセットして最初からやり直すことで対応します。

英語

技術英語は、60 点でした。 理由は、目標設定ができたからです。しかし、現状のやり方では、想定以上に時間を必要とする問題が発生しています。

引き続き、英語の技術書とポッドキャストを聞くことで、英語力の向上をはかっています。
英語の技術書は以下に取り組んでいました。

ポッドキャストは以下に取り組んでいました。

1 週目から、英語の技術書とポッドキャストは継続しています。 具体的な進捗状況も記録できるようにポッドキャストは何分進んだのかを記録し、技術書は単語数をカウントするようにしています。

英語の技術書は、以下を継続して読んでいます。

ポッドキャストは以下を聞いています。

途中までは、割と流しつつ進めていて英語の技術書は 25 分で 3000 単語、ポッドキャストは 25 分で 10 m のシャドーイングを目標に設定しました。 しかし、あまり英語の内容がついてこなかったので、25 分で 2000 単語、ポッドキャストは 25 分で 5 分の内容をシャドーイングしつつ理解しながら進めることを目標に変更しました。

結果、英語の内容で興味のある分野について時間をかけて取り組む体制を作りました。 しかし、進捗が遅く成果も見えないのでモチベーションの維持に苦戦しています。 とりあえず、5 月の前半まで継続して、次の目標設定を考えます。

5 月の OKR

4 月を踏まえた 5 月の OKR 設定は下表になります。

注力分野 Objective(1 ヵ月度ごとの目標) Key Result(具体的な行動予定)
SRE・DevOps 業務で SRE(・DevOps)に対する貢献 期待値に対して 1 ヵ月でコミットできたことを評価する。「詳解システムパフォーマンス」の勉強会を再開する
Kotlin OSS のコードリーディングを通じて Kotlin の知識を拡充する Arrow-kt(Either.kt) のコードリーディングを完了させる。わからなかったことを zenn の scrap にまとめる
英語 定量的な指標をもとに自身の英語力の遷移を可視化する 英語の技術書を 25 分で 2000 単語、ポッドキャストは 25 分で 5 分の内容をシャドーイングしつつ理解しながら進める

読書

今月は 2 冊読みました。

「達人プログラマー(第 2 版)」

msksgm.hatenablog.com

「エッセンシャル思考」

msksgm.hatenablog.com

技術記事の作成

今月の作成はありません。

その他

先月 Kotlin Fest に提出した以下のプロポーザル採択されました。 6 月 22 日(土)に登壇します。

fortee.jp

4 月の振り返りまとめ

4 月は、良かったことはありつつも、全体的に実践できた内容は満足できる内容ではありませんでした。
時間的制約があったため、今まで効率的に勉強できていなかったことを思い知りました。
新卒でエンジニアになり 4 年目だったので、自分を見直す機会になり、ソフトウェアエンジニアとしての姿勢と心構えを読みました。 そして、「ソフトウェアエンジニアとしての姿勢と心構え」を実践するにまとめ、実践しようと考えました。 具体的には達人プログラマーを読み返しました。 読み返したところ、3 年前と比較して読めるようになった部分が多くなった反面、習慣的な部分は抜け落ちていると思いました。 そこで、「ソフトウェアエンジニアとしての姿勢と心構え」を実践すると合わせて実践します。

「エッセンシャル思考」感想

概要

エッセンシャル思考を読みました。 感想を書きます。

読了時間

2 時間程度で読み終えました。

目的

本書を読んだ理由は以下です。

感想

本書は全体を通して、大事なことに取り組むとき阻害するもの・考え方・行動を非エッセンシャル思考として挙げて、本質的なものに集中するためのそれらのものをエッセンシャル思考として解説する事例集の本でした。 存外、内容が身近なもので読みやすく自分にも当てはまる部分が多かったので、共感しつつ読み進められる部分が多かったです。 いろいろ考察してみた結果、本書で掲げられているエッセンシャル思考的な部分と非エッセンシャル思考的な部分のどちらも経験していそうだと考えました。 個人の範囲では、ソフトウェアエンジニアとしての姿勢と心構えの「大事なことに集中する」はこれらを実践できれば十分だと考えました。

具体的に印象に残った箇所を 3 つ挙げます。

1 つめは、非エッセンシャル思考の人は大多数のものに目を向けて重要だと考えてしまい、効率を落としてしまうことです。 自身が、業務においてさまざまなことを取り組んだり、なんでも課題解決しようとしているため、だいぶこの言葉は刺さりました。 うまく優先順位づけできなかった結果、しくみや文化として浸透させることができずに形骸化してしまった例も多いので、非エッセンシャル的だったと考え直す機会になりました。

2 つめは、エッセンシャル思考の人は考える時間を作ることです。 先述した業務とは対照的に個人の範囲では定期的に自分のやってきたことや学んできたことを棚卸しする機会を確保しています。 そのため、自分の興味関心の遷移をとらえながら、一定のモチベーションで学習を継続できていると考えました。 個人の目標やふりかえりを書き出すことに効果を実感しており、他者にも勧めているのですが、具体的に何が良いのか説明できていませんでした。 今後はエッセンシャル思考的な部分をメリットとして共有していこうと思いました。

3 つめは、本書で紹介されていた本質目標です。 一般的・具体的、刺激的・平凡の 2 × 2 で四象限でいかのように分類しています。

  • 平凡 × 一般的=価値観
  • 平凡 × 具体的=四半期目標
  • 刺激的 × 一般的=ビジョン・ミッション
  • 刺激的 × 具体的=本質目標

これらの分類は、すべての組織において適応できる内容だと考えました。 組織の目標設定が目標というより予定と呼ぶ方が良い事象に何度も遭遇してきました。 それらに対して、対処できなかった理由はこれらの分類の考え方ができていませんでした。 どれも組織の粒度・タイミングによって重要な考え方だと考えています。 その中でも一歩進むには、本質目標を設定し、それらに対して貢献できるような取り組みが重要だと考えました。

気になった点でいえば、ビジネス書によくある問題だと考えていますが、以下の観点です。 本書も傾倒しすぎず、自分なりのライン引きで 1 つずつ要素を達成できればと考えました。

  • 正当すぎる内容すぎて現実問題では適用しきれないこと
  • いくつか具体例が極端で、話が飛躍していたり参考にするには壮大すぎたりする

次に関連で勉強すること

「ソフトウェアエンジニアとしての姿勢と心構え」を実践するを実践するために、以下を行います。

「達人プログラマー」を3年ぶりに読んだ感想

概要

3 年ぶりに達人プログラマー(第 2 版)を読みました。 感想を書きます。

前提

本書は、一度読書済です。そのため、割と読むのが早かったと考えています。

読了時間

3 時間程度で読み終えました。 一度読書済のため、本書の主張と見解が一致している部分や深堀しても現時点では得られるものが少なさそうな箇所を簡単に読み飛ばしました。

目的

本書を読んだ理由は以下です。

  • 個人の zenn の scrap 「ソフトウェアエンジニアとしての姿勢と心構え」を実践するの実践内容に含めていた。特に、習慣的な部分を読み直したかった
  • 2021 年新卒でエンジニアとして就職したときに読み、当時から読み返そうと考えていたので 3 年目を終えてちょうど良かった
  • 毎月 1 冊技術書を読む目標を実践するために読んだ

感想

久しぶりに読み直した感想は主に以下の 3 つです。3 年前との比較になるので、個人的な見解が主です。 詳細を順番に記述します。

  • 3 年前と比較して自身の知識がアップデートされたので、本書のコンテキストを把握しながら読み進められた
  • 3 年前の自分が時間をかけても難解な部分も多かったので、エンジニア初学者に推薦するには、時間をかけて読む箇所を限定して紹介した方が良いと思った
  • 3 年前に本書を読んで実践しようとしていた習慣が実践できていなかったり薄れていると思ったので、気を引き締める良い機会になった

1 つめは、3 年前と比較して自身の知識がアップデートされたので、本書のコンテキストを把握しながら読み進められました。 具体的には、契約による設計や表明を用いたプログラミングや、並行性について 3 年前の自分が読んでもまったく理解できなかったと考えています。 それらの知識について本書を意識して学んできたわけではありませんが、概要は把握しており読み進める際に詰まることなく読めました。 内容的に「この XXX についての説明は YYYY ことだな」と思いついたり、参考文献もすでに読んだことがあったり邦訳版が思い浮かんだので、技術書のインデックスの作成に成功したと考えています。

2 つめは、3 年前の自分が時間をかけても難解な部分も多かったので、エンジニア初学者に推薦するには、時間をかけて読む箇所を限定して紹介した方が良いと思いました。 1 つめの裏返しになるのですが、本当に初学者な時には読み飛ばすだけで良い部分もありますし、今の自分が読んでも読み返す部分が多いと思いました。 立場的に初学者に本の紹介をする機会も少なくないので、本書を紹介するときにはそうしようと考えました。

3 つめは、3 年前に本書を読んで実践しようとしていた習慣が実践できていなかったり薄れていると思ったので、気を引き締める良い機会になったことです。 特に第 1 章「達人の哲学」、第 2 章「達人のアプローチ」、第 3 章「基本的なツール」についてです。 まちがいなく 3 年前も印象にのこった部分ですが、すっかり実践できていませんでした。 これらの内容も「ソフトウェアエンジニアとしての姿勢と心構え」を実践するで、自分の目標や OKR に落とし込み実践していきます。

まとめると 3 年前の自分と比較できる良い物差しになりました。 新卒のときに読み数年たってから読むのは、本書の読み方の 1 つだと考えたので本書を紹介するときにはそのように紹介しようと思いました。 同様に達人には程遠いですので、目に見える形でアウトプットしつつ取り組みます。

次に関連で勉強すること