2022年の振り返り

年の瀬ですね。
去年も振り返り記事を書いたのですが、今年も簡単に書いておこうと思います。

去年はnoteに書きましたが、今年はブログで書きます。

note(ノート)
エンジニアとしての2021年を振り返る|すな|note 年の瀬ですね。 みんな2021年やったことを振り返ってるのを見ると、すごい濃いなーと感じるのと同時に自分も振り返ってみたくなり筆を取っている次第です。 基本的に自己...

去年に引き続き今年もただのポエムで自己満100%なのであしからず。

現在でエンジニア歴2年8ヶ月。
エンジニアの2年目後半と3年目前半を振り返る感じになります。

ちなみに10月で1年半働いた会社を辞めて、11月ニート期間を過ごし、12月から新しい会社で働いています。

目次

年始に立てた目標の振り返り

改めて年始に立てた目標を振り返ると以下の通りです。

・ライブラリを何か作ってみる
・eslintのプラグインを何か作ってみる
・Chromeの拡張機能を何か作ってみる
・ラズベリーパイ使って何か作ってみる
・OSSコントリビュート(PR発行とマージ)
・技術ブログを月2本以上書く

元々これらの目標を立てた背景として、何かを作ってみる側に立つことで、使う側では見えなかったような視座が手に入れられるのではないかという思惑がありました。
その辺も含めて一つずつ振り返っていきます。

ライブラリを何か作ってみる

これはGitHub Actionsとnpm packageとGoでそれぞれ作ったから一応達成したと言えそうです。

感想としてはnpm packageは色々考えることがあってめんどくさい一方、Goはめちゃくちゃ簡単に作れて開発者フレンドリーだなと思いました。

いくつか作ったもののGitHub Actions以外はあまり実用的なものでもないので誰かに使われるようなものではありません。

そういう観点から考えると、作ってみたからと言って何か変わったかと言えば、正直作り方がわかった以上のことはなかった気がします。

eslintのプラグインを何か作ってみる

これは結局作ってないので達成できてません。

一応何回かトライはしたんです。
こういうのあったら便利だなって思って作ろうとしたんです。

ただ調べるともう既に存在してるんですよね。笑
エコシステムとして結構成熟してるので自分が考えるようなこれ便利だなーというやつはもうたいていあります。笑

これは引き続きチャンスがあればトライしたいです。
その代わりeslintのflat configは触って試してみました。

プラグイン側も今後はflat configに対応していく必要がありそうなので、そこでチャンスがあれば作りたいなと思ってます。

Chromeの拡張機能を何か作ってみる

これも達成できてません。
これに関しては特にアイディアも思いついてないです。

ラズベリーパイ使って何か作ってみる

これも同じく達成できてません。
こちらはアイディア自体はあったのですが、全く知らない領域なのでどこから勉強し始めればいいかわからず足踏みしてしまいました。

OSSコントリビュート(PR発行とマージ)

これは見事達成できました。
エンジニアとしての1年を振り返ってもここが一番嬉しかったポイントかもしれません。

faker.jsという2022年12月現在8.3KのリポジトリにPR出して無事マージされました。

GitHub
infra: add CI step to detect generate script diffs by sunadoi · Pull Request #1405 · faker-js/faker #813 After running the generate:locales command in the workflow/ci pipeline, check for some uncommitted diffs with the following command. git add . git diff --c...
GitHub
infra: move the check-code-generation job to pr.yml by sunadoi · Pull Request #1419 · faker-js/faker check-code-generation CI fails in main branch. This PR Moves the job to pr.yml and run it only for PRs and not main. #1405 (comment)

コードの自動生成をする必要がある場合にPRにコメントするCIを作ったのですが、マージした後にわざわざ以下のようなコメントをもらえて本当にやってよかったと思います。

I just want to report you back I LOVE THIS NEW FEATURE 😍

役に立つことができてよかったのと、OSSがどんなことに気をつけながら開発されているのかが知れたり、英語でやりとりする練習になったりとかなり学びが大きかったです。

技術ブログを月2本以上書く

これはほぼ達成したと思ってます。

実際は転職の間でニートしていた11月以外は月2本ずつ書きました。
11月はニートだったので0です…
その代わり12月は4本書きました
よって年間で合計24記事書いたので、実質月2本です!(甘め

ニート期間はたっぷりリフレッシュしたので仕方ないと自分に言い聞かせています。

ただ、これは反省なのですが、月2本書くことを目標にした分、後半はクオリティ的にあまり満足できていなくても公開したものもありました。

継続して書くためには少し高めのいい目標だったと思う反面、月2本はクオリティ担保することを考えるとちょっと微妙かなという気もしています。

自分の中では、既に世の中にありふれている「やってみた」みたいな記事はあまり書かないようにしているというポリシーがあります。
書いたとしても自分なりの考えや考察を入れたものにするよう心がけています。
(これはあくまで自分の中のポリシーであって、他の人がやる分には全然いいと思ってます)

上記のような勝手な制約が自分の中にあるので月2本というのはきつい時期もありました。

今年の技術的な振り返り

去年の振り返りでは月毎に振り返ったのですが、あまり時系列で振り返る意味もないなと思ったので今回はやったこと単位で。

TypeScript力の向上

今年の前半は機能追加タスクをひたすらやっていたのですが、今後の運用保守やコードの読みやすさを考慮してTSの型安全性にこだわることがとても多かったです。(型安全性という言葉が適切かは一旦置いておきます)

具体的には以下のことをやりました。全てブログ記事にしています。

  • Mapped TypesやConditional Typesを使って型安全性を高めるような型定義を自作
  • typoしてもコンパイルエラーで気づけるようにstringではなくtemplate literal typesを使う
  • ライブラリ提供の型の型安全性を高めるように拡張
  • 関数のオーバーロードで型安全かつ使いやすい関数を定義

自分は楽するために苦労するのが好きで、一度作った型定義やシステムでその後の運用保守が楽になったり事前にコンパイル時に気づけるようになったりする仕組みを作るのが好きです。

こういったことをするのにTSの表現力は非常に強力で、やりたいなと思ったことはたいてい工夫次第でなんとかできることを知れてよかったです。

この1年で自分の中でかなりTS力は向上したのではないかと満足してます。

Rails → Goのリプレイス

これは副業の方で担当させてもらったのですが、Railsで動いているシステムをGoにリプレイスするというタスクを任せてもらいました。

0から基盤を構築するということで、わからないことも多かったですが色々調べながらなんとか数個のエンドポイントをGoで作り、ECS上にデプロイしてALBのパスルーティングで振り分けるということができました。

このタスク中にエンドポイントを作るにあたって必要なファイル群を一括で作成するような自動生成スクリプトを書いたりしました。やっぱり自動化が好き。
他にもコードの処理がどうなってるのかコードリーディングしたり。
何か処理を追おうと思った時にGoのコードはやっぱ読みやすいなと思いました。

正直今でもGoのベストプラクティスらしきものはわかってないですが、現職で触る機会がありそうなので今後身につけていきたいなと思ってます。
何はともあれ非常にいい経験になりました。

React18対応

Reactの18がリリースされたので、主にSuspense周りを勉強し直してプロダクションコードに組み込みました。
StrictモードでのuseEffectの挙動が変わったのでその挙動の違いを調べたりしていい勉強になりました。

最近だとβ版の公式ドキュメントがかなり整ってきたっぽいので一気に読みたいなと思っています。

フロントエンドのテスト

今年はテスト周りちゃんと勉強したいなと思い、業務(前職)で一通り経験させてもらいました。

vitestを使ったユニットテスト、playwrightを使ったE2Eテストを0から導入して書いていきました。
現職ではRTLを使ったコンポーネントテストも少しですが書いています。

ユニットテストやE2Eテストではfirebaseとの接続が必要だったのでemulators環境を用意して実際のデータのやり取りを含めて記述する必要があり、考慮することが多く大変でしたがわりと知見が増えたのではないかと思ってます。

mock化周りでハマることもありましたが、だいぶ理解が進みました。

OSSコントリビュート

既に記載した内容なので詳細は省略しますが、やはりこれが自分にとっては一番大きかったです。

ちなみに先ほどのfaker.js以外にGoのリポジトリにもPR出したのですが、全く音沙汰なしでした。笑

メンテナーによって対応とかも全然違うんだなと当たり前のことを思いながらいい学びになったと思ってます。笑

管理画面のフロントエンド

これは12月に現職に入ってからなのですが、新しく管理画面を作るというタスクを任せてもらいました。

もう一人正社員の方がいるのですが、自分の方がフロントエンドに詳しいということで片っ端から開発環境整備しつつ画面に必要なコンポーネントなどを作っていきました。

結果、30画面くらいをざっと作り終えられました。
かなり順調に進められたのではないかと思います。

MSW使ってAPI処理をモック化したりとタスクを進める上で滞りなく手戻りなく進められるような工夫をしながら進められて今のところ満足しています。

年始からはバックエンドの実装もやっていくのでそれも楽しみです。
なんだかんだNode.jsでバックエンドのAPI開発ってちゃんとやったことないので。

今回はデザイナーさんがいないのでデザインをある程度自分で考えながらやっているのですが、やはり難しいですね…
「デザインはセンス」という言葉は逃げだという強い気持ちを持って開発していますが、それでもやはりこういうケースはどうしたらいいんだろうと迷うことが多々あります

デザインの本とか読んでも言ってることはそうだよなとなるんですが、実際のケースに当てはめるのが難しい…
改めてデザイナーさんはすごいなと…デザイン力向上させていきたいのでできる範囲でチャレンジしていきたいです

プロジェクトではNext.jsを使ってるのですが、諸々の事情からECSでデプロイすることに。
Next.jsをコンテナ化するのは初めてだったのですが、色々勉強になることが多く楽しかったです。

インフラ構築にはterraformを使いましたが、うーん…
以前も使ったことはあるんですが、コンソールでやるよりは全然いいが、個人的にはめちゃくちゃ好きかというともうちょい痒いところに手が届いて欲しい感が随所にあります笑
まあないものねだりですね…
terraform CDKとかどうなんでしょうとちょっと気になってます

転職活動の振り返り

今年の自分にとっての一大イベントは転職でした。

転職ドラフトを使って転職活動したんですが、友人からインタビュー受けたものが記事になってるのでよかったらそちらも見てみてください。

yutaro blog |
転職ドラフトを使って年収200万アップでメガベンチャーに転職したエンジニアにインタビュー | yutaro blog プロジェクト経験やスキルをに基づき、企業側が年収付きの指名を行う競争入札型転職サービス「転職ドラフト」を使って年収を200万以上アップさせてメガベンチャーに転職し...

最終的に内定をいくつかもらった中で最後までめちゃくちゃ悩んだんですが、色々な人に相談するうちに今の自分にとってはカルチャーマッチを優先した方が良さそうということがわかってきました。

実はやりたいことベースでは別の会社優先だったんですが、上記の理由から今の会社に転職しました。

結果的にはこの選択はかなり正解だったなと今は思えてます。
めちゃくちゃカルチャーフィットしてるし、配属されたチームもいいチームだなと思うし、結果的にやりたいこともできている。
年収アップもできてかなりいい環境に恵まれたなと満足です。

これまで経験できてなかったことがたくさん経験できそうなので、バリバリやっていきたいと燃えています。

私生活

出来事として一番大きかったのは結婚したことですかね。
とは言え7年くらい付き合ってたし、「結婚」自体に特別な意味を感じてないってのが正直なところです。笑
まあ向こうの親族が喜んでくれてただけでもしてよかったのかも。

あとは今年は趣味がかなり充実しました。
ピアノ、ボルダリング、お酒

ピアノは本当にどハマりしてピアノの先生のところにもレッスン通ってるし、家にいる日は毎日欠かさず弾いてます。
ようやくバッハのメヌエットが弾けるようになりました。
今はエリーゼのためにを練習してます。難しい…

運動不足だったのでボルダリングはちょうどいい運動の機会でこれまたQOLが上がりました。

やっぱり自分はできなかったことができるようになるってのが楽しく感じるんだなと思いました。
ピアノやボルダリングはそれが可視化されやすい。

あとニート期間にお酒の勉強を色々したんですが、知識が増えた状態で飲み比べるとこれまた面白い。
バーでマスターと話しながら美味しいお酒を飲むのにハマりました。

今年はピアノをはじめとしてプライベートの時間を趣味に使うことがかなり増えたので、去年より勉強時間はかなり減りました。
勉強自体好きだったのでそれはそれで楽しくやってたのですが、妻と過ごす時間が増えて家族としての幸福度が上がったのはお互いにとってよかったんじゃないかと思ってます。

家で妻が作ったチーズケーキを食べながら妻が弾いてるピアノを聴きながら小説読みながらウイスキー飲んでた時は五感が幸せでしたね。

来年も勉強はしつつも私生活充実させていきたいです。

来年の目標

プライベートの時間もガッツリ使う気はあまりないので、中々定量的な目標設定は難しいのですが、今のところこんな感じで考えてます。

・バックエンド、インフラ能力の向上
・OSSコントリビュート
・プラグインや拡張機能を作って公開する
・技術ブログ月1以上
・ピアノの発表会に出る
・ボルダリングで5級の壁を登れるようになる

あまり変わり映えしてないです。笑

業務でGoを使った開発をすることが増えそうなのですが、インフラもバックエンドも知識が全然足りてないと思うのでこの辺の強化はマストかなと思ってます。

今年に引き続きOSSコントリビュートはチャンスがあれば積極的にしていきたいです。

プラグインや拡張機能は今年できなかったのでリベンジしたいなと思ってます。
ただ自分はそもそもアイディアを思いつくってところがハードル高いんですよね。
この辺りどうしたら能力向上するんだろうってのが最近の悩み。

技術ブログは冒頭の振り返りでも記述した通り、月2は結構きつい時もあるし数を決めて実行しようとすると惰性で書きかねないという反省から、あくまでも継続して書くという目的のための努力目標的な位置づけにします。

ピアノは発表会に出る予定なので無事演奏できるように練習頑張ります。笑

ボルダリングも5級の壁が高いんですが、ちゃんと安定して登れるようになりたいです。

最後に

今年は公私共に色んなイベントがありました。

そのおかげもあって近年ではかなり充実していてQOL高かった年だったなと思うので、この調子で2023年も過ごしたいです。

というわけで2022年も関わってくれたみなさん、ありがとうございました!!
来年もよろしくお願いします!

よいお年を。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次