採用ノウハウ(業界別)
2024.06.10

エンジニア採用に必須の基礎知識|採用担当向けに分かりやすく解説

採用市場での競争が激化の一途をたどる昨今、エンジニア採用は特に厳しくなることが予想されています。
こうした中、エンジニア採用を成功に導くためには、採用担当者がエンジニアに関する基本的な知識を身につけることが必要かつ有効です。

そこで本記事では、エンジニアの基礎知識を「技術の仕組み」「用語」「業界構造」の3つの観点から解説します。
あわせて、エンジニア採用に必要な知識の学び方についても紹介しますので、ぜひ最後までご覧ください。

エンジニアの基礎知識を学ぶメリット

この記事では基本的に「エンジニア学習」を以下の3つの分類で解説していきます。

エンジニア知識記事挿入_この記事の構造3つの分類

これら3つを学ぶメリットは、それぞれ以下の通りです。

技術の仕組みを学ぶメリット

「そもそもこのシステムはどうやって動いているのか」といった「技術の仕組み」を理解することで、エンジニアが実際に行っている仕事をイメージできるようになります。
エンジニア採用活動を行うために最低限必要な技術の仕組みに関する知識を、後述の「エンジニア基礎知識|技術の仕組みを知る」にて解説します。

エンジニア用語を理解するメリット

エンジニア用語を理解することで、採用活動時に候補者と実務やスキルに関するコミュニケーションを取りやすくなります。
ただし、「エンジニア用語」を理解することは「プラグラミング言語を学ぶ」こととイコールではありません。
この記事では、後述の「エンジニアの基礎知識|用語を理解する」で、基本的な用語(エンジニアの職種・プログラミング言語)について解説します。

エンジニア業界の構造を把握するメリット

「エンジニア業界の構造」を理解することで、「特定のスキルを持った人材を見つけやすい媒体や方法」「エンジニア同士は仕事上でどのように連携しているのか」「エンジニアはどのような働き方を求めているのか」などが分かるようになります。

この記事では、後述の「エンジニア採用市場の最新動向」で触れますが、基本的には様々な外部メディアやSNS・会社の情報などを収集しながら把握していくことになります。

エンジニア基礎知識|技術の仕組みを知る

エンジニアが行う業務を理解するために、「技術の仕組み」について基本的な内容を説明します。

エンジニア知識記事挿入_技術の仕組み

エンジニアが担う業務の全体イメージ

まずは身近な例えで、エンジニアが担う業務の全体的なイメージを掴んでおきましょう。

家の建築を設計から完成まで1人で行うのは困難です。また、家の建築をサービスとして販売する場合は、営業やセキュリティ業者等、様々な職種が関わります。
つまり、家を建てる際には、営業、設計士、インテリアデザイナー、現場監督、大工、外構業者、電気配線、水道、セキュリティ会社など、色々な業者が集まり一つのプロダクト(家)を完成させます。

エンジニアが担うWEBサービスやシステム開発も同様です。
全てを一人で完成させることは難しいため、様々な役割をもった人が関わります。
例えば、フロントエンドエンジニア、バックエンドエンジニア、デザイナー、品質(QA)、インフラエンジニアなど、様々な役割を担う方々が集まり、1つのプロダクトを完成させていくのです。

また、目的によって最適な道具(プログラミング言語)も違うため、それぞれの役割に沿った言語が存在します。
エンジニア採用を行う際には、特定のプログラミング言語を使える人を探すケースが多いでしょう。
ただし、同じ言語でも使用目的が同じとは限らないため、注意が必要です。

WEBアプリケーションの基本構造

WEBアプリケーションには様々なものがありますが、ここでは例として、以下のようなものを想像してください。

  • 例1:iPhoneのゲームアプリ
  • 例2:WindowsPCのChromeから見るYoutube
  • 例3:Macbook上のTeamsアプリ

ほとんどのWEBアプリケーションは、「手元のデバイスに情報が表示される側(クライアントサイド)」と「様々な情報処理の結果を送る側(サーバーサイド)」に分かれて機能します。

「例2:WindowsPCのChromeから見るYoutube」では、Youtubeで見る動画のデータがすべて手元のPCにあるわけではなく、Youtubeのサービスを提供しているサーバーサイドから送られてきたデータを手元のクライアントサイドで表示する仕組みになっています。図で表すと、以下の通りです(図A)。

図A:WEBアプリケーションの基本構造

エンジニア知識_サーバークライアント図

左側が手元のデバイス、右側が情報処理をしてくれるサーバーです。

人事エンジニアリング勉強会_基礎学習コンテンツ-Webアプリケーションの基本的な構造/株式会社LAPRASを参考に作成

リクエストとレスポンス

WEBアプリケーションのサービスは基本的に図Aに示した「リクエスト」と「レスポンス」によって成り立ちます。

サーバーサイドが情報処理をする際は、多くの場合クライアントサイドからの指示・要求によって情報処理をします。
このクライアントサイドからの指示・要求を「リクエスト」と呼びます。
例えば「例2:WindowsPCのChromeから見るYoutube」で考えると、「動画Aをユーザーがクリック」した際に「クライアントサイド(この場合はWindowsのPC・Chrome・Youtubeの表示画面までを含む)」から「動画Aの再生データを送ってください」というリクエストが送られます。

クライアントサイドからリクエストを受けると、それに従って情報処理を行った結果をクライアントサイドに返します。
このサーバーサイドからの情報の返答を「レスポンス」と呼びます。
先と同じく例2で示すと、「動画Aの再生データを送ってください」というリクエストに従い、動画Aの再生データをデータベースから探し出してクライアントサイドに送るというレスポンスを返します。

この段階では、この繰り返しによってWEBアプリケーションが出来ているという理解で十分です。

デバイス(ハードウェア)とOS

ここまでは図Aの「ソフトウェア」側がどのような動きをしているかを解説してきました。

図示の通り、これらのソフトウェアを動かす上で必ず必要なのが「デバイス(ハードウェア)」と「OS」です。

デバイス(ハードウェア)に関して、サーバーサイドには必ず物理的なサーバーがあります。
近年は「クラウドサービス」の登場で実感しにくいですが、自社で物理的なサーバー機器を所有・管理する「オンプレミス」と呼ばれるサーバーや「レンタルサーバー」「クラウドサーバー」等からどの種類を選ぼうと、自社で所有するか・大規模なサーバーの一部を借りて使うかの差であり、物理的なサーバーが存在しています。

「OS」はクライアントサイド・サーバーサイドのどちらにも必ず必要なものであり、「高度なソフトウェアを動かすための土台となるソフトウェア」と考えてください。

アプリケーションとブラウザ

アプリケーションは、ユーザーが利用する機能やサービスを提供するためのソフトウェアです。
対して、ブラウザはユーザーがインターネットを介して目的のアプリケーションにアクセスするための窓口となるソフトウェアです。

先述した「リクエストとレスポンス」の流れを再現するためには不可欠です。

具体的には、ユーザーがブラウザを通じてアプリケーションにアクセスすると、ブラウザはそのリクエストをサーバーに送信します。
このリクエストには、ユーザーが行いたい操作や取得したい情報などが含まれています。
そして、サーバーはそのリクエストを受け取り、必要な情報処理を行った後、ブラウザにレスポンスとして返します。
ブラウザは、受け取ったレスポンスを解釈し、ユーザーに適切なかたちで表示します。
これにより、ユーザーはアプリケーションが提供する機能や情報を利用することができます。

エンジニアの基礎知識|用語を理解する

エンジニアについて理解するためには、様々な関連用語を理解する必要があります。
ここでは、「様々なポジション」「プログラミング言語」に関する用語を、エンジニア採用に必要となる範囲で解説します。

エンジニアの様々なポジション

エンジニアの様々なポジションについて、採用の目線を交えながら解説します。
ここでは先に使用した以下の例を使用します。

  • 例1:iPhoneのゲームアプリ
  • 例2:WindowsPCのChromeから見るYoutube
  • 例3:Macbook上のTeamsアプリ

フロントエンドエンジニアの採用に必要な知識

フロントエンジニアとは、WEBアプリケーションの「見た目」と「クリック等で実際に操作する部分」の開発を担うエンジニアです。
クライアントサイドをメインで担当します。

基本的には「デザイナーが作成したWEBアプリケーションの見た目」を、後述のプログラミング言語で表現できるようにコーディングを行います。
ただし、会社やポジションによっては、デザイナー的なスキルが求められたりUI・UX系のスキルを求められることもあります。

例えば上記の例2で考えると「画面の左端には各ページに遷移するボタンが一覧で表示される」「画面右側には動画の検索結果一覧が表示され、タイトルの文字が◯◯pxで表示される」「画面をスクロールすると次の動画が表示される」といった「画面の表示」に関わる部分を担います。

■フロントエンドエンジニアが使う言語

  • HTML
  • CSS
  • Javascript
  • Typescript
  • PHP

サーバーサイドエンジニアの採用に必要な知識

サーバーサイドエンジニアとは、WEBアプリケーションの最もコアな処理を行う部分、メインの機能の開発を担うエンジニアです。
名前の通り、サーバーサイドをメインで担当します。

基本的には、後述のプログラミング言語でクライアントサイドからのリクエストに答えるレスポンスの処理を作りますが、レスポンスの作成に伴って開発しなければならない機能は膨大になります。

例2のケースで考えると、「エンジニアというワードで動画を検索」といったリクエストがあった際「データベースからエンジニアというワードが含まれた動画を検索」「動画を関連度順に並び替える」「各動画の再生データ・タイトルなどをクライアントサイドに送信」と言った処理を作成します。

そのため、多くの場合でデータベースの知識が求められます。また場合によっては、フロントエンドや後述のインフラエンジニアに必要なスキルを求められます。

実際にサーバーサイドエンジニアの採用を行う際は特に、何のスキルがどこまで求められているのかを現場メンバーからヒアリングする必要があります。

■サーバーサイドエンジニアが使う言語

  • Python
  • Java
  • PHP
  • C#
  • C++
  • Ruby
  • node.js/JavaScript
  • SQL

モバイルアプリエンジニアの採用に必要な知識

モバイルアプリエンジニアとは、モバイル(主にスマートフォン)アプリケーションの開発を担うエンジニアです。基本的にはAndroidとiOSで使用するハードウェア・プログラミング言語も変わるため「iOSエンジニア」「Androidエンジニア」と呼ばれることもあります。

モバイルアプリ開発経験のあるエンジニアを探しても、iOSかAndroidどちらか一方のみの経験を持つ方が多く、両方のスキルを持った人材は母数が限られます。

また、サーバー側の開発も同時に行うことが多いため、サーバーサイドの経験が求められるケースが多いでしょう。

■モバイルアプリエンジニアが使う言語

  • Android
  • Kotlin
  • Java
  • iOS
  • Swift
  • Objective-c

データエンジニアの採用に必要な知識

データエンジニアとは、他のエンジニアが使いやすいようなデータベースの設計・開発を担うエンジニアです。
「データベースエンジニア」と呼ばれることもあります。
データベース関連の様々なスキルや知識が求められるポジションです。

「サーバーサイドエンジニア」の説明で例に出した「エンジニアというワードで動画を検索」という部分は、既に「動画のデータベース」が完成している状態を前提としています。

データエンジニアはこの「動画のデータベース」を構築する上で、どう構築すれば検索性に優れるか」「今後の管理の手間が減るか」「新たなデータの追加がしやすいか」など、他のエンジニアがデータベースを扱う上で最適なかたちに構築していく役割を担います。

後述の「データサイエンティスト」と混同されがちですが、実際に行う業務は異なるため、区別しておきましょう。

■データエンジニアが使う言語

  • Python
  • Java
  • Scala
  • プログラミング言語以外に求められるスキル
  • Hadoop
  • SQL
  • クラウドプラットフォーム(AWS/GCP/Azure)

データサイエンティストの採用に必要な知識

データサイエンティストとは、大量のデータを統計的に分析することで、ビジネスの成功につながる要素を数字的に導き出すエンジニアです。
名称によって前述のデータエンジニアと混同しやすいですが、データエンジニアの目的は「使いやすいデータベースの構築」であり、データサイエンティストの目的は「データに基づいた課題や知見の発見」です。

キャリアパスとして、マーケティングを担う人材がデータからビジネス課題を発見するために、RやPythonなどのビッグデータを扱うのに適した言語を学び、データサイエンティストになるケースも多いです。

■データサイエンティストが使う言語

  • R
  • Python

■ プログラミング言語以外に求められるスキル

  • SQL
  • BIツール

AIエンジニア・機械学習エンジニアの採用に必要な知識

いずれも大量のデータを元に「予測」を行うアルゴリズムを開発するエンジニアです。
近年最も活発になってきている分野です。
企業毎に定義・業務内容が変わりますが、基本的には「予測のためのアルゴリズム」構築を担います。

一言で表すと「大量のデータを元にした数値予測」なのですが、できることには幅があります。
例えば「車のパーツの3dCADデータから壊れやすい部位を予測する」「過去の売上データを参考に来年度の需要予測をする」「入力された言葉に基づいた画像データを生成する」などのアルゴリズムを作成します。

■AIエンジニア・機械学習エンジニアが使う言語

  • Python
  • R
  • Julia
  • JavaScript

インフラエンジニア・クラウドエンジニアの採用に必要な知識

WEBサービスの基盤となるサーバー自体(ハードウェア)やサーバーOSを構築・管理するエンジニアです。
オンプレミスサーバー・クラウドサーバーどちらを使用しているかで業務内容は異なりますが、「サービスの安定供給」という目的は共通しています。

以前はオンプレミスが殆どであったため、会社で物理的なサーバーを購入し運用できる状態までの環境を作りあげるような業務を担うことが多く「インフラエンジニア」という名称のみで呼ばれていました。
ただ近年は、クラウドサーバーを使用することが増えているため「クラウド環境のインフラエンジニア」を「クラウドエンジニア」と呼称しています。

■インフラエンジニア・クラウドエンジニアが使う言語

  • Shell
  • TTL
  • BAT

■プログラミング言語以外に求められるスキル

  • クラウドプラットフォーム(AWS/GCP/Azure)

ネットワークエンジニアの採用に必要な知識

ネットワークエンジニアとは、企業のコンピューターネットワークの構築や運用、管理を担うエンジニアです。
セキュリティの付与や権限設定などについて検討しながら、最適なネットワーク環境を作り上げていきます。

■ネットワークエンジニアが使う言語

  • Python
  • JavaScript
  • Ruby
  • Java

SREの採用に必要な知識

SRE(サイトリライアビリティエンジニア)とは、サイトやシステムの信頼性と安定性を確保するための開発と運用を担うエンジニアです。
基本的には、システムの監視や自動化、障害対応などを通じて、システムの安定性を維持・向上させることに焦点を当てます。

■SREが使う言語

  • Java
  • Python
  • PHP
  • Ruby

■プログラミング言語以外に求められるスキル

  • SQL
  • WindowsやLinuxなどOSに関するスキル

QAエンジニアの採用に必要な知識

QA(品質保証)エンジニアは、ソフトウェア製品の動作確認や品質管理を担うエンジニアです。
ソフトウェア製品の品質を確保するためのテストを行い、バグがあれば修正を施します。

■QAエンジニアが使う言語

  • Java
  • JavaScript
  • Python

エンジニアが用いるプログラミング言語

エンジニアという職種について理解するためには欠かせない「プログラミング言語」について解説します。

そもそもプログラミング言語とは、コンピュータに命令や指示を伝えるための言語です。
人間が日常的に使う言語とは異なり、コンピューターが理解できる特有の言語(コード)で伝えます。

プログラミング言語を使用することで、コンピュータに様々なタスクを自動化したり、複雑な計算や処理を行わせることが可能です。
例えば、WEBサイトの作成やアプリケーションの開発、データ解析、ゲーム制作など、様々な目的で用いられています。

また、プログラミング言語は、それぞれの用途や特製に合わせて選択されます。
主要なプログラミング言語は、以下の通りです。

Java

Javaは、多くの企業が利用する汎用性の高いプログラミング言語です。
主にAndroidアプリケーションの開発に使われていますが、大規模なエンタープライズアプリケーションやWebアプリケーションの開発にも適しています。

Javascript

Javascriptは、ブラウザ上で動作する簡易プログラミング言語(スクリプト言語)であり、WebサイトやWebアプリケーションの開発に欠かせません。
フロントエンドの開発に使われるだけでなく、サーバーサイドでの開発にも用いられます。

HTML

HTMLは、Webページの構造を記述するためのマークアップ言語です。
マークアップとは、文章の構成や役割を示すことを指します。
Web開発において基本中の基本であり、CSSやJavascriptと組み合わせてWEBページ作成に用いられます。

Python

Pythonは、シンプルで読みやすい構文を持つ多目的なプログラミング言語です。
Web開発、データ解析、人工知能、機械学習、自動化など、様々な分野で広く使用されています。
また、豊富なライブラリやフレームワーク、コミュニティサポートがあります。

PHP

PHPは、WEB開発に特化したサーバーサイドスクリプト言語です。
動的なWEBページの生成やフォームの処理、データベースの操作などに使われます。
WordPresslなどの開発にもよく利用されています。

Ruby

Rubyは、シンプルで読みやすい構文を持つオブジェクト指向スクリプト言語です。
オブジェクト指向とは、プログラムの全体構造を把握するための考え方です。
主にWebアプリケーションの開発に使用され、Ruby on Railsというフレームワークが人気です。

C#

C#は、Microsoftが開発したプログラミング言語で、主にWindowsアプリケーションやゲーム開発に使用されます。
また、Unityエンジンを使ったゲーム開発にも広く利用されています。

C++

C++は、高速で効率的なコードを書くことができる汎用プログラミング言語です。
システムソフトウェア、デバイスドライバ、ゲームエンジンなどの開発に使われます。

Swift

Swiftは、Apple社が開発したiOSおよびmacOSアプリケーションの開発に使用されるプログラミング言語です。
C言語等との連携により、既存コードを流用できます。

Typescript

TypescriptはJavascriptの拡張言語です。
オープンソースのプログラミング言語であり、大規模なアプリケーションの開発やメンテナンスが容易になります。

エンジニアの基礎知識|業界構造を把握する

エンジニア知識記事挿入_業界構造を把握する

経産省による「IT人材の最新動向と将来推計に関する調査結果」では、「2030年には約59万人のIT人材が不足する」と見込まれています。
継続的なITエンジニア人材の不足が予測されるなか、エンジニア採用市場の競争激化は避けがたいでしょう。
エンジニアの転職回数

また、以下ではエンジニアの採用が難しいといわれる理由を簡潔に解説します。

エンジニアの採用が難しい理由

エンジニアの採用が難しいといわれる主な理由は、以下の通りです。

  • エンジニアの母数が不足している
  • 待遇の良い企業に人材が集中する
  • 採用コストが高い
  • エンジニアの働き方が多様化している
  • スキル要件の理解と見極めが難しい
  • エンジニアへ自社の魅力を伝えるのが難しい

こうした理由についての詳細を知りたい場合は、こちらの記事もあわせてご覧ください。
参考記事:エンジニア採用が難しい理由|失敗の原因や重要ポイントを解説 | (directsourcing-lab.com)

エンジニア採用に必要な知識の学び方

エンジニア採用に必要な知識を身につけるためには、関連書籍とサイトを用いて学ぶのがおすすめです。

エンジニア採用のために読んでおくべき本

エンジニア採用のために読んでおくべき本は、以下の2冊です。
作るもの・作る人・作り方から学ぶ 採用・人事担当者のためのITエンジニアリングの基本がわかる本
採用に必要な用語を解説した書籍です。
エンジニアに関する知識の全体像をつかみ、採用業務に活かすことを目指して書かれています。
非エンジニア人事のためのエンジニア採用の教科書~ダイレクトリクルーティングの始め方
エンジニア採用を成功に導くために、企業および候補者の様々な事例を基に、母集団形成、選考、内定、定着のなかで、特につまずきやすい点にフォーカスした内容で書かれています。

エンジニア採用に役立つサイト

エンジニア採用に役立つサイトとして、以下3つを紹介します。
「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
サイト名の通り、ITやビジネスで使われる言葉を「ざっくり」説明してくれるサイトです。
技術の具体的な説明まではありませんが、「その技術でどんな事が出来るのか」「関連した技術はなんなのか」という部分までをかんたんなイメージ図解と共に解説してくれます。
「知らない用語が出てきたらまずここで調べる」という使い方がおすすめです。
Google検索でもよく読めば概要は把握できますが、どこよりも平易な解説をしてくれるので表層の理解に役立ちます。
採用担当者向けのエンジニア採用勉強会を開いた/ころちゃん-note
株式会社Casterがエンジニア採用向けに作成した資料をnoteにて公開しています。
本記事のテーマと同じ目的で作成されているため、参考になる部分が多いといえるでしょう。
本記事とは異なる角度で深堀りされた部分もあるため、より理解を深めるためにご活用ください。
【エンジニア採用】 人事向けエンジニアリング勉強会の資料を公開します!/中島佑悟-note
エンジニア採用特化型メディア「LAPRAS」に所属する方が、人事向けにエンジニア知識をまとめたものです。
本記事でも一部を参考にしているため、重複する箇所もありますが、ぜひあわせて参考にしてください。

まとめ

エンジニアの基礎知識を「技術の仕組み」「用語」「業界構造」の3つの観点から解説しました。
あわせて紹介した、エンジニア採用に役立つ本とサイトもご参考ください。

なお、本記事の内容はあくまで採用のために必要なエンジニア知識の導入部分です。
エンジニア採用で安定した成果を得るためには、SNSや様々な媒体を活用しながら最新情報を常に獲得していく姿勢が欠かせません。

また、弊社は複数のエンジニア出身者が在籍する「ダイレクトリクルーティング支援専門企業」です。
過去60万件・全40媒体以上のソーシングデータを用いて、自社が求める人材の採用を最短ルートで成功に導くサポートを行っています。

エンジニア採用に関して「より効率的な運用・少ない工数で成果を得たい」「既に行っているが課題や悩みがある」という方は、ぜひ以下の「問い合わせフォーム:無料」から気軽にお問い合わせください。

エンジニア採用にお困りの方はこちらから

45分の気軽な相談会を
開催しています

竹村 朋晃

竹村 朋晃

株式会社ダイレクトソーシング CEO (プロフィールはこちらをクリック) 2005年に野村総合研究所に入社。損害保険システムの構築に従事。2015年11月より株式会社ダイレクトソーシングを立ち上げ。エンジニア経験者中心にデータドリブンリクルーティングを中心としたサービスを展開。