Webエンジニア2年目を振り返る

## はじめに

皆さんこんにちは、[Webエンジニアのtomo](https://twitter.com/tomokn5)です。
2022年10月1日よりWeb系自社開発企業のエンジニアとして勤務し、ちょうど2年が経過しました。

1年目の時と同様に振り返りをしたいと思います。

1年目の振り返り記事はこちら：https://qiita.com/tomo-kn/items/7d83f8e4c1422e2edbe1

## 新しく身につけた習慣

- [はてぶテクノロジーの人気記事](https://b.hatena.ne.jp/hotentry/it)で面白そうな記事を毎日読む
- 英語力向上のため、[dev.to](https://dev.to/)を1日1記事読む

1年目はとにかくITに対する知見を広めるため、先輩エンジニアにおすすめされた本を片っ端から読んでいました。

2年目は少し趣向を変え、新しい技術の情報を能動的かつ積極的に取るようにしました。

はてぶ経由で読んだ記事で、特に面白かった記事はこちら
- [React 19の新機能まるわかり](https://zenn.dev/uhyo/books/react-19-new)
- [Next.jsの考え方](https://zenn.dev/akfm/books/nextjs-basic-principle)
- [フロントエンドカンファレンス北海道 2024 公開資料・Xアカウントリンクまとめ](https://zenn.dev/yumemi_inc/articles/2024-08-25-frontend-conf-hokkaido-2024)
- [PPR - pre-rendering新時代の到来とSSR/SSG論争の終焉](https://zenn.dev/akfm/articles/nextjs-partial-pre-rendering)
- [Next.js のページ遷移を全力で止める](https://speakerdeck.com/ypresto/hack-to-prevent-page-navigation-in-next-js)

現在フロントエンド専門なのでフロントにかなり偏っていますね。

また、dev.toをほぼ毎日読むことで、英語に対する苦手意識が前より解消され、公式ドキュメントの抵抗感がより減りました。

これらの習慣を身につけたことで、技術のキャッチアップに苦労することはほぼなくなりました。

### 読書量は1年目の1/3ぐらい？

とはいえ読書もそれなりにしました。
取り組んだ冊数で言うと、20冊ぐらいだと思います。

ただ、実際に本は読まず要約で済ませるものもあったり、途中で読むのやめたりしたものも多いです。

## 個人開発やOSS活動

TypeScriptとGoを使って、それぞれ1個簡単な成果物を作ってみました。

- [GitHubのイシューをChatGPTでレビューしてくれるGitHub Actionsを作った](https://zenn.dev/tomo_kn/articles/openai-issue-reviewer)
- [1日でシンプルなアラーム機能のCLIをGoで作った話](https://zenn.dev/tomo_kn/articles/simple-goalarm-cli)

何個かOSS活動はやってみてはいるのですが、未だマージされた数は0です。
- https://github.com/ota42y/openapi_parser/pull/157
- https://github.com/shadcn-ui/ui/pull/3868
- https://github.com/colinhacks/zod/pull/3016

来年はこの辺り改善していきたいです。

## 3年目にやりたいこと

以上を踏まえ、主に2つ目標を掲げます。

### 1. エディタライブラリマスターになりたい

現在のプロジェクトでProseMirror製のエディタライブラリを使用しており、ありがたいことに僕が中心となって開発しています。

つい先日、プロジェクト内でエディタライブラリの勉強会を開くなど、エディタ開発をマスターしたいモチベーションが高いです。

フロントエンドエンジニアとして1つ強みがあるとキャリア的にも強いと思うので、エディタ開発を強みにしていきたいです。

よってWebエンジニア3年目は、
- （当たり前だけど）現プロジェクトでのエディタ開発を頑張る
- 開発で出てきたいろんな細かい不具合や要望を、エディタライブラリ側に伝える
- ↑のPRを上げる

以上のように行動していき、**エディタ開発であればどんな機能開発でも正確に見積もれる**ようになりたいです。

そして結果として、OSS活動初のコントリビュートを実現させたいです。

### 2. ブラウザ制作を通して、セキュリティやブラウザの仕組みに強くなりたい

以下の記事を参考にブラウザを作成したいです。
[ちいさな Web ブラウザを作ってみよう](https://browserbook.shift-js.info/)

React/Nextjs この辺りの技術を使っていると、確かに動くし理屈はある程度理解してるつもりなんだが、ブラウザのブラックボックスな仕様の上で成り立ってることが多いな、と感じています。

なので、自分でブラウザを作ってみることで、
- ブラウザはどうHTMLをレンダリングしているのか（ハイドレーションなど）
- セキュリティについて（ヘッダの処理など）
- 履歴の持ち方

以上のようななかなか普段の開発では得られない知見を深めていきたいです。

また、↑の参考記事はRustでの開発を前提としていて、やはりフロントエンドエンジニアとしてはRustは勉強しておきたいので、一石二鳥だと思っています。

## 3年目にやりたくないこと

さて、昨年の記事ではやりたくないことは書かなかったのですが、最近足し算ではなく**引き算**の方が、勉強においても、コミュニケーションにおいても重要だと実感しています。

やりたくないことは、端的にいえば「**2年目までの浅く広い勉強**」です。


### 1. 本をただ読むこと

まず、初級〜中級の本は費用対効果が悪い段階に入ったと思うので、意図的に読まないようにしていきます。

次に上級者向けの本ですが、こちらはたとえば「輪読会」など、実際に何かアウトプットがないとあまり意味がないと思っています。

上級者向けの本は知識を深めるためにあると思うので、1冊取り組むだけでもかなり根気を要するはずです。

よって、1〜2年目までの、ただ量をこなす読書は卒業しようと思います。

（誤解してほしくないですが、2年目までの勉強が無駄だったわけではないです。むしろ2年目までで浅く広くでもいいから知識を広げられたので、3年目は深める勉強ができると思っています。）

（あと、ふつうに毎日の技術記事チェックは習慣として続けていきます。広げる勉強も最低限は重要）

### 2. 楽しくない勉強や開発

もちろん楽しくない時間もあるにはあるのですが、本当に興味のあるものはどこか楽しさがあるはずです。

3年目にやりたいこととして掲げた2つの目標である「エディタライブラリ」と「ブラウザ」は、楽しめる自信があります。

そういう自信があるものに対して楽しみながら深める勉強をしていきたいと思います。

1年で、しかも休日だけでできることは限られているので、2つ面白そうな大きな題材があるだけで十分だと思っています。

## 4年目以降にやりたいこと

もちろん「エディタライブラリ」と「ブラウザ」以外にも興味のあることはあります。

その中で、これは特にやりたい！と思っているけど、優先順位的に今じゃないと思っているものがあるので、1個だけメモしておきます。

### 1. 難解プログラミング言語を読解したい・作りたい

きっかけは以下の動画です。

<iframe width="560" height="315" src="https://www.youtube.com/embed/c2he4SB4yTY?si=4LFihO-PiTVup9Cx" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

難解プログラミング言語を学習することで、プログラミング言語を構成する必要最低限の要素を学べるのは、確かにそうなんだろうと思い興味を持っています。

僕は今、自信を持って書ける言語は
- Ruby
- TypeScript

の2つですが、難解プログラミング言語を通してプログラミング言語そのものを理解することで、「**言語に依存しない開発者**」になれる気がしています。

とはいえ、それはもう少しエンジニアとしてのレベルが上がってからの話な気もするので、まずはフロントエンドエンジニアとして専門性を高めることを優先したいと思います。

## まとめ

2年目は取捨選択を考えながら開発・勉強した1年だったと思いますし、3年目以降はよりその考え方が重要になると思っています。

いつかまたバックエンドエンジニアもやりたいと思っていますが、先輩エンジニア曰く「まずは1つを極めて専門性を上げるべし」とのことなので、その言葉を信じてフロントエンドエンジニアとして突っ走ってみたいと思っています。

（とはいえ、フルスタック的に開発できる機能開発にアサインされたら、それはそれで喜んで開発しますが！笑）

3年目も頑張ります💪