msksgm’s blog

msksgm’s blog

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

2023年2月の振り返り

概要

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

今月は以下を目標にしていました。

msksgm.hatenablog.com

勉強概要

今月は下表のように勉強していました。 今月は合計約 146 時間です。 2 月は日数が少ないですが、個人的に休日が多かったため、このような結果に落ち着きました。 費やした時間と内容を可視化できたら良いんですが、現状はあまり考えていません。

項目 1 週目(2/1~2/5) 2 週目 3 週目 4 週目 5 週目(2/27~2/28)
平日朝の勉強時間 約 8.33 時間(20 ポモドーロ) 約 10.0 時間 (24 ポモドーロ) 約 15.0 時間(36 ポモドーロ) 約 4.17 時間(10 ポモドーロ) 約 5 時間(12 ポモドーロ)
平日夕方の勉強時間 0 約 0.83 時間(2 ポモドーロ) 約 0.417 時間(1 ポモドーロ) 約 0.417 時間(1 ポモドーロ) 約 0.417 時間(1 ポモドーロ)
休日の勉強時間 約 10.0 時間(24 ポモドーロ) 約 23.7 時間(52 ポモドーロ + 2 時間) 約 12.9 時間(31 ポモドーロ) 約 24.6 時間(59 ポモドーロ) 0 時間
Kotlin+Spring Boot 勉強会 約 3 時間 約 5 時間 約 5 時間 約 5 時間 約 1.5 時間
単体テストの考え方/使い方」勉強会 0 時間 2 時間 約 2 時間 約 1.5 時間 約 1.5 時間
connpass の勉強会 0 時間 0 時間 0 時間 0 時間 0 時間
合計 約 21.3 時間 約 41.5 時間 約 35.3 時間 約 35.7 時間 約 12.2 時間

2 月の OKR 結果

2023年1月〜3月の目標に記述した OKR 目標は CI/CD とテストです。 具体的には下表の通りになります。

注力分野 Objective(3 ヵ月経過後の目標) Key Result(必要だと考えていること)
CI/CD CI/CD の実践や構築に対して恐れがない状態 CI/CD の概念とツール、シェルスクリプトの知識
テスト 品質観点のテスト知識を持ち、テスト計画が立てられる状態。 ソフトウェアテストの基礎知識、テスト技法、品質、ツールの知識

2 月は 1 月の OKR も踏まえ、以下の通りに落とし込んでいました。

注力分野 Objective(1 ヵ月度ごとの目標) Key Result(具体的な行動予定)
CI/CD 業務のリポジトリに新しい CI を組込み業務効率向上に貢献する。シェルスクリプトの勉強をする。 「継続的デリバリ」を読む。業務のリポジトリに新しい CI を組み込む。可能であれば「マスタリング Linux シェルスクリプト 第 2 版」を読む
テスト ソフトウェアテスト技法を学ぶ ソフトウェアテスト技法練習帳」を読む。「ソフトウェアテスト技法」に挑戦する。「単体テストの考え方/使い方」の勉強会を開催する。業務のテストドキュメントを整理・品質向上する。

それぞれの注力分野に対する結果は以下です。

注力分野 達成度(100 点満点) Key Result(行動結果)
CI/CD 80 点 「継続的デリバリ」「マスタリング Linux シェルスクリプト 第 2 版」を読んだ。業務のリポジトリに新しい CI を組み込んだ。
テスト 70 点 ソフトウェアテスト技法練習帳」を読んだ。「単体テストの考え方/使い方」の勉強会を開催した。テストドキュメントの管理方法を改善した。

注力分野の振り返り

CI/CD

80 点の理由は、「目標に掲げていた本を読めたこと」「業務のリポジトリに新しい CI を組み込んで業務改善につなげた」です。 インプットだけでなくアウトプットも実践できたので、この評価になりました。

CI/CD の実力を向上させるために「継続的デリバリー」と「マスタリング Linux シェルスクリプト第 2 版」を読みました。 「継続的デリバリー」は難易度が高く割と読み飛ばしました。聖書的な本なので現時点では雰囲気だけつかみ、概観だけインプットしました。 CI/CD の全容を学ぶことに関してはほかの本は不要だと実感したので、都度読み返していくことで理解を深めていくスルメ本的な使い方をします。
そして、「マスタリング Linux シェルスクリプト第 2 版」を読みました。 名前から難易度の高い本だと考えていたのですが、実際に読んでみると序盤は初心者向けの内容でした。 苦手意識の強かった sedawk に対しても丁寧に解説がされており読みやすかったので休みを使って一気に読み切りました。 読了後の満足度が高く、本書を通じて、シェルスクリプトに対する解像度が高められました。 しかしそれと同時にシェルスクリプトを一層学ぶ必要性を感じました。 そのため、今年新しく学ぶ言語は「シェルスクリプト」にしました。 勉強するモチーベションとしては CI/CD を学ぶサブドメインという位置付けは変わりませんが、いざという時ではなくいつでも使える武器として理解度を深めていきます。

ほかには、業務のリポジトリに新しいワークフローを追加しました。 簡単にいうと定期実行するワークフローを追加しました。 定常的に CI が実行されることで、ソースコードの変更以外で CI が落ちた時に、早期発見できるようになりました。 これにより、更新が少ないリポジトリや、PR 作成からマージまでの間に時間が経過しても、常に最新の main ブランチの挙動が CI 通過するのかわかるようになりました。 過去には、リリースのタイミングで脆弱性のスキャンで脆弱性が発見や、共通で使われているテンプレートのバージョンの不整合で CI が落ちることも多かったので、個人的に助かっています。 さっそく新しい CI を活用できた場面があったので、労力に対してリターンが大きかったと考えています。
簡単な修正ですが、社内の CI ドキュメントの読み込むことで、以下の副次効果が得られました。

  • 一度ドキュメント読み込んだ経験から、 ほかの CI ツールのドキュメントを読むハードルも下がった
  • CI ツールの仕様を読み込んだついでに、チーム内で共有する機会を用意することで、理解している部分としていない部分を明確にできた
  • 新しい CI を組み込む際に CI ツール以外(yaml や Slack API)の仕様についても学べた

課題としては、現状 CI は一度設定すると設定を変更する機会が少ないので、チーム内でどのように設定方法を共有していくのかが問題になっています。

先月目標にしていた、とりあえず組み込むが実践できて満足な結果になりました。 来月は、以下の観点で進めていきます。

  • 引き続きシェルスクリプトの知見を得える
  • 新しい CI に組み込む
  • CI の設計ドキュメントを作成する

テスト

70 点の理由は、「勉強会を通してユニットテストから考える設計の考え方について整理ができたこと」「ソフトウェアテスト観点からはテストの知見を得られず、あまり実践できなかったこと」です。 全体的にインプット偏重になってしまい、業務におけるアウトプットをできなかったのが理由です。

今月から、「単体テストの考え方/使い方」の勉強会を実施しました。 Chapter 1 から Chapter 9 まで読み切りました。残すは Chapter 10 と Chapter11 のみです。 本書は、ユニットテストを書くかどうかではなく、ユニットテストの良い書き方について焦点を置いた本です。 言葉の定義から、テストの書き方の名称、何が悪いのかなどを論理的に説明してくれます。 設計観点からもヘキサゴナルアーキテクチャと関数型アーキテクチャが共通して持っている、副作用をコアな部分やビジネスロジックから追い出す考え方はもっと一般的になってほしいです。 ユニットテストの観点では、この本で批判されているユニットテストの書き方を実践している人は割と多いと考えています。 特にモックを利用するタイミングやアプリケーション・サービスにユニットテストを導入するのかといったときに、どのような基準があるのかはもっと知ってほしいです。 現状チームにそういった文化はなく、導入したいと考えていますが、導入ハードルを高く感じています。 説得させるのは難しいですが、それでも納得いくコードづくりをするか、すでに浸透しているチームで働いてみたいと思いました。

ソフトウェアテストの知見をえるために、「ソフトウェアテスト技法練習帳」を読みました。 新卒 1 年目に 1 読していたのですが、2 週目でも難易度を高く感じました。 普段は実践する機会が少ないので、この本を読むと良い経験になります。あと 2 回は繰り返し読むことになりそうです。 「ソフトウェアテスト技法」は読めませんでした。理由は難易度が高すぎたからです。 かわりに 3 月の目標を先取りして、ソフトウェアテストの仕様がまとめられた JSTQB を読んでいます。 3 月中に 1 周を目指して読み進めていきます。
業務においても、テストドキュメントの整理する方法が思いつき、開発フローの一部として組み込むことに成功しました。 ただし、「具体的に何を書くのか」といった部分において合意がとれておらず、課題を感じています。 また、品質についても 2 月中に終えることができませんでした。 品質の整理が済んでから初めて次の段階に進められるので、今月終えられなかったのは予想外でした。 チームとしてほかにも必要な部分があったので、しょうがないのですが、ペース的には遅いです。

今月は「単体テストの考え方/使い方」のおかげで、ユニットテスト観点からの知見は自身の考えについて整理がついてきました。 今まで学んだことや実感したこを答え合わせをするように読めています。 しかし、ソフトウェアテストプロダクトマネジメント観点からの知見はあまり得られず、実践できていない状態です。 来月は JSTQB を学ぶことでソフトウェアテスト観点の知見を得られるようにします。 また、JaSST Tokyo に参加します。ソフトウェアテストの知見を外部から得られることで刺激を受けたいです。

3 月の OKR

1 月の初め時点に立てた目標と 2 月の結果をまとめて、以下のように取り組みます。

注力分野 Objective(1 ヵ月度ごとの目標) Key Result(具体的な行動予定)
CI/CD 実務で使われている CI/CD についてまとめる 業務の CI/CD について設計書をまとめる。業務のリポジトリに新しい CI を組み込む。アウトプットとインプットのバランスを意識しながら、シェルスクリプトを学ぶ
テスト 規格としてのソフトウェアテストを学ぶ JSTQB の勉強をする。JaSST に参加する。「単体テストの考え方/使い方」の勉強会を実施する。業務のテストドキュメントを意識して改善する。

読書

OKR の書籍

OKR 達成のために以下の本を読みました。

読みかけだったりしますが、下記の本をつまみ食いしています。

継続的デリバリー

msksgm.hatenablog.com

ソフトウェアテスト技法練習帳

ソフトウェアテストの教科書」を読み終えたので、再度読みました。 テスト技法をあらためて学んだ後に本書を読むと、本書は演習に最適な本だと再認識しました。 本書の演習問題を当たり前のように解けることで、テストエンジニアとして一段階上の段階になれると思いました。
JSTQB を受験するタイミングや、ソフトウェアテスト技法ドリルを読んだタイミングで再度読み返します。 その際に、2 回めの読書感想文を書こうと考えています。

マスタリング Linux シェルスクリプト第 2 版

msksgm.hatenablog.com

余談ですが、数多くの PV をいただき、はてブのランキング(テクノロジエントリ)で表示されました。 2 年ほどブログを続けていますが、今月の PV だけで過去の総 PV 数の三分の一ぐらいになりました。 注目されてうれしかった反面、PV を稼ぐのが目的ではないので、PV に左右されないように継続していきます。

その他

テストエンジニアの知見を高めたいと思っている矢先に以下の資料が発表されていました。 ロードマップを用意してもらえるのが非常にありがたく、なんとかほとんどの本を読み切りたいです。

speakerdeck.com

テストエンジニアには包括的な知識が求められることを再認識したため、kyon_mm さんの以下の記事を読み直しています。

note.com

上記で紹介されている書籍をもとに、ソフトウェアテストプロダクトマネジメントの本を収集しています。 来月以降にも継続して消化していきます。

美術展

エゴンシーレ展にいってきました。

技術記事の作成

引き続き、Kotlin の書籍を zenn の本作成機能で作成しています。 長くなっていますが、3 月末には確実に終わらせます。

その他

特になし。

2 月の振り返りまとめ

今月は CI/CD について注力できました。 しかし先月と比較して、ソフトウェアテストに注力できませんでした。 そう実感した理由は、インプットができても、業務のアウトプットにつなげることができてないからです。 必ずしも何かしらのアウトプットにつながるわけでもなく、無理なアウトプットを実践しようとすると内容が薄くなったりもしますが、アウトプットの有無で満足度が違います。 そこで、1 ヵ月は 4 週間しかないので、上旬と下旬でインプットとアウトプットの塩梅を振り返れると、安定してコミットできるのではないかと考えています。

他にも、1 ヵ月の間に 2 つの注力分野を両立させることの難しさを実感しています。 そういった観点からも 3 ヵ月間というスパンで計画を立てることの重要性を痛感しました。 来月で、3 ヵ月も終わりですので、2 つの注力分野のバランスをとりつつ、Objective を達成できるようにまとめていきます。 初めての 3 ヵ月の OKR の振り返りですので、どのようなような遷移になったのか振り返りをします。