msksgm’s blog

msksgm’s blog

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

2022年4月の振り返り

概要

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

以下を目標に掲げていました。

msksgm.hatenablog.com

目次

生活習慣

以下の目標を掲げていました。なんとか達成した次第です。 ランニングは業務が忙しくてできていませんでした。 来月から、時間を見つけて取り組んでいきます。

ジム通います。ベンチプレス 80kg は背伸びした目標ですが達成したいです。

勉強関連

勉強関連 概要

プログラミング言語(Go)

引き続き「Learning Go」と「ドメイン駆動設計入門」をもとに勉強を続けていました。

「Learning Go」は 4 月開始時点で残り 3 章ほどになっており、3 週目には読み切ることができました。 途中からダラダラしながら進めてしまいましたが、英語の書籍を曲がりなりにも読み切ったのは少し自身につながりました。 「Learning Go」は、Go の根本的な仕組みと歴史的経緯と哲学について学ぶことができるので、Go を使用している方には積極的におすすめしています。

ドメイン駆動設計入門」をもとに、DDD の戦術的パターンを実装し、zenn に 4 記事作成しました。 一通り実装したので、「ドメイン駆動設計入門」の実装はこれで終わりです。 ドメイン駆動設計の戦術的実装パターン理解を深めること、Go の実装方法を学ぶことの 2 つを達成できました。

実はあまり Go が好きではなくなってしまっています。 しかし、現状はモダンな言語にある過去の言語の課題を解決しようとして加えられた変更点に対して違和感をいだいているだけだとも感じてきました。 「達人プログラマー」に書いてある"毎年 1 つ新しい言語を学ぶ"はステップアップだけでなく"様々な言語に触れることで、自分の求めるものがわかってくる"という意味で理解してきました。

来月からは、Kotlin に注力していきたいです。

注力分野

ドメイン駆動設計

「実践ドメイン駆動設計」の勉強会の第 11 回から第 14 回をやりました。 内容は「ファクトリ」「リポジトリ」「境界づけられたコンテキストの統合」「アプリケーション」でした。 途中から DDD の本質を理解してきたので、説明される内容も目新しいものがなく、飽きてきた印象でした。 しかし、これにて「実践ドメイン駆動設計」を完読しました。非常に重厚な本でしたが、熟読する価値のある本だと思いました。 期間は 14 週間で、毎週予習と勉強会に 10 時間はかけていたので、「実践ドメイン駆動設計」だけでも 140 時間かけたことになります。 「ドメイン駆動設計モデリング/実装ガイド」から数えると、17 週間をかけています。 加えて、「ドメイン駆動設計入門」の実装も継続していました(こちらもちょうど 4 月で完了)。 「実践ドメイン駆動設計」「ドメイン駆動設計モデリング/実装ガイド」「ドメイン駆動設計入門」の勉強時間は 200 時間超やっていたと考えています。 4 ヶ月におよぶ勉強期間のおかげで、ドメイン駆動設計の概念を体に染み込ませることができました。 ドメイン駆動設計のインプットは一旦終了です。 実務でドメインモデリングを実践しているのですが、やはり、開発者と企画側で認識の齟齬を埋めることの難しさを感じています。 DDD は戦術的と戦略的は両方とも銀の弾丸のようなメソッドがあるわけではないので、試行錯誤を重ねていきます。

まだ取り組めていませんが、今回の経験から以下の 3 つ記事を執筆しようと考えています。

  • 「『実践ドメイン駆動設計』から学ぶ DDD の実装入門」の感想記事
  • 「『ドメイン駆動設計入門』を『実践ドメイン駆動設計』の副読本に使ってみた & Go にリプレイスしてみた感想」という記事
  • IDDD 本勉強会の感想記事

セキュリティ

Auth 屋の以下の本を読みました。 以前、OAuth と OIDC は学習したことがあったのでなんとかスムーズに理解できました。 フローが似たようなものなので整理しづらかったのですが、前より理解できた気がします。 あと何回か繰り返し実践したいです。

  • 「雰囲気で OAuth2.0 を使っているエンジニアが OAuth2.0 を整理して、手を動かしながら学べる本」
  • 「OAuth、OAuth 認証、OpenID Connect の違いを整理して理解できる本」を読みました。
  • 「OAuth・OIDC への攻撃と対策を整理して理解できる本(リダイレクトへの攻撃編)」

そして、「SAML 入門」も読みました。 知識ゼロの状態だったので不安だったのですが、取っ付きやすかったです。 ただ、アプリ上で具体的なフローを確認する機会はなかったので、定着できていません。リファレンスとして使うようします。

来月から「認証と認可 Keycloak 入門」の勉強会を開始します。 第 6 章までの予定です。 既に第 1 章と第 2 章を読みました。過去に Auth 屋の書籍を読んでいたおかげでスムーズに読むことができています。 改めて、OAuth と OIDC の復習になっていて学びがあります。 Keycloak 専用の単語が存在することは読み手を選ぶポイントだと思いました。

DB

今月は注力しない予定だったので特になし。

Computer Science

今月は注力しない予定だったので特になし。

読書

勉強会が終わりを迎えたので、合計 6 冊読んでいました。 感想文をかけていない本もあるので、本当はもっとあります。 書けていない分は 5 月に書こうと考えています。

目標時点では「あなたの知らないあなたの強み」も読もうとしていました。 実際読んでみて、最初の 100 ページぐらいで自分に合わなさそうだと考え、読むのをやめました。

1 冊目 「雰囲気で OAuth2.0 を使っているエンジニアが OAuth2.0 を整理して、手を動かしながら学べる本」

msksgm.hatenablog.com

2 冊目 「OAuth、OAuth 認証、OpenID Connect の違いを整理して理解できる本」

msksgm.hatenablog.com

3 冊目 「OAuth・OIDC への攻撃と対策を整理して理解できる本(リダイレクトへの攻撃編)」

msksgm.hatenablog.com

4 冊目 「Learning Go」

msksgm.hatenablog.com

5 冊目 「SAML 入門」

msksgm.hatenablog.com

6 冊目 「実践ドメイン駆動設計」

msksgm.hatenablog.com

美術展

今月は 1 回行きました。 元々はミロ展にいくつもりでしたが、日程が合わず「シダネルとマルタン展」にいってきました。

「シダネルとマルタン展」

msksgm.hatenablog.com

技術記事の作成

週 1 回の投稿(金曜日がある週を 1 週としてカウント)の目標を達成しました。 5 記事作成しました。2022 年になってから合計 17 記事書きました。

1 記事目 「gh コマンドでブラウザを開けなくなったときの対処法」

zenn.dev

2 記事目 「Go でリポジトリを実装(「入門ドメイン駆動設計」Chapter5)」

zenn.dev

3 記事目 「Go でファクトリを実装(「入門ドメイン駆動設計」Chapter9)」

zenn.dev

4 記事目 「Go でアプリケーションサービスを実装(「入門ドメイン駆動設計」Chapter6)」

zenn.dev

5 記事目 「Go で集約を実装(「ドメイン駆動設計入門」Chapter12)」

zenn.dev

その他

読書感想、美術感想、技術記事以外にも不定期に思ったことを書こうと考えています。 今月は以下でした。

Auth 屋さんの書籍を全て読んだ感想

msksgm.hatenablog.com

まとめ

今月の一番のイベントは「実践ドメイン駆動設計」を完読し、勉強会も完遂できたことです。 いままで、このレベルの分厚さと難解さの本を読み切ったことはなかったので自身につながりました。 ドメイン駆動設計でやりたいことを戦術的にも、戦略的にも体に染み込ませることができ、引き出しが増えたと実感しています。 実践で活かせてこその、ドメイン駆動設計だと考えているので、実務で戦略的なところから取り組み、ドメイン駆動設計についてより洞察を深めたいと考えています。

Go もとりあえず一区切りだと考えています。 細々と RealWorld の実装をしたり、渋川よしきさんの書籍を読んだりする可能性はありますが、前ほどの熱意はなくなっています。 この数ヶ月間の学習で「モダンで流行りの言語」という印象から、「どのような哲学で何を解決したい言語」なのか理解できたと考えています。 個人的には、「モダンで銀の弾丸な言語」から「繰り返し同じようなこと記述する煩雑な言語」にかわり、最終的に「他の言語が持つ課題を違う角度から解決しようとしている言語」になっています。 途中の悪い印象から、割と良い印象になりましたが、自身が「DDD をやりたい」という目標から「オブジェクト指向のような表現力を持つ言語を使用したい」という気持ちが生まれています。 なので、目的に沿っていない状態です。 結果、Go に対して興味が薄れている状態です。 しかし、以下のような続ける理由もたくさんあるので細々と続けていきます。

  • Go を用いた Computer Science よりの書籍が複数存在するので勉強用言語として使う
  • 書籍「実用 Go 言語」が面白そう
  • CLI ツールを作りたい
  • (一応)業務では引き続き使用する
  • Go の実力が低い
  • 自身が認識していないだけで DDD に沿った記述方法が存在する
  • 流行りの言語なので転職時の武器になりそう

言語に関しては来月から Kotlin に注力して知見を深めていきます。

セキュリティは認証認可に注力できました。 Auth 屋さんの書籍はどれも良書で、初心者におすすめします。 来月は「認証と認可 Keycloak 入門」を用いて認証認可の理解の仕上げにかかりたいです。 6 月には「情報セキュリティマネジメント試験」を受験する予定なので、5 月は情報セキュリティマネジメント試験の勉強も再開します。 加えて、最近「徳丸実務知識試験」の一般受験が公開されたので、そちらにも興味があるので再来月ぐらいから取り組んでいきます。

DB と Computer Science は元々注力しない予定だったので放置しています。 DB は取り組むとしても、10 月以降になりそうです。 Computer Science は簡単なものを月 1 ぐらいで勉強できたらと考えています。

今月でついに社会人 2 年目になりました。 3 月から大きく変わったことはないですが、2022 卒が同じ部署に配属されたら、ようやく 2 年目の立場を求めらそうです。 色々試したいことがあって、今月の残業時間は 45 時間ぐらいになりました。 やりたいことで残業していると普段よりは気持ちが救われますが、残業のしすぎ精神と体力的の両方によくない感じました。 試したいことを効率的にできるようになりたいです。

色々書きましたが、残業時間が多いながら今月も目標を達成できました。 欲を言えば普段の勉強を業務にも活かしていきたいです。 来月も引き続き頑張っていきます。