2024年 エンジニアライフ振り返り
プログラミングスクールRUNTEQでWebエンジニア兼講師をやっているいっぺい(@ippei_111)と申します。今年は、仕事面ではエンジニア転職、プライベートでは結婚という大きなトピックがあり、変化の多い1年でしたが、有意義で意味のある時間を過ごせたのではないかと思っています。
今年は大きく分けると以下の項目が大きなトピックでした。
結婚
エンジニア転職
新規の機能・プロダクト開発
1月〜4月
まず、今年の2月に入籍しました。去年から結婚準備を進めていたため、RUNTEQ受講期間と重なり、時間の確保が大変でしたが、無事入籍まで進むことができてよかったです。
そして、5月には無事エンジニアへ転職することができました。入籍後の4月から同棲を始めたため、転職活動と並行して同棲の準備も無事完了できたのは良かったと思います。
1月〜4月はプライベートのイベント、RUNTEQでのアプリ開発と転職活動・仕事を並行して進める形になりましたが、様々なことを並行して進めることができたため、自分のキャパを広げることができたような気がします。
ついに、5月からエンジニアライフがスタート
そして、ついに5月からエンジニアライフがスタートしました。
主に担当した業務は以下になります。
Next.jsを使用したプロダクトのフロントエンド開発
講師業務
管理画面側の機能追加
新規機能・新規プロダクトの0→1開発
Next.jsを使用したプロダクトのフロントエンド開発
RUNTEQに入社してすぐにNext.jsを書くことになりました。最初はRailsを書くものだと思っていたので驚きましたが、RUNTEQ受講期間のWebアプリ開発でNext.jsを使用していたこともありましたし、フロントエンドには元々興味があったので、とてもワクワクしたのを覚えています。
学んだこと
issueを正しい粒度で作成すること
Reactのデザインパターン(Container/Presentationalパターン)
Next.js(App Router)について
issueを正しい粒度で作成すること
フロントエンドのissueを作る時の基準として、プルリクエストのFiles Changes が10以下になるぐらいの粒度で作成すると良いことを学びました。そうすることで、レビュー者の負担が減り、プルリクエストが溜まり続けることも避けることができるし、細かい単位で開発が行えるので開発スピードの向上に繋がりました。
Reactのデザインパターン(Container/Presentationalパターン)
同じプロジェクトにフロントに強いエンジニアの方が入ってくれていたため、毎回プルリクのレビューをしてくれました。その中で1番学びになったのがReactのデザインパターンについてです。
コンポーネントの責務をロジックとUIで分けることは個人開発レベルではあまり意識したことがなかったので、最初理解するのが難しかったですが、Reactの特徴であるコンポーネント機能を活かすにはとても大事な設計パターンだと思いました。
Next.js(App Router)について
次にNext.jsについてです。こちらも個人開発レベルでしか触ったことがなかったため、ディレクトリ設計やServer Component・Client Componentの使い分けなど、AppRouterについて基本から学び直すきっかけとなりました。
この時は、認証周りやドメインに依存したコア機能の開発までは担当できなかったため、まだまだ力不足を感じながらも多くのことを学ぶことができました。
講師業務
最初はテキスト系の業務をキャッチアップしながら、面談系の業務をキャッチアップしていきました。
技術面談で技術的な質問に答える際、自分の考えを整理し、分かりやすく言語化する力がまだ不足していると感じました。
管理画面側の機能追加
次に、管理画面側に社内業務改善のための機能開発を1人で担当しました。こちらは、新規テーブルの追加が必要かつSlackとの連携が必要な機能だったたため、設計〜実装までを一貫して経験することができました。
タスクになったタイミングでは、実現したいことは決まっていましたが、必要な機能などは細かく決まっていなかったため、この機能に関わるメンバーの方にヒアリングをしながら開発を進めました。
結果的には手戻りなく開発を完了することができましたが、反省点としては、エンジニア以外のメンバーの方とのコミュニケーションを自分から積極的に行うことができていなかったので、お互いがどういった機能ができあがるのかの認識共有はとても大切だと思いました。
新規機能・新規プロダクトの0→1開発
8月〜12月は4つの新規開発を担当しました。こちらは、0→1の開発だったため、仕様をもとに、データ設計やタスクの作成、バックエンド・フロントエンドの実装まで、リリースに必要な全ての開発に携わりました。
新規開発におけるデータ設計ははじめての経験でわからないことだらけでしたが、先輩エンジニアの方やCTOの方と一緒に話し合いながら進められたのでとても学びが多かったです。
担当した機能・プロダクト
① ソーシャルポートフォリオ
② はじめてコース
③ 学習バディポモドーロ
④ Skill Metrix(フロントエンドのみ担当)
学んだこと
報連相・コミュニケーション
情報整理能力
俯瞰力
技術力が足りない
報連相・コミュニケーション
当たり前かもしれませんが、これがプロジェクトを進める上ではこれが1番大切でした。新しいプロダクトを開発する上で1番避けないといけないことは、「完成したものがイメージしていたものとは違う」ということだと思います。これを防ぐには進捗を報告したり、少しでも疑問に思った仕様についてはすぐに相談したりするコミュニケーションが必要だと思いました。
そして、今回の開発スケジュールのように短期間の開発の場合だと、仕様の認識がずれていると、開発の手戻りが発生してしまい、リリース日に遅れが出てしまうため、よりコミュニケーションの円滑さが大切だと感じました。
また、質問をする際に、自分の意見も一緒に質問することも大切だと思いますが、「仕様に関わる内容」であればすぐに質問することが大切だということも学びました。
仕様についてになると自分だけでは決められない領域になるため、一度質問をしてしまう方が、無駄な時間を使わなくて良いからです。
そして、1つのプロダクトを作るにはエンジニアだけでは作れません。PM・マーケティング・カスタマーサポート・デザインなどそれぞれのチームメンバーと連携して作り上げる必要があるため、他チームとのコミュニケーションをスムーズにストレスなくとれることが、より良いプロダクトを作成することに繋がると思いました。
情報整理能力
0→1開発を通して最も難しいと感じたところは「設計」です。どんなテーブルが必要なのか、ルーティング設計はどうなるのかなど、実装に入る前の段階で0から設計するのがとても難しかったです。
このことをCTOに相談したら、「まずは設計に必要な情報を集めることが大切」と教えていただきました。
この時にコミュニケーションが大切になってきます。他チームのメンバーにヒアリングをしながら、設計に必要な情報を集めていきます。「わからない仕様について」「考慮した方がよいこと」「MVPにはどこまでの機能があればよいか」「ユーザーフローの確認」などの情報を集めます。そして、その情報を整理して設計に落とし込んでいきます。
この時に、シーケンス図やユーザーフローを図に書き起こすことで、より情報を整理できることも教えていただきました。
また、設計が完了してissueを作成していく時にも、ユーザーのfunction単位で考えて作成していくことで、適切な粒度のissueを作成することで、考慮漏れを減らせることも学びました。
俯瞰力
プロダクト開発においても、自分から意見を出していく重要性を実感しました。意見をするためには、今のプロジェクトや自分を俯瞰して見るようにしないと、小さな違和感に気づくことができないということも学びました。
そして、俯瞰力をつけるためには、「なぜ」を常に考える癖をつけておくと良いとアドバイスをもらいました。コードを書く時も、もっと良いコードをかけないか?この機能はなぜ開発するのか?など身近なところから常に「なぜ」を考えて実践していきたいと思います。
技術力が足りない
4つのプロダクト開発を通して、RailsやReactなどを書くことができて確実にパワーアップできた実感はありますが、まだまだ技術力を上げていく必要があることも痛感しました
より高度な技術を必要とする開発(学習ポモドーロで使用しているDiscord Botの開発やインフラなど…)は経験できませんでしたし、もっと技術的な引き出しを増やして、技術的な決断がよりできるようになりたいと思いました。
技術記事のアウトプット
技術記事に関しては、エンジニアに転職してからは4つの記事を書きました。
来年はもっと書きたいです。
Xでの発信
技術記事だけのアウトプットだけでなく、Xで学んだことを発信できたのは良かったと思っています。
その時感じたことや学んだことを文字にしてアウトプットすることで、自分の頭の中を整理することができますし、言語化能力も鍛えることができると感じました。
また、RUNTEQのイベントに参加した時に「Xで見たことあります!」といっていただけることが多かったので、自分をアピールする方法の一つとして活用するのはとても良いと思いました。
X → @ippei_111
参加したイベント・勉強会
参加したイベント・勉強会
名古屋もくもく会(RUNTEQ卒業生)
軽井沢デジタルデトックス会(RUNTEQ卒業生限定)
Kaigi on Rails 2024
アーキテクチャConference 2024
9月に開催した「軽井沢デジタルデトックス会」には運営メンバーとして関わらせていただきました。3人のメンバーの方と仕事終わりにMTGをしたりして進めるのはとても楽しかったです。
また、今まだお会いしたことのなかったエンジニアの方と交流することができ、色々なお話が聞けてとても楽しかったです。
今度は自分発信で何かイベントを開催したいと思いました。
Kaigi on Rails 2024 参加レポートも書きました。
まとめ
2024年は「楽しい!!」という感情が多かったです。新しい経験・学びがとても刺激的で毎日が楽しかったです。
来年はエンジニアとしても1人の人間としてもさらに成長できるように精進します。
また来年もよろしくお願いします!