msksgm’s blog

msksgm’s blog

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

2022年10月の振り返り

概要

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

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

msksgm.hatenablog.com

目次

勉強関連

勉強関連 概要

Kotlin と設計関連で勉強していました。 今月から週 1 で Kotlin に関する技術記事の投稿を目標にしていました。 設計は「ソフトウェアアーキテクチャの基礎」を課題図書に知り合いと読み進めていました。

勉強時間

勉強時間の結果です。 今月は、約 127 時間でした。 毎日、最低でも 4 時間程度は勉強できるように時間を確保していたので、そこそこ良かったと考えています。 勉強自体は、Kotlin と設計についてしっかりと学べたと考えています。しかし、勉強会を 3 つ(週 4 日)抱えており、それ以上のことができなく手を出しすぎている感覚になっています。 とりあえず、後 2 ヶ月は継続して、慣れたり優先順位をつけたりしたいと考えています。

項目 1 週目 2 週目 3 週目 4 週目 5 週目
平日朝の勉強時間 11.7 時間(28 ポモドーロ) 11.7 時間(28 ポモドーロ) 15 時間(36 ポモドーロ) 約 15 時間(36 ポモドーロ) 約 3.33 時間(8 ポモドーロ)
平日夕方の勉強時間 0 時間 0.83 時間(2 ポモドーロ) 0.41 時間(1 ポモドーロ) 0 時間 0 時間
休日の勉強時間 14.2 時間(34 ポモドーロ) 10.8 時間(26 ポモドーロ) 約 10.8 時間(26 ポモドーロ) 約 7.5 時間(18 ポモドーロ) 0 時間
RealWorld ペアプロ 5 時間 4 時間 5 時間 2 時間 0 時間
「ソフトウェアアーキテクチャの基礎」勉強会 2 時間 2 時間 2 時間 2 時間 0 時間
connpass の勉強会 0 時間 1 時間 0 時間 1 時間 0 時間
合計 約 32.9 時間 約 30.3 時間 約 33.2 時間 約 27.5 時間 約 3.33 時間

注力分野

Kotlin

今月は、主に以下の 4 点から Kotlin の勉強に取り組んでいました。

  • 「Kotlin イン・アクション」を完読する
  • 「Functional Programming in Kotlin」を読み始める
  • RealWorld を Kotin で実装する
  • 週 1 で技術記事を投稿する

まず、「Kotlin イン・アクション」をようやく読み切れました。感想も作成しました。 まちがいなく Kotlin に対する理解度が深まりました。来年、英語版(原著)で第 2 版が出版されるので、それに備えてもう一度読みたいです。 その後、「Functinal Programmin in Kotlin」を少し読み始めました。しかし、関数型プログラミングの理解が十分ではないので、難航してしまい、一旦中断しました。 RealWorld を Kotlin で実装するのも、なんとか継続できています。これらを通じて、OpenAPI Generator、Property Based Testing、Database Rider の知見を深めています。しかし、勉強会を増やしすぎて若干おろそかにしがちになっています。知人の方の負担が大きくなりすぎないようにしつつ、貢献していきたいです。 週 1 回の技術記事の投稿は継続できました。Kotlin に対して、一定のインプット期間を踏まえた上で、記事の作成に取り組めているの以前よりも情報量が多い記事を書けていると考えています。以下は作成した記事です。

設計

今月も、「ソフトウェアーキテクチャの基礎」の勉強会をしていました。 ソフトウェアアーキテクチャに対する考え方(アーキテクチャ特性、アーキテクチャ粒子)を学びつつ、具体的なアーキテクチャについて学べました。 普段から大規模なアーキテクチャに携わっているつもりでしたが、自分が知らなかったアーキテクチャに対してメリット、デメリットが紹介され、自分の視野の狭さを実感しました。 どのアーキテクチャにもトレードオフが存在します。普段、自分が触っているアーキテクチャの設計について文句を言っていますが、当時は最適だった可能性があると反省しました。

業務では設計標準を策定し、読みやすいコードを意識していました。 設計標準は、推奨から普及しようとしていたのですが、改善が見られなかったため、以下のように定め直しました。

現状、3 ヶ月の期間で振り返りをおこなっているため、12 月に再度振り返りをおこないます。

読書

読書概要

設計関連の書籍と、Kotlin の書籍を主に読んでいました。 思いもよらないきっかけで、Go の書籍も読むことになりました。

読んだ本

「Kotlin イン・アクション」

msksgm.hatenablog.com

「技術者のためのテクニカルライティング入門講座」

msksgm.hatenablog.com

「Functional Programming in Kotlin」

こちらは読み始めましたが、英語なのと関数型プログラミングの知見が必要なので、一旦止まっています。

プログラミング言語 Go」

職場の後輩と 2 人で読み始めました。 2 人とも業務で Go は使っていますが、Go のバイブルの 1 つ(だと考えている)「プログラミング言語 Go」は互いに読んでいなかったので読むことにしました。

「ソフトウェアアーキテクチャの基礎」

知人との勉強会で課題図書として読んでいます。 来月の初週に読み切ります。

技術記事の作成

「Kotlin と jqwik で Property Based Testing」

zenn.dev

「Database Rider で Kotlin(Spring)の DB テストを簡潔に書く」

zenn.dev

「Kotlin(Spring Boot)の API を OpenAPI Generator で自動生成」

zenn.dev

「Kotlin + SpringWeb + Spring Data JDBC で Web API サーバーを作成する」

zenn.dev

その他

connpass の勉強会

今月は以下に参加しました。

forkwell.connpass.com

server-side-kotlin-meetup.connpass.com

まとめ

今月も Kotlin と設計に注力した 1 ヶ月でした。 勉強時間と勉強する機会は増やせていますが、首が回らなくなってきています。 主な原因は、3 つの勉強会を週 4 日でやっていることです。 勉強計画にしても、もう少しメリハリをつけて、目処を決めながら進めないといけないと思いました。

Kotlin に関しては理解度が深まってきたと実感しています。 特に、RealWorld を Kotlin で実装して 3 ヶ月経過した後に、Kotlin の技術記事を書き始めたので、いいアウトプットになっていると考えています。 技術記事の投稿を少なくとも 12 月末までは継続していく想定です。 教わったことを定着していくのはもちろんですが、それ以上のことも実践したいので、Kotlin の書籍を読んでいく時間を確保していきたいです。

設計は、「ソフトウェアアーキテクチャの基礎」を通じて学んでいます。 会社の知り合いとおこなっているので、現場のシステムに対してどのように当てはまっているかを考えながら知見を深められています。 どこまでいっても、行き着くのがトレードオフの関係なのが頭を悩ませます。 技術的に保守性が高い実装方法を提案しても、周囲にその効果を理解してもらえない状況があり、最終的に新規参画者にとってわかりやすい実装を優先しがちだからです。 アーキテクチャコンウェイの法則に従うので、納得感のあるチームビルディングが重要だと実感しています。 現状、それらに対する解決策が思いつかないで行き詰まっている状態です。

業務に関しては、今月はうまくいかないことが多かったと思っています。 自分の不手際な部分もあったり、暗黙知に頼っている部分もあったりと、詰めの甘さを実感しています。自分自身だけの問題もそうですが、あまり他人からのアドバイスを聞き入れておらず活かせてないなとも思いました。 加えて、業務の技術的な内容に対してモチベーションが低い状態で、業務内容に対してネガティブなことが起きてしまい、意気消沈している状態です。 個人的な部分だけでも負のスパイラルに陥ってしまっているので、アドバイスやレビューを求めたり、どうやって実践していくかを決めたいです。

来月以降は、以下のように改善していきます。

  • 個人的な勉強
    • メリハリをつける、週次の目標を用意する。
  • 業務
    • アドバイス、レビュー、フィードバックをもらって、反省する改善する
  • 個人的な勉強を業務に活かす
    • Kotlin は個人的な範囲で進めていく。設計は 1 つの考え方にこだわらない

「技術者のためのテクニカルライティング入門講座」感想

概要

技術者のためのテクニカルライティング入門講座」を読みました。 「前提」「読了時間」「感想」「次に関連で勉強すること」「まとめ」を記述します。

前提

目的

主な理由は以下です。

  • 普段から技術記事の投稿を習慣化しており、読みやすい書き方を模索していた
  • 業務でドキュメントを書く機会が多く、業務向けの書き方も探していた
  • ばんくしさんの「tech に薦めている書籍」という記事で紹介されていたので気になった

前提知識

前提知識というほどではないですが、独学でいかのようなことに取り組んでいました。

読了時間

平均 1 日 30 分で、7 日〜10 日ほどで読み切った印象です。 ただし、ほとんどの章末の問題を飛ばしたので、実践も含めるなら、もっと時間がかかると考えています。

感想

何かしらの機会で技術文書(技術記事、社内ドキュメント、技術書の感想、など)を書く人は、軽くでもいいので読んでおいて欲しい本だと思いました。 そして、全ての内容をその場で理解し実践できるかにかかわらず、印象に残った箇所から取り組めれば、必ず文章に改善が見られると思いました。

理由は、本書における初歩的な部分を説明する第 1 章から第 4 章の説明に非常に共感したからです。 それぞれのタイトルは以下になっています。

  • 第 1 章ロジカルライティング × テクニカルライティング活用の基礎知識
  • 第 2 章わかりやすく、簡潔な文章を書くテクニック
  • 第 3 章読みてに伝わる文章を書くテクニック
  • 第 4 章読みやすさを高める文書フォーマット〜表現・表記のルール

どれも、読み手を想定し次の行動に移せる文章を一貫しています。 端的に文章を書くため、そして読み手の負担を下げるために、不要な語尾や文章のつなぎ方を排除したり、情報の構造化を図っています。 これらは大学院生だったときに、論文に用いる端的な文章を普段から意識していたことが、技術文書の内容で言語化されており、非常に参考になりました。 普段、うまく体系化できていなかったり、感情的や話言葉になってしまう部分を改善するために、自分にも他人もお薦めできる内容でした。

実践編である、第 5 章以降も共感できる内容でした。 若干具体的すぎたり、普段あまり使わないテーマ(社外メール、説明書など)だったので、読み飛ばしてしまいました。 第 4 章までの実践編になるので、一読することをお勧めします。

この本を読んでいて反省した点は、レビューしてもらえる機会がほとんどなかったことです。 普段から、ドキュメント化や技術記事の投稿などをおこなうことで他人に読んでもらう文章を意識することで、文章力の向上を図っていました。 それも個人的には練習になりましたが、本当に他人から読んでわかりやすかったのかはわからないと思いました。 業務やプライベートに限らず、レビューをもらえる機会があれば積極的にもらいたいと思えました。

次に関連で勉強すること

技術文書の書き方そのものについて、一定期間に注力して勉強する予定は現場ありません。 長期的な視点からみて、以下に取り組もうと考えています。 特に、「TC 技術検定 3 級テクニカルライティング試験」はキャリアの早いうちに取得したいと考えています。しかし、特に実践はできていません。

  • 本書の第 4 章までを繰り返し読む
  • 「理科系の作文技術」を読む
  • 「TC 技術検定 3 級テクニカルライティング試験」の勉強をする、受験する

まとめ

伝わりやすい技術文書の書き方についてまとめられた良書でした。 1 章から 4 章を、可能な範囲から実践するだけでも劇的な効果が得られると思いました。 個人的にはレビューをもらう機会に乏しいので拡充したいと思いました。 技術文書の書き方は他の書籍や資格もあるので、興味があったら調べてみてください。

「Kotlin イン・アクション」感想

概要

Kotlin イン・アクション」を読みました。 「前提」「読了時間」「感想」「次に関連で勉強すること」「まとめ」を記述します。

前提

目的

主な理由は以下です。

  • Kotlin をメインの言語にしたいと考えていたため、Kotlin の書籍を探していた
  • 「Kotlin イン・アクション」は Kotlin の製作者が書いたバイブル的な書籍だと考えたため読むことにした

前提知識

  • Java は会社の研修で 2 ヶ月ほど触った(配属されてからは触っていない)
  • 読み始めた時点では Kotlin を触り始めて 2 ヶ月ほどだった
  • 書籍を読みながら、Kotlin の造形が深い知り合いと RealWorld を一緒に作成することで、知見を深めていった

読了時間

読み始めてから読み終わるまで、2 ヶ月ぐらいかかりました。 しかし、全く読めていない時期もあったので、平均すると 1.5h/日 * 30 日で 45 時間ほど時間を要したと考えています。

感想

まちがいなく、この 1 冊で Kotlin の本質的なことを学べると思いました。 この本の読了前後で、Kotlin に対する理解が段違いに変化したと考えています。 翻訳者の方々は現在も Kotlin コミュニティで名前をよく聞く有名人たちで、本書に限らず感謝の気持ちが止まりません。 Kotlin を触っている人、これから触りたい人には是非読んでほしいと思いました。 書籍の良かった点は以下です。

  • バイブルなので、Kotlin の本質的なことを学べる本
  • サンプルコードを用いた学習が容易
  • 日本語訳がわかりやすい

前半部分は Kotlin との基本的な文法を学びます。 その内容は、関数、クラス、オブジェクトから始まるので、初心者にもおすすめです。 加えて、単純に「こうだからこう」ではなく、「この処理は内部的にこうなっていてこうなる」といった説明のため、言語のなんとなく使っていた部分を理解しながら読み進められます。 Java の知見があれば、Java に変換されたときの挙動も理解できます。逆に言えば、Java の知識が最低限ないと読み進めづらい可能性があります。
後半部分は難易度が高くなります。自分も最後の 2 章は読み飛ばしてしまいました。 しかし、高階関数ジェネリクスを応用した使い方は、仕様が厚い言語を使う際の醍醐味ですし、OSS も読みやすくなるので一読をおすすめします。

気になった点は 2 点です。

1 つ目は 2017 年出版ということから、Kotlin のバージョンが古くなっていることです。 大きな問題はありませんでした。しかし、sealed の説明で「class には使えるが、interface には使えない」といった現在のバージョンとは異なる説明があります。

2 つ目は本書とは関係ない部分です。それは絶版になってしまっていることです。 おそらく原因は、日本における使用者の人口が少ないため、あまり売れなかったのではないかと考えています。 自分は Amazon の中古で定価以上の値段を払って購入しました。
原著の第 2 版が来年の春に発売されます。現在(2022 年 10 月現在)は MEAP で 5 章まで公開されています。 目次を拝見したところ、構成自体に大きな変更はないので、英語に抵抗がなければ、購入をおすすめします。

www.manning.com

次に関連で勉強すること

Kotlin の知見を深めるために、以下を実践します。

  • RealWorld の実装
  • 技術記事の投稿

また、書籍では以下を読みます。

  • Functional Programming in Kotlin
  • Kotlin Design Patterns and Best Practices
  • Kotlin in Action, Second Edition

本書籍を踏まえて、Kotlin を理解するには Java の知見も必要なので、将来的には Java の勉強もします。

まとめ

Kotlin の本質的な部分を学ぶには最高の一冊でした。 Kotlin に対して造形を深めるの、最初の一冊だと思いました。 絶版になっているのが、非常に残念です。 原著の第 2 版がでるので、3 ヶ月後ぐらいをめどに読みたいと考えています。

2022年10月の目標

概要

10 月の目標です。

勉強関連

以下を勉強していきます。「Kotlin イン・アクション」を読み切ります。

  • Kotlin
    • RealWorld の作成
    • 技術記事の作成
    • 「Kotlin イン・アクション」読み切る
    • 「Functional Programming in Kotlin」を読み始める
  • 設計

読書

「技術者のためのテクニカルライティング入門講座」を読みます。

美術展

特に目標を決めていません。

技術記事の作成

Kotlin のテストについての記事を書きます。

2022年10〜12月の目標

概要

10 月〜12 月の目標です。

10〜12 月の目標

勉強関連

以下を勉強していきます。 Kotlin は Kotlin の書籍を月 1 で読んでいきたいです。 設計は勉強会用の書籍を読みつつ、普段の業務でアウトプットしていきます。

読書

勉強と同様に Kotlin と設計です。他には以下を読む予定です。

  • 「技術者のためのテクニカルライティング入門講座」
  • 「Lean と DevOps の科学」
  • その他

美術展

今月は特に決めていません。

技術記事の作成

週 1 で Kotlin についての技術記事を作成します。 今月は Kotlin を用いたテストについてです。

まとめ

6〜9月はあまり勉強できなかったので、10〜12月は時間を確保して読書を進めていきます。 10 月と 11 月の終わりに更新する予定です。 また、年末には1年の振り返りを行います。