2022 年の振り返り
Last updated on
初投稿は、年始なので昨年の振り返りから。
ブログは流行りに乗っかって Astro で作ってみました。
Google Domains でドメイン取得 → テンプレートをベースに整地しつつ感覚を掴む → ガワができたら Vercel にデプロイまで 3 時間程度で出来て便利!
読書
「技術の引き出しを増やす」が一番のテーマだったので、とにかく意識して技術書を読み漁った 1 年間でした。
ざっと冊数を数えてみたところ 30 は超えていそうだったので、それなりにハイペースで読んでいたようです。
実際に 2022 年に新しく読んだ本はこちら。
(現在進行系のものも含む。これ以外にも積読のまま手付かずになってしまった本も数冊…)
以下では、改めて振り返っても心から推せる本をテーマ別にいくつか取り上げてみます。
アーキテクチャ系
- ソフトウェアアーキテクチャの基礎
- 業務で役に立った部門第 1 位
- アーキテクチャを決めること = 求められるアーキテクチャ特性を分析してトレードオフに答えを出すこと、という整理が極めて分かりやすく、自分のようなアーキテクト 1 年生にとってはこれ以上ない入門書だった
- アーキテクチャパターンの解説も網羅性があって学びになったが、それ以上に終盤に書かれていたアーキテクトとしての振る舞いや技術ポートフォリオを日常的に進化させていく方法についての記述が参考になった
- また、本書で解説されていた ADR などのプラクティスを業務に導入して推進できたことは実体験と結びついて深い学びになった
- データ指向アプリケーションデザイン
- 良い評判しか聞かないのでいつかは読みたいと思いながら値段と分厚さに躊躇して手が出せていなかった一冊。12 月についに着手して絶賛進行中
- 同時期に詳細データベースも並行して読み進めていて、今までブラックボックスとして扱っていたデータベースの内部構造についての解像度が一気に上がった
- この 2 冊を自分なりに咀嚼できれば、永続化を伴う設計の引き出しが明確に増えそうな実感があるので、一通り読み切ったら手を動かして知識を活用できる段階まで至りたい
Functional Programming 系
- 関数プログラミング実践入門 ─ 簡潔で、正しいコードを書くために
- いわゆる「関数型言語」について Haskell を題材に、背景にある思想や歴史から一通りの言語機能まで丁寧に解説してくれていて非常に分かりやすかった
- 本書で基礎知識を一度仕入れておくことで、様々な技術領域で同様の思想に基づいた用語や設計手法が登場した際にすんなりと受け入れられるようになった
- Domain Modeling Made Functional
- 読んでいて面白かった部門第 1 位
- 「関数プログラミング実践入門」で関数型言語の基礎知識を身に着けた後に「じゃあ実業務ではどう活かせるの?」という流れで読めたので、すんなりと考え方が入ってきた
- 特に、型の変換によって状態遷移を表現することで仕様をより明示的に表現する手法や、関数の部分適用による依存性注入など、知識として持っていれば日常的な設計業務の中でもすぐに活用できそうなテクニックが複数解説されていて、実践に繋げやすい点が良かった
- (また、個人的には英語で技術書を読むのは初めてだったが、スピードは多少落ちるものの意外とスムーズに読めるなという肌感にも繋がり、本を選ぶ際の候補が広がるきっかけにもなって良かった)
要素技術系
- 検索システム ― 実務者のための開発改善ガイドブック
- 業務で開発していたアプリケーションに全文検索機能を組み込むことになったので前準備として読んだ
- 「検索」という分野を扱うのは初めてだったが、第 1 部で解説されている基礎を一通り理解しておくことで開発上の主要な論点についてスムーズに押さえることができた
- 第 2 部の発展的な内容についても、必要になったタイミングで参考文献として挙げられている論文などと併せて読み返すことで思考の起点にできそうな作りになっている点が良かった
- Web ブラウザセキュリティ ― Web アプリケーションの安全性を支える仕組みを整理する
- セキュリティに対する苦手意識を払拭するために読んだ
- 基礎的な部分については個別の知識としては既に学んだことがあるものも多かったが、スコープを「Web ブラウザのセキュリティ」に絞って「リソース間の隔離をいかに実現するか」という視点で各種攻撃やセキュリティ機構についてまとめられているのが分かりやすく、知識の体系化に繋がった
「良い」と思える本の基準
社内や Twitter で勧められている本は深く考えずにまずポチる、という精神で読書対象を選んでいたため、実際には読んでみてもそこまで響かなかったものや読み進めていく中で挫折してしまったものも一定数ありました。
そんな中で上記に挙げたように「良い」と思える本には一定の基準がありそうなので、言語化してみたいと思います。
- 自身にとって未知、もしくはぼんやりとは知っているが理解が浅い領域について、その分野の背景にある思想や原理・原則を丁寧に解説しているものが良い
- 具体的な開発手法などのテクニック集であれば Web 上の記事の方がむしろ新鮮な情報が得られるので、そちらでカバーする方が望ましい
- その本を起点に知識のネットワークを広げていけそうか?を意識して選ぶと良さそう
- 読みはじめの時点では少し背伸びした内容だとしても、発展的な内容まで網羅的に体系化されているものの方が理解が深まってから読み返せるので良い
- 実際に、取り上げたものの大部分が付録として大量の参考文献をまとめてくれており、今後とも長い付き合いをしていくことになりそう
- 既に業務で扱ったことがあるなど一定の知識がある対象について理解度を確認する目的で読む場合は、斜め読みで摂取効率を上げても良さそう
仕事
上手くいったこと
技術の引き出しを増やす
- 業務における Role が広がった
- いち開発メンバーから手を広げてチームのアーキテクト, Embedded SRE もやるようになった
- 直近はシステムそのもののアーキテクチャから一歩踏み込んで組織の責任境界の設計に関しても変化を起こせないと意味がないのでは?と感じる機会が増えてきたが、ここはまだ実績を作れていないので継続的な試行錯誤が必要な領域だと感じている
- 新しい技術の実践ができた
- 初めて扱うものも含めて、色々な要素技術やツールを使ってスクラッチで実装する機会を持てた
- GraphQL Client/Server の設計
- アプリケーションへの全文検索機能の組み込み
- アプリケーションへの OpenTelemetry の導入
- GitHub Actions を用いた CI/CD の実装
- Terraform を用いた IaC
- Datadog, Sentry と戯れる
- 個別技術の知識ももちろんだが、何かしら新しい技術をキャッチアップして実戦投入するまでの所作をスムーズにできるようになったのが収穫だった
物事を前に進めることに関して自分なりの型を作れた
- ゴールに旗を立てる → 小さく検証する → 周りを巻き込んで形にするのプロセスを回せるようになった
- 最初に中期で目指したい理想像を一枚絵として描きチームで合意 → 技術的な不確実性を潰すための PoC 実装を短期間で用意して見積の精度を上げつつチームに手触り感を醸成する → タスク分解・依存関係の整理を網羅的に行って可能な限り並列化して進める → 定期的にレビューを行って軌道修正する、という一連の流れを自らが主となって意思決定する機会に恵まれた
- 文章にすると教科書通りの内容だが、一つひとつの所作を自信を持ってできるようになった点が個人的には一番成長したように感じている
- ドキュメンテーションが手に馴染んできた
- ADR, PRD を書きましょうというムーブメントをチームに引き起こすために、自ら率先して書いていたら明らかに書くスピードが上がった
- 一種のプロトコルとしてチーム内コミュニケーションを円滑にしてくれるもの、という点で推せるようになった
客観的な評価
- 会社で定められているミッショングレードが 2 つ上がった
- エンジニアに正式にジョブチェンジした当初に定めた目標 (2 年で今のグレードになる) を結果的に達成できたので素直に嬉しかったし、自信にも繋がった
上手くいかなかったこと
新しいプログラミング言語の習得
- 業務ではこれまでの延長線で TypeScript, Python を書くことが多く、何か新しいプログラミング言語をプロダクション品質で書けるようになるまでには至れなかった
- 最低限やったこととして、前述した読書の一貫で Haskell, F# などの写経は行っていた
- モナドの do 記法や Computation 式が出てきてもびっくりしない程度には親しみが持てた
- が、プロダクション品質のコードが書けるレベルまでは遠そう
プロダクトマネジメント
- ビジネス上の戦略に立脚して技術の計画を立てることはある程度自信を持ってできるようになってきたが、技術を起点に戦略を転換させられるだけのパワーはまだ持てていない
- キレイにプロダクトを作りきって OKR を達成した次の期には、事業戦略の大転換により作ったものが無用の長物と化す (までは言いすぎとしても、計画当初ほどの重要度を持たなくなった) といった経験をした
- 理想的には最初からそのようなビジネス戦略の変更にも耐えられるような抽象度を保ったプロダクトを作るべき or プロダクトアウトでビジネス戦略のコアになれるだけのものを作るべき、といった反省は容易にできる (し、もちろん意識もしていた) が、それを実現はできていない
- いわゆる Technical Product Manager と呼ばれる人々のすごさが改めて分かったし、そのような役割を担えるメンバーを意識的にアサインすることの大切さも身に沁みて実感した
2023 年に向けて
最後に、今年の抱負をまとめて終わろうと思います。
大きく軸にしたいと考えているのは以下の 2 点です。
- 何かしらの技術領域でポジションを取れるようになる
- 思考の起点となる幅はある程度広げられたと思うので、次は深さにフォーカスする
- 興味に従って乱読することもゼロにはしないが、特定の技術領域に関して仕様や実装の背景になっている論文などを深く読み込む、学んだ内容を手を動かして実装するといった経験を意識的に積んでいきたい
- 最終的には、小さくても良いので何かしら独自の知見や考えを継続的に発信できるようになっていたい
- 英語を思い出す
- 英語をメインの言語とするチームに所属し、業務で使う実績を作る
- 社内外問わず、文章を書く際に言語の制約がない場合はなるべく英語を使って書くことで心理的なハードルを下げる