Webエンジニアとは?世の中の他の種類の〇〇エンジニアと比較して理解する。

そもそもwebエンジニアとはどういう仕事なのでしょうか?ITの仕事というのはわかりますが、IT系の仕事にはカタカナの難しそうな名前が多くあり、何がどういう仕事なのかわかりません。

webエンジニアというのは、エンジニア全体の中でどういう位置に存在して、どういったスキルが求められるのかという他の職種について知ることで、webエンジニア自体がどういうものなのかというのを説明していきます。

 

世の中には〇〇エンジニアが多すぎる

 

世の中には〇〇エンジニアというのが多くありますよね。

「結局どういうこと??」

ってなりますよね。

今回はそれをできる限りわかりやすく説明してみたいと思います。

エンジニアの分類のわかりにくさを助長している一番の要因は、エンジニアという職業を切り分ける時にそれぞれの人たちが色々な切り口で分類してしまっているためです。

エンジニアの役割として切り分けたものシステムの担当部分で切り分けた場合の命名や強みとするプログラミング言語で切り分けたものが世の中に散在しているのでぱっと見その言葉がどういう仕事内容の職種をさしているのかがわからなくなります。

ポケモンを分類する場合に、進化系の第一形態、第二形態という感じで分けるのか、生息地別に分けるのか、ほのおタイプなどの属性で分類するという方法があると思うのですが、 エンジニアもこれと同じような様々な切り方をされます。

今回はその中でも代表的な

  • システムの階層別
  • 言語別
  • 役割別
の分類を紹介します。

以下には分類の仕方の説明とそれぞれの職種の特徴を書いていきます。

 

システムレイヤー別の分類

 

まず初めはシステムレイヤーによる分類です。 エンジニアのみなさんが作るアプリケーションにはレイヤー(階層)があります。

建築物も、土台などの基礎の部分から家などの上物の部分。外装、内装など組み立てるもののパーツにより必要なスキルというのは変わってきます。

システムもこれと同じように、ユーザの目に触れやすい画面を担当するデザイナ(非エンジニア)、画面の見た目のデザインを定義するHTML/CSSをコードに落とし込むコーダー、画面のアニメーションなど動的な部分を実装するフロントエンジニア、サーバーでの処理を実装するサーバエンジニアなどのようにシステムのレイヤー(パーツ)により呼ばれ方が変わります。

 

コーダー

 

主に、すでにデザインされたものをHTMLやCSSに落とし込んでいく仕事がメインのエンジニアになります。

ここをできる人は、webデザインのスキルとセットであることが多いので、エンジニアというよりデザイナーというイメージが強いイメージがあります。

私はあまりHTML/CSSしかコーディングをしませんという人に出会ったことがないので確実なことは言えないのですが、HTML/CSSしかできない人というのは、エンジニアともデザイナーとも見なされない微妙なたち位置のような印象を受けます。

また、突き詰めると決して簡単な仕事ではないのですが、コーダーとしてのスキルしかない人は割と単価がやすい傾向にあるようです。

 

フロントエンジニア

 

今人気の職種ですね。フロントエンジニアとして、サーバエンジニアより画面に近い部分のコードの実装を行います。

画面に近いといわれてもピンと来ないかもしれないのですが、主にデザイン、HTML/CSS、Javascriptなどのスキルに強く動的なページやリッチなUI(ユーザインターフェース)を実現するための技術が必要となります。

基本的に、javascriptはブラウザなどのクライアント側で動作する言語なので、開発を行なっていてもユーザに直接インパクトを与えられる部分の開発が多くなります。

視覚的にわかりやすいことや企業がユーザを惹きつけるユーザインターフェースを欲していることから、需要が多くあり人気の職種になっています。

ReactやVueなどの出現でjavascript界隈が盛り上がっており、フロント側のソースコードのサイズが大きくなりがちなので、今後もより一層フロントエンジニアが必要性が増していくでしょう。

 

サーバーエンジニア

 

フロントエンジニアに対して、サーバーサイドの技術に強いエンジニアです。

Rubyエンジニア、PHPエンジニア、Javaエンジニアなどありますが、これらのプログラミング言語はサーバサイドで動くので、これらのエンジニアを名乗ると自動的にサーバサイドエンジニアとなります。

未経験者のうちにプログラミングを勉強し始めるとだいたいこれらの言語から始めることになるので、知らない間にサーバサイドエンジニアになっています。(別にフロントエンジニアになったとしてもサーバ側の知識は必要なので悪いことではないのですが)

 

インフラエンジニア

 

インフラは字のごとくシステムの基盤を担当します。縁の下の力持ちです。

システムのインフラというのがイメージが一番湧きづらいと思うのですが、基盤の上でアプリケーション(webサービス)というのは動くのでシステムに必須なパートとなります。

実際の仕事の内容としては、webサーバの設定やサーバーを複数台立てて負荷を分散させたりなどなど大きいシステムであればあるほど必要なエンジニアになります。

サービス自体が小さい段階では専任でインフラエンジニアを置くことは珍しく、より大きなサービスで必要とされる職種になります。

 

DBエンジニア

 

データーベス専門のエンジニアです。

webサービスではユーザの情報やユーザの取引の情報をデータベースに保存することが不可欠です。データベースはアプリケーションの外側に位置し、データベースへのアクセスには時間がかかることが多いためここを如何に最適化ができるかでwebページの表示速度が変わってきます。

こちらもかなり専門性の高い職種になるので、インフラエンジニアと同様にスタートアップや小規模のベンチャー企業というよりは中〜大規模の企業になって初めて必要とされる職種になります。

 

フルスタックエンジニア

 

要はなんでも屋さん。よくいうとオールラウンダー、良い意味の方のハッカーですかね。ウィザードですかね。 (エンジニア界隈では人智を超えた技術力を持った人を敬意を表して魔法使いと呼びます。)

スタートアップなど人的リソースの足りないところなどサービス全体を一人で見れる凄腕エンジニアというようなイメージです。 先に述べた、フロントからサーバサイドはたまたインフラまでそれぞれのスキルが十分に高くどのポジションでもやれてしまうという感じです。

ここまでだと聞こえがすごく良いのですが、

組織として崩壊している会社などだとフルスタックエンジニアという聞こえの良い単語で本質的な課題を見えにくくしている場合や、過剰な負荷を要求するワードとしても働くので転職の際などには注意が必要です。

次々から次にくる仕事を必死にさばいた結果フルスタックエンジニアになったという人や本当にサービスを一人で作っちゃうような凄腕エンジニアもいるのでこれはピンキリとも言えます。

「私はフロントしかやりません。」

「サーバしかやりません。」

とかというように自分の役割を限定せず幅広くこなしたいというのも一つの仕事の指向性なのでフルスタックエンジニアが良い悪いとかいう話ではないです。

 

言語別

 

言語別でも××エンジニアという呼び方もききますよね。

言語別での分類の場合は、××エンジニアと言われたら××という言語ができるエンジニアさんなんだなぁという感じで理解すれば大丈夫です。

ただ、言語自体にどのような業界で多く使われている言語かやエンジニア界隈での評価などもあるので、未経験の人にはわからない隠れた意味合いもあります。

ここでは、そんな隠れた意味合いもご紹介できればと思います。

 

Javaエンジニア

 

Javaはコンパイル言語と言って、実際にアプリケーションを動かす前に一度コンピュータが読める形に変換しなければいけません。

一方で一度変換してしまえばアプリケーションが実行される時にコンピュータが無駄な解釈を必要とせずプログラムを実行できるので他のRubyやPHPなどのプログラムよりは実行速度が速いです。

こう言った言語の特徴から、割としっかりとプログラムを書く必要があり、システム開発が割とフォーマルになりがちです。また、割と世間一般に浸透するのが速い言語だったため、SIerでの大規模開発で使われていることが多いです。

web系でも使っている会社もあるのかとは思うのですが、一度成功したサービスで一定数の規模を持ったサービスで採用されていることが多いです。

そのためたいてい 「今までJavaエンジニアとして5年働いてきました。」 というのは、 ほぼ「SIerで5年間エンジニアとして働いていました。」という印象になります。 (もちろん、聞いた瞬間の印象だけでそのあとちゃんと経歴は聞きますが・・)

 

PHPエンジニア

 

みなさん大好きPHPです。WordPressもPHPで動いていたりしてかなり親しみやすい言語になっています。

私個人的にはそんな印象もないのですが、PHPはプログラミング言語としては低レベルの言語で、PHPしかできない人はプログラマーですらないという極端な意見の人もいます。

まぁこんな極端な意見はほっておいて、自由にやれば良いと思うのですが、PHPは若干SIerでも現場によっては使われている印象です。

が、言語自体が割とカジュアルなので大規模なシステムに使われていることは少なく、web系企業でも多く使われている言語になります。 私がwebエンジニアになりたい!!と思って最初に勉強を始めたのがこの言語でした。

日本語のドキュメントやネット上の情報も多いので比較的勉強しやすい言語ですね。

 

Rubyエンジニア

 

日本生まれのプログラミング言語Rubyです。SIerなどで使われている例を耳にすることはほとんどなく、Javaエンジニアの例とは逆で 「Rubyを〇年やっていました」 というような人はほぼweb業界で開発やってきた人だなという感じで認識します。

さらにいうと、Rubyをやっている人はほとんどがRailsというフレームワークを使っているので、

Rubyやっていました= Railsやっていました

というような印象を受けます。 「Railsやってました!!」のように「横浜に住んでます!!」というような前提をすっ飛ばした言い方をしてくるのが特徴です。

なにやらエンジニアとして働いた場合に単価が高い言語であるらしいです。

 

役割別

エンジニアと一言で言ってもエンジニアの仕事の内容は多岐に渡ります。

SIerでは、設計書を作成する必要もあるし、クライアントと話をしながらシステムの要件を決めたり、実際に実装したりテストしたりというのがあります。

はたまた、Web系で外部向けのWebサービスを開発している会社だとユーザの反応を見たりしながら次の施策を決めて、開発を進めたり、という感じになります。

エンジニアには会社のビジネスモデルによって要求される仕事が変わるので役割別のネーミングもよくされています。

 

システムエンジニア(SE)

 

システムエンジニアというのは、広い意味でいうとwebエンジニアもシステムエンジニアに入ってきます。

システムエンジニア自体がIT系の開発や設計を行う職種全般を指す言葉なので、営業などの言葉と同じような粒度の粗い言葉になります。

一方、狭い意味でいうとSIerで働いているエンジニアの方々をシステムエンジニア、ITベンチャー(有名どこでメルカリなど)のwebサービスを提供ししている会社で働くエンジニアをwebエンジニアと呼ぶことが多いです。

世間的なSEのイメージとしては残業が多い、労働時間に対して待遇が悪いなどのイメージがありますが、これは現場や会社によります。

所属する会社が業界の中でも大規模な場合は他の大手と同様に高給なことも多いのですが、ネット上に散見されるSE辛い話のほとんどがこれらの大手から仕事を受けている会社になります。

SI業界は、大手をトップとしたピラミッド状の業界構造になっているので、一次請け、二次請け、三次請けになるに従って待遇は悪くなる傾向があります。

SI業界自体体制が古く、開発体制の自由度が低い、技術力の強化に適した場所ではないという理由でWebエンジニアへの転身を考えている人は多くいます。

システムエンジニアへの門戸は広く文系・理系とはず新卒から入社できます。

業界として特別技術力が高い人が活躍できるというよりは、最低限技術がわかってプロジェクトの予算などを見ながらプロジェクトを進めていける人が活躍する業界なので、エンジニア志向が強い人にとっては違和感を感じてしまうかもしれません。

こちらの記事にも書いたようにより自由な開発をしたい思って私自身もwebエンジニアに転身しました。

文系プログラミング未経験者が3年かけてwebエンジニアになるまで

 

webエンジニア

 

サイトのタイトルにもあるようなWebエンジニアです。

広い意味でいうとJavaで開発していようがC#で開発していようがRuby,PHPで開発していようがwebに関する開発を行なっていれば個人で開発していようが、SIerで開発してようが立派なwebエンジニアです。

が、一般的な文脈で使われるwebエンジニアというのは、web系の会社で開発を行なっているエンジニアをさします。SIerのエンジニアをwebエンジニアということはほぼありません。

web系の会社は職場の雰囲気が自由なことが多く(なあなあな会社もある)、私服で出社したり、リモートで仕事をしたり、出社時間を自由に設定できたりということを制度として持っている会社が多くあります。こう行った職場環境に惹かれてwebエンジニアになる人も多くいます。

個人的な意見を書かせていただくとWebエンジニアとして働いてみると本当に働き方への考え方がだいぶ変わると思っています。 社内ではご多聞にもれず愚痴を言っていたりもするんですが、基本的に働いている人みなさん技術が好きなので仕事以外にも自分の興味あることを勉強していたりします。

一緒に働く人が基本的にプログラミング好きな人たちなので、仕事上での辛さはありますが、根本的に扱っている分野(プログラミング)が好きであるというところを共有しているので安心感を持って働くことができます。

 

iOSエンジニア・Androidエンジニア

 

名前の通りiPhoneやAndroidのアプリケーションを開発するエンジニアさんです。

スマートフォン版とweb版のどちらもあるサービスも増えてきているので、一つの会社にアプリエンジニアとwebエンジニアも両方セットでいるということも多いです。 結局アプリだけで完結できるサービスという方が少ないのですが、サーバーサイド側のエンジニアとチームを作って開発をするというのが多いようです。

SIerでもアプリ開発の案件はあるので、iOSエンジニア・AndroidエンジニアはSIerにもWeb系のどちらにも存在するという感じでしょうかね。あとはゲーム業界にも多い印象です。

 

組み込みエンジニア

 

現代では少しコアな職種になっている気がします。車で使うソフトウェアや家電で使用するソフトウェアを開発するエンジニアです。

あまり、この業界の人の知り合いを知らないので詳しいところはわからずじまいですが、ソフトウェアを基盤に直接焼き込んだりして、ソフトウゥエアだけで完結できないという所がなかなか大変だそうです。

他のWebエンジニアやシステムエンジニアなどはソフトウェアだけで完結することが多いのですが、こちらになるとハードウェアへの知識も必要だったりして他のエンジニアとは少し違ったスキルセットが必要になります。

 

ブリッジエンジニア

 

これはなかなか聞かない職種かもしれませんが、システム開発の現場ではオフショア開発と言って、システムを人件費の安い海外で開発することがあります。

ここで、現地の社員や会社とコミュニケーションを取りながら開発を進めたり、プロジェクトを進めるポジションが必要になります。 そこでできたポジションがブリッジエンジニアという国と国の間の伝達役をするエンジニアになります。

最低限の技術力は必要ですが、どちらかというと英語でのコミュニケーションプロジェクト管理交渉・調整能力が必要とされる職種です。

 

まとめ | webエンジニアという仕事について

 

ここまで様々な職種を紹介してきましたが、webエンジニアというのを一言で表すと、

webシステムを開発するエンジニアさんです。

これだけだと、

「え、今までの説明なんだったの??」

となりそうですが、端的に表すとこの言葉がもっともしっくりきます。

しかしその中でもwebエンジニアはwebシステムを開発する仕事で、webシステムには階層があってそれぞれの階層を担当するフロントエンジニア、サーバエンジニア、インフラエンジニアなどがいます。

そして、サーバをRubyで書く人はRubyエンジニア、PHPで書く人はPHPエンジニアと呼ばれます。

他にもIT業界には、Web業界とSI業界がありSIにいるエンジニアとは根本的に求められるスキルが違ってSI業界のエンジニアはシステムエンジニアと呼ばれがちでWeb業界のエンジニアはWebエンジニアと呼ばれがちです。

先にも書いたようにWebエンジニアという職種を他の似たワードとの関係性で理解できるともっとWebエンジニアという職種が理解できると思います。