昨今はIT技術がますます浸透し、どの業界においてもエンジニアの需要が増す一方です。エンジニアという職業に興味のある方も多いと思いますが、一方で、未経験からエンジニアになるためにどうすれば良いかと聞かれると、よくわからないという方もまた多いのではないでしょうか。
そこでこの記事では、未経験からエンジニアになるためには、どのような知識やスキルが必要かを解説します。エンジニアを目指す場合の具体的なロードマップも示しますので、何から始めれば良いかわからないという方も、ぜひ参考にしてみてください。
執筆者:山崎 好史(やまさき よしふみ)
サクラサクマーケティング執行役員 CTO
株式会社CSK(現株式会社SCSK)にて保守運用マネージャーとして活躍後、独学でプログラミングおよびSEOを学び、サクラサクマーケティングの前身である株式会社ブルトアに入社。SEOの知識と技術力を生かしておもにSEOにおけるツール開発、R&Dなどを進め、中核事業に成長させる。現在はエンジニア以外にシステム運用チーム、コンテンツマーケティングチームも合わせて取りまとめ、プロダクト全般を統括中。
エンジニアにもさまざまな職種がある
エンジニアと一口にいっても、その種類はさまざまです。特に最近では、専門によってエンジニアが細分化されており、必要な知識やスキルも専門ごとにまったく違ってきます。
種類が多いので、ここでは一部の例しか紹介できませんが、エンジニア関連の職種について、大きく分けた形で紹介します。
IT・Webエンジニア
エンジニアの種類としてよく耳にするのが、「ITエンジニア」、「Webエンジニア」という職種です。
ITエンジニアとは、情報技術系に携わる技術者を幅広く指す言葉で、IT関連のエンジニアはすべてITエンジニアに含まれます。具体的には「システムエンジニア」、「ネットワークエンジニア」、「データベースエンジニア」など、その仕事内容によって職種は細分化されています。
Webエンジニアは、ITエンジニアとしての側面もありますが、そのなかでもWeb系の技術を専門とするエンジニアを指しています。各種WebサービスやWebアプリケーションを開発するのが、おもな仕事内容です。
機械系エンジニア
機械系エンジニアは、メカニカルエンジニアとも呼ばれ、機械製品に関わる開発を行なうエンジニアです。携わる開発対象の例としては、以下のようなものがあります。
- 家電製品
- 自動車
- 産業ロボットや工場設備
- 航空機
他にも、身近にある機械全般から宇宙開発に至るまで、多くのものが機械系エンジニアによる開発対象です。そのため、手掛ける分野によって業務内容や必要な知識は異なります。
ちなみに、機械類が動作する部分を設計・開発するのが機械系エンジニアの役割で、機械に入ってきた情報を処理するシステムはITエンジニアの担当範囲です。
例えば銀行ATMの開発の場合、機械系エンジニアが担当するのはATM本体の動作を制御する部分で、画面から入力された内容により金額を計算したり振込処理を指示したりするソフトウェア部分は、ITエンジニアの開発対象に分類されます。
開発系エンジニア
「開発系エンジニア」は、開発を行なうエンジニアを総称した言葉です。実際にシステムを作るエンジニアという意味で、プログラマーなどを含めて「開発系」と呼ぶことがあります 。
インフラ周りを管理するインフラエンジニアや、プロジェクト管理を行なうプロジェクトマネージャーなどと比較する形で使われることが多くなっています。
セールスエンジニア
セールスエンジニアは営業職に近いエンジニアです。システムの提案や営業の段階からクライアント先に出向き、技術的な質問に対応したり、開発部署との橋渡し役を担ったりします。契約周りの話を進める営業担当とは別で、技術的な部分のみを担当するのが基本です。
クライアントからの質問や要望を受けて、その場である程度は回答できるシステム的なスキルと、コミュニケーション力やクロージング力のような営業職としてのスキルの両方が必要とされます。
プログラミング言語と作れるもの
エンジニアの必須スキルであるプログラミング言語には多くの種類があり、実現したい機能によって使われる言語は異なります。ここではいくつかのプログラミング言語について、その概要と作れるものの例を紹介します。
HTML・CSS
HTMLとCSSは、Webページの土台を作り、見た目を整えるために必要な言語です。HTMLとCSSを用いることで、Webブラウザに表示させるページを作成できます。
HTMLとは、Hyper Text Markup Language(ハイパーテキスト・マークアップ・ランゲージ)というマークアップ言語です。マークアップ言語とは、文章構造を記述するための言語のことです。HTMLによってヘッダーや見出し、フッターなどを指定してWebページを記述できます。
HTMLだけでは文字の羅列になり、Webページとしてそっけない見た目になるため、CSSを用いて装飾します。例えば、文字の色や背景色、見出しの大きさなどを指定するのがCSSの役目です。
Java Script
Java Scriptは、Webページに動きを付ける目的などで用いられる言語です。昨今の多くのWebサイトの作成には、HTML・CSSとともにJava Scriptが用いられています。
Java Scriptにより実装できる機能はさまざまですが、一般的になじみ深い例では以下のようなものがあります。
- ポップアップウィンドウの表示
- 入力フォームの確認画面表示
- マウスオーバーでボタンの色を変える
- グローバルメニューにマウスオーバーで下層メニューをドロップダウン表示
PHP
PHPで作れるものには、以下のような例があります。
- ログイン機能
- お問い合わせフォーム
- 検索機能
- SNS
- ショッピングサイト
C言語・C++
C言語は、古くから使われており、処理速度の速さに強みを持つ言語で、組み込み系システムの開発やハードウェアやサーバーのプログラム開発に用いられています。C言語を拡張させ、オブジェクト指向型にしたものがC++で、両者には互換性があります。
C言語、C++で作られているものは多岐に渡り、普段我々がパソコンで利用しているソフトウェアやOS、さらに家電製品に組み込まれたシステムやロボットなど、用途はさまざまです。
Python
Python(パイソン)は、1990年ごろにオランダで開発されたプログラミング言語です。
機械学習やAIに関するライブラリが豊富に用意されており、AI分野で広く利用されています。身近な例としては、ロボット「Pepper」の感情認識AIや、フリマアプリ「メルカリ」のAI出品機能などがPythonで作られています。
また、AI以外にも、さまざまなWebアプリケーションの作成に利用されており、YouTubeやInstagram、DropBoxなどにもPythonが利用されています。
Swift
Swift(スウィフト)は、Apple社が作った無料のオープンソースプログラム言語です。
iOSやmacOSに対応しており、iPhoneやiPadの端末で使えるアプリ、もしくはMacパソコン向けのアプリを開発することができます。また、AppleTV向けのOS「tvOS」や、AppleWatch専用のOS「watchOS」にも対応しており、これらのアプリを開発することも可能です。
Java
Javaは、C言語をベースに開発されたプログラミング言語で、エンジニアからの圧倒的な支持率とシェア率を持っています。プラットフォームに依存しないため、さまざまな分野で活用されています。Javaで作られたものは身の回りに多くありますが、例えば以下のようなものがあります。
- Webサービス
- スマートフォンアプリ
- 家電の組み込みシステム
- IoT機器
また、これまでCOBOLが主流だった金融機関の基幹システムも、最近ではJavaに移行しつつあります。
Go
Go言語は、Googleが2009年に開発した、比較的新しいオープンソースプログラミング言語です。 記述が非常にシンプルで、プログラミング初心者でも習得しやすく、人気の言語となっています。
Webサービスの開発に適しているとされ、すでに著名なアプリケーションやサービスで採用されています。身近な例でいうと、YouTubeなどのWebアプリケーションにもGoが採用されています。
エンジニアに向いている人、向いていない人の特徴
エンジニアに向いている人
エンジニアに向いている人の特徴には、以下のようなものがあります。
- 新しい技術への好奇心が旺盛で、知識をアップデートできる
- 一人でPDCAを回せ、トライアンドエラーが苦ではない
- 集中力があり、地道な作業に耐えられる
- 効率主義
- 良い意味で面倒くさがり
- 検索能力が高い
システム開発業界は、環境の変化が激しい世界です。エンジニアとして活躍するためには、自ら勉強し、スキルアップを図ることが必須となります。
また、開発プロジェクトは、地味な作業の積み重ねにより成り立っています。エンジニア個人の、コツコツと仕事を成し遂げられる素質なしには、成功はありえません。
さらに、良い意味で面倒くさがりで、常に仕事を効率化しようとする性格や、大抵のことは自分で検索して解決できる能力があれば、エンジニアとしての強みとなるでしょう。
エンジニアに向いていない人
続いて、エンジニアに向いていない人の特徴について解説します。
- 勉強が苦手で、好奇心がない
- 変化が苦手
- ロジカルシンキングができない
- 自分で調べず、すぐに人に聞きたくなる
- 完璧主義
意外なところでは、完璧主義も開発現場ではネックになりがちです。システム開発ではバランス感覚が重要で、納期や予算など制約があるなかで最善の結果を出すためには、対応に取捨選択が必要となることもあるからです。
未経験からエンジニアになるための勉強方法
エンジニアになるためには、まずはプログラミングの勉強から始めるとよいでしょう。未経験者が勉強する場合には、いくつかの方法があります。ここでは各勉強方法についての紹介と、注意点などについて解説します。
独学で勉強する
プログラミングの学習は独学でも可能で、基本的にはこの方法が最もおすすめとなります。
現在は無料で使えるプログラミング学習サイトもありますし、多くの書籍も出版されています。まずはこれらを利用して、基礎の基礎を覚えていきましょう。無料で使える学習サイトには、以下のようなものがあります。
また、ほとんどの学習サイトでは有料プランが用意されています。閲覧できる動画が増えるなどの追加機能があるので、 必要に応じて契約するのもよいでしょう。しかしこれはあくまでも状況に応じてであり、最初から有料プランで始める必要は一切ありません。
プログラミングスクールを利用する
独学で勉強を始めてはみたものの、行き詰まってしまう、どうしても一人で勉強が続けられない、またはこれまで独学で何度もつまずいてきているという人は、プログラミングスクールを利用するのも一つの手です。プログラミングスクールでは、講師やメンターのサポートを受けられることもあり、モチベーションの低下を防ぎ、わからないときにすぐに解決できるといったメリットがあります。
ただし、今後エンジニアとして活躍していくことを考えると、独学で学ぶ力は必要不可欠です。そのため、プログラミングスクールにいきなり通い始めるのではなく、まずは独学で勉強してみて、どうしてもスクールが必要となった場合に検討するとよいでしょう。
代表的なプログラミングスクールとその特徴については、以下の記事にまとめてあります。
おすすめの人気プログラミングスクール9社を比較!評判・口コミ・料金も紹介
未経験エンジニアの求人を出している会社に就職する
現場で直接学ぶ方法として、未経験エンジニアの求人を出している会社に就職するという方法もあります。しかし実際には、まったくの未経験でエンジニア求人に応募するのはおすすめできません。
「未経験エンジニア」という言葉はよく耳にしますが、結局のところ、エンジニアは技術力がなければ成り立たない仕事です。そのため、技術力を持たずに入社しても、担当するのはエンジニアの仕事とはいえない業務ばかりであることも多々あります。
新卒入社などを除くと、「1からエンジニアになるための勉強と経験を積ませてくれる会社」はほんの一握りしかありません。就職したものの、1人のエンジニアとしてではなく、1人分の労働力としてしかみなされず、心身をすり減らすだけの結果にもなりかねないので、注意が必要です。
現役CTOが考えるエンジニアになるまでのロードマップ
ここでは一つのイメージとして、Webエンジニアになるためのロードマップを考えてみました。Web系のシステムは個人でも勉強を始めやすく、未経験者でも独学で知識を身に付けていきやすい分野です。
実際にWebシステムに触れてみながら、自分の興味がどこにあるのかを探るのにも良い方法なので、ぜひ参考にしてみてください。
1.WordPressでサイトを立ち上げる
エンジニアになるためには、何はともあれ、自分で手を動かしてみることが重要です。そこでまずは、WordPressを使って、何か一つサイトを立ち上げてみましょう。WordPressは、簡単にブログやホームページを作成できるサービスです。
WordPressには、Webエンジニアの基礎的な部分の多くが詰まっています。
- サーバーの基礎知識
- Webサイトの基礎知識(HTML、CSS、PHP、Java Script)
- サイトの運用
サイトを実際に立ち上げてみることで、Webサイトがどのような仕組みで表示され、動いているか、データがどこに存在するのかなどについて、身をもって体験できます。
ここで立ち上げるサイトの中身は何でもよく、ひとまず一般的なブログの形にしておくことで問題ありません。将来的には、自身のポートフォリオサイトや情報発信の場にしてもよいでしょう。
2.作ったサイトをカスタマイズしてみる
次に、WordPressで立ち上げたサイトをカスタマイズしてみましょう。サイトのデザインをカスタマイズするには、HTMLやCSS、Java Scriptの知識が必要となります。
また、実現したい内容によってはPHPが必要になることもあります。例えば、サイトの色や文字の装飾を変更したり、利用しているWordPressテーマ(Webページの見た目やレイアウトについてまとめられたもの)をカスタマイズしたりして、好みの状態に変えてみましょう。
データベースの簡単な知識や、サーバーの設定変更などが必要になる場合もあります。実現したい内容について検索すれば多くの情報が得られるため、調べながらカスタマイズしていくことで知識が蓄積していくでしょう。
3.WordPressのプラグインを作ってみる
さらに知識を深める方法として、自作のWordPressプラグインを作ってみましょう。プラグインはWordPressをより便利にする拡張機能で、有料プラグイン・無料プラグインともに多数出回っていますが、自分で作ることも可能です。
プラグインは、サイトの立ち上げ・カスタマイズよりも一段階高いレベルの技術が必要で、PHP、データベース、WordPressに対する理解がさらに深まります。ここまでくれば、WordPressで1からサイトが作れるといえるでしょう。作成したプラグインは、自身のポートフォリオとしても使えます。
4.ステップアップ
ここから先は、フロントエンド/サーバーサイド/データベースなど、これまで触れて来た知識と自分の興味を軸に、知識の幅や専門性を高めていくフェーズに入ります。
HTMLやCSS、Java Scriptによるカスタマイズが楽しいと思えた場合は、フロントエンドエンジニアの道を探るとよいでしょう。Java Scriptを深く極めていくほか、React、Vue、AngularなどのサーバーサイドJSも勉強していきます。
サーバーサイドでの作業が楽しいと思えたら、サーバーサイドエンジニア向けの勉強をしていきます。サーバーサイドではPHP以外の言語が求められることが多くなるため、言語の選択肢を増やし、プログラミング技術を高めていきましょう。
データベースに触れるのが楽しいと思えたら、データベースエンジニアの道を目指すのもよいでしょう。データベースエンジニアは、大規模案件などでないと出番がなかなかない仕事ではありますが、専門性がかなり高い分野でもあり、ハイレベルな人材にはニーズがあります。ただし、データベースについて完全に個人で学ぶことは難しく、実際にはシステムエンジニアとして経験を積みながら、現場で本物に触れて学ぶことも必要な職種です。
エンジニアとしての働き方の選択肢
エンジニアとして実際に働くには、いくつかの方法があります。ここでは各選択肢と、それぞれのメリットデメリットなどついて解説します。
エンジニアとして就職
最もイメージしやすいのが、エンジニア職の求人を出している企業に就職する方法です。就職先には以下のような種類があります。
- SIer(システムインテグレーター)=システムの設計から開発、運用までをサービスとして提供する企業
- Web系企業=ECサイトやWebアプリなどを自社サービスとして開発する企業
- 社内SE=企業内で使用するシステムを開発するエンジニアで、就職先は小売業や製造業などさまざま
まったくの未経験で就職する場合、まずはプログラミングのみを専門に行なう「プログラマー」として就職し、徐々に要件定義や設計などの上流工程も担当する「システムエンジニア」にキャリアアップするのが一般的です。
さらに、システムエンジニアとして経験を積みつつ、データベースエンジニアやネットワークエンジニア、その他の上級エンジニアへのキャリアアップや転職も可能となります。
このあと紹介するフリーランスエンジニアや副業エンジニアとして働くことを考える場合も、まずは環境の安定した一般企業で経験を積んでから、ステップアップという形で目指すのが合理的といえるでしょう。
フリーランスエンジニア
フリーランスエンジニアは、企業に属さずに、個人でクライアントからの仕事を請け負うエンジニアです。収入は実力次第ですが、高いスキルがあれば高収入も狙える働き方です。
フリーランスエンジニアを名乗ること自体は誰でもすぐにできますが、実際にはスキルや経験、クライアントからの信頼がないと安定して受注できないため、就職よりもハードルが高い働き方です。そのため、まずは企業でエンジニアとして経験を積んだのちに、働き方の好みや実力によってフリーランスに転向するとスムーズでしょう。
フリーランスで実際に仕事を受注するには、企業への直接営業のほかに、フリーランスエージェントの利用、クラウドソーシングでの受注、ビジネス系SNSでの交流から受注する方法などがあります。
フリーランスエンジニアの案件獲得方法については、以下の記事でも詳しく解説していますので参考にしてください。
副業エンジニア
本業を持ちつつ、副業エンジニアとして働く方法もあります。未経験で副業エンジニアになるというよりは、エンジニアを本職としつつ、副業としても始めるケースのほうが多いでしょう。フリーランスと同じく、技術力がないと仕事にならないため、本業で身に付けたスキルを副業に活かす形で始めると効率が良いといえます。フリーランスを目指す人が、その第一歩として、個人の副業で始めてみるというのも一つの手段です。
エンジニアになるために必要なもの・環境
ここでは、エンジニアを目指すために必要なものや環境について解説します。
パソコン
システム開発の勉強を始めるには、パソコンが必要不可欠です。
- CPUはCore i5以上
- メモリは8GB以上
- ストレージはSSDで256GB以上
- ディスプレイは13インチ以上
特別高価なものは必要ありませんが、上記程度のスペックはあるとよいでしょう。デスクトップでもノートパソコンでもどちらでも開発は可能です。デスクトップのほうが、より高いスペックを搭載できますが、初心者であればそこまでの性能は必要ありません。
そのため、どこにでも持ち運んで作業できるノートパソコンのほうが何かと便利といえます。将来的に 、ゲーム開発などの重い作業を行なうようになった場合は、デスクトップパソコンへの切り替えを考えてもよいでしょう。
インターネット環境
次にインターネットを利用するための環境を整備します。データのアップロード・ダウンロードをはじめ、サーバーとのやり取りは頻繁に発生するため、ある程度の回線速度はあったほうが、ストレスなく作業できるでしょう。
とはいえ、こちらも特別な環境は必要ありませんので、通常の家庭で利用するレベルのインターネット環境でも、学習を始めることは可能です。
エンジニアの就職・転職で有利になる資格
エンジニアとして働くために、必須の資格というのはありません。ただし、保有しておくことで一定のスキルレベルを証明できる資格はいくつかあります。
エンジニアとして就職・転職する際には有利になる可能性もあるので、余裕があれば取得しておくと良いかもしれません。
ITパスポート
ITパスポートは、独立行政法人情報処理推進機構(IPA)が実施する「情報処理技術者試験」のうちの一つで、最も簡単なエントリーレベルの資格です。
情報技術に関する基礎的な知識を持つことを証明しますが、エンジニアとしての能力を証明したいのであれば、もう少しレベルの高い資格でないと意味がないでしょう。昨今は開発職以外の仕事でも最低限のITの知識は必要となっていることもあり、どちらかというとエンジニア以外の職種の人が取得することに価値がある資格です。
しかしエンジニアを目指すまったくの初心者ということであれば、勉強の最初の手がかりとしてこちらの資格取得を目標にするのは良いかもしれません。
<公式サイト>
情報処理推進機構「ITパスポート試験」
基本情報技術者試験・応用情報技術者試験
基本情報処理技術者試験と応用情報処理技術者試験は、エンジニアを目指す人材の登竜門的な存在の資格です。ITパスポートと同様に、IPAが実施しています。エンジニアの実力を試す資格試験としては最もポピュラーなものといえるでしょう。
基本情報処理技術者試験は、システム開発における基本的な知識を有し、上位職責者の指導を受けて、設計・開発・運用などの一通りの工程を担当できるレベルの知識を証明します。
応用情報技術者試験は基本情報技術者試験の上位資格です。開発チームのメンバーとしてシステムの安定稼働に寄与できることはもちろん、より上流の工程である要求分析や、予算・工程・品質の管理までを担えるレベルを証明します。
<公式サイト>
情報処理推進機構「基本情報技術者試験」
情報処理推進機構「応用情報技術者試験」
システムアーキテクト
システムアーキテクトは、応用情報技術者の上位に位置づけられ、上級エンジニアを目指す人材のための資格です。システム開発の上流工程を主導する立場で、顧客の要求からシステム開発に必要な要件を定義し、実現するためのアーキテクチャを設計します。
システムアーキテクトには、ハードウェア、OS、データベース、ミドルウェア、ネットワーク、セキュリティなどの要素を幅広く理解し、適切なアーキテクチャを選定できる実力が必要です。
<公式サイト>
情報処理推進機構「システムアーキテクト試験」
ネットワークスペシャリスト
ネットワークスペシャリストは、昨今のシステムに必須の、ネットワーク技術に関する専門の資格です。システムアーキテクト同様に、応用情報技術者の上位に位置付けられています。ネットワークシステムの設計・構築・運用・保守を請け負い、ネットワーク管理者として開発に携われる幅広い知識が試されます。
インフラエンジニアのうちの一種である「ネットワークエンジニア」を目指すのであれば、取得を目指したい資格です。
<公式サイト>
情報処理推進機構「ネットワークスペシャリスト試験」
各種ベンダー資格
ベンダーとは製造元・販売供給元のことで、IT業界においてはOSやソフトウェア、ネットワーク機器などのIT関連商品を販売する業者を指します。IT製品ごとに、活用のための技術や知識はさまざまですが、この知識レベルを証明するためのベンダー資格が存在します。
例えば、データベースを提供するオラクル社の「オラクルマスター」や、ネットワーク製品を提供するシスコ社の「シスコ技術者認定」などの資格があり、毎年多くの人が挑戦しています。
<公式サイト>
Oracle認定Javaプログラマ
シスコ技術者認定
まとめ
未経験からエンジニアになるための道筋は、一つではありません。しかし一般的には、まず独学で手を動かしながら知識を習得し、IT関連企業などで経験を積むのが、最も効率的でおすすめの方法といえるでしょう。
実際に就職したあとは、プログラマーやシステムエンジニアを経験しながら、より上位の専門職を目指したり、フリーランスとして独立したりすることも可能です。目指すエンジニア像によって必要な知識は異なりますので、まずは自宅で手軽に実践できるWebシステム構築などから始めて、ご自分の興味ある分野を探ってみてはいかがでしょうか。