Webエンジニアとしてキャリアアップを目指す方へ!Webエンジニアの全体像を解説

DX化やChatGPTなどが話題になっている昨今において、企業側のWebエンジニアに関する需要は非常に高まっています。ある調査では、中途採用におけるWebエンジニアの求人倍率は10倍を超えているとの調査結果もあります。今後も需要の高まりが期待されるITエンジニアですが、これからWebエンジニアになるための勉強をされる方、あるいはWebエンジニアになりたての方に向けて、覚えておきたいIT・Web業界の全体像やWebエンジニアの職種や言語について解説させて頂きます。

目次

Webエンジニアとは

WebエンジニアはPCブラウザ、タブレット、スマートフォン等で使用するクラウドシステムやアプリケーションなどの開発に関わる設計・運用・保守などの業務を司る仕事で、日本では120~130万名の方がIT・Webの仕事に従事しているといわれています。

以前はWebエンジニアの仕事は敷居の高いものでしたが、現在ではWebエンジニアを目指す方向けのプログラミングスクールの台頭、あるいは小学校でのプログラミング教育の義務化が制定される等、今後、Webエンジニアの仕事に就く方はますます増加していくでしょう。

インターネット黎明期の1990年代からインターネットビジネスが当たり前となる2000年代に入り、転職市場におけるWebエンジニアの需要は急激な高まりを見せており、スマートフォンの普及、あるいは新型コロナウィルスの問題に伴うDX(デジタルトランスフォーメーション)需要などにより更に拍車がかかってきています。

また、AI(人工知能)の分野もAIが囲碁でプロ棋士に勝ったなどのニュースが一時話題を賑わせつつも、なかなか実用化に時間を要していましたが、この数年でAIを実装したプロダクトをリリースする事業会社なども台頭してきており、今後はこのような分野の成長などがWebエンジニアの需要を更に後押ししていくでしょう。

SES、受託会社、事業会社の3分類

ITエンジニアで就職するにあたり、所属する会社で大きく3つに分類されます。顧客先に常駐で開発業務に携わる客先常駐派遣型の「SES(System Engineering Service)」、顧客の依頼でプロダクトやサービスを開発する「受託会社」、自社のプロダクトやサービスを開発する「事業会社」があります。SES、受託会社、事業会社では、職種の呼び方やキャリアパスは異なります。SES、受託会社の多くはSIer(System Integrator)やITベンダーと呼ばれており、日本のITエンジニアの約7割が受託会社で働いております。

受託会社に所属するWebエンジニアは、受託開発や、客先常駐して顧客のWebプロダクト開発に携わります。仕事の受け方として、派遣契約や請負契約で契約することが多く、受託会社が更に他の受託会社へ発注する下請けのような構造になっていることもあります。

事業会社に所属するWebエンジニアは自社で展開するWebプロダクトの開発を手掛けつつ、ビジネスサイドと連携をしながらマーケットに受け入れられるプロダクトへアップデートを続けていくことなどが求められます。尚、事業会社の場合は、企業によって開発組織の在り方は様々であり、業務範囲や開発工程、開発方法も大きく異なります。

開発工程

Webプロダクトを開発するにあたり、いきなりコードを書き始めるということはありません。まずはどのようなサービスを開発したいか、どのような課題があるか、その課題を解決するためにはどんな機能が必要か、どのようにしてその機能を作るかといったことを整理していく流れとなります。このWebプロダクトの開発にあたり、前提条件の整理や要件定義、設計する流れを上流工程と呼びます。上流工程を終えて、コードを書き始める以降の工程を下流工程と呼びます。一般的な上流工程→下流工程までの開発プロセスについて以下に記載しますのでご参考にされてください。

ただし、Webプロダクトの特性、顧客ニーズはまだまだ不明瞭なスタートアップの初期のWebプロダクト(プロトタイプ、α版、β版などと呼びます)の開発などによっては、必ずしもこのような開発工程を踏まないケースもあります。次章では開発方法の種類、それぞれの開発方法の特徴について解説していきます。

開発方法

ウォーターフォール開発

Webプロダクトの開発手法の一つであるウォーターフォール開発は、プロジェクトの立ち上げからWebプロダクトの開発に至るまでの工程を前述に記載した工程に沿って、上流工程から下流工程へと順番に進めていきます。尚、「ウォーターフォール」とは滝を意味し、上流工程から下流工程へまさに滝のように作業が流れていくことを表しています。

比較的、工程管理を細かく設定する開発手法であり、事業会社がSIerに外注をする観点においては最もプロジェクトマネジメントがしやすい開発手法といえるでしょう。一方でプロジェクト開始までに要件、手順、人員の手配などを細かく進めていくため、スピードの観点でいくと他の開発手法と比較した際にやや時間を要してしまうという特徴もあります。

アジャイル開発

従来のウォーターフォール開発を中心とした開発方法と比較し、開発スピードや品質の観点からより効率化された開発方法としてアジャイル開発が生まれました。アジャイル開発の特徴は、小さい工程の範囲で開発→テストを行い、未完成であってもシステムを作成し、フィードバックを集め、実装→テストを行うという流れを素早く繰り返します。尚、敏捷や機敏を意味する「アジャイル(agile)」を語源としています。

特にWebプロダクトを展開する事業会社は、事業を取り巻く市場の変化が早く、仕様を細かく変更しながらスピーディに市場やニーズに合わせて開発を進める必要がありますので、アジャイル開発を導入している企業が多いです。

また、アジャイル開発の手法の一つにスクラム開発 と呼ばれる開発手法があります。アジャイル開発の仕事の進め方の前提ではあるものの、少人数のチームに分かれ短期間の開発サイクルをくり返し行う開発手法をスクラム開発といいます。 チーム内でのコミュニケーション機会が多くなるため、若手のWebエンジニアの育成等の観点などを重視する上でスクラム開発を取り入れる企業も多いので併せて覚えておくと良いでしょう。

オフショア開発

オフショア開発は、システムの開発業務を海外の開発会社や海外子会社に委託する開発手法です。開発コストの低減のため、人件費の安い新興国などの国へアウトソースし、日本での開発コストと比較して削減することが可能です。

また、国内のWebエンジニア不足を背景に、開発リソースの確保を目的として活用が進んでいます。一昔前は中国が人気でしたが、中国国内の人件費が高騰している影響で、近年ではベトナムやフィリピンといった国が委託先として人移行しつつあります。

Webエンジニアの職種

一言でWebエンジニアと言っても、様々な職種があります。パソコンやスマートフォンで一般ユーザーが利用するWebアプリケーションの開発、基幹システム、IoT製品の開発など、プロダクトの種類などによって携わるWebエンジニアは様々です。以下に代表的な職種を解説させて頂きますので、ご自身のキャリアや携わりたい分野の参考にしてください。

フロントエンドエンジニア

フロントエンドエンジニアは、ユーザーが直接見るインターフェイスの実装を担当するWebエンジニアです。Webプロダクトにおいてエンドユーザーが実際に操作する画面における挙動などを司るため、Webプロダクトの開発においては非常に重要性が高い役割の一つといえるでしょう。

フロントエンドエンジニアの働き方としてはUIUXデザインからコーディングまで携わる働き方もあれば、UIUXデザインチームと連携しながらコーディングを中心に開発業務に関わる働き方もあり、所属する組織によりどのような働き方になるか異なるため注意しましょう。

サーバーサイドエンジニア(バックエンドエンジニア)

サーバーサイドエンジニア(バックエンドエンジニア)は、サーバー側で行う処理に関するプログラムの開発や、サーバーで扱うデータの管理を行います。Webアプリケーションにおいて、ユーザーの目に触れないところの処理の開発や保守を行っており、バックエンドエンジニアと呼ばれることもあります。

フルスタックエンジニア

フルスタックエンジニアはソフトウェア開発において複数のスキルを有するエンジニアのことを指し、転職市場においてはフロントエンドエンジニアとサーバーサイドエンジニアの両方の技術を持っているエンジニアのことをフルスタックエンジニアと定義しているケースが多いです。しかしながら、企業によってはデータベースエンジニアやインフラエンジニアの素養まで求める企業もあり、定義が明確に定まっている訳ではない為、各社においてフルスタックエンジニアをどのような定義にしているのか確認するようにしましょう。

データベースエンジニア

データベースエンジニアは、データベースの開発・設計、もしくは運用・管理を行うエンジニアです。企業の情報システムを支えており、データそのものに責任を持つ管理者とデータベースに責任を持つ管理者の両方を担当します。上記で記載したようにサーバーサイドエンジニアがデータベースエンジニアとして業務を兼務することもあります。

インフラエンジニア

インフラエンジニアは、サービス運用の土台となるIT基盤(インフラストラクチャ)の構築を担当します。ITインフラを設計、開発する際には、サーバーの設置やOSのインストール、ストレージ(記憶装置)やネットワークの設定など、企業のIT環境の構築と維持を担当する職種です。

インフラの分類として、オンプレミスとクラウドがあり、オンプレミスは自社で物理的にコンピュータやネットワークを用意し、データセンターを構築します。クラウドはAWSやGCPといったクラウドサービスを利用してインフラを構築します。最近では、コストやサーバー管理の手間を考慮し、クラウドサービスを利用する企業が多くなっております。

SRE(Site Reliability Engineering)エンジニア

SREエンジニアは、Webサイトやサービスのシステムの信頼性を高めることを責務とするエンジニアで、日本語ではサイト信頼性エンジニアと呼ばれます。SREという考え方は、Googleの エンジニアリングチームが提唱したもので、システムの信頼性に焦点を置いております。

企業が提供しているサービスが、安定的に動き続けることによる信頼性がサービスとしての価値提供の重要な要素として考えられるようになり、システムの信頼性の担保を担うエンジニアです。インフラエンジニアとの違いとして、SREエンジニアは、ネットワークやサーバーなどのITインフラに関するスキルに加えてアプリケーション開発のスキルや知見なども必要となります。

モバイルエンジニア

モバイルエンジニアは、スマートフォンやタブレットなどのモバイル端末で動作するアプリケーションの開発を担当するエンジニアです。iPhoneであればApple Store、AndroidであればGoogle Playでインストールするアプリを開発しており、iOSではSwiftやObjective-C、AndroidではJavaやKotlinが言語としてよく使用されております。

OSによって開発の特徴があるため、iOSエンジニアやAndroidエンジニアのように企業が提供しているサービスのOSによって呼称を変える企業もあります。

組み込みエンジニア

組み込みエンジニアは、家電製品や工場に設置されたセンサーなど機械の中に組み込まれたコンピュータを制御するためのシステムを開発します。システムに関する知識はもちろんですが、システムを搭載するハードウェアに関する知識が必要で、近年はIoT(モノのインターネット)に関わる製品の普及や自動車関連のIoT化に伴い、最新IT分野での需要が増えており、IoT製品を扱うエンジニアをIoTエンジニアと呼ぶこともあります。

ネットワークエンジニア

ネットワークエンジニアは、コンピュータやサーバーをルーターやスイッチなどのネットワーク機器で接続し、ネットワークの構築・運用・保守するエンジニアのことです。ルーターやスイッチなど物理的なネットワーク機器に触ることも多く、ケーブルの配線方法なども考えます。ネットワークエンジニアは、ネットワーク機器の製造販売会社シスコシステムズのネットワーク製品に関する技能を認定するベンダー資格やIPA(独立行政法人情報処理推進機構)が主催する国家資格「情報処理技術者試験」の国家資格などがあります。

セキュリティエンジニア

セキュリティエンジニアは、企業や組織のITにおけるセキュリティ確保を目的としたエンジニアです。サーバーに関連する構築や運用・保守を専門とし、セキュリティを考慮したシステム設計・運用、サイバー攻撃を防ぐための調査や対策などを行います。企業によっては、社内のデータの取り扱いに関するルールの整備、社員のパソコンのセキュリティ環境の構築を担うこともあります。

QAエンジニア

QAエンジニアは、Quality Assuranceの略で、WEBサービスやアプリケーション、システムの製品の品質を保証するため、テスト工程での動作チェックや製品の品質管理を担当するエンジニアです。もともとはSIerなどで大規模なソフトウェアの開発のテストを行うエンジニアとして必要とされる職種でしたが、最近ではWEBサービスを提供するような事業会社でのニーズも高まっております。ただ単に不具合の有無や使用に沿った動作をするかを確認するだけでなく、サービスの使いやすさなどの視点でのチェックも行ないます。

データサイエンティスト

データサイエンティストは、数学や統計学を用いて、膨大なデータの分析を行い、ビジネスの課題発見や解決、新規事業の提案など、企業の発展に向けてデータを分析するエンジニアです。データサイエンティストは機械学習をはじめとしたスキルを保有することが多く、企業によっては機械学習エンジニアとの境目が曖昧になることがあります。機械学習エンジニアは、機械学習のシステムを開発し、データサイエンティストはそのシステムを使用する職種というイメージとなります。ただしどちらの職種もPythonやデータベースの知識が求められます。

プログラミング言語の種類

次に各種開発時に使用されているプログラミング言語の種類をご紹介していきます。プログラミング言語は種類が多く、実際に使われている言語は職種によって異なります。目指しているWebエンジニアの実務に必要な言語を調べて効率的なスキル習得を目指しましょう。

Java

Javaは、汎用性が高くWebサービスからWebアプリ、スマホアプリ(Android)、基幹システムなど様々な分野で採用されている言語です。Javaを習得すれば、他の言語へ応用もしやすく、多くのITエンジニアが使用できる言語です。

PHP

PHPは、Webプロダクトのサーバサイド(バックエンド)開発で需要が圧倒的にあり、さまざまなWebサービスやWebアプリで採用されている言語です。初心者でも習得しやすいと言われており、開発におけるフレームワークも豊富にあるため、人気のある言語です。

Python

Python は Webアプリケーションや人工知能の開発に強い言語です。AI 開発には、数値計算やディープラーニングに特化したライブラリが必要で、Pythonはそのライブラリが充実しており、AI開発に用いられることが多いです。近年、AIや機械学習への注目が高まっており、人気が急上昇している言語の1つです。

Ruby

Ruby は日本人のまつもとゆきひろ氏が開発した国産の言語で、コードが簡潔で直感的にわかりやすいというのが特徴です。Ruby on Rails というフレームワークがあり、Webプロダクトの開発を効率的に行えるため、多くのWebサービスで採用されております。また、国産の言語ということもあり、日本語で書かれた資料も豊富にあることも特徴といえるでしょう。

Perl

Perlは30年以上の長い歴史を持ち、Webアプリケーション開発で人気のある言語です。2000年代前半にWebサービスを始めた企業によく採用されておりましたが、RubyやPythonなど使いやすくて簡単なプログラミング言語が生まれた影響で、徐々に新たなサービスに採用されることが減っている言語です。

HTML

HTMLは、Webページを作成するための基本となる言語で、普段目にするWebページの多くに採用されております。主にページ内の情報を構造化し、見出し、本文、サイドバーなどを明確化する目的で使用します。 Web開発に携わる人の多くが最初に習得した言語の1つと言えるでしょう。

CSS

CSSは、HTMLで書かれたWebページの文字の大きさや色、背景、レイアウトなどの見ための設定をする言語です。CSSだけでWebページを表現することはできず、HTMLとセットで使われる言語です。

JavaScript

JavaScriptは、ほとんどのWebサイトで採用されている言語で、主にHTMLやCSSとセットでWebページの処理を実現するために使われています。CSSが色や大きさ、レイアウトなどの装飾を担っているのに対し、JavaScriptは、複数の画像を横にスライドさせながら表示をさせたり、問合せフォームに入力された項目をチェックするなど、Webブラウザ上で動作させることができる言語です。

TypeScript

TypeScriptは、JavaScriptを拡張して作られた言語です。Microsoft社によって開発され、ブラウザで動くというJavaScriptの利点がありつつ、大規模なアプリケーションを複数人で安全に開発ができるという利点があります。

C

C言語は、古くから使われている言語で、ハードウェアの制御から業務システム、アプリケーション開発まで幅広く活用される言語です。C言語はプログラミング言語の黎明期に開発された言語で、体系や構造は難しく、開発によってはハードウェアに関する知識も必要なため、難易度の高い言語となっています。

C++

C++は、C言語を拡張して開発された言語で、Webアプリケーションや、人工知能・ロボット技術の開発など、現在あらゆる分野で幅広く使われている言語の一つです。「シープラ」や「シープラプラ」と呼ばれます。C言語とC++には互換性があるため、C言語を用いて作られたプログラムをC++に移行することも可能で、C言語と比較してコンピュータの処理速度が速い特徴があります。

C#

C#は、マイクロソフト社がC++とJavaの良い部分を踏襲して開発し、ゲーム開発やVR(バーチャルリアリティ)技術などに用いられているプログラミング言語の一つです。文法や構文はC++と似ておりますが、互換性はないので、一緒に使用することはできません。

ゲーム開発エンジン「Unity」を使用したゲーム開発の場で活用されており、アプリ開発や業務システムなどにも用いられている言語です。

Scala

Scalaは、2004年にリリースされた比較的新しい言語で、Javaとの互換性があり、Javaの多くのライブラリを利用することができます。そのため、Javaを使用するエンジニアにとっては習得しやすい言語です。Scalaが利用されている有名なサービスとしては、Twitterが挙げられます。

Go

Go言語は、2009年にGoogleによって発表された言語で、記述がシンプルでC言語に迫る速さの処理速度を誇り、ユーザーからのアクセスの多い大量のデータ処理が発生するサービスに適しております。

Kotlin

Kotlinは、Androidのモバイルアプリの開発に用いられる言語で、2017年にGoogleがKotlinをAndroidの公式言語として追加しております。Androidアプリは、Javaで開発も可能で、KotlinはJavaで開発したコードを利用できるため、JavaからKotlinへ移行しやすいと言われております。

Objective-C

Objective-Cは、Apple社がC言語をベースに機能を拡張させた言語で、iOSのモバイルアプリの開発で多く用いられております。C言語をベースに開発されているため、これまで蓄積されたライブラリ数やノウハウが多くあります。ただし、最近では新たにApple社が2014年に発表したSwiftに移行しております。

Swift

Swiftは、Apple社が開発を主導し、上述の通り2014年に発表された言語です。Objective-Cでは、Apple製品に特化していたものの、Swiftは一般的なWebアプリケーションの開発まで行うことができるようにでき、近年では人気が上昇している言語です。

SQL

SQLは、データベース言語の一つで、データベースに対しての処理をするための言語です。処理というのは、特定のデータを格納したり、取り出したりすることであって、データベースそのものを開発するものではありません。

R

R言語は、統計処理やデータ解析に特化した言語です。そのため、JavaのようにWebサービスの開発のために使用されることはほとんどありません。近年ではビッグデータの解析と機械学習を行うに統計解析が必要なため、R言語を導入する企業が増えております。

VB(Visual Basic)

VBは、1991年にMicrosoft社がWindows向けに開発した言語で、様々なWebアプリケーションの開発に活用されております。VBはプログラミングを始める初心者の方にお勧めされることが多く、覚えやすく使いやすいと言われております。

最後に

今回は、Webエンジニアとして働くにあたって、基本的な情報をまとめてみました。世界中でデジタル化が加速している昨今、経済産業省の発表では、2030年に最大で約79万人のIT・Web人材が不足すると言われております。

実際に多くの企業がWebエンジニアの採用に苦戦しており、それだけ多くの需要があることから、働き方も多様になり、待遇や労働環境も日々改善されています。これからWebエンジニアを目指される方、現在勉強中の方、Webエンジニアになりたての方にとって参考にして頂ければ幸いです。

この記事を書いた人

岩崎久剛

1984年兵庫県生。関西大学工学部を卒業後、受験支援事業を全国展開する大手教育事業会社にて総務人事など管理部門を経験し、2012年より人材業界に転身。大手総合人材会社にて求人広告、人材紹介など中途採用領域での法人営業を経験し、従業員数名規模のベンチャーから数10か国に展開するグローバル企業まで多様な業界、事業フェーズの企業の採用を支援。2016年よりハイキャリア領域の人材紹介事業立上げメンバーに参画し、関西ベンチャーを軸とした採用支援に従事。その後、ビズアクセル株式会社を起業。MBA(グロービス経営大学院)。

目次