現役エンジニアである筆者が、ITエンジニア一覧と各々のエンジニアがどのような仕事をしているのかをご紹介致します。ITエンジニアになることを考えている方はご参考になれば幸いです!
・ITエンジニアはどんな仕事をしているの?
・自分に向いているITエンジニアはどれだろう?
ITエンジニアとは
そもそもITエンジニアとはどのような職業なのでしょうか。
エンジニアには機械系エンジニア、化学系エンジニア、医療系エンジニアなど、様々な種類のエンジニアがいますが、ITエンジニアはみなさんが普段当たり前のように使用しているWebサイトを作成しているエンジニアになります。
Webサイトを使用する上では特に意識しませんが、レイアウトやデザイン、画面遷移などの動作仕様は様々なプログラミング言語によって記述されています。また、Webサイトを提供する企業は各種サーバ、ストレージ、ネットワーク機器を用意し、適切な設定を行うことでプログラムが動作する環境を提供しています。
これらの一連のタスクを実施するエンジニアを総称してITエンジニアと呼びます。
ITエンジニアの種類
システム開発には要件定義、設計、構築、テスト、運用・保守と大きく5つの工程があり、各工程でどのエンジニアが何をするのかが決まっています。
ITエンジニアは一番大きな分類で言うと、プロジェクト管理をするエンジニア、フロントエンドエンジニア、アプリケーションエンジニア、バックエンドエンジニアの大きく4種類に分かれます。
また、システム開発には関わらないようなその他ITエンジニアも存在します。
以下でそれぞれのITエンジニアの仕事内容、求められるスキルなどを見ていきましょう。
システムエンジニア(SE)
システムエンジニアはプロジェクト管理をするエンジニア、フロントエンドエンジニア、アプリケーションエンジニア、バックエンドエンジニアの総称になります。
プロジェクト管理をするエンジニア
プロジェクト管理をするエンジニアには下記の2種類があります。
プロジェクトリーダー(PL)
プロジェクトリーダーはシステム開発プロジェクトの責任者となるエンジニアです。
通常、システム開発はお客様と契約した企業が主体となって実施します。部長クラスの管理職がプロジェクトリーダーとなり、各チームのプロジェクトマネージャーを統括し、進捗管理や課題管理を行います。
実作業を行うというよりは、プロジェクト全体の実施方針を決定することが主な仕事となるため、幅広い知識、経験が求められます。
プロジェクトの成功はプロジェクトリーダーにかかっていると言っても過言ではありません。
プロジェクトマネージャー(PM)
プロジェクトマネージャーは各チームを統括する責任者になります。
システム開発ではフロントエンドエンジニア、アプリケーションエンジニア、バックエンドエンジニアごとにチームが形成され、各々のチームにプロジェクトマネージャーがいます。
チーム全体の進捗管理、課題管理を行い、プロジェクトリーダーへの報告、作業方針の決定、タスクのブレイクダウン、作業遅延への対処、お客様調整などを実施します。
IT技術に関する専門知識はもちろんのこと、エスカレーションを上げやすい環境作りやお客様との交渉力といった幅広いビジネススキルが求められます。
フロントエンドエンジニア
フロントエンドエンジニアには下記の3種類があります。
ITコンサルタント
ITコンサルタントはシステム開発の上流工程である要件定義を行うエンジニアになります。
当然のことですが、システム開発はお客様が抱えている課題をITシステムによって解決することを目的としています。課題解決に直結するようなシステムを構築するためには、的確な要件を定める必要があります。
お客様が抱えている課題を抽出するコミュニケーション能力や課題に対応する適切な要件を定める論理的思考力、システム化の実現方針を提案するための幅広い知識・技術力が求められます。
エンジニアとして多様なスキルが必要となる職種であることから、フロントエンドエンジニア、アプリケーションエンジニア、バックエンドエンジニアの3種類に含まれるように分類しています。
Webエンジニア
WebエンジニアはHTMLやCSSなどのプログラミング言語を使用してWebサイトの画面を作成するエンジニアになります。
フロントエンドエンジニアは一般にはWebエンジニアのことを指します。ITシステムの中でもエンドユーザーに一番近い部分の設計、構築、テストを行うエンジニアであることからフロントエンドと呼称されています。
Webエンジニアには、Webページを作成することに使用されるHTML、CSS、Java Script、PHPといったプログラミング言語を記述できる能力が求められます。最近ではプログラミング言語を使用せずとも直感的にWebページを作成できるツールも普及していますが、細かい設定やデバッグを実施するためにプログラミング言語は必要不可欠です。
プログラマー
プログラマーはその名の通り、各種プログラミング言語を記述し、画面資材やアプリケーションの構築、テスト、運用・保守を行うエンジニア(設計は行わず、主にコーディングを行うエンジニア)になります。
プログラミング言語として何を使用しているかでフロントエンドエンジニアかアプリケーションエンジニアの2種類に分かれます。HTML、CSS、Java Script、PHPなどを使用して画面資材を作成している場合はフロントエンドエンジニア、Java、Ruby、C言語などを使用してアプリケーションを作成している場合はアプリケーションエンジニアとなります。
プログラマーは、各種プログラミング言語の最適な構文や記述方法を熟知しておくことが必要です。
ITエンジニアの中でもかなり深い知識、技能が必要となる、専門性が高い職種です。他業種の方にとっては一番イメージがしやすいエンジニアと言えるでしょう。
アプリケーションエンジニア
アプリケーションエンジニアには下記の3種類があります。
ITコンサルタント
こちらの記載を参照。
プログラマー
こちらの記載を参照。
セキュリティエンジニア
セキュリティエンジニアはシステムのセキュリティ対策を行うエンジニアになります。
特に個人情報などの機密情報を扱うシステムではセキュリティ対策を厳重に行わなければ、ユーザが安心してサービスを利用することができません。昨今ニュースでも取り上げられていますが、セキュリティインシデントが発生するとサービスを利用するユーザに不利益が生じるだけでなく、システムを提供する企業に対して損害賠償が求められることもあります。
セキュリティエンジニアはそのような事態を回避するためにアプリケーションレイヤ、インフラレイヤで様々なセキュリティ対策を行います。
アプリケーションレイヤで言うと、アプリケーションのプログラムが攻撃を受けやすいような記述になっていないかを点検し、記述の是正を行うことなどが求められます。
インフラレイヤで言うと、ウイルス対策ソフトを導入し、常に最新のウイルスパターンファイルが配信されるようなシステム構成を考えたり、OSもしくはソフトウェアを用いてアクセス対象者を制限するアクセス制御設定を行うことなどが求められます。
セキュリティエンジニアは昨今のIT社会において重要度が高いエンジニアではありますが、純粋にセキュリティのみを担当しているエンジニアはあまり多くありません。自身の得意となる分野を他に持ちつつ、セキュリティ対策もできるエンジニアが必要とされています。
バックエンドエンジニア
バックエンドエンジニアは下記の6種類があります。
ITコンサルタント
こちらの記載を参照。
セキュリティエンジニア
こちらの記載を参照。
クラウドエンジニア
クラウドエンジニアはクラウドでの設計、構築、テスト、運用・保守を行うエンジニアになります。
クラウドとは何かを知りたい方はこちらの記事をご覧ください。
最近では迅速にシステム開発を行いたい、需要に合わせて柔軟にリソースを収縮・拡張したいといった企業がクラウド上でシステムを提供することが多くなっています。
主なクラウド提供事業者として、AWS(Amazon Web Service)、Microsoft Azure、GCP(Google Cloud Platform)の3種類があり、各々のクラウド上でどのサービスを組み合わせてシステムを構成するのか最適な構成を提案・実装できる能力が求められます。
サーバ、ストレージ、データベース、ネットワークなどの各要素技術に関する幅広い知識が求められるエンジニアになるので、まずは自身の強みとなる要素技術を確立してから目指した方が良いかもしれません。
データベースエンジニア
データベースエンジニアはデータベースの設計、構築、テスト、運用・保守を実施するエンジニアになります。データベースには、様々な情報を表形式で管理するRDBMS(Relational Database Management System)とキー・バリュー形式でデータを管理するNoSQL(Not Only SQL)の大きく2種類があります。
NoSQLの方が様々な形式のデータを高速に取り使うことができることから近年需要が拡大していますが、一般的なWebシステムではRDBMSが使用されていることが多いです。
RDBMSで使用される代表的なソフトウェアとしてOracle、MySQL、PostgreSQLがあり、いずれかのソフトウェアを使用して適切なデータベース構成を実現する能力が求められます。
Webシステムが提供する情報の多くはデータベースに格納されるため、データベースで障害が発生するとシステムが停止します。非常に重要度の高いエンジニアだと言えるでしょう。
ネットワークエンジニア
ネットワークエンジニアはネットワークの設計、構築、テスト、運用・保守を行うエンジニアになります。
ネットワーク構成はシステムを構成する非常に重要な要素の一つで、正しく設定されていないと、サーバ間の通信ができず、サービスを提供することができません。
ネットワークエンジニアには、ネットワーク機器(ルータ、スイッチ)のルーティング、VLAN(Virtual Local Area Network:論理的に通信を分離する技術)、ACL(Access Control List:送信元、宛先のリストで通信の許可・拒否設定に使用される)などの設計、構築を行う能力が求められます。
インフラエンジニアの代表格とも言えるエンジニアで一度スキルを身につければ、どのシステムでも活躍できること間違いなしです。
サーバエンジニア
サーバエンジニアはサーバの設計、構築、テスト、運用・保守を行うエンジニアになります。
サーバにはファームウェアと呼ばれる、物理機器とOSを繋ぐ役割を果たすソフトウェアとOS(Operating System)がインストールされており、OSによって各種処理の制御やリソース(メモリ、CPUなど)の割り当てが行われています。
サーバエンジニアには上記のOSのインストールやディレクトリの作成、ネットワーク設定、ストレージのマウント、ACL設定などを行う能力が求められます。サーバで使用されることの多い、Linux系のOSに関する知識・技能が必要です。
その他エンジニア
以下はWebシステム開発に直接関わるエンジニアではないのでその他のエンジニアとしてご紹介します。
データサイエンティスト
データサイエンティストは膨大なデータを分析し、ビジネスに利活用できる情報を抽出するエンジニアになります。分析には機械学習モデル利用されることが多く、pythonのプログラミングスキルや統計学に関する知識が求められます。
企業はビッグデータと呼ばれる大量の顧客データを保持しており、それらのデータをいかに利活用するかが企業経営を行う上での重要課題となっています。顧客の趣向を読み取り、需要に即した対応ができるかどうかで利益も大きく異なってくるため、経営判断のインプットを提供するという意味で非常に重要なエンジニアの一つだと言えるでしょう。
エンベデッドエンジニア
エンベデッドエンジニアは日本語で言うところの組み込みシステムエンジニアにあたり、携帯電話、家電、産業用ロボットなどの製品に組み込まれたコンピュータシステムの設計、構築を行うエンジニアになります。
CPU、メモリ、インターフェースなどを始めとしたハードウェアとOS、デバイスドライバなどのソフトウェアを設計、構築する能力が求められます。組み込みシステムではC言語が多く使用されているため、C言語のコーディングスキルも必須と言えるでしょう。
3Dエンジニア
3Dエンジニアはゲーム、アニメ、動画などで使用される3DCGを作成するエンジニアになります。
3DCGの技術は昨今、急成長しているVR/AR、メタバースでも使用されているため、3Dエンジニアの需要は今後、さらに増大していくことが予想されます。
3Dエンジニアには2Dで表現するCGデザイナーのスキルや3DCGツールを扱うスキルなどが求められます。
AIエンジニア
AIエンジニアはAI開発、AIの学習などを行うエンジニアになります。
AI開発ではKerasやTensorFlow、PyTorchといった機械学習モデルを構築するプログラムをまとめたライブラリが使われています。数あるライブラリをどのように組み合わせて機械学習モデルを構築するかで結果の精度も大きく変わってきます。AIを開発した後はサンプルデータを読み込ませ、AIの精度を向上させていきます。サンプルデータの収集や作成、不要なデータの削除などを行い、データを準備することもAIエンジニアの仕事の一つです。
AI開発ではpythonが使用されていることが多いため、pythonの基本文法や主要ライブラリに関する知識・技能が求められます。
AI分野の市場の拡大に伴い、需要も増加していくこと間違いなしのエンジニアです。
サポートエンジニア
サポートエンジニアは販売した製品に関するお客様からの技術的な問い合わせに回答するエンジニアになります。製品を開発したエンジニアが兼任することも多く、製品に関する幅広い知識やお客様の意図を正確に聞き取るコミュニケーション能力が求められます。
まとめ
・ITエンジニアにはどんな種類があるの?
→ITエンジニアはプロジェクト管理を行うエンジニア、フロントエンドエンジニア、アプリケーションエンジニア、バックエンドエンジニア、その他のエンジニアの大きく5種類に分かれています。
5種類の中でさらに細分化され、合計15種類程度のエンジニアがいます。
・ITエンジニアはどんな仕事をしているの?
・自分に向いているITエンジニアはどれだろう?
→種類によって仕事内容や求められるスキルは様々です。こちらで各々のエンジニアの仕事内容を確認し、自分の理想に合ったITエンジニアを目指しましょう。