msksgm’s blog

msksgm’s blog

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

2022年5月の振り返り

概要

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

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

msksgm.hatenablog.com

目次

生活習慣

筋トレ

今月は以下になりました。 ベンチプレスを最初のセットで 3 回ぐらい持ち上げるとヘトヘトになって、残り 2 セットが 1 回しか持ち上げられないのが課題に感じています。

種目 重量
ベンチプレス 80kg
スクワット 90kg
デッドリフト 90kg

ランニングも継続してやっています。 やり方を変えて一度のランニングで 30 分走り切るようにしました。

勉強時間

今月から勉強時間を記録するようしました。 普段からポモドーロタイマーで計測していたのを、朝(平日、休日含む)の勉強時間、平日夕方の勉強時間、休日の勉強時間に区切って計測することしました。

結果、以下になりました。 毎週日曜日に 2、3 時間勉強会をしているので、あと+10 ポモドーロぐらいありますね。 あと、間違えて他の項目でタイマーを起動したりするので、数字にはブレがあります。 大体、121.6 時間になりました。存外、勉強しているようなしていないような時間でした。取り組んでいる割には進捗が悪い印象もありました。 GW があったので、普通の月よりも多かったと考えています。 6 月は祝日がないので、6 月の勉強時間の維持を目標になる予定です。

項目 ポモドーロ 時間換算
平日と休日の朝の勉強時間 134 約 55.8 時間
平日夕方の勉強時間 37 約 15.4 時間
休日の勉強時間 121 約 50.4 時間

勉強関連

勉強関連 概要

プログラミング言語

Go と Kotlin 以外にも、Next.js を学んでいました。

Go

1 週目は、GW 中に RealWorld の軽量版を Go で実装していました。 学んだことの振り返り的な意味で実装を試みました。 また、気が向いたときに再会予定です。 2 週目からはとりくんでいませんでした。

CS 系で以下の書籍に興味があるので、それら関連で Go に触れる可能性がありますが、Web アプリ用途ではしばらく使わない予定です。 他には、「Powerful Command-Line Application in Go」にも興味があります。

  • 「Go ならわかるシステムプログラミング」
  • 「RealWorld HTTP」
  • 「Go 言語による平行処理」

Kotlin

1 週目は、「Kotlin サーバーサイドプログラミング実践開発」という書籍を読んでいました。 Kotlin のシンタックスがまとめられており、有益でした。 ただ、DB との接続周りが手元の環境でうまく動かなかったり、MyBatis に良い思い出がないので、最後まで読み切ることはしませんでした。 2 週目から、Kotlin について詳しい知人にお願いして、簡単な JDBC を用いた CRUD ができるアプリの作り方について教わりました。 まだまだ序の口ですが、早く慣れて RealWorld を実装したいです。 少し実装してみただけでも、型システムや IDE のサポートが厚く開発体験の良さを実感しています。 しかし、Next.js に時間を割いているので進捗が悪いです。本格的に取り組めるのは 7 月以降になりそうです。

Next.js

実務で、Next.js を使う機会が発生したので緊急でキャッチアップしました。 GW 中に「Real-World Next.js」で勉強をしました。 Next.js に対して曖昧な認識や納得できていなかった部分を理解できました。 実務で既存のツールを Next.js で置き換える作業をしているのですが、うまくいっていません。 ディレクトリ構成にもさまざまなベストプラクティスが紹介されるので、うまく方針が決まらずに困っています。 あと、1 つのボタンに複数の機能を持たせようとすると、一気に複雑化するのも悩みどころです。

注力分野

ドメイン駆動設計

業務で、ドメインモデリングを継続しています。 チーム内でも理解が深まり、ビジネス職の方にも見てもらいました。 結果「エンジニアとビジネス職で認識を合わせられそう」と合意を得られました。 引き続きモデリングを続けていきます。 ただ、モデリングをやりすぎて、あまり戦術的なことができていないのが課題に感じています。 増田さんの「モデリングの費用対効果」で費用対効果を考えることの重要性を実感しました。モデリングは完成しないので、コスパを考えながら効果を実感できるように続けていきたいです。 偶然ですが、ドメインモデルをソースコードに落とし込む機会がありました。結果、納得感のある実装ができ、非常に満足しました。まだ正解かわからないので、改善を続けていきます。
他のインプット方法として、松岡さんが YouTube チャンネルで 10 分 DDD という動画を上げており、それを参考にして DDD に取り組んでいます。 DDD 有識者の間でも、松岡さんの方法に最も共感しているので、非常に参考にしています。

www.youtube.com

セキュリティ

4 週間かけて「認証と認可 Keycloak 入門」の勉強会を行いました。 Keycloak を元に、OIDC と OAuth のフローと SSO の基本知識を復習できました。Keycloak の専用の知識があったりしますが、認証認可まわりの知識を別角度から知ることができるので良い復習になりました。 特にチュートリアルの完成度が高く、実導入する際に考えるべきことを知れました。 他にも、IAM 周りを専門にして行く際に覚えておくべき名称も一通り紹介されており、技術面以外でも語彙力を増やすことができました。
最終週に徳丸本勉強会(2 回目)を始めました。徳丸実務試験の合格を見据えて準備をしていきます。 試験関連で言えば、6 月の第 1 土曜日が情報セキュリティマネジメント試験の受験日なので、頑張って合格します。

DB

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

Computer Science

知り合いに勧められて GW 中に「プログラミングの基礎」を読みました。 OCaml という言語を用いて関数型プログラミングの特徴を学びました。 この書籍を読むまで、再帰関数は一歩間違えたら無限ループになるので、敬遠していました。 しかし、この書籍を読んだ際に、終了条件と部分問題にわけ確実に終了するような記述をすれば、for ループよりも簡潔な記述になることを知り印象が変わりました。 map、filter といった普段よく見ていた関数が、どのような実装をしていたのか知ることができました。 なぜ Go にジェネリクスが追加されると、map、filter が実装できるのか理解できました。 個人的には Either と Result 型の説明が欲しかったです。

読書

1 冊目 「Real-World Next.js」

msksgm.hatenablog.com

2 冊目 「『実践ドメイン駆動設計』から学ぶ DDD の実装入門」

msksgm.hatenablog.com

3 冊目 「プログラミングの基礎」

msksgm.hatenablog.com

4 冊目 「認証と認可 Keycloak 入門」

msksgm.hatenablog.com

5 冊目 「Design It!」

読んだのですが、感想を書けるほど理解できないので、感想記事を書きませんでした。 設計のコスパについて触れた図が印象的でした。

6 冊目「Web API The Good Parts」

msksgm.hatenablog.com

美術展

スコットランド国立美術館  THE GREATS  美の巨匠たち

msksgm.hatenablog.com

技術記事の作成

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

1 記事目 「react-testing-library v13 から React v17 のサポートされないことに起因するエラーについて」

zenn.dev

2 記事目 「『実践ドメイン駆動設計』の勉強会を開催して得られた勉強会の知見」

zenn.dev

3 記事目 「Google スプレッドシートから日付を読み込んで Slack に通知する GAS を作成する」

zenn.dev

4 記事目 「Go の大文字小文字による公開範囲とオブジェクト指向言語のアクセス修飾子の違い」

zenn.dev

その他

個人的に刺さった PHPerKaigi2022 のスライド

msksgm.hatenablog.com

connpass の勉強会

今月は以下に参加しました。DDD と Kotlin 関連を主に情報収集をしています。

ddd-community-jp.connpass.com

line.connpass.com

ddd-community-jp.connpass.com

まとめ

今月はセキュリティ(認証・認可、脆弱性、情報セキュリティマネジメント試験)に一番注力していました。 どれも一度学んだ内容でしたが、一度学んだだけでは理解できているとは思えず、今回再び勉強してよかったと思えます。 以前から勉強していた、「情報セキュリティマネジメント試験」の本試験が 6 月 4 日(土)にあります。合格したいです。
徳丸本の勉強会の 2 回目を開始し、徳丸本を 2 回目の熟読が始まりました。 一度学習したので、教える立場として取り組んでいます。 また、7 月から 8 月に「Web セキュリティ実務知識試験」を受験予定なので、合格を見据えて勉強していきます。

プログラミング言語は、Kotlin に注力していた予定でした。実際には Next.js に時間を割きました。 実務で Next.js を使う機会が多くなったので、頑張ってキャッチアップと実装を繰り返しています。 TypeScript の型システムに十分満足できているとは言えませんが、JavaScript 比べて圧倒的に開発体験がよくなっているのを実感しています。
Kotlin については当初勉強方法がわからなかったのですが、知人から勉強方法を教わりなんとかやっています。 モダンなシンタックスや型システム、Intellij の厚いサポートなどもあり開発体験が最高です。 Next.js は 6 月末まで取り組み、7 月から Kotlin に触れていきたいです。 Go は実務でも使っていないので、放置状態です。Go を学んでいた時期に思ったことを zenn にまとめています。 ただ、CS 分野を学ぶ目的や、CLI を作る為に「Powerful Command-Line Application in Go」に興味があります。

ドメイン駆動設計は、モデリングを実務で実践できています。 主にビジネス職とエンジニア職の共通認識を作るという目標です。 「議論に使えそう」という段階まできたのですが、ドメインモデルをソースコードに落とせておらず、まだ効果を実感できてませんでした。 そこで、試しに 1 つのプロパティをドメインオブジェクトを表現しました。 結果、実装したときに、あるべき場所に収まったかのような納得感があったので、当初の目的とマッチしており勉強してよかったと思えました。 まだまだ、実装するべき部分はたくさんあるので、これからも継続していきます。

5 月が終わり、社会人 2 年目の 2 ヶ月目が終わりました。 社会人 2 年目で業務において成し遂げたいことをいろいろ掲げているので、このペースで進めて行くと終わらなさそうなのが不安です。社会人 2 年目の 3 ヶ月目には、何かしらの目処をつけたいです。 なので、業務のことを考える時間を増やしたり効率を上げたりします。意識的に残業を増やしても効率が落ちるだけだったので、それには気をつけたいと考えています。
一方、引き続き個人的に目標に掲げていたことを淡々とこなすことができて嬉しいです。 しかし、割と入門書を読み終えたりビジネス書への興味関心がなくなってきたので、読書ペーズを月 5 冊から減らしたいと考えています。 月 1、2 冊読めたら妥当なラインだと考えています。あとは、受けたい資格が複数個あるので、そちらにも注力していきます。

色々目標と興味が変わってきました。 とりあぜ 6 月までは Next.js、Kotlin、資格のことを考えて、6 月末に 3 ヶ月の振り返りをおこない修正をします。