みなさんこんにちは!
株式会社ミツモアでエンジニアをしている佐藤です。(@satoman0703)
普段は業界特化型SaaSのプロワンの開発を行っています。
今年もミツモアではアドベントカレンダーを実施しています。
他の参加者の記事はこちら: MeetsMore Advent Calendar 2025
社内での取り組みを通じて蓄積された有益な情報が載っているので、ぜひご覧になってください。
私自身はこの機会を通じて、ほぼ未経験からエンジニアに転職した2年半を振り返り、学んだことや成長の過程を記事にまとめたいと思います。
はじめに
私がエンジニアとしてミツモアに入社したのは2023年7月でした。
その前も大学生の際にミツモアで3年弱ほどインターンとして働いていましたが、当時は架電での営業業務やCS業務が中心で、エンジニアとしては働いていませんでした。
その後、新卒でSIerに入社しました。入社動機としては、ミツモアのインターンの経験を通じてプロダクト作りに興味を持ち、エンジニア・PMとして大規模な開発経験を積みたいというのが主な動機でした。しかし、最初の配属でSEではなくマーケティングへの配属が決まり、もやもやしていた時にインターン時代のご縁があってミツモアに入社する運びとなりました。
新卒で入った会社を3ヶ月で辞めるという決断はかなりリスクがあると思いますし、当時はかなり悩みました。家族や周りの友達にも相談したのですが反対され、悩みに悩みました。しかし「エンジニアとしてプロダクト作りをリードしていけるようになりたい」という将来像を信じて入社を決めました。
転職前の自分
タイトルにもある通り、ほぼ未経験の状態でした。
新卒の研修が3ヶ月ほどあり、そこでJavaに触る機会があったのですが、基本的な構文や商品を購入する際のフォーム作成に留まっており、文字通りほぼ未経験の状態で入社しました。JavaScriptもTypeScriptも何それ?状態で、最初に実際のコードを見た時は呪文のように見えました笑
この記事で伝えたいこと
- ほぼ未経験からでもエンジニアになれること
- 実践的な学習方法の具体例
- 実際のプロジェクトでの経験と学び
- 未経験から転職を考えている人への率直なアドバイス
1ヶ月目〜3ヶ月目(2023.7〜2023.9)
初日からの苦労
開発環境の構築に2日以上かかりました。プロワンで使っているTypeScriptの基本的な構文から理解する必要があり、わからないことだらけでした。
チームメンバーに質問したり、業務外でも書籍やUdemyを通じてキャッチアップに励みました。基礎がなかったので、この時期はまず基礎力を身につける必要がありました。
学習方法の確立
この経験の中で感じたことは、最初は書籍ではなく動画教材のほうが理解を深めるのに役立つということです。
書籍はどうしても専門的な内容になりますし、実際に動かすことが初期は大事だと思うので、ハンズオン形式で取り組む必要があります。しかし思ったように動かないこともありますし、書籍はどうしても知識の補完・専門化に特化していると感じました。
当時の自分の経験を踏まえ、これからプログラミング学習を始める人に伝えるとしたら「まずは動画教材をやり込め!」ということです。幸い、肌感で動画教材のほうが合っていそうだと感じていたので、動画教材を中心に学習を進めることができました。
TypeScriptの基礎
受講した教材: Udemyの「超TypeScript入門 完全パック」
TypeScriptとは何か?から始まり、基本的な構文、クラス・インターフェースといった設計について学ぶことができました。
当時は基本的な構文から理解する必要があったので、この教材はTypeScriptの基本を理解するのに非常に役立ちました。また、クラス・インターフェースといった概念も型安全に開発するには必須となるものです。当時は「なぜ型定義をするんだろう?」というレベルだったので、型定義することのメリットも理解できたのが大きかったです。
Reactの理解
受講した教材: Udemyの「モダンJavaScriptの基礎から始める挫折しないためのReact入門」
TypeScriptの基本を理解した後はReactの理解に進みました。プロワンではReactを使用しているため、TypeScriptだけではなくReactの基本的な概念について理解する必要がありました。
この教材ではJSX記法のルール、props、state、レンダリングといったReactの基本概念について学びました。この段階で実際のコードを見てもなんとなく処理が追えるようになってきたのを覚えています。「このpropsを渡してこのデータを描画しているんだ」「stateで状態管理をしてデータをバックエンドに送っているんだ」くらいの理解ができるようになっていました。
Reactの応用
受講した教材: Udemyの「Reactに入門した人のためのもっとReactが楽しくなるステップアップコース完全版」
Reactの基本は理解できたのですが、もっと理解を深めたいと思いこの教材を受講しました。基本的な部分は理解して、あとは業務で知識を補完していく方法が効率的かなと今は思うのですが、当時はまだ不安だったので受講を決めました。
この教材ではルーティングの仕組みやコンポーネント分割の考え方などを吸収することができました。この段階ではフロントエンドの簡単な修正はできていたので、業務の中で得られた知識を補完することに役立ちました。業務の復習という意味でも受講して良かったと思っています。
この時期の振り返り
入社3ヶ月はキャッチアップにとても苦労しました。コードは全く読めず、わからないことがわからない状態だったので結構しんどい期間でした。
しかし、周りに聞いたり、聞いてもわからなければChatGPTやWebで調べたり、基本的な部分の理解は動画教材で行ったりしたことで、「あれ、これはこういうことじゃね?」と自分の中で腑に落ちることが多くなってきました。
初めてPRをマージできた時は嬉しかったですね。
学んだことを即座に業務に活かせるというのがエンジニアの醍醐味だと思いますし、最初はきついと思うのですが「少しのできた」に楽しみを覚えてどんどん正のスパイラルに入っていくことが初期は大事だなと今でも感じています。
できるようになったこと
- TypeScriptの基本構文が読める
- Reactのコンポーネント構造が理解できる
- 簡単なフロントエンド修正ができる
- PRを出してマージできる
- わからないことを適切に質問できる
まだできなかったこと
- バックエンドの理解
- 複雑な状態管理
- 設計の理解
- パフォーマンスへの配慮
4ヶ月目〜9ヶ月目(2023.10〜2024.3)
フロントエンドからバックエンドへ
この頃からフロントエンドだけではなく、バックエンドのタスクにも入れるようになってきました。
最初は請求書のモデルに社内メモを追加するマイグレーション + バックエンドの改修のタスクから始まり、3月頃にはデータローダー(Excelファイルをもとにプロワンにデータを取り込める機能)の改修もできるようになりました。
わからないことだらけだった3ヶ月目までに比べて、ある程度理解はできるようになり、業務中の学びを実装に活かせることが多くなってきた頃で楽しかったのを覚えています。
AIを業務上で使う機会が多くなり、不明点が出てきた際のキャッチアップで多用していました。
Nest.jsのキャッチアップ
一方で、バックエンドのタスクでもキャッチアップが必要でした。プロワンではNest.jsを使っています。TypeScriptを使用しているので基本的な書き方は同じですが、Nest.jsの基本構造を理解する必要がありました。
ここでもUdemyの動画教材を中心に勉強しました。
受講した教材: Udemyの「NestJS入門 TypeScriptではじめるサーバーサイド開発」
この教材ではModule、Controller、Service、DIといったNest.jsの基本的な概念を勉強しました。まだフロントエンドの実装がメインだったので、当時はどういう構造かまったくわからなかったのですが、業務の中で調べながら進めたり、この教材を通じてプロワンのバックエンドの構造をなんとなく理解することができました。
また、Prismaを使用してハンズオンしてくれる点もプロワンで使用している技術と親和性があり、理解を加速させることに役立ちました。
コードレビューから学んだこと
この頃から簡単なマイグレーション + バックエンドの改修タスクはできるようになっていました。コードレビューで先輩エンジニアからたくさんアドバイスをいただけたことがとても自分の力になりました。
コードレビューを受ける上で気をつけていたことは以下の2点です:
①同じ指摘は受けないようにする
当たり前なのですが、無我夢中でやっていると気づかないことがあります。なので、まだ身についていない当時は以前のPRでのコメントをレビュー依頼する前に見るように心がけていました。
そうすることでレビュワーも同じ指摘を繰り返さないようになり、時間のロスがなくなります。未経験からの場合、レビューで指摘される点はどうしても多くなります。ただ、レビュワーも人間なので少しでも指摘を減らそうとする姿勢は初期は特に大事だと思います。
②なぜそのような書き方にするのかを考える
指摘されたことを自分の中で身につけるために必要な考え方だと思っています。
簡単な例でいくと、DBからデータを取得する際に、prismaのincludeを多用していると動きはするのですが、どうしてもパフォーマンス的には悪くなります。だからこそ必要なデータに絞ってselectするほうが良い場合があります。
※ prismaのinclude はリレーション先のテーブルデータを一緒に取得する機能で、各テーブルに対してSELECT * FROM ...のように全カラムを取得してしまうため、不要なデータまで取得してパフォーマンスが悪化してしまいます。
このように「パフォーマンスに注意する必要がある」という意図でそのような指摘を受けたと自分の中で理解します。そうすると、他の箇所でもパフォーマンスはどうかという観点でコードを書けるようになります。
「そんな書き方をできるんだ!」と感じることがありますが、指摘してもらった背景を自分の中で理解して実装することは、その部分だけではなく他の箇所にも影響するため必要な考え方だと思っています。
この時期の振り返り
できるようになったこと
- 簡単なマイグレーション作成
- バックエンドのCRUD実装
- Prismaを使ったDB操作
- コードレビューを活かした実装
- データローダーの改修
技術的な成長
フロントエンド
- Reactの状態管理の理解が深まった
- コンポーネント設計の考え方を学んだ
バックエンド
- Nest.jsの基本的なアーキテクチャを理解
- Prismaでのデータ操作に慣れた
- APIの基本的な設計を学んだ
10ヶ月目〜23ヶ月目(2024.4〜2025.6)
プロジェクト概要
入社10ヶ月目で大規模エンタープライズ向けのプロジェクトに参画することになりました。
この期間はエンジニアというよりPMとしての役割が大きく、詳細設計〜開発〜テスト〜リリースまで一通り経験しました。これまでにない規模のプロジェクトで初めての経験だったので、難しい場面の連続でしたがチームメンバーと協力しつつプロジェクトを進めることができました。
具体的には、エンタープライズ企業の既存システムとプロワンをつなぐ必要がありました。そこでプロワンのデータをどのように外部システムに連携するかの設計を行い、APIの仕様を決定し、それを既存コードに影響がないように実装することにチャレンジしました。
フェーズ1: 設計〜開発(2024年4月〜12月)
PMとしての役割
資料を作って会議に出て情報の共有・仕様上の理解を求めたりというところが初めてだったので難しかったです。ここでの経験を通じてPMとしての視点を深めることができました。
今までではPM・リーダーがタスクの詳細を決定してくれて、自分はただ実装をすればいいだけでした。実装の中で難しさはありましたが、組織としてプロジェクトの方向性を決めるという点は実装以上に難しい点があるということを実感できました。
直面した課題
自分ではAPIの仕様を定めたつもりでも、いざ他のメンバーに実装してもらうとなると詰めきれていない点があったり、今までとは異なる作りで外部連携部分を作っていたので実装がなかなか進まないなど問題点がありました。
学んだこと
ここで感じたこととしては、以下の2点です
- 不明点があればすぐにチーム内で共有する
- 詰めきれていない部分があればすぐにクライアント側とミーティングをセットして方向性を決める
遅延する箇所があったものの、おおむねスケジュール通りに開発フェーズを完了させることができました。
当初の不安と得られたもの
当初はまだ1年も経っていない段階でPMとしての役割を全うできるのかという不安だったり、まだ実装をがんがん進めたいのにプロジェクトに入ることへのもどかしさもありました。
ただプロジェクトを経て思うのは、PMとしてプロジェクトを俯瞰して見るフェーズを経験できたことは自分にとってもプラスになりましたし、資料作成の段階でプロワンの画面項目一覧や全てのデータモデル図を作成する必要があったのですが、まだ触ったことがない機能についてもプロワンのシステムを全体的に見てコードを読める経験ができたので、自分がまだ関わっていない機能の内部を見る良い機会になったと感じています。
技術的な学び
未知の経験に対しての学びとしては、以下の点が重要だと感じました:
- エラーハンドリングの条件や連携するデータの型定義を含めて誰が見ても実装できるようなレベルでのTRD(設計書)を完成させること
- 不明な点があればすぐにチーム内もしくは顧客側とのミーティングをセットすること
もちろん自分一人で進めたわけではないので完璧というわけではないですが、プロジェクトの進め方について自分の中に落とし込めましたし、プロワン全体の構造を把握するために非常に有益な期間でした。
また、バックエンドの開発経験が少ないと自覚していたのですが、この期間でAPI開発を推し進められたことでバックエンドの開発経験も蓄積することができました。
フェーズ2: テスト〜リリース(2025年1月〜6月)
品質保証の難しさ
この期間では単体テスト〜総合テストまでを一通り経験できました。開発は完了していましたが、品質保証という観点でテストをパスする必要があります。
単体テスト → 結合テスト → 総合テストと進んでいくのですが、ウォーターフォール的な開発は初めてだったのもあり、特に外部連携部分で苦労しました。
トラブルと対処
単体テストとは異なり、外部連携が関わる部分では連携側のシステムとのテストケース調整も必要になります。そのため、テストケース作成は双方が納得した形で行う必要があるのですが、以下の問題が発生しました
- コミュニケーション不足によるスケジュール遅延
- エラーハンドリング不足によるバグ
リリース日は決まっているので早急な対応が求められましたが、前フェーズの学びを活かして以下の対応を行いました
- 顧客側とすぐにミーティングの場をセットして詳細を詰める
- 固まった修正点をドキュメントにまとめてチームメンバーに共有
- 自分も実装に入りながらテストフェーズで発見されたバグの修正を進める
スケジュールぎりぎりまでの対応が必要になりましたが、なんとかリリース日に間に合わせてリリースすることができました。
学んだこと
前の詳細設計〜開発フェーズの反省点を活かして自分なりにうまく進めることができたと思います。
リリース日直前になるとチームに対してはもちろんですが、顧客側に関しても進捗の見通しを細かく共有することが大事になってきます。そのため、ある程度の見通しを立てた上でエンジニアにシェアし、修正が完了するスケジュールをいち早く伝えることが重要だと感じました。
プロジェクトを通じて得たもの
PM視点の獲得
- プロジェクト全体を俯瞰する視点
- ステークホルダーとのコミュニケーション
- スケジュール管理と調整力
- チームメンバーへの情報共有の重要性
プロダクト全体の理解
- プロワンの全機能の内部構造
- データモデルの全体像
- 画面項目と実装の対応関係
技術的な成長
- API設計の実践的な経験
- 外部システム連携の知識
- ウォーターフォール開発の経験
24ヶ月目〜現在(2025.7〜現在)
リリース後のサポート
エンタープライズ向けのリリースが終わった後は、リリース後のサポート期間に入りました。実際に使い始めることで出てくる問題はどうしても発生します。ここではそのようなユーザーから問い合わせを受けた問題に対して優先的に対応しました。
1-2ヶ月ほどリリース後対応に従事した後、通常通りのエンジニア業務に戻りました。
現在の業務
現在は電子署名機能の開発を担当しています。この機能では以下のような技術的チャレンジに取り組んでいます
- PDFの電子署名実装
- 既存の書類機能との統合
- セキュリティを考慮した設計
- 外部APIとの連携
(※この詳細については別の機会に記事にしたいと思います)
2年半の振り返り
転職前と現在の比較
技術面
| 項目 | 転職前 | 現在 |
|---|---|---|
| フロントエンド | なし | React, TypeScript, Redux Toolkit, Material-UI |
| バックエンド | Java基礎のみ | Nest.js, Prisma, API設計, 外部連携 |
| データベース | なし | PostgreSQL, マイグレーション設計 |
| 開発プロセス | なし | Git/GitHub, コードレビュー, テスト設計 |
| プロジェクト管理 | なし | PM業務, ステークホルダー調整, ドキュメント作成 |
今でもできないこと・課題
正直に言えば、まだまだできないことはたくさんあります:
- インフラ周りの深い理解(Docker、AWSなど)
- より複雑な設計パターンの適用
- パフォーマンスチューニングの高度な手法
- テストコードの設計力
- アーキテクチャ全体の設計
ただ、これらは今後学んでいけばいいと思っていますし、わからないことがわかるようになったというのは大きな成長だと感じています。
これからの目標としてはまずは今注力している電子署名をリリースさせることです。現在も外部API連携周りで難しい課題に直面していますが、キャッチアップしながらものにしていきたいと思います。長期的には上記の課題をキャッチアップしつつ、本当の意味でプロジェクトをリードしていけるエンジニアになっていきたいと思っています。
未経験からエンジニアを目指す人へ
当時は難しい決断でしたが、転職して良かったなと今では思っています。個人的にこの2年半を振り返って良かった点・そうは言っても大変だった点をまとめてみました。
転職してよかったこと
- 作ったものがすぐに価値になる実感
- 自分が実装した機能をユーザーが使ってくれる喜び → 直接ユーザーと話す機会は少ないですが、自分の実装部分で便利になったよと喜んでもらえる時は嬉しいですね。
- プロダクトの成長に直接貢献できる
- 成長を実感できる環境
- できないことができるようになる実感 → エンジニアの魅力として、学習~実践のサイクルが非常に早いことが面白い点の1つだと思います。
- 周りの先輩エンジニアから学べる機会が豊富 → ミツモアでは優秀な先輩エンジニアが多いので、相談したいと言えばすぐに相談に乗ってもらえる環境がありました。これも良かった点で環境に感謝しています。
- キャリアの可能性が広がった
- エンジニアとしてもPMとしても成長できる → 特にプロダクトの側面から組織をリードできるようになりたいという将来像を持っているので、それに近づける環境に飛び込めたなと思っています。まだまだ成長途中ですが笑
正直大変だったこと
- 最初の3ヶ月は本当にきつい
- わからないことがわからない状態
- 周りの会話についていけない
- コードが全く読めない
- 周りとの知識差に凹むこともある
- 先輩エンジニアとの差を痛感する
- 簡単なことで躓いて自己嫌悪になる
- 知識のキャッチアップ
- 業務外での学習が必要になることもあったので、学習時間の確保は難しい点でした
実践してよかった学習方法
1. 初期は動画教材 > 書籍
- ハンズオン形式で実際に手を動かせる
- わからないところを何度も見返せる
- Udemyなどのプラットフォームを活用
2. 業務 → キャッチアップ → 実践のサイクル
- 業務で出会った技術を教材で学習もしくはAI・webなどで調べる
- AIに壁打ちしてもらい、理解が深まったところで実際にコードを書いてみる
- 書いたコードをレビューしてもらいさらに学びにつなげる
3. コードレビューでの学び
- 同じ指摘は繰り返し受けないよう意識
- 指摘の背景を理解する
- 過去のPRを見返して自己レビュー
4. すぐに聞く・調べる習慣
- わからないことは素直に聞く
- ただし調べてから聞く(質問の質を上げる)
- AIやGoogle検索を活用
大切にしてほしいマインド
1. 小さな「できた」を積み重ねる
最初は本当に小さなことしかできません。でもその小さな「できた」が大事だと思っています。初めてPRがマージされた時、初めてバグを修正できた時、そういう小さな「できた」を実感できるのがエンジニアの魅力だと思いますし、これを積み上げていくのが大事だと思います。私もこれからも大事にしていきたいマインドです。
2. わからないことを素直に聞く勇気
わからないことがあるのは当然です。私も最初は何も分からなかったです笑
むしろわからないことをそのままにしている方が問題なので、自分で調べることも大事ですが調べてもわからなかったらすぐに先輩エンジニアに相談するのが大事だと思います。ただし、先輩エンジニアも時間が限られているので事前に質問内容をまとめる・どこまでできてどこからができないかの線引きを明確にするなどの工夫は必要だと思います。
3. 思い切って挑戦する姿勢
今まで触ったことがない機能や未知のプロジェクトに参加する機会が仕事上出てくると思います。不安になることも多いですが、思い切ってチャレンジしてみる姿勢が大事だと2年半を振り返って感じています。例えば小さなバグ修正でチーム内の誰かの対応が求められた時に、思い切って手を挙げてみることで触ったことがない機能を触ることができ、成長につながった経験があります。小さなところからでいいと思うので、チャレンジする姿勢は大事だと思いますし、そういう人が多いチームは働いていてモチベーションが上がる感じがします。
おわりに
ほぼ未経験からでもエンジニアになれます。
最初は大変なこともあり、わからないことだらけで、自分には向いていないのではないかと思うこともありました。でも、小さな「できた」を積み重ねていけば、いつのまにか「あれ、結構できるようになったな?」と思えるようになります。
私も2年半前はコードが全く読めない状態でした。(本当に!)でも今では新機能の設計から実装、テストまで取り組めるようになりましたし、PMとしてプロジェクトをリードする一端を担う経験もできました。
大切なのは、思い切って挑戦して学び続ける姿勢だと思います。
また、ここまで成長できたのは周りの先輩エンジニアの方々、チームメンバー、そして機会を与えてくれたミツモアのおかげだと思っています。環境に感謝です。
これからも「エンジニアとしてプロダクト作りをリードしていける人材」を目指して、頑張っていきたいと思います!
この記事が、未経験からエンジニアを目指す方の参考になれば幸いです。
株式会社ミツモアではソフトウェアエンジニア、プロダクトマネージャーなどを募集しています!
こんな方と一緒に働きたいです
- TypeScriptでの開発経験をお持ちの方
- 急成長中のスタートアップで多種多様な国籍のメンバーと働きたい方
- 日本語でも英語でも仕事がしたい方
- SaaS開発やAIエージェント開発に興味がある方
興味がある方はぜひご応募ください! https://corp.meetsmore.com/