はじめに
こんにちは、「株式会社ネクスウェイ Advent Calendar 2025」19日目担当の@jinta_02です🎄🎅
私事ではありますが、未経験からエンジニアに転職して1年9ヶ月が経ったので、入社してから現在に至るまで何をどのような方法で学んできたのかを振り返りたいと思います。
エンジニア1, 2年目でどのような知識が必要になるのか、どのような学習が適切かは人それぞれですが、Webエンジニアであれば、業務で使用する言語やフレームワークは違えど、学ぶ内容にそれほど違いはないと思うので、どなたかの参考になれれば幸いです。
それでは振り返ります🧠💨
自己紹介
本題に入る前に、簡単に自己紹介をすると、
私は普段、「トッツゴー」という、製造・卸売業向けの買掛業務改善SaaSの開発を行なっています。
先日行われた「Ruby biz Grand prix 2025」ではAI×Ruby賞を受賞しました🏆
トッツゴーでは、バックエンド:Ruby, Ruby on Rails、フロントエンド:Vue, Nuxt.js, TypeScriptを採用しており、私は主にバックエンドを担当していますが、フロントエンドを担当することもあります。また、最近では設計の段階から担当させていただく機会も徐々に増えて、業務がより楽しくなってきました😀
では、本題に入ります🏃💨
入社〜入社6ヶ月:環境に慣れ、基礎を固める
入社当初のレベル
入社当初の私の技術力は以下のことができるレベルでした。
- Ruby:基本的な構文は理解している
- Rails:MVCは理解していて、それぞれで何を記述するのかは理解している
- Git:ブランチを切って、コミット・プッシュはできる
- GitHub:PRの作成はできるが、他の人が作成したPRのレビューはしたことがない
- Docker:コンテナ起動してローカルで開発ができる
- DB:ActiveRecordを使って、データの保存はできる。SQLで複雑なことはできない
入社〜3ヶ月(4〜6月)
弊社では入社後2, 3ヶ月は研修があり、ジョインするプロジェクトのドメイン知識を身につける期間がありました。
ドメイン知識を身につけるといっても、最初にサービスの説明を受けた後は簡単なタスクに着手し、タスクをこなしながら知識を深めていきました。
ここで学んだことはチーム開発におけるGit, GitHubの操作でした。
入社前にポートフォリオ作成のため個人開発をしていたときは、以下のイベントは起きていなかったので、初めはかなり戸惑いました。
- 適切なコミットメッセージ
- 他の人のPRを自身のローカルに取り込む
- 他の人のPRにコメントをする(インラインコメント)
- コンフリクト
この時に見ていたページは「サル先生のGit入門」です。
図解とともに丁寧に操作の説明がされているのでこの時期はかなり重宝していました。
とはいえ、この操作は本当にあっているか?みたいな不安のあるものは先輩方に都度確認させていただき、助けてもらいました。
入社4〜6ヶ月(7〜9月)
無事に研修を終え、簡単なタスクであれば自走できる状態にありましたが、まだチームの戦力としては不十分だと感じていました。
ちょうどこの時期にPMから「この技術なら@jinta_02さんに聞いておけば大丈夫だよねと言ってもらえるものを身につけるといいんじゃない?」と言っていただき、プログラミングスクールでRubyを学んでいたこともあったので、Rubyをもう少し深く学ぼうと決めました。
ここで行ったのは以下です。
-
「プロを目指す人のためのRuby入門」
- いわゆるチェリー本と言われるやつですね
- 中級者向けの内容で、初学者から一歩踏み込んだ知識が得られ、この時期の私にとって非常に学びになりました
-
Ruby Silver受験
- Rubyの基礎構文、モジュール、オブジェクト指向を網羅的に学べたので身になったと思います
- 学習には試験の対策本を利用しました
- また、合格という形の残るところもメリットとして大きいと感じました
- こちらは無事に合格しました(75点以上合格の76点だった気がします😱)
チェリー本、Ruby Silver受験を経て、バックエンドの改修であればそこそこに対応ができるようになっていたと思います。
また、トッツゴーではVue, Nuxt, TypeScriptを使用してフロントの開発を行っており、この分野にも興味があったので、「やってみてもいいでしょうか?」とお願いして、簡単なタスクから振っていただいたりしていました。ただ、フロントの言語・フレームワークは全く学んだことがなかったので、ここで初めてフロントの世界に入門することになります。
弊社の福利厚生で「Udemy Business」の利用ができたので、学習は基本Udemyで行なっていました。
- VueのUdemy講座・公式チュートリアル
- JavaScript・TypeScriptのUdemy講座
これらを経て、簡単なフロントエンドのタスクもこなせるようになり、担当できる業務の範囲を少しずつ広げることができました。
入社6ヶ月〜入社1年:自身のできる業務の範囲を広げる
入社6ヶ月の間で、チーム開発の作法も身につき、バックエンド・フロントエンドの言語も多少使えるようになって、少しずつ戦力になっている実感はありましたが、本格的な新機能タスクを任せてもらうには、まだ力が足りないと感じていました。
入社6〜9ヶ月(10〜12月)
本格的な新機能の開発を任せてもらうためにはもっと言語を扱えるようになる必要があるという考えからRuby Goldの試験を受けることにしました。
-
Ruby Gold
- Ruby Silverよりももっと踏み込んだ内容で、クラス・モジュール間の継承・メタプログラミングなどを学ぶことができました
- 自身のGitHubに内容をまとめているので、興味のある方はぜひ参考にしてください
Ruby Goldの学習を経て、Rubyを用いた実装で、多少複雑な要件でも1人で行える状態になりました。
フロントエンドに関しては、とにかくタスクをこなして実務でどのような使われ方がされているかを学習していました。
徐々にではありましたが、簡単なボタンの追加等ではなく、1画面の作成のようなタスクも任せてもらえるような状態になっていきました。
入社10〜12ヶ月(1〜3月)
この期間は最初の1年間の中で一番楽しく開発を行なっていた気がします。
というのも、この時期から新機能の開発をバックエンド・フロントエンドともに1人で任せてもらえるようになったからです。
コミット数で言うと、1ヶ月に200コミット程度行なっていました。
自身の開発した内容がバンバンマージされていくと気持ちがいいものですね。
この時期は集中して学習していたものは特になかったので省略します。
入社1年〜入社1年9ヶ月:次のステップへ
入社して1年が経ち、新卒・未経験エンジニア2名のメンターを担当することになり、1年目に根気強く言語の学習を行なっていて良かったなと実感しました。
また、この時期からサービスの利用者が増え始め、トラフィック増によるパフォーマンスの低下が徐々に現れ始めました。これを機にパフォーマンス改善の主担当を任せていただいたこともあって、パフォーマンス改善に関する書籍・記事を読み漁りました。
この時期は主に以下のことを行ないました。
-
達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践
- これは同期とISUCONに出ようみたいな話をしていてたまたま積読していた書籍でしたが、この時期に改めて読み込みました
- Webサービスにおけるパフォーマンスの改善方法が網羅的に記載されていてパフォーマンス改善の基礎を学ぶことができました
-
Speaker Deckを読み漁る
- Speaker Deckは簡単に言うと、スライドをWeb上で共有できるサービスです
- ここには、エンジニアの方がいろんなカンファレンスなどで登壇された際に使用されたスライド(お宝)が大量にアップロードされています
- 私はここで、「パフォーマンス改善、パフォーマンスチューニング、DBパフォーマンスチューニング、キャッシュ活用」など、とにかく検索して、他社のパフォーマンス改善事例を読み漁っていました
- 書籍などで体系的に学ぶのも重要ですが、実際の課題に対してどのようなアプローチが有効かを学ぶのが1番実務に活かしやすいと実感しました
実際に見た記事たち
※Speaker Deck以外の記事も含まれていますが、お世話になったので含めています。https://speakerdeck.com/oracle4engineer/oracle-dbasecamp-9
https://speakerdeck.com/oracle4engineer/oracle-dbasecamp-13
https://speakerdeck.com/oracle4engineer/oracle-dbasecamp-14
https://speakerdeck.com/a_bicky/rails-developers-meetup-2018-day-1
これらを経て、以下のことを対応できるようになりました。
-
パフォーマンス低下のボトルネックはどこか?を探し出す
- AWSであれば、各種サービスのインサイトなどでどこがボトルネックなのかを探す
-
DBがボトルネック時の対処
- N+1は起きていないかの確認
- N+1であれば、railsのincludes, eager_load, preloadなどを使った関連データの先行読み込み
- index_byなどを使ったN+1の改善
- explainによる実行計画の確認
- explain analyzeによる実行結果の確認
- index追加によるクエリパフォーマンス改善
-
Webアプリケーションにおけるキャッシュの活用
- RailsでのRedisにおけるキャッシュの活用
この9ヶ月の間で、できることが増え、自身の業務の幅をさらに広げることができました。
この1年9ヶ月間の間に読んだ書籍
ついでではありますが、1年9ヶ月の間に読んだ書籍も紹介しておきます。
「リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック」
「ネットワークはなぜ繋がるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識」
「達人に学ぶDB設計徹底指南書 第2版」
「世界一流エンジニアの思考法」
「プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで」
まとめ
1年9ヶ月を振り返って改めて思うことがたくさんありました。
- 環境や周りの方に恵まれていた:やりたいと手を挙げたらやらせてもらえた
- サービスのフェーズが変わる分岐点に立ち会えた:サービス成長に伴う課題に立ち会えたのは運が良かった
- 実務での経験が一番身になる:書籍等で体系的に学ぶことはある程度効果があるが、実務での経験が一番身になるし記憶に残る
現在地としては、「この技術なら@jinta_02さんに聞いておけば大丈夫だよねとまではいかないですが、少しずつ頼ってもらえることが増えている」といった感じかなと思います。
学べば学ぶほど知らないことが増えていくというエンジニアの途方もない旅路ですが、これからも楽しみつつ学習を続けていきたいと思います📚
最後まで読んでいただきありがとうございました!
株式会社ネクスウェイ Advent Calendar 2025では明日以降も、開発メンバーがそれぞれの「好き」と「学び」を自分の言葉で綴っていく予定です。
明日 20 日目の記事は、同じくネクスウェイ開発メンバーの @kesuoyk さん です。
引き続き、お楽しみください🎄
- もっと他の記事も読んでみたい方
- 当社に興味がある方はこちら👀
