文系学生が新卒で自社開発企業のフロントエンドエンジニアに採用されるまでにやったこと

こんにちは。

この記事では、文系学生である私が、新卒で自社開発企業にフロントエンドエンジニアとして採用されるまでに行った勉強法や取り組みを簡単にご紹介します。

現在、就職活動中の学生の皆さんや、文系未経験からエンジニアを目指して転職活動をされている方にとって、少しでも参考になれば幸いです。

## 自己紹介
私は、2025年3月に地方国立大学の文系学部を卒業する予定の大学4年生です。

大学ではプログラミングなどの情報工学関連の授業は受けたことがなく、Web関連の知識やプログラミング学習は独学で学びました。

就活に関しては自分の制作物をアピールしながら技術職をメインに応募し、無事に自社開発企業から内定をいただくことができました。

## エンジニアを目指したきっかけ
大学2年生の終わりごろ将来の進路について考えたときに「場所にとらわれない働き方」がしたいと強く思うようになりました。

この考えに至った背景には、大学在学中に訪れた様々な国で、多様な働き方をしているバックパッカーの方達と出会い、「自分も自由な環境でキャリアを築きたい」と感じるようになったことです。

その中で、ITエンジニアはグローバルに活躍できる可能性もあり、リモートワークとの相性も良いと感じました。

加えて、もともとものづくりが好きだった私は、「プログラミングを学べば、自分の制作物で社会に役立つプロダクトを作れるのではないか」という期待も芽生えました。

こうしてエンジニアを目指すことを決意し、独学でプログラミング学習をスタートすることにしました。

## プログラミング学習について
文系の学生の方々は、周りにエンジニア志望の方が少ないため、「プログラミング学習をどこから始めたらいいのかわからない」と感じる方が多いのではないでしょうか。実際、私自身も学習を始めた当初は同じ状況でした。

以下に、私が取り組んだ学習ステップを紹介します。

### 自分がどの分野に興味があるかを決める
プログラミング学習に関して右も左もわからなかった私は、まず「エンジニアとして何を学べばいいのか」を明確にするために、YouTubeやXなどのSNSを活用してリサーチを行いました。

そこで、エンジニアにはいくつかの専門分野があることを知りました。

例えば、Web開発、モバイルアプリ開発、データサイエンス、機械学習など、それぞれ必要とされるスキルや使用するツールが異なることが分かりました。

その中で、私はWeb開発、特にフロントエンドに興味を持ち、この分野にフォーカスして学習を進めることを決めました。

| **分野**               | **役割**                                                                                       | **使用される主な技術**                                    | **特徴**                                                                                   |
|------------------------|-----------------------------------------------------------------------------------------------|----------------------------------------------------------|-------------------------------------------------------------------------------------------|
| **フロントエンド**      | ユーザーが直接目にする部分（Webサイトやアプリのデザインやインターフェース）を担当。              | HTML, CSS, JavaScript, React, Vue.js, Angular            | ユーザー体験に直結する部分を作成。デザインや動的な動きが得意な人向け。                         |
| **バックエンド**       | サーバー側の処理やデータベースの管理、アプリケーションのロジックを担当。                         | Node.js, Python, Ruby, Java, PHP, SQL, MongoDB          | ユーザーが目にしない部分を支える重要な役割。システムの効率やセキュリティが求められる。          |
| **フルスタック**        | フロントエンドとバックエンドの両方を担当できるエンジニア。                                      | フロントエンド＋バックエンド全般の技術                    | 幅広いスキルを持つエンジニア。プロジェクト全体を俯瞰して対応できるため、スタートアップで重宝される。 |
| **クラウドエンジニア**  | クラウド環境の構築、管理、運用を担当。インフラをコード化して自動化することが主な役割。           | AWS, Azure, Google Cloud, Terraform, Ansible             | クラウドプラットフォームに特化したスキルが必要。スケーラブルな環境を構築するプロフェッショナル。   |
| **インフラエンジニア**  | サーバーやネットワークなど、システムを動かす基盤を設計・構築・運用。                              | Linux, Docker, Kubernetes, Apache, Nginx                | システムの安定性を支える重要な役割。ハードウェアやOSにも精通していることが多い。                |
| **機械学習エンジニア**  | 機械学習モデルの設計・実装・運用を担当。データ処理からアルゴリズムの開発、チューニングまで行う。 | Python, TensorFlow, PyTorch, scikit-learn, Jupyter       | データサイエンスとプログラミングを組み合わせて、AIシステムを開発する専門職。                     |
| **データサイエンティスト**| ビジネス課題をデータ分析で解決し、意思決定を支援する役割。                                     | Python, R, SQL, Tableau, Power BI                        | データの統計分析や予測モデルの作成が主な仕事。企業の戦略に大きな影響を与える職種。               |
| **モバイルエンジニア**        | スマートフォン向けのアプリケーションを開発。                                                   | Swift (iOS), Kotlin (Android), Flutter, React Native     | モバイルデバイス特有のUI/UX設計に特化。OSごとの違いを理解する必要がある。                       |

### 学習するサイトを一つ決め、一つの言語に集中的に取り組む
未経験からプログラミング学習をスタートする際、多くの方は**プログラミングスクールに入る**か、**学習サイトを利用する**の2択を考えるのではないでしょうか。

しかし、プログラミングスクールはコストが高額であることや、一部で評判の良くないスクールも存在するため、特に学生にとっては手の届きにくい選択肢かもしれません。

学習サイトは手軽に始められるうえ、大学の授業やサークルで忙しい学生でも**自分のペースで進められる**点が大きな魅力です。

自分が最初に使った学習サイトは[Progate](https://prog-8.com/)というサイトです。

Progateは次のようなポイントが魅力的でした。
* **スライド形式で難しい概念も理解しやすい**
* **実際にコードを書きながら学習することができるため定着しやすい**
* **幅広い言語を学ぶことができる**
* **価格が月額1,000円と手頃**

学習を始めたばかりの頃は、「あれもこれも」と複数の言語に手を出したくなるかもしれません。しかし、最初のうちは一つの言語に絞り、基礎を固めることが非常に重要です。

まず、プログラミング言語の基礎的な考え方は、**どの言語にも共通している部分が多い**です。

変数、条件分岐、ループなど、プログラミングにおける基本的な概念は言語を問わず存在します。

例を挙げるとRubyでのメソッド定義に使われる「def」という構文が、Javaでは「public void」や「public String」に置き換わる、といった具合です。

このように、一つの言語を習得することで得た知識や経験は、別の言語を学ぶ際にも活用できるので多数の言語に手を出すのは効率的ではないです。

初心者の方は焦らず、一つの言語を深く学び極めることがおすすめです。

### ハンズオン形式で学ぶ
Progateで環境構築の方法やプログラミング言語の基本的な使い方を学んだ後、次のステップとして「[Udemy](https://www.udemy.com/)」などの動画学習サイト活用して、ハンズオン形式で学ぶことをおすすめします。

ハンズオン形式の学習では、実際に手を動かしながら1から制作物を作る過程を学ぶことができます。

#### ハンズオン形式のメリット
ハンズオン形式では、実際にどのようにコードを書くか、ファイル構造はどのようにするかなどを学ぶことができるため、効率的な書き方や実践的なコーディングを学ぶことができます。

さらに、講師や教材が用意した課題を一緒に解決していくため、ただ動画を真似して作るだけでなく、その背景にある理論や理由を理解できるのも大きなメリットです。

これにより、「なぜこの書き方をするのか」「なぜこの構造が適しているのか」といった本質的な部分を学べるため、後々自分で制作物を作る際にも応用が利くようになります。

#### ハンズオン形式はUdemyがおすすめ
「Udemy」は、ハンズオン形式の講座が充実しているプラットフォームで、特に初心者向けの講座も多く用意されています。

セール時には1,000円台で講座を購入できることが多いため、気になる講座があれば事前にチェックしておき、セールの際にまとめて購入しましょう。

わからない部分があればコメント欄で質問することができるのもおすすめのポイントです。

### 自分で制作物を作成してみる
ハンズオン形式で学んだ内容を元に、次のステップとして自分でオリジナルの制作物を作成してみましょう。

難しい技術書などをいきなり理解しようとするよりも**個人で1から開発する過程で知識に穴があれば埋めていく**という方法が一番効率のいい学習方法であると感じます。（自分はかなり遠回りしました。）

こうして完成した制作物はGitHubなどのソースコード管理プラットフォームで管理しておいたりポートフォリオに掲載することで、就職活動や転職活動でもスキルを具体的にアピールすることができます。

## インターンシップについて
制作物を作成できたら、それをアピール材料にして長期インターンシップに参加することを強くおすすめします。

文系かつ未経験者として一度もプログラミング学習をしたことがない段階でインターンに挑戦するのはハードルが高いかもしれませんが、簡単な制作物を作成しておくだけで企業側の評価は大きく変わります。

ポートフォリオサイトやシンプルなToDoリストアプリといった制作物があるだけでも、「自発的に学び、アウトプットできる人材」であることを示すことができます。

エンジニアインターンシップのメリットとしては以下のようなものがあります。

* **実務経験を積むことができる**
* **チームでの開発を経験できる**
* **就活の際に圧倒的に有利になる**
* **経験値の高いエンジニアの先輩に聞きながら作業することができる**
* **人脈を作ることができる**
* **一般的なバイトよりも時給が高いことがほとんど**
* **リモート作業ができる会社もある**

有給で技術まで学ぶことができますしメリットだらけですね。

インターンシップを紹介している会社は多くありますが、自分は[Wantedly](https://www.wantedly.com/)というサイトで見つけました。

このサイトは、インターンシップの募集が非常に多く、エンジニアもさまざまな分野の求人が掲載されています。

スタートアップ企業やベンチャー企業がメインで掲載されており、実践的なスキルを学びやすい環境が整っているのでインターン探しにはおすすめのサイトです。

## 資格について

Webエンジニアとしての就活は資格よりも実務経験のほうが重視されている感じはありましたが、資格を取得しておくことで学んできた内容を体系的に整理できるほか、ITに関する知識を持っていることをアピールする材料にもなります。

新卒であればIPA（情報処理推進機構）の試験で**基本情報技術者試験**のレベルまで取得しておくと就活の際のアピールになると思います。

基本情報技術者試験は、基礎的なアルゴリズムやネットワーク、セキュリティに関する基礎的な内容が出題されるため、取得すれば一定の知識を持っていることを示すことができます。

## まとめ
文系未経験者でも、目標を明確にして計画的に学習を進めればエンジニアとしてのキャリアを切り開くことは難しくありません。

実際に大学に行っていない方や文系の方でも成功されている方はたくさんいますし、就職してからの知識のキャッチアップや努力が反映されやすい職種であると実感しています。

この記事が、エンジニアを目指している皆さんにとって少しでも参考になれば幸いです。