「フロントエンドはなんとなくわかるけど、QAやSREはどういったエンジニアなのか良く分からない」
エンジニア採用をしていると、上記のような疑問が浮かぶ方も少なからずいらっしゃるのではないでしょうか。エンジニアの職種を適切に理解していないと、採用業務において社内エンジニアとのコミュニケーションに齟齬が出るばかりか、適切な求人票作成も難しくなります。
そこでQiita Jobsでは、2021年7月14日に「ITエンジニア図鑑を解説!〜〇〇エンジニアってどんなエンジニア?〜」というタイトルでセミナーを実施しました。これは、エンジニア採用を行うために知っておくべきエンジニアリングに関する知識をまとめた「ITエンジニア図鑑〜〇〇エンジニアの業務内容とは〜」をもとに解説していったものです。
本記事では、こちらのセミナー内容についてレポートします。エンジニアの職種理解に悩まれている採用担当者は、ぜひご覧ください。
なお、この前提知識としてWebアプリケーションの構造などをチェックされたい場合は、以下の記事も併せてご覧ください。
アルバイトを経て、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もガリガリと書いてもらっていたりします。
--例えばRubyができる人を採用したいけれどRubyだけだとターゲットが狭いのでもっと広く探したい、という場合、どんな言語スキルをもった人を探せば良いでしょうか?
清野:今ですと、PHP、Python、あとはR(アール)ですね。この辺りは、同じ「動的型付け言語」に分類されるのでそもそも書き方が似ているのと、Ruby自体が元々はPerlの改善をするために出てきたもので、Pythonも同じような流れで生まれた経緯があるので、全部同じ系統だと捉えることができます。
※動的型付け言語と静的型付け言語については、以下の記事をご参照ください。清野:ネイティブエンジニアは、いわゆるスマホアプリの設計、開発を行うエンジニアです。Webアプリケーションとやることはだいぶ違うので、希少価値は高いかなと思います。
スマホアプリはOSの違いから、主にiOSとAndroidの2種類に分けることができるので、このiOSアプリを中心に開発するエンジニアと、Androidアプリを中心に開発するエンジニアに分けることができます。これらはそれぞれ、iOSエンジニアやAndroidエンジニアと呼ばれることもあります。
iOSアプリならSwiftやObjective-C、AndroidアプリならKotlinやJavaといったプログラミング言語を使って開発することが多いです。
--またWebアプリとは全然違う言語ですね。
清野:いわゆるWebでいうと、フロントエンドエンジニアとやっていること自体は似ているのですが、スマホ特有の機能もあると思うので、その独特の実装知識も必要だったりします。アプリに最適化した機能やデザインを作りたい場合は、ネイティブエンジニアに依頼することになります。清野:QAとは「Quality Assurance」の頭文字をとったもので、日本語に訳すと品質保証になります。QAエンジニアは、完成したソフトウェアに対して、動作確認の手順を設計したり、実際に動作確認をしてバグがないかなどを確認しています。もちろん、その結果を開発サイドにフィードバックして、機能を改善していくことになります。
--最近よく聞くようになってきたのですが、なぜなのでしょうか?
清野:これは僕の主観ですが、アプリケーションがだんだんと大規模かつ複雑になってきていることが要因としてるかなと思います。昔のWebサイトは良くも悪くも軽いのですが、今は挙動が複雑なことが多く、要件通り動いているかをちゃんと調べないといけないことがあげられると思います。--そもそもですが、機械学習とは何でしょうか?
清野:機械学習とは、大量のデータを使ってコンピュータが学習することで、人間ができないような分類や予測を可能にする技術のことです。スマホのカメラを使って手書きの文字を見ると自動でスキャンしてくれる機能がありますが、これは機械学習によって可能になっています。また、商品のリコメンデーションや需要予測にも機械学習が使われています。ディープラーニングも機械学習の一分野になります。
--今までのエンジニアとは、学ぶべきことがだいぶ違ってきますね。
清野:そうですね。主な業務は、機械学習のアルゴリズム設計や構築、データの予測・分類などでして、使われるプログラミング言語は、データを収集したり可視化するライブラリが豊富なことから、Pythonが選ばれる事が多いです。清野:参考として、担当領域別のエンジニアをまとめたものが以下となります。
今回は「ITエンジニア図鑑を解説!〜〇〇エンジニアってどんなエンジニア?〜」というテーマで、代表的な担当領域別エンジニアを解説していきました。それぞれの役割を正確に理解することで、候補者探しに幅を持たせることができたり、求人要綱時点での齟齬を大幅になくすことができるようになるでしょう。
取材/文:長岡 武司