Uenishi.Web

大阪に生息しているプログラマーのブログ

2023年ふりかえり

はじめに

2023年を自分なりに振り返っていきます。

プライベート面では結婚式があったり、いろいろバタバタした年だったなーと思います。

エンジニアになって現在2年と8ヶ月になりますが、個人的に今年は行動や努力が足りていなかったなと思うことが多く、反省の多い1年になりました。

来年は自分としては勝負の年にしていきたいので、振り返ると同時に、明確に目標を記しておこうと思います。

1月

エンジニア3年目となる今年で、伸ばしていく分野としてReact, Next.jsに技術スタックを絞る。

社内メンバーのみで構成されたSESのチームを離れ、社外の現場に入れてもらうように会社にお願いする。

2月からNext.jsでのフロントエンド開発案件に参画が決まる。

2月〜3月

新案件参画。3人くらいのチームで、全員顔が全くわからない状況でのフルリモート案件。

仕様に関しての確認や、諸々のやり取りが口頭でなかなかできない環境で(現場リーダーが基本的に通話してくれない)振り返ると結構辛い環境だった。

完全に途中参加のなか、基本的に確認事項をテキストコミュニケーションで完結させなければいけない状況となり、できるだけ端的にまとめた状態でボールを投げ、成果を出せるように工夫する。

実際のコードに関しては完全に崩壊している状態。具体的には

  • 1つのtsxファイルに8コンポーネントくらい書かれていて、2700行くらいになっている。
  • ロジックもゴリゴリコンポーネント内に書かれている。依存配列が別々のuseEffectが5個くらい1コンポーネント内にある

POC開発ということもあるのか、コード品質等は重視されていないような感じだったが、バグ修正したら次のバグが2, 3個出るような感じでなかなかカオスな状況だった。リファクタリングをするようなこともできず(時間的、状況的に)正直この時、かなりハズレの現場だな…と思ってしまっていて、モチベーションの維持が難しかった。

4月

2月からのPJは3月末で終了し、同じ現場から別PJに参画することになった。

メーカーのポータルサイト開発で、フロントエンドを担当。フロントエンドは変わらずReact, Next.jsで、バックエンドはNestJSのモノレポ構成。

完全なウォーターフォール開発は初めてで、出来上がった仕様書・設計書を読み込んで、実装に落とし込むということもここで初めて経験した。

流用元があるものの、タイトなスケジュールでの新規開発案件で、初めの方のMTGで要件漏れが発覚したりとなかなかきな臭いスタート。実際に少しずつ燃えていき、関わる人もどんどん増えていった。

基本的には設計書に合わせて画面をひたすら作っていたが、バックエンド(API)側の修正など結構幅広くタスクが振られる状況で、モダンなWebアプリ開発という面においてできることの幅は広がったと思う。

プライベートでは来月に迫った結婚式準備。1.5次会形式で自分達でいろいろ作っていく感じの式にしていたので、OP映像とプロフィール映像作ったり、記録撮影を友人にお願いしていたので打ち合わせたり、招待状送ったり、嫁とバンドで演奏するための機材発注したり。

結婚式って本当に大変だな……と実感。基本的に共通の友人を誘っていて、バンド関係の知り合いがほとんどだったことと酒飲みばっかりなので1.5次会 → 2次会 → 3次会(パーティースペース) → 4次会(AirBnBで宿借りる)というアホみたいなスケジュール組んで大変になってたこともある。今となってはいい思い出。

5月

人の投入によって案件の状況はちょっと落ち着き始めてたような感じ。

事前にお伝えはしていたもののPJの人たちには申し訳ない気持ちを感じつつ、結婚式と新婚旅行へgo。

結婚式、4次会も15人くらいいてくれたし、その後自分の家で6次会くらいまでやってるしで、なかなかカオスだった。人生で一番酒飲んだ気がする。

その後の新婚旅行(石垣島 → 沖縄本島 → 古宇利島)も心底楽しんだ。めちゃめちゃ海きれい。心が洗われた。

6月

テストフェーズ。スクショ、スクショ、スクショ。

ひたすらテストし、スクショペタペタを繰り返す。テストは大事だと頭では理解しているが、スクショペタペタだけはどうしても無になってしまう…。

6月末で結合テストフェーズが終了し、現場を離れることが決まる。次の現場もReact, Next.jsの技術スタックで案件を探してもらい、面談をいくつか受ける。

仕事外では、スキルアップのため副業での開発案件を探し始める。

個人開発でHasura × Next.jsを使って、バンドのイベントスケジュールを管理するアプリを作り始める(完成していない)。ここでFigmaを触ったりして個人的にUI設計をやってみる。

7月

新案件開始。以前がフルリモートだったのに対して、今回はフル出社。極端すぎる。

参画した時点はまだまだどういったものを作りたいのか、作れるのか、という要件定義以前の調査フェーズで、知らない単語が出てきすぎて、エンジニアになりたての時くらい何もかもが 「?」 だった。

一旦、この時点で自分がわからなかった単語と、キャッチアップした単語を羅列してみる

  • Verifiable Credentials
  • DID (Decentralized Identifier)
  • SSI (Self-Sovereign Identity)
  • JWT, JWS, JWE
  • hot wallet, cold wallet

要は教育機関向けの学習歴管理システムを構築したいということで、現在はOpen Badgeという仕様に基づいて学習証明を発行する仕組みが存在しているが、それをよりポータビリティ性の高いVerifiable Credentialsというフォーマットにラップして取り扱えるようにしたい。そして発行したVerifiable Credentialsをサーバー上で動作するアプリケーション (hot wallet) として管理したい。Verifiable Credentialsを発行する仕組みは以前実験的にOSSとして作成されたものがあるので、そちらを流用できればしたい。というものだった。

公開鍵暗号方式などといった基礎的な暗号化知識もこの時点では欠けていたので、とにかくこの月はキャッチアップに必死だった。どちらかというとフロントエンドというより、暗号化技術周りの知識とか、W3C読んだりとか、実験的なアプリケーションを動かすためにdockerでコンテナ作って動かしたりとかを中心に行っていた。

比較的新しい技術のため体系的にまとまった本などなく、有用な資料も本家ドキュメントくらいしかないので、ここで完全に英語に対しての苦手意識を取っ払うことができたのは大きかったように思う。原典を辿る、翻訳しながらでも理解する、という行為が一番手っ取り早いということを見に染みて体験として得ることができた。

そして、こんな状況にも関わらず副業でのアプリ開発にも関わらせていただく。Next.js × Hasuraで作られているアプリで、実装部隊として手を動かす側だったけど、設計がしっかりと固まっているのであまりこちらで工夫することも多くないような状態になっていた。実装に限らず、ここで改めて設計の大切さを理解できたりなど勉強になった。

8月

引き続き調査も行いつつ、徐々にいろいろとわかってきて要件も固まってきた。

Verifiable Credentialsに関しては、流用元のOSS開発者の方が週1時間で入ってきて、いろんなアドバイスを貰えるような状況になり、一気に進み始めた感。

引き続き調査を行なったり、開発用サーバー環境で流用元OSSが動作するように環境構築を行なったり、フロントエンドというよりは本当になんでもやっていた。ただ、おかげでDockerの知識や、linuxサーバー周りやCI/CDの環境構築についても経験として身についたのでよかった。

一旦8月末がめどとなり、見積りを作成。意見交換しながら何が実現できるか、現実的な話をMTGで進めていく。

チームリーダーに「Figma使えます?」と聞かれる。個人開発で触っていたこともあり、「いけます」と返事をし、FigmaでUI設計することに。

やっぱり個人開発は何かとやっといて損はない(リリースできてないけど)

右も左もわからない状態だったけど、見よう見まねで調べながら作成して、MTGで顧客とすり合わせしていった。今思えば、全然考慮できてないところいっぱいあったな……。という反省点も多く、より知識をつけて次回以降に活かしていくしかない。

プライベートでは副業も進めつつ、開発合宿とかも参加した。いろいろと超勉強になったので、またやりたい。

9月

中盤くらいからいよいよ実装について考えていくことに。

まさかの1人1システム担当になり、全体の設計から行うことになった。

eslint周りの整備やら、開発環境用コンテナ構築やら、状態管理設計やら(Recoilを入れて、fluxパターン風に扱えるようにした)、初期段階の何から何まで自分ひとりでやるのは初めてだったので、手探りながらもかなり力になったように思う。

いよいよ開発フェーズということでワクワクしていた。この辺りからVSCodeでVim拡張を本格的に扱うようになり、よりコーディングが楽しくなる。

10月〜11月

実装をどんどん進める。開発を進めていくのが自分だけなのでこの設計や書き方でいいのか、という不安点もあったが、ここでやっぱり、自分はコード書くのが好きなんだなと体感する。

自動テストも導入し、いろいろ試行錯誤しながらどのように品質担保していけるだろうかといった点も考えながら実装していった。この試行錯誤はやっぱり楽しい部分で、もの作る時の醍醐味だなとは思う。

この辺りで具体的に転職活動についても真剣に考え始めた。

きっかけは技術力をもっと向上させていきたいことと、収入の面。

また、会社そのものは人間的にとてもいい人が集まっていて好きではあるのだが、現場に出ることでその「会社」に対する帰属意識はどんどん薄れてしまった、ということもある。

基本的に自分はこれまで「収入」という部分に関して、結構いい加減な方の人間だった。しかし、結婚してこれから一緒に生きていく相手がいる以上、「収入」を考えることを放棄するわけにはいかない。そういった方向に意識が変わったのも、結婚式をやったことが大きいな、と思う。

ゆめみ社の選考に進み、コーディングテストを受ける。コーディングテストが通過し、自信につながる。面接は不通過だったが、ものすごい量のフィードバックが返ってきて、さすが知名度ある会社はすごいな…と感動した。

12月

開発は終了し、結合テストフェーズへ。逃れられぬスクショ文化。

致命的な実装ミス等は出なかったのでひと安心できたものの、作成したUIに対しての改善要望がちらほら出てきた。継続して1月も対応予定。

本格的に転職活動を開始する。

ダイレクトに自分自身の価値や、何ができるのかを棚卸しして、実際に面接で会話しているうちに、「自分全然やん……」となりへこむ。

でもへこんでても仕方がないので、どう見せるか、実際に自分が頑張ってきて得てきたことをどう魅力的に話すか、ここの部分をもっと突き詰めてどんどんアクションを起こしていく。

来年の目標
年収

本業収入で500万を超える

エンジニアとして
  • フロントエンド(React, Next.js)を中心に、デザインやアクセシビリティの知見も深めて幅広く対応・提案ができるようになる
  • セキュリティ分野の知見を深める
    • 資格を取得するなどして体系的に知識をつける
  • 業務外でアプリケーションを開発し、1つ以上リリース・運用する
  • AWS周りの知識取得
  • 技術的なアウトプットの継続(月1本以上)

イメージとしては、フロントエンドを中心に尖っていきつつ、アプリケーション全体の設計も俯瞰して見れる知識を身につけていきたい。技術的な側面からチームをリードするエンジニアを目標にして、より具体化できるようにロールモデルを見つけていく。

プライベート
  • 筋トレ
    • ベンチプレス 80kgを目指す
    • 腹筋割る

去年は週3でジム行ってそれなりに頑張っていたけど、今年サボりすぎて完全に体がゆるゆるになってしまった。

転職活動諸々で忙しくはなるけど、最低限週2は通って体を作り替える。

個人的なメモ

恥ずかしながら今年31歳になって、ものすごく自分が「大人としてしっかりやっていかなきゃ」と感じた年だった。これまで本当に好きに生きてきたけれど、お金の話やこれからの人生についての話を嫁とするようになった、ということが大きいんだと思う。自分の親と酒飲みながらいろんなことを腹を割って話せるようになった、という環境の変化もあるのかもしれない。

エンジニアを目指したときも、もちろん「これからの人生」について真剣に考えた結果だったけど、今必要な「これから」は自分が想像しているよりずっと先のことまで考えておく必要があると気づいた。

現時点で、自分がこれから世の中に対してどのように役に立って、インパクトを与えていけるんだろう、という明確なイメージは正直見えていない。よりそのイメージを明確にしていけるように、日々自己研鑽してできることを増やしていく。その結果として、見えてきたものがあればそこに全力でぶつかっていく。この気持ちを忘れないように2024年を過ごしていきたい。(自分に発破をかける意味でも、ここに書き残しておきます)

あと、お酒はできるだけ減らす。今年は結婚式があったのもあり、1年通して飲み過ぎだった……。

できるだけとは言いつつ、お酒飲んで人と話すのは本当に好きなので、これからもお酒の場でいろいろなお話できると嬉しいです(酒の場に限らず、今年いろいろお話ししてくださった方々、本当にありがとうございます)

ごあいさつ

今年お世話になった方々、改めまして本当にありがとうございました。

また来年も何卒よろしくお願いいたします。