msksgm’s blog

msksgm’s blog

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

2022年7月の振り返り

概要

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

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

msksgm.hatenablog.com

目次

生活習慣

筋トレ

ジム通います。ベンチプレス、スクワット、デッドリフト全ての重さにおいて目標を達成できなかったです。 やり方を変える必要性を実感してきました。

種目 重量(今月トライする重量) 結果 7 月時点の目標
ベンチプレス 80kg * 8 回 * 3 セット 80kg * 1~3 回 * 3 セット 85kg * 8 回 * 3 セット
スクワット 90kg * 8 回 * 3 セット 90kg * 3 回 * 3 セット 90kg * 8 回 * 3 セット
デッドリフト 90kg * 8 回 * 3 セット 90kg * 3 回 * 3 セット 90kg * 8 回 * 3 セット

勉強時間

勉強時間の結果です。 今月から 1 週間ごとに計測結果を出しました。 今月は、約 152.4 時間でした。
土日に予定もあまりなく、1 日平均 5 時間程度だと考えると、だいぶ勉強時間を確保できました。 先月は予定が詰まっており勉強時間 100 時間程度だったことを考えると十分勉強できたと考えています。 無理に勉強する月を作らずに安定して、勉強時間を確保していきたいです。

項目 1 週目 2 週目 3 週目 4 週目 5 週目
平日朝の勉強時間 約 3.33 時間(8 ポモドーロ) 約 12.5 時間(30 ポモドーロ) 約 13.3 時間(32 ポモドーロ) 約 10 時間(24 ポモドーロ) 約 11.7 時間(28 ポモドーロ)
平日夕方の勉強時間 0 時間 0 時間 約 1 時間 約 0.5 時間 0 時間
休日の勉強時間 約 13.3 時間(32 ポモドーロ) 約 11.3 時間(27 ポモドーロ) 約 9.17 時間(22 ポモドーロ) 約 21.1 時間(2 時間 + 47 ポモドーロ) 13.8 時間(33 ポモドーロ)
RealWorld ペアプロ 約 4 時間 約 7 時間 約 4 時間 約 6 時間 約 4 時間
リファクタリング 第 2 版」勉強会 0 時間 約 1.5 時間 約 1.5 時間 約 1.5 時間 約 1.5 時間
connpass の勉強会 0 時間 0 時間 0 時間 0 時間 0 時間
合計 約 20.6 時間 約 32.3 時間 約 29.0 時間 約 39.1 時間 約 31.5 時間

勉強関連

勉強関連 概要

7 月から基本的に Kotlin と設計に注力しています。 たまに、Next.js にも時間を割いています。

注力分野

Kotlin

RealWorld の実装によって、サーバーサイド Kotlin を学びました。 主に学べたことは以下です。

  • DDD を意識した実装(エンティティ、値オブジェクト、リポジトリ、UseCase 層から返す型、QueryModel、etc...)
  • DBRider を用いた DB テスト
  • arrow を用いたエラーハンドリング
  • GitHub の Squash and Merge、Git の rebase、ブランチ戦略

逆に以下のことがわからなくなってしまいました。

勉強の一環として、ドメイン駆動設計 サンプルコード&FAQを読み返しました。 今まで Kotlin を用いた戦術的 DDD の実装をしていなかったため、初めて読んだときにはよくわからなかったんですが、Kotlin を学んだ後に読み返すと参考になる部分がおおかったです。

Kotlin のシンタックスを学べても Kotlin の本質を学べていない気がするので、「Kotlin イン・アクション」を読もうと考えています。

設計

今月は主に 2 つの取り組みをしました。 1 つ目は、職場での「設計標準」の導入です。 設計標準とはログラスさんが実践している取り組みで、以下の定義がされています。

  • あくまで守られるべき「規約」として強制するのではなく、軸として考えるための「標準」
  • チーム全体で考えて意思決定の結果と根拠を残していくことが目的

引用: チームで高品質なコードを追求するための「設計標準」の育て方

導入理由は、DDD のためのドメインモデリングをしているうちに、DDD 以前に根本としてチームの設計意識を高める必要があると考えたからです。 導入した結果、開発側のステークホルダー全員を議論に参加させる場を作ることに成功しました。 こういった、DDD の書籍に載っていないプラクティスを行なっていると、DDD はあくまで手法の 1 つなんだと、改めて実感しました。 最初は参加や発言しづらい雰囲気がありましたが、現在では改善がみられています。 週 3 日程度で実践していますが、運用して 1 ヶ月も経過していないので効果は実感できていないです。しかし、議論することがなくなるまで、そして設計意識を高めるために継続します。

2 つ目は、「リファクタリング第 2 版」の勉強会が終了しました。 5 週間かけて、リファクタリングを体系化し、根拠と名前づけが可能になったので、積極的に活用していきたいです。 しかし、書籍を読んで自分にはリファクタリングに必要なテスト能力が足りないと思いました。 プログラミング言語に対するコードの理解力や、テスト設計の考え方が足りないと実感することが多いです。設計力を向上させるために、それらの方向にも注力していきたいです。 特に以下の資料を参考しようと考えています。資料に触発されて、バイザーの「ソフトウェアテスト技法」を読み始ましたが古典的ないいまわしや内容が非常に読みづらく積読してしまいました。

note.com

他に実感したことは、設計の勉強を通じて、自分がやりたかったことや実現したいことはオブジェクト指向だったことです。 そのため、以下の本を読み直しました。

どれも実用的でしたが、さらにレベルアップするには、将来的に「ThoughtWorks アンソロジー」と「オブジェクト指向入門第 2 版原則・コンセプト」の読破が必要になることがわかりました。 それを踏まえた上で次の段階にいきたいです。 現段階で次にやることは以下の書籍を読むことです。

読書

読書概要

設計や組織論の本を読みました。 特に「エクストリーム・プログラミング」は感銘を受け、チームに導入しようとしています。

感想文を書いた以外で、軽く読んだ本は以下があります。

来月も引き続き、設計と組織論の本を読んでいきます。

読んだ本

「1on1 大全」

OJT のメンターになったため、1on1 を学ぶために購入しました。 非常に参考になる部分が多く、上長との 1on1 を向上させるために、上長にも読んでもらい 1on1 の質向上に役立てました。

「プリンシプルオブプログラミング」

msksgm.hatenablog.com

エクストリームプログラミング

msksgm.hatenablog.com

リファクタリング 第 2 版」

msksgm.hatenablog.com

美術展

ブルーピリオド展

2 回目いきました。1 回目は知人といったので、今回は 1 人で音声ガイドも購入していきました。 1 つの音声ガイドに 2 種類用意されていました。1 つ目が通常パターンで、2 つ目が登場人物(アニメ版の声優がキャラクターとして喋ってくれる)のパターンです。 全ての項目で 2 つとも聞きましたが、前者はより客観的に見ることができ、後者は没入感を持って楽しむことができました。 特に、登場人物の解説だと漫画とアニメの両方で描かれなかった感情を知ることができ、また 1 つブルーピリオドに詳しくなれました。

技術記事の作成

今月は特にありませんでした。 Arrow の使い方はそのうちまとめたいと考えています。

その他

connpass の勉強会

今月は不参加でした。 Server-Side Kotlin Meetup に参加しそびれてしまったので、次回は参加しようと考えています。

資格

情報セキュリティマネジメント試験に合格しました。 合格感想を zenn にまとめようと考えています。

まとめ

Kotlin に時間をかけられた 1 ヶ月間でした。 基本的な Web API の作り方は学べたと考えています。 共同制作している方に頼りっぱなしなので、トランザクション込みの DB テスト、Spring の仕様、Kotlin の本質的な部分をあまり理解できていないです。 また、DDD を実践していく際に詰まった部分も多く、話し合っても解決できないです。 10 月から予定していた業務での PHP から Kotlin リプレイスが延期してしまったため時間的余裕はあるのですが、第 3 者に説明したり実装できるか不安な状態になってしまいました。

設計に関しては、設計標準を導入することで一定の共通認識を持てたり、課題を話しやすい場を作ることに成功しました。XP をチームに導入しようとしており、「インクリメンタルな設計」を達成しつつあるのではと考えています。
個人的な勉強では、「リファクタリング第 2 版」を読み終えました。 言語は JavaScript ですが、オブジェクト指向の要素が強く、高凝集疎結合ソースコードオブジェクト指向と関係があることを再認識できました。 現在、職場のコードをリファクタリング中なので引き続きリファクタリング関連の書籍を読んでいきます。

先月と比較して、勉強時間を増やせました。 zenn に週 1 記事投稿もやめたので、ソースコードへのアウトプット時間も増えました。 しかし、目標にコミットできているかと言われたら微妙なラインです。 RealWorld を Kotlin で実装するのも、中弛みしたらよくないので来月を目処に完成を目指します。
設計は個人的なインプットにおいては順調なんですが、仕事に活かせていません。 設計標準も決めていけているので 1 つのタスクに対してリファクタリングを盛り込みたいです。

まとめると、勉強時間を伸ばすことができましたが、リターンが少ないと実感した 1 ヶ月でした。 8 月にかけてリターンを得られるように方針を決め、9 月は期末なので知識をまとめられただけでなく、職場にコミットできるようします。