エンジニアを採用するにあたり、自身がプログラミングやネットワークの知識までつけるまでは必要ありませんがエンジニアとは何か?エンジニアって何する仕事なの?などエンジニアに対する理解を深める必要があります。
今回は、エンジニアの教育・採用担当者あるいは人事以外の管理部門の担当者がITエンジニアと会話をする上で必要最低限と思われるエンジニアの知識についてお話しします。
エンジニアの種類
ITエンジニアといっても、さまざまな種類のエンジニアがいます。各エンジニアの業務についても理解をしていきましょう。
SI系
システムエンジニア(SE)
要求分析・要件定義
顧客にヒアリングを行い、顧客がどのようなシステムを望んでいるのかを明らかにします。顧客のすべての要望に応えることは難しい場合が多いため、システム開発に必要な開発期間や費用を算出した上で、顧客の要求をどのように実現するか決定します。
基本設計
顧客のニーズを実現するシステムの設計を行う工程です。要求分析や要件定義のデータをもとに、システムにどのような機能を持たせるのか、表示方法や操作方法はどのような形で行うのかなどの仕様を決定します。
詳細設計
基本設計フェーズで決めた実装予定の機能に対し、どのような技術や仕組みで実現するのかを設計する業務です。プログラマーがプログラミングをするために必要な、細かな設計を行います。
テスト
プログラミングが完了しシステムが形になった後、システムがきちんと設計通りの動作をするかテストする工程もSEが担当します。
開発に関する幅広い知識はもちろん、お客様のニーズを探っていく接客的な能力も必要になる職業です。
プロジェクトマネージャー(PM)
プロジェクト全体の進行を管理し、予算や品質、納期、成果物のクオリティに対して全責任を持つ役職です。プロジェクト全体を見通した上で意思決定を行い、プロジェクトを成功に導くまでが仕事となります。
システムエンジニア(SE)とプロジェクトマネージャー(PM)の違いは、
まずプロジェクトマネージャーはシステムエンジニアを管理する立場にあるということです。
キャリアパスとして多く見られるケースとしては、最初はプログラマとしてスタートし、次にシステムエンジニアとなり、
やがて管理職に就いてプロジェクトマネージャーとなる、というキャリアパスのルートがあります。
プロジェクトリーダー(PL)
開発などのプロジェクトを遂行する際の現場責任者のことです。 「プロジェクトマネージャー」が、クライアントなどの社外関係全般に責任を持つのに対し、プロジェクトリーダーは現場に携わる業務の責任を負います。
システムエンジニアの上位職と言われることが多く、プロジェクトマネージャーよりはより開発現場寄りの立場といえます。プロジェクトマネージャーが開発プロジェクト全体を管理する職種なのに対し、プロジェクトリーダーはシステムエンジニアを先導するイメージです。
ブリッジSE(ブリッジエンジニア)
国内のシステムエンジニアよりも人件費などの経費が安いため、プロジェクトにかかるコストが削減するために海外で開発を行います。そのオフショア開発プロジェクトを円滑に進めるための橋渡しを行う職種です。
日本とオフショア先では文化や仕事の進め方が異なるため、現地のエンジニアにプロジェクトの進め方を説明する必要があります。また、日本人のエンジニアが作成した設計書は、日本におけるシステム開発の前提知識を省略して作成する場合が多いため、調整を加えなければオフショア先に開発を依頼することができません。また国によっては時差もあるため、電話やオンラインミーティングなどのリアルタイムでのコミュニケーションにも配慮が必要です。
また、オフショア先から納品される成果物の品質チェックや進捗管理など、現場のプロジェクトマネージャーに近い立場での業務も担います。
プログラマー(PG)
システムエンジニアが設計したシステムに対してプログラム言語を用いて、プログラミング作業を行います。
使用するプログラミング言語は、Java、JavaScript、Perl、PHP、Objective-Cなど多数あります。どのようなジャンルの仕事を担当するかによって、必要になる言語も変わってきます。多くの言語を扱えるようになれば仕事の幅が広がり、新しい開発にも携わることができます。
システム上のバグを発見することもプログラマーの重要な仕事のひとつです。システムエンジニアの計画どおりに設計しても、意図しない動作をする場合もあります。したがって、テストを繰り返してバグを処理し、不備のない状態で納品できるように修正します。
例えば、物流システムや金融システムといったような企業が使用するもののほか、テレビやスマートフォン、電子レンジなど、身の回りのあらゆるところにプログラムが活用されています。一般的には、システムエンジニアがシステムの仕様書を作成し、それに基づいてプログラマーがプログラミングを行います。
プログラマーが活躍するジャンルというのは、以下のようなものがあります。
- Web系…ショッピングサイトやデータベースの構築など
- ゲーム系…スマートフォンのゲームアプリやオンラインゲームなど
- 組み込み、制御系…電子レンジや炊飯器などの家電製品のほか、テレビ、スマートフォンなどの機械を制御するプログラムなど
- パッケージアプリケーション系…PCで使用するアプリケーションなど
- 社内システム系…自社システムの構築や運用など
- 設備制御系…交通機関、工場、研究室といった、設備に関する制御など
- オープン、オンライン系…ネットワークでWeb関連のシステムを開発し、サーバーのシステムを構築するなど
- 汎用系…クレジットカード、金融機関のシステムで使われるメインフレームの開発など
- 通信系…ルーターやモデムといったネットワーク機器をはじめとした、通信関連のプログラムなど
フロントエンドエンジニア
HTMLやCSS、JavaScriptなどを使用して、WebサイトやWebアプリケーションのフロントエンド部分を開発します。そのほかにも、ユーザーインターフェース(UI)の設計やSEO対策を考慮した設計を行うのもフロントエンドエンジニアの仕事です。
フロントエンドエンジニアは、使用する開発言語やフレームワークなどの技術を積極的に学び、コーディングスキルを高める必要があります。そのためには、常にアンテナを張って最新の技術に対しても知識を深めることが欠かせません。
フロントエンドエンジニアのほかに、マークアップエンジニアやHTMLコーダーも、Web制作におけるフロントエンドに関わる職種です。
組み込みエンジニア(エンベデッドエンジニア)
家電や機器などに搭載する制御システムの開発などを行います。ソフトウェアが中心ですが、案件によってはソフトウェアとハードウェアを総合的に開発する場合もあります。
例えば、洗濯機や炊飯器といった家電製品の中にも「マイコン」と呼ばれる小型のコンピューターが搭載されています。これらのコンピューターには、「水が一定の量に達したら○○分間洗濯槽を回転させる」「このモーターは毎分○○回転させる」などの手順がプログラミングされており、その手順に沿って各機械に作業を指示しています。
テストエンジニア
完成したプログラムが問題なく起動するかを確認する職業であり、バグなどがないかを調べることが主な業務内容になっています。そのため、バグを発見するだけではなく、プログラムを修正するスキルも必要になります。一般的にプログラマーよりも敷居が低い職業であるため、プログラムの基本が身についていれば業務を全うすることができます。
テスターとテストエンジニアと分けられていることもあり違いは企業によって定義が異なりますが、以下のように定義されているケースが多く見られます。
・テスター…あらかじめ作成されたテストケースに従ってテストを行う
・テストエンジニア…テスト計画や設計、レビュー、改善提案までを請け負う
ソフトウェアやシステムの種類が増え、検証工程や手法が複雑になり求められる品質水準が向上する傾向にあります。そのため、テスターとテストエンジニアを区別する企業が増えてきています。
インフラエンジニア
IT関連業務におけるインフラストラクチャを設計、構築、運用し、さらにはメンテナンスから保守までを行う人のことです。ITシステムやWebサービス運用でのインフラ業務のほか、サーバーやネットワークなど物理機器の構築をおこなう技術者もインフラエンジニアに含まれます。
インフラエンジニアはシステムエンジニア中でITインフラに特化した仕事を行う人を指します。
ネットワークエンジニア
インフラエンジニアの仕事の中には設計や構築という業務があり、コンピューターネットワークの構築・保守・管理を行う技術者のことです。私たちは、当たり前のように自身のパソコンからデータを送ったり、受け取ったりしていますが、快適な通信環境を構築し、守っていくのがネットワークエンジニアの仕事になります。
サーバーエンジニア
コンピューターシステムを運用するためのサーバーに関して、設計・構築・運用・保守を担当するエンジニアです。
サーバーには、Webページを表示するためのWebサーバー、メールを配信するためのメールサーバーなど、さまざまな種類があります。
サーバーエンジニアは、使用用途やユーザー規模に合わせて、サーバー性能の見積もりから対応します。
とは言え、自社サーバーの代替としてクラウドサービスなどを使うことが増えたので、仕事の質が変化してきているようです。
よく混同されますが、ネットワークエンジニアとは異なるエンジニアです。ネットワークエンジニアと仕事の内容(設計~保守)はほぼ同じですが、担当する機器がサーバーか、ネットワーク機器か、といった違いがあります。
データベースエンジニア
会社の膨大なデータをうまく管理するためのデータベースの開発・設計から活用までを担うスペシャリストです。最近ではビッグデータという言葉が話題になっているように、大量のデータを管理し、そのデータを企業の戦略に活用できるスキルを有する人材が求められています。
データベースエンジニアは、どのようなデータを集め、どのような形で分析すれば企業の戦略に活かせるかなどの経営戦略面を一緒に考えることで、データベースエンジニアの活躍範囲は広がっています。
大きく「データベースの開発・設計」「データベースの管理」「データベースの運用」の3つの分野に分けることができます。
データベースの開発・設計
顧客がデータベースでどんなデータを管理したいのかを確認し、そのニーズに合わせて、最適なデータベースを開発・設計していく仕事です。Oracle DatabaseやMicrosoft SQL Server、PostgreSQL、MySQLなどのデータベースアプリケーションを使い、顧客の求めに応じてデータベースを作り上げていきます。
データベースの管理
データベースシステムを動かすには、データの適切な管理が欠かせません。データを保存しているサーバーの最適化や効率化などのチューニングを行うのも、データベースエンジニアの仕事です。
データベースの運用
データベースへのアクセス権の管理やデータのバックアップなど、システムの運用を行います。また、稼働中のデータベースへの不正侵入や、データ流出を防ぐためのセキュリティ設計を行います。
セキュリティエンジニア
サーバーに関連する業務や情報セキュリティを専門に担当するエンジニアのことです。 ITのインフラの中で、サーバーの構築や運用・保守を専門とし、セキュリティに配慮したシステム設計・運用、未然にサイバー攻撃を防ぐための調査や対策などを行います。
企画・提案
クライアントのITシステムについて把握し、必要なセキュリティを企画・提案します。「セキュリティコンサルタント」とも呼ばれます。個人情報保護法の施行後は、情報セキュリティマネジメントシステム(ISMS)やプライバシーマーク取得のための支援も主な業務の一つです。
設計・実装
単にセキュリティの強化システムだけを設計するわけではありません。セキュリティの脆弱性は、様々な場面で問題となります。セキュリティエンジニアは、ネットワークの運用や管理まで理解した上で、セキュリティを考慮したシステム設計を行います。
サーバーだけでなく、ネットワーク機器やOSなど、様々なシステムが安全に活用できようにシステムを実装します。近年では、データをクラウド上で管理するケースが増えていることもあり、クラウド構築ができるエンジニアへのニーズが高まっています。
テスト・運用・保守
テストでは、脆弱性診断とも呼ばれるセキュリティ検査を行います。システム上の脆弱性を発見し、その対策を念入りに行うことも仕事のひとつです。さらに、システム導入後は、障害発生時にスピーディに対応する、サイバー攻撃からシステムを守るといった管理・保守の業務を継続的に行います。
クラウドエンジニア
クラウド製品を利用したシステムの設計、構築、運用などを担当する技術者です。リモートワークの増加やコスト削減や開発スピードの向上を目的にインフラ環境をオンプレミスからパブリッククラウドへ移行する企業が増加しています。また、新規開発などのプロジェクトではクラウド上でインフラ環境を構築することが一般的になってきました。
クラウドサービスとしては、アマゾンが提供するAWS(Amazon Web Services)やマイクロソフトの提供するAzure、グーグルの提供するGCP(Google Cloud Platform)が有名です。クラウドエンジニアとして働くには、通常のITスキルに加え、それら主要なクラウド製品を使いこなすための知識と経験が必要です。
ネットワークを通じサービスや機能をユーザーへ提供できるクラウドが登場したことで、インターネットのインフラ環境は変化してきました。クラウドを導入するとネットワークの先にある環境を利用し、自分のPC内以外でもデータの管理や作業ができます。クラウドはITにおけるインフラ環境としても機能している技術です。
バックエンドエンジニア
プログラムの開発からWebサーバー、データベースといった環境整備まで幅広く担当するWeb系の技術者です。主に、ユーザーからは見えない裏側(バックエンド)のシステム部分を構築します。
サーバーサイドエンジニアとバックエンドエンジニアは、同じ意味で扱われることが多い職業です。実際に「サーバーサイド」と「バックエンド」という言葉が意味するところに大きな違いはありません。
会社によってはそれぞれ分けて使われていることもあります。サーバーサイドエンジニアは、サーバー側で動作するシステムの構築や管理をするという点でバックエンドエンジニアよりも広い範囲を指して使われることがあります。
一方で、Web開発のフロントエンドに対比して用いられるバックエンドエンジニアは、狭義の意味でWeb系の開発エンジニアを指すことが多いです。
SRE(Site Reliability Engineer)
ITインフラの運用管理を担当する技術者ですが、単に運用や設定を行うだけでなくソフトウェアエンジニアとして開発にも取り組みます。
SREとは元々Site Reliability Engineering(サイトリライアビリティエンジニアリング)の頭文字を略した言葉で、Googleが提唱する「システム運用管理の方法論及びエンジニアの役割」を指します。リライアビリティという単語の通り、ウェブサイトやサービスの信頼性向上に重点を置いた内容となっており、システム運用に伴う手動の作業をエンジニアリングによって自動化・効率化していくという考え方です。
SREと混同されやすいキーワードに「DevOps」というものがあります。DevOpsは「Development(開発)」「Operations(運用)」という2つの言葉を繋げ合わせた造語で、開発者と運用者の境界線を撤廃し、提供するサービスの品質を向上させようというのがDevOpsの考え方となっています。DevOpsは大きな枠組みで言えば「サービスの価値を上げる」という方向性で開発者と運用者の思惑は同じです。
しかし、両者の違いは開発者視点ではリリースサイクルを可能な限り早めてどんどん新しいサービスを提供していきたいのに対して、運用者の視点ではサービスの安定性向上が優先すべき目的とされるのです。SREはこうした矛盾点や摩擦を解決するという立場にいるということです。
AI系
AIエンジニア
最先端技術である人工知能(AI)の開発に携わる技術者です。要素技術の研究・開発に取り組むエンジニアを指すこともあれば、AIを使ったデータの解析やシステムの開発・実装を仕事とするエンジニアを、ソフトウェアエンジニアのなかでも特に「AIエンジニア」と呼ぶこともあり、仕事や職業としての定義には幅があります。
・AI技術の研究、海外論文などのリサーチ
・学習モデル、アルゴリズムの開発
・AIを使用したデータ解析・システム開発
・精度向上のためのチューニング
・学習用データの構造化・整理
AIエンジニアに関連した職業として、データサイエンティストや機械学習エンジニアと呼ぶ企業もありますが明確な定義があるわけではありません。どちらも共通して言えることは機械学習やデータサイエンスに関わる職業ということです。そのため、名前は違えども実際には同じ仕事内容を指すことも多いです。
データサイエンティスト
ビッグデータなどから必要な情報を収集、抽出するプロフェッショナルです。大量データの分析後は、ビジネスの状況改善に向けた施策立案も行います。データを扱える技術者への注目が高い米国では、データサイエンティストが将来性のある職業1位になっています。
高度情報化社会の現代では、多くの企業がデータの蓄積や分析を通して、経営戦略やサービス改善をするようになりました。また、経済産業省の「IT人材の最新動向と将来推計に関する調査結果」の中でも言及されるビッグデータの拡大は、日本で働くデータサイエンティストの需要をさらに高めています。
一般社団法人データサイエンス協会では、データサイエンティストに求められるスキルセットとして以下の3つを挙げています。
① ビジネス力(business problem solving)
課題背景を理解した上で、ビジネス課題を整理し、解決する力
② データサイエンス力(data science)
情報処理、人工知能、統計学などの情報科学系の知恵を理解し、使う力
③ データエンジニアリング力(data engineering)
データサイエンスを意味ある形に使えるようにし、実装、運用出来るようにする力
データサイエンティストには上記3つのスキルが必須とした上で、あらためてデータサイエンティストのことを「データサイエンティストとは、データサイエンス力、データエンジニアリング力をベースにデータから価値を創出し、ビジネス課題に答えを出すプロフェッショナル」と定義しています。
また、データサイエンティスト協会は、上記3つのスキルには以下の4つのスキルレベルがあるとしています。
1. 業界を代表するレベル:Senior Data Scientist
2. 棟梁レベル:(full)Data Scientist
3. 独り立ちレベル:Associate Data Scientist
4. 見習いレベル: Assistant Data Scientist
MLエンジニア(機械学習エンジニア)
AIエンジニアに分類される職業のひとつです。
AIに関連する職業のなかでもとくに機械学習(Machine Learning:ML)の実装や開発に携わる技術職です。
機械学習では、反復的な学習により特定の処理や予測などを行うAIを開発します。その際に、AIを動かす処理をプログラムで組む必要があります。しかしながら、そのすべての処理をエンジニアがコードで指定するわけではありません。AIがデータを解析し識別や予測する処理はプログラムで詳細を指定するのではなく、AIに与えるデータとアルゴリズムにより調整を行います。
機械学習エンジニアは、AIに解析させるデータの特徴を読み解きながら、目的に応じた機械学習のアルゴリズムを採用し、解析結果の評価や調整を繰り返すといった仕事に取り組みます。
ディープラーニング(Deep Learning:DL)と呼ばれる機械学習をさらに発展させた技術もあります。このディープラーニングを実装する際にも、機械学習エンジニアが活躍します。モデルやアルゴリズムに関わる仕事のほか、AIが動作するシステムの設計・構築、データの前処理・クレンジング、APIや基盤整備、追加機能の開発などを行います。
データアーキテクト
企業内、企業外にある情報を必要なデータまたは情報にし、企業活動に活用できるように、DX(デジタルトランスフォーメーション)推進しており、データアナリスト等の業務を行う者がデータを使いやすいように整備・管理します。データマネジメントを行うためにデータアーキテクチャを設計し、それを実現するために計画的な取り組みをする職種です。
データアーキテクトは発展段階にある職種で、業界標準の資格や研修プログラムはありません。一般には、データエンジニア、データサイエンティスト、ソリューションアーキテクトとしての職務を通して学びを重ね、データの設計、管理、保存に関する経験を何年か積んだうえで、データアーキテクトへと進むことになります。
データアーキテクトは、情報技術、コンピューターサイエンス、コンピューターエンジニアリングなどの学位を持つ人が多く、クラウドやデータベース全般についての深い理解、使用するアプリケーションやプログラムについての理解、データモデリングのすべてのフェーズについての理解が求められます。
データアーキテクトには次のような能力が求められます。
目的のビジネスモデルを形にするデータ処理モデルの設計
主要なデータエンティティとその関係を表すダイアグラムの作成
設計したシステムを構築するために必要な構成要素のリストの作成
明瞭、簡潔、効果的なコミュニケーション
R&Dエンジニア
研究開発=「R&D(Research and Development)」とも言われ、自社の事業領域に関連する科学分野の研究や新技術の開発、既存技術の改良、新製品開発などを行う業務や部門を指す。メーカーや通信会社などの研究所や製品開発部門など
企業はR&Dに資金や人材を投入することにより、製品やサービスへの新技術の応用やコスト低減などを実現し、競合他社より優位に立つことができ、新しく生み出された技術や方式について特許を取得することにより、他社が使用できないよう防衛したり、使用を許諾して特許使用料を得ることもできます。
企業が行う研究開発はあくまでも将来の事業収益の向上に資することが期待される分野や対象について行われるため、実用化や事業化が現時点では見通せないような基礎研究などの優先順位は低くなりがちです。既存技術の改良のような研究に偏っては事業基盤を脅かすような新技術が登場したときに対応が後手に回るリスクがあります。
近年では企業が大学や公的な研究機関などと連携し、企業が単独では行いにくい研究を共同で実施したり、研究の支援や補助などを行う産学連携の取り組みも広まっています。
番外編
セールスエンジニア(プリセールス)
技術的な側面から営業をサポートする職種です。「エンジニア」という名がついていますが、実際の業務は営業寄りです。
ソフトウェアや電子機器をセールスするにあたって、製品の説明や、お客様の意見をきくことで新たな提案をおこない、製品のよさを伝えます。実際に使ってもらうための実演をすることもあります。不具合が生じた際には、その対応に当たることもあります。そのためには、製品・サービスに対する専門的な知識がないと対応できません。
フィールドエンジニア
会社の製品を購入した顧客の要望に応じて、その顧客の元に出向き、保守点検などのメンテナンスや、製品機器にトラブルが生じている場合は、その修理や交換、復旧作業など行います。
会社や業態によってさまざまな呼び名があり、フィールドエンジニアの他、医療関連の業界では「フィールドサービスエンジニア」、コンピューター・デジタル系の業界では「フィールドアプリケーションエンジニア」と呼ばれ、他にも「サービスエンジニア」「カスタマーエンジニア」「サポートエンジニア」などと呼ばれることもあります。
webデザイナー
クライアントから依頼されたWebサイトのデザインを担当することです。クライアントが思い描いているWebサイトを制作できるよう、全体の構成を考えながらデザインを構築していきます。
WEBサイトのランディングページのビジュアルデザインを行ったり、サイト全体のデザインの統一感を管理したり、実際にHTMLやCSSを使ってWEBページをコーディングしたりといった業務を行います。HTMLやCSS、画像データの加工などのスキルは原則として必須ですが、大規模サイトの場合はコーディング作業を専門のコーダーが行うなど作業の分業化も進んでいます。
なお、WEBデザイナーの役割はビジュアルデザインだけでなくUI(ユーザーインターフェース)の策定などもあり、コーポレートサイト、キャンペーンサイト、ECサイトなどの目的に沿ったサイトデザインおよびクライアントの目的を達成するためのサイトデザインを行う必要があります。
マークアップエンジニア
Webサイト制作に関連した職種の一つであり、クライアントが提示した要件をもとにして、より使いやすいWebサイトを作っていくエンジニアのことです。
マークアップエンジニアはWebサイトを制作する職種であるため、しばしばコーダーと混同されることがありますがコーダーは、デザイナーが出した指示にしたがってコーディングをおこなうのが基本的な業務です。
そのため、コーダーの場合はWebサイトを制作する過程でアレンジを加えることなく、指示書どおりに忠実にコーディングをすることが求められます。 デザインどおりにHTMLやCSSを組み立てていくため、多くの場合JavaScriptなどに触ることはなく、HTML・CSSで完結できる部分のみを担当するケースがほとんどです。コーダーとして業務に携わるのであれば、自分の提案を制作に持ち込むことはあまりありません。
一方、マークアップエンジニアはデザイナーの指示どおりにWebサイトを作るのではなく、サイトの目的を正しく理解したうえで、SEO対策やUIなどにも責任を持ちながら、ユーザがより快適にサイトを利用できるように改良していきます。そのため、一般的にはコーダーよりもマークアップエンジニアのほうが上位職として位置付けられることが多いでしょう。
ヘルプデスク(サービスエンジニア)
顧客からの技術的な問い合わせや、社員からの製品の使い方、トラブルなどに関する問い合わせに対応する仕事を指します。 情報システムやソフトウェアの使い方やシステム障害発生時の対処法などを電話やメール、チャットなどで答えるのが主な業務であり、コミュニケーション能力のみならず技術的な知識も必要な職種です。
社内SE
自社システムの開発・運用・保守およびIT資産の管理などを行うSEです。システム開発などITプロジェクトの企画の段階から携わり、長期に渡って運用・保守を行います。ほかにも、予算管理やヘルプデスク等の業務を行います。
社内SEの仕事内容は非常に幅広いため、企業によって業務内容や業務範囲が異なることが多いです。
まとめ
エンジニア種類別に分類してみた!!いかがでしたでしょうか?
採用できない状況に陥らないためにも私たち採用モンスターがお力になります。
お試しコンサルも実施しておりますので、お気軽にお問い合わせください。
コメント