ITエンジニアといっても複数種類があります。
意味の広いエンジニア名や専門性を細かく表すエンジニア名称があり分かりにくいです。
今回はITエンジニア10種類を紹介します。
ソフトウェアエンジニア
プログラミング言語を用いてソフトウェアを設計、開発をするITエンジニア全般をソフトウェアエンジニアと呼びます。
ソフトウェアエンジニアの中でも業務レイヤーや専門分野でさらに呼び方が分類できます。
プログラマー(PG)
プログラミング言語開発を行うエンジニアを指します。
アプリケーションエンジニアやWebエンジニアも組み込みエンジニアもプログラマーの要素があり名称はどの分野に特化しているかの差になります。
ソフトウェアの専門分野を表していないので意味が広い名称です。
ソフトウェアエンジニアの中でプログラミングを主に担当する人をプログラマーと分類できます。
プログラミング言語をコーディングしているソフトウェアエンジニアは全部プログラマーとも呼べます。
アプリケーションエンジニア
特定の業界や用途に特化したアプリケーションを開発するソフトウェアエンジニアです。
プログラミング言語、フレームワーク、データベースなどの技術が必要です。
アプリケーションエンジニアの分類
① 業務系アプリケーションエンジニア
顧客情報管理システム、売上管理システム、勤怠管理システムなどのアプリケーションを開発するエンジニアになります。
②スマホ系アプリケーションエンジニア
Apple社のiphoneやGoogle社開発OSのAndroid向けのスマホアプリを開発するエンジニアになります。
③Webアプリケーションエンジニア
この後記載しますWebエンジニアと同じです。
Webエンジニア
WebアプリケーションやWebサイトの開発を行うエンジニアです。
Webエンジニアの分類
① フロントエンドエンジニア
フロントとはユーザ側インターフェースを意味します。
Webのユーザーと直接データのやり取りを行う箇所Webブラウザのデザインや操作性に関する部分を開発するエンジニアです。
HTML、CSS、JavaScriptなどの技術が必要です。
② バックエンドエンジニア
バックエンドとは裏側の見えない箇所を意味します。
フロントエンドからのデータ入力や指示に基づき、データ処理や保存などを行うWebサーバのソフトウェアや
データベースの開発を行うエンジニアです。
プログラミング言語技術が必要となります。
組み込みエンジニア
ハードウェアに搭載するソフトウェアやハードウェアを設計・開発するの開発などを行うエンジニアのことを指します。
ハードウェアとは自動車、医療機器、産業機械、航空宇宙機器、ロボットなどに搭載する制御システムや通信システムなどです。
他のソフトウェアエンジニアは基本的にプログラミングしたデータをサーバ内に格納します。
組み込みエンジニアはサーバと直接通信しない上記の機器のハードウェア本体内に最終的にデータを搭載します。
各ハードウェアの用途に合わせた設計が必要となります。そのため、ハードウェアとソフトウェアの両方に精通した技術が求められます。
システムエンジニア(SE)
顧客との折衝や設計からプログラミング開発、プログラマーへの業務指示を行うアプリケーションエンジニアの上位職でリーダー的ポジションです。
正直なエンジニアの感覚で言えば別にリーダとか管理職でなくても資格があるわけではないのでシステムエンジニアと名乗っています。
アプリケーションエンジニアやWebエンジニアはシステムエンジニアでもあります。
プログラマーと同様、専門分野を表さないので広い意味でソフトウェアエンジニア全般を指していると言えます。
インフラエンジニア
ネットワークエンジニア
ルータ、スイッチ、ファイアウォール、ロードバランサーなどのネットワーク機器の設計、構築、運用、保守を行うエンジニアです。
TCP/IP通信の知識、ルーティング、スイッチング、ネットワーク機器の設定コマンドなどの知識が必要になります。
ネットワークはサーバ、データベース、ソフトウェアが通信を行うための土台になります。
企業の通信はセキュリティが重要になりますので必要な通信だけを通過させて怪しげな通信は遮断が必要になります。
通信の土台のためソフトウェアエンジニアやサーバエンジニアが接続確認をするときにうまく通信できないと何かとネットワーク機器は疑われる運命にあります。
ネットワークとは何か
世界中のあらゆるIPアドレスを保持している機器同士の通信を中継しているのはネットワーク機器になります。
エンジニアの中ではハードウェアエンジニアに次いで一番物理的な筐体を取り扱う事が多いと思います
パソコンやスマートフォンが仮想サーバやクラウド上のサーバに接続するのには結局間に物理的な機器が必要になります。
パソコンやスマートフォンとwifiルータや携帯基地局の間は無線通信化しました。
無線通信は電波を飛ばして行うためどうしても速度損失が多くなります。
実際にはその先の通信はほぼ全部物理的な機器とケーブルをつないで通信してます。
世界中の通信を全部無線にしたら(そもそもそんな発想ないですが)速度が落ちまくって全然サーバに接続できなくなってしまうわけです。
そのため、ネットワーク機器は仮想化やクラウド化は難しいです。
ネットワーク機器は製造メーカーがプログラミングで設計してます。
機器のプログラミングは基本的に勝手に変えられないようになっており、機器固有のコマンド操作で設定や確認を行います。
サーバエンジニア
サーバとはネットワーク経由で各種サービスを実現するための機能を実装している機器の事です。
Webサーバ、メールサーバ、ファイルサーバ、DNSサーバ、アプリケーションサーバなどがあります。
OSはWindows、Unix、Linux、MacOSがあります。
サーバエンジニアはサーバの設計、構築、運用、保守などを行います。
顧客のサービス要件をヒアリングしてからどのソフトウェアサービスを乗せるか検討設計します。
プログラミング開発したソフトウェアはほとんどがサーバ上に構築するのでサーバがないとインターネット上のサービスはほぼ何もできません。
近年は複数のOSを一台のサーバ筐体に搭載できる仮想サーバが増えました。
Amazon AWSやMicrosoft Azureなどのクラウド上にサーバ構築する場合も増えてます。
サーバ筐体にOSをインストールして要件に合わせて設定値を構築します。
利用するサービスに合わせたソフトウェアやミドルウェアをインストールして設定を投入して構築します。
サーバはネットワーク機器と接続して通信する事から通信設定も必要になります。
サーバエンジニアはサーバ上でコマンド実行をプログラミングで自動化するシェル作成が必要となる場面も多いです。
データベースエンジニア
データベースとは膨大な情報を情報を素早く抽出したり編集したりできるデータ集合の事です。
データベースには例えば顧客情報であれば、氏名、電話番号、住所、生年月日、性別などが紐づけられてます。
コンピュータ処理で素早く必要な情報を抽出できます。
データベースは独自の設計、構築、コマンド操作が必要なため専門分野としてデータベースだけとても詳しければ特化したエンジニアでも十分に需要があります。
ソフトウェアエンジニアやサーバエンジニアにはデータベースも詳しくてどちらもできるエンジニアもいます。
セキュリティエンジニア
年々、セキュリティが重要視される世の中になるにつれてとても需要が高まっている分野のエンジニアになります。
独自製品がどんどん増えており大手SIerでも精通したエンジニアが不足している事もあり高単価で案件受注ができる分野になります。
ネットワーク、サーバ、ソフトウェアなどあらゆる技術の精通が必要なエンジニアになります。
セキュリティを強化すると内部承認フローや2要素認証が必要になります。
ハードウェアエンジニア
コンピュータや電子機器のハードウェアの設計、開発、製造、テストなどを担当する技術者です。
電子回路、半導体、マイクロプロセッサ、電源、モーター、制御装置、センサー、通信機器など、様々な種類の電気機器の設計や製造に携わります。
全てのIT製品の根幹となる機器部品の設計、製造するエンジニアです。
電気・電子工学、機械工学、物理学の知識が必要です。
パソコン操作で終わる仕事ではなく、手を動かす専門技術が必要です。
まとめ
同業者向けに転職時の履歴書に書くのか、別の業界の人に自分の職業をなんて説明するかで〇〇エンジニアの名称の名乗りは変わります。
転職サイトなどを調べると〇〇エンジニアには〇〇な技術が求められますと書いてあります。
現実は多くのエンジニアが書かれているとおりの技術を全て持ち合わせている訳ではありません。
転職を考える上では将来的にたくさんの技術を保有したいという目標を持ちながら実際にエンジニア職についてから少しずつ技術を広げていけばよいと思います。