ITエンジニア図鑑を解説!〜〇〇エンジニアってどんなエンジニア?〜セミナーレポート

「フロントエンドはなんとなくわかるけど、QAやSREはどういったエンジニアなのか良く分からない」

エンジニア採用をしていると、上記のような疑問が浮かぶ方も少なからずいらっしゃるのではないでしょうか。エンジニアの職種を適切に理解していないと、採用業務において社内エンジニアとのコミュニケーションに齟齬が出るばかりか、適切な求人票作成も難しくなります。

そこでQiita Jobsでは、2021年7月14日に「ITエンジニア図鑑を解説!〜〇〇エンジニアってどんなエンジニア?〜」というタイトルでセミナーを実施しました。これは、エンジニア採用を行うために知っておくべきエンジニアリングに関する知識をまとめた「ITエンジニア図鑑〜〇〇エンジニアの業務内容とは〜」をもとに解説していったものです。

本記事では、こちらのセミナー内容についてレポートします。エンジニアの職種理解に悩まれている採用担当者は、ぜひご覧ください。

なお、この前提知識としてWebアプリケーションの構造などをチェックされたい場合は、以下の記事も併せてご覧ください。

WEBアプリの構造からスキル分類まで〜採用担当に知って欲しいエンジニアリングの知識セミナーレポート



登壇者プロフィール

清野 隼史(きよの としふみ)
Increments株式会社 Qiita開発チーム リーダー

アルバイトを経て、2019年にエイチームに入社。Qiita Jobs開発グループでQiita Jobsの開発に携わる。2020年よりQiita プロダクトマネージャーに就任する。趣味はサウナ。

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

清野:フロントエンドとは、ソフトウェアでユーザーが直接見る部分のことを指します。つまりフロントエンドエンジニアは、ユーザーが直接見る部分を担当するエンジニアです。

Webページは、HTMLやCSS、JavaScriptなどで実装されており、特に最近では、JavaScriptを使うことが当たり前になってきているので、ReactやVue.jsといったリッチなWebページの実装を楽にするライブラリやフレームワークが登場してきています。

※プログラミング言語とライブラリ、およびフレームワークの違いについても、以下の記事をご参照ください。

WEBアプリの構造からスキル分類まで〜採用担当に知って欲しいエンジニアリングの知識セミナーレポート

--このフロントエンドはどんな人が多いものでしょうか?何となく、エンジニアからデザイナーまで、広くいるような印象です。

清野:目に見える部分の仕事なので、シンプルにものづくりが好きな人や、新しものをどんどんと取り入れていきたいギークな人が多い印象ですね。

一昔前は「マークアップエンジニア」という、HTMLやCSSのようなマークアップ言語でWebページを装飾していくような人たちがいたのですが、先ほどもお伝えした通り、最近ではUIを作り上げるのにJavaScriptが必須になってきたので、デザイナーでもフロントエンジニアに片足を突っ込んでいるような印象ですね。

--HTMLやCSSって、プログラミング言語ではないのでしょうか?

清野:プログラミング言語って、パソコンに処理をさせるための言語なのですが、HTMLやCSSってブラウザに何を出すかを司る言語なので、厳密にはプログラミング言語ではないんですよね。

--なるほど。このように見ると、フロントエンジニアって範囲が結構広いので、求人票時点でしっかりと求める要件を定義しないと、ミスマッチが発生しそうですね。

清野:フロントエンジニアという表現自体が、もしかしたら少し前の概念になってきている印象ですね。ちなみにQiitaのデザイナーもフロントエンドの領域まで片足を突っ込んでいまして、マークアップはもちろん、Reactもガリガリと書いてもらっていたりします。

サーバーサイドエンジニア

清野:サーバーでは、Webページに表示されるデータの処理やデータベースのやりとりが行われいるのですが、このサーバーの処理の実装などを担当するのが、サーバーサイドエンジニアです。
このサーバーの処理を実装するのに便利な、RubyやJava、PHP、Goなどといったプログラミング言語が使われることが多くなっています。それぞれの言語の特徴は以下の通りとなっています。ちなみに、違う言語でも似たような特徴を持ったものは多く、例えばGo言語なんかはC言語の進化版として作られている側面がありますね。

--例えばRubyができる人を採用したいけれどRubyだけだとターゲットが狭いのでもっと広く探したい、という場合、どんな言語スキルをもった人を探せば良いでしょうか?

清野:今ですと、PHP、Python、あとはR(アール)ですね。この辺りは、同じ「動的型付け言語」に分類されるのでそもそも書き方が似ているのと、Ruby自体が元々はPerlの改善をするために出てきたもので、Pythonも同じような流れで生まれた経緯があるので、全部同じ系統だと捉えることができます。

※動的型付け言語と静的型付け言語については、以下の記事をご参照ください。

プログラミング言語から見るスカウト対象の広げ方 〜採用担当者が抑えておくべき言語理解セミナーレポート

インフラエンジニア・SRE

清野:インフラエンジニアは、サーバーを含むコンピューターやネットワークといったインフラの設計・運用・管理をするエンジニアのことです。最近だとAWSをよく聞くと思うのですが、そういうところにサーバーを立てて、アプリケーションを乗せたり、ちゃんと動くようにする仕事です。

--インフラエンジニアとSREって、何が違うのでしょうか?

清野:正直、最近曖昧になってきているなと思います。
SREって「Site Reliability Engineering」の頭文字をつなげたものでして、端的には「サイトの信頼性を上げる」ことをミッションにしています。できるだけサービスが落ちないようにするといった内容なので、ここはインフラエンジニアと同じミッションだと言えるでしょう。一方でSREは、より計測に力を入れたり、パフォーマンスが落ちてきたときにアプリ側も触れるようなところもあって、ここはインフラエンジニアとは異なるところかなと思います。

--よく混同されるものとして、サーバーサイドエンジニアがあると思うのですが、彼らがインフラエンジニアになるのは難しいのでしょうか?

清野:サーバーサイドエンジニアって、あくまでアプリケーションのサーバー部分を担っている人たちです。一方でインフラエンジニアやSREは、そのアプリケーションを載せる部分を改善する人たちなので、必要になる知識や考えることなどがまるで違います。なので、明日からやります、というのは難しいでしょう。

--そうなると、どんな人がインフラエンジニア・SREになる傾向があるのでしょうか?

清野:割とゼロからスタートするイメージが強いですね。インフラエンジニア・SREって、何かプログラミングとかをするのではなく、どちらかというとマシンのチューニングや台数を増やしたりといったことをやるので、意外と学習ハードルは低く、文系の方も多い印象です。

ネイティブエンジニア

清野:ネイティブエンジニアは、いわゆるスマホアプリの設計、開発を行うエンジニアです。Webアプリケーションとやることはだいぶ違うので、希少価値は高いかなと思います。

スマホアプリはOSの違いから、主にiOSとAndroidの2種類に分けることができるので、このiOSアプリを中心に開発するエンジニアと、Androidアプリを中心に開発するエンジニアに分けることができます。これらはそれぞれ、iOSエンジニアやAndroidエンジニアと呼ばれることもあります。

iOSアプリならSwiftやObjective-C、AndroidアプリならKotlinやJavaといったプログラミング言語を使って開発することが多いです。

--またWebアプリとは全然違う言語ですね。

清野:いわゆるWebでいうと、フロントエンドエンジニアとやっていること自体は似ているのですが、スマホ特有の機能もあると思うので、その独特の実装知識も必要だったりします。アプリに最適化した機能やデザインを作りたい場合は、ネイティブエンジニアに依頼することになります。

QAエンジニア

清野:QAとは「Quality Assurance」の頭文字をとったもので、日本語に訳すと品質保証になります。QAエンジニアは、完成したソフトウェアに対して、動作確認の手順を設計したり、実際に動作確認をしてバグがないかなどを確認しています。もちろん、その結果を開発サイドにフィードバックして、機能を改善していくことになります。

--最近よく聞くようになってきたのですが、なぜなのでしょうか?

清野:これは僕の主観ですが、アプリケーションがだんだんと大規模かつ複雑になってきていることが要因としてるかなと思います。昔のWebサイトは良くも悪くも軽いのですが、今は挙動が複雑なことが多く、要件通り動いているかをちゃんと調べないといけないことがあげられると思います。

機械学習エンジニア

--そもそもですが、機械学習とは何でしょうか?

清野:機械学習とは、大量のデータを使ってコンピュータが学習することで、人間ができないような分類や予測を可能にする技術のことです。スマホのカメラを使って手書きの文字を見ると自動でスキャンしてくれる機能がありますが、これは機械学習によって可能になっています。また、商品のリコメンデーションや需要予測にも機械学習が使われています。ディープラーニングも機械学習の一分野になります。

--今までのエンジニアとは、学ぶべきことがだいぶ違ってきますね。

清野:そうですね。主な業務は、機械学習のアルゴリズム設計や構築、データの予測・分類などでして、使われるプログラミング言語は、データを収集したり可視化するライブラリが豊富なことから、Pythonが選ばれる事が多いです。

担当領域別にエンジニアを見てみる

清野:参考として、担当領域別のエンジニアをまとめたものが以下となります。

--組み込みエンジニアとは、どういうことでしょうか?

清野:いわゆる家電やロボットといった、ハードウェアの中で動くプログラムを各人たちになります。
これまで見てきたエンジニアと大きく違う点は、組み込みってバージョンアップができないんですよね。なので、失敗前提で作ることができないんですよね。また、電気消費も限られていることから、よりコンパクトなプログラムを書くことが求められますね。

--なるほど。もう一つ、DevOps(デブオプス)という言葉があると思うのですが、こちらは何なのでしょうか?

清野:いわゆる作ったアプリケーションをリリースするための環境を構築するエンジニアです。
一昔前だと、アプリケーションのリリースって週一とかの頻度が多かったわけです。それが最近では、会社によっては1日に何十回もリリースする、といったことが当たり前になってきています。そういった、リリースや開発環境を作っていくのが、DevOpsの役割になります。

求人要綱時点での齟齬を大幅になくしましょう

今回は「ITエンジニア図鑑を解説!〜〇〇エンジニアってどんなエンジニア?〜」というテーマで、代表的な担当領域別エンジニアを解説していきました。それぞれの役割を正確に理解することで、候補者探しに幅を持たせることができたり、求人要綱時点での齟齬を大幅になくすことができるようになるでしょう。

 

取材/文:長岡 武司

セミナー資料ダウンロード

会社でお使いのメールアドレスをご記入ください。

エンジニア採用でお悩みの方は、お気軽にご相談ください。

ご不明な点はお気軽に
お問い合わせください。
サービス概要、料⾦、申し込み方法など
Qiita Jobsが3分で分かる資料をご用意。