なんか以前よりそこかしこにエンジニアとやらが溢れてます。
「手に職をつける」じゃないですが、現代の働き方に疑問を覚え多くの人が「自分自身にスキルを持たせること」に興味を示すようになったんですね。
で、こういう文脈で言われる「エンジニア」は一般的に「ITエンジニア」を指すことが多いと思ってます。
なんか周りの人がみんなプログラミングとかやってるけど…、
じゃあその「ITエンジニア」って何なのよ!どんな種類があるのよ!
という疑問にお答えするのがこの記事!
技術系に初心者の方でもフィーリングで理解できるような分かりやすい解説を目指します。自分の興味があるのはどれなのかも考えながら読んでいただくと面白いかも!
ITエンジニアの種類と仕事内容10個
前置きですが、今回の10個の分け方は何か一般的な定義に沿っているわけではありません。今まで色々な技術業界を見てきた僕なりの「最も感覚的に理解しやすい解釈」をもとに分類しています。
なのでこの記事をお読みになるみなさん(主に初心者さんを想定してます)は、
「へぇ~こういう感じなんだ~~~」
ぐらいに思って流し読みしてくだされば十分です。
でも、これだけのことを業界に入る前からスッキリ理解できていたらかなり有利だと思いますよ。
というわけでそれぞれの同業者の方は色々文句もあるかもしれませんがご容赦を…!
1.システムエンジニア(SE)
最初がこれなのはちょっとズルいかもしれません。
というのも、みなさんも知っての通り「SE(システムエンジニア)という言葉自体がITエンジニア全般を指すような風潮がある」んですよね。
しかしもともとは(?)システムエンジニアというのはちゃんとした1つの分野です。
内容はシステムやソリューション全体の設計/開発から保守/運用まで総合的にマネジメントし、顧客と親密な関係を築くことです。
そう、実は技術職より総合職的な側面が強いんですね。
しかし担当範囲が広い分求められるスキルはかなりのものがあります。
まず往々にして顧客は無理難題を意味不明な要求として押し通してくる難易度の高い設計を求めてきますから、それを上手に紐解き、両者で齟齬のないように互いが納得し(←ここ重要!)、しかもそれを今度は開発者側に丁寧に伝えなきゃいけません。
単なる「営業」では終わらず、「技術エンジニア側のマネージャー」としてのスキルが何より必要になるわけですね。
どんな仕事でも橋渡し役はツライ目に遭う宿命ですが(笑)、システムエンジニアもその例に漏れない、と思う…。
入る会社によってピンきりなので、ふんぞり返ってラクしてるケースもよく見かけますよね…!
ちなみに似た言葉に「SIer」(エスアイアー)というのがありますが、これは全然違うもの。
SI、すなわちシステムインテグレーターとは企業の情報システムの開発や運用を請け負う人(会社)です。ここに属する人をSIやSIerと言ったりもしますし、意味の揺れはかなりありますね。
NTTデータみたいな会社はSIerの最も分かりやすい例かなと!
2.Webエンジニア(フロントエンドエンジニア)
ここ数年で最も流行っているのは絶対にこれだと思います。ジャンジャカいらっしゃる。笑
Webエンジニア、特にフロントエンドとはウェブブラウザでアクセスしたときのサイトを作るエンジニアと理解すると良いでしょう。
使用するプログラミング言語は
- HTML
- CSS
- JavaScript
の3つまでが一般的。
Webエンジニアというとこの「フロントエンドエンジニア」と、もうひとつ「バックエンドエンジニア」というのがあります(後述)。
「Webエンジニア」だけ単体で言った場合はフロントエンドを指すことが多い気がしますが、確実な会話を目指すならフロントかバックかちゃんと言った方がいいでしょう。
フロントエンドエンジニアが急増している理由については、僕は以下のように考えています。
- 言語的にハードルがかなり低い
- 開発環境とか面倒くさいものが一切要らない
- 作ったものがすぐにリッチな見た目で確認できるのでモチベ維持に繋がりやすい
この3つ。
言語仕様的に習得は最も簡単な部類だと言っていいと思います。
特にHTMLやCSSに至っては僕はいまだに「これプログラミング言語って呼んでいいのか…?」と思うくらいで、ちょっとホームページを作ったことがあるくらいの方でもわりかし詳しいというケースはよくありますよね。
HTMLは何の略かというと「Hyper Text Markup Language」なんですが、この「マークアップ言語」というジャンルは他にもよく見られます。
- XML
- SGML
- XHTML
- TeX
実際のところこれらは厳密にはプログラミング言語ではないしそのカテゴリを示すものでもないという点は覚えておきましょう(詳しいことが気になる方はこのWikipediaなどをどうぞ)。
また、フロントエンドエンジニア、特にHTMLとCSSを中心に仕事をする人を「マークアップエンジニア」と呼ぶこともあります。
その他「すぐに結果が目に見えて分かるからプログラミングが楽しい!」という絶大なメリットがありますね。
もしあなたが本当に初心者でなおかつプログラミング業界に興味があるのなら、入り口としてはかなり最適でしょう。しかしここで満足して他のスキルに手を伸ばさなくなることがないように注意するのもお忘れなく。
今ネット上に溢れている人はそういう傾向が多いと思います…。
3.サーバーエンジニア(バックエンドエンジニア)
さっきのフロントエンドに対するもうひとつのWebエンジニア、バックエンドエンジニアです。
フロントエンドはブラウザ上で実際の目に写るサイト設計などを仕事としていましたが、バックエンドエンジニアはその名の通りそれを裏で支えるエンジニアです。
WebサービスやWebサイトのバックエンドだけではなく、例えば「ATMの決済システムの裏方」なども今回はここに入れておきましょう。
内容は主に以下のようなものに分けられます。
- サーバー構築
- データベース管理
- アクセス管理
こういうイメージ。
特にサーバーに関わるスキルが多く求められることから「サーバーエンジニア」と呼ばれることも少なくないです(厳密に「サーバーエンジニア=バックエンドエンジニア」ではありません、文脈によって意味はとても変わります)。
使う言語は
- PHP
- Perl
- Python
- JavaScript
などをはじめとし、SQLなどのデータベース言語も頻出です。またLinuxを扱えるスキルもバックエンドエンジニアとしてはとても大切!
文字通り陽に当たりにくい職種であること、成果や作業内容が目に見えないので「なんか何してるかよく分かんねぇ」みたいな雰囲気があることなどが理由で慢性的に人手不足の業界です。
ということはスキルを身につければ絶大なチャンスがあるということ!
フロントエンドに比べたらスキル習得のハードルは高めですが、とはいえ十分に入門としてスタートできる分かりやすいIT領域だと思います。
サーバーやネットワークの知識がつくと普段の生活でも役に立つことが多いですし、日常でドヤれるシーンもあるかも…しれない!!
4.データベースエンジニア
バックエンドエンジニアに含まれがちな1つですが、今回は抜き出してみました。
データベースとは「同じ情報セットを持ったあるデータ群のカタマリ」みたいなもの。うーん、簡単な説明が難しいですね。
要は「表」です。
例えば「僕のデータ」なら
- 名前:佐藤太郎
- 年齢:5才
- 性別:女
- 好きなもの:ジャグリング
- 嫌いなもの:Windows
みたいなそういうやつですね。で、このセットが大量にあるわけです。
これらデータベースの仕組みを設計/開発し、それを使いやすいように運用したり、安定して利用し続けられるように保守したりするのがデータベースエンジニアです。
今の例を聞いたら、この世の中にある「情報」と言えるものはほぼ全てこの「データベース」に当てはまりそうな気がしてきませんか?
- 顧客情報
- 商品リスト、在庫管理
- アカウント情報
- ゲームのプレイ記録
- …などなどいっぱい!
そう、データベースの需要は現代だとハンパではないんですね。
Webサービスで使われる場合はバックエンドエンジニアが担当することは当然ありますが、Webサービス以外でデータベースが使われることももちろん多々あるわけです。だから今回は別で紹介してみました。
該当する技術スキルは
- SQL(データベース言語)
- MySQL(関係データベース管理システム)
- MariaDB(同上)
- PostgreSQL(同上)
などです。
データベースの操作は「Excelで表を作成すること」と概念としてはほぼ等しいので、感覚的に理解しやすい分野ではあるでしょう。OfficeのAccessが使える方はあれの進化版だと思うといいと思います。
ただし「データベースエンジニアからITエンジニアの経歴をスタートする!」というのはあまり聞いたことはないです…。
5.ネットワークエンジニア
お次はネットワークエンジニア。
ネットワークエンジニアはデータを通信するために必要な種々の技術に精通したエンジニアのこと。
「なんやねん、そのまんまやんけ」
と思うかもしれませんが、実はかなり分かりやすい特徴があります。
それは「ハードウェア(モノ)に関するスキルが多く求められる」ということ。
データ通信のためにはソフトウェア上の技術(プログラミングみたいなイメージだと思ってください)ももちろん多くありますが、その他にも
- ルータ
- ONU(モデム)
- スイッチ、ハブ
など「別の装置」と触れ合う機会が多いんですよね。これは1つ特徴して覚えておくと理解しやすいと思います。
ITエンジニア的なスキルとしては
- TCP/IPの各種プロトコルについて
- サーバーの大枠の動作的なところ(DNSとか)
- ファイアウォールなどセキュリティ系の知識
などがメインとなるでしょう。もちろん実際のコーディングをすることもありますよ(バックエンドエンジニアと密に連携を取ります)。
少し立ち位置的には微妙なポジションにいるので、「ネットワークエンジニアを目指したい!」というよりは「他のIT系エンジニアを目指す過程でちょっと寄り道してみる」くらいの感覚がおすすめな気がします。
6.アプリケーションエンジニア
今回紹介する中では最もふわっとしているカテゴリですね。
というのも、僕自身一番驚いたんですがこれらを表現する良い言葉があんまりないんです。意外だな…。
アプリケーションエンジニアはソフトウェア上で動く各種アプリケーションを作成するエンジニアのこと。これはマジでそのままです。
理解しやすいのは
- スマホアプリ
- デスクトップアプリケーション(PCで動くソフトウェアのこと)
の2つでしょう。
スマホアプリ市場が爆上げしているのは僕が今さら言うまでもないですが、デスクトップアプリケーションだけをメインに開発しているビジネスは現代では少数派なのでイマイチピンと来にくいかもしれません。
これらに共通して言えるのは「ある決まったプラットフォーム上で動くものをルールに沿って設計する」というもの。
スマホアプリもPCのアプリケーションも、
- iOS
- Android
- Windows
のようなOS上で動くように作られていますよね。だからどんなアプリをダウンロードしてこようがちゃんと動いてくれます。
この「ソフトウェア上で動くものをソフトウェアだけで完結して作る」というのは分かりやすい特徴かもしれません。
でも何度も言いますけど、この分類は今回僕のオリジナルなのでそこはよろしくです…!
使われるプログラミング言語は、おそらく最も種類数が多いです。
- C
- C++
- C#
- Java
- JavaScript
- Objective-C / Swift / Kotlin
- Python
などはそのうちのほんの一部の例です。作りたいものによってある程度は絞れますから、言語から考えていくのもありでしょう。
あと例を上げるなら
- OSやカーネルの開発
も微妙にここに入るかもしれません(僕もちょっとどこに入れるべきか自信はないのだけど…)。
もし「Microsoftに入りたい!」なんていう稀有な方がいらっしゃったらぜひCやC++を勉強するといいでしょう。そしてクソくらえなWindowsを少しでもキレイにしてください。お願いします。
7.組み込みソフトウェアエンジニア
ITエンジニアの中で唯一ものづくりに関わるのがこの組み込みソフトウェアエンジニアです。
組み込みソフトウェアとは電気製品の中に直接プログラミングを入れ込んで動作させ、その出力結果によって電気的動作をさせたりするためのものです。
他のITエンジニアが"つくったもの"は全て無形物であり、コンピュータ上で動いたり何かしらの制御をしたりしますよね。
しかし組み込みソフトウェア開発ではハードウェア(モノ)との密接な関係が常についてまわります。さっきも言ったように「プログラムの目的がコンピュータ的な処理だけではない」というのは想像以上に他のITエンジニア職種と毛色が違うんです。
この違いについては下記記事でかなり詳しく解説してみました。併せてどうぞ!
メーカー(製造業)にソフトウェア系のエンジニアとして入るとこの「組み込みソフトウェア開発」に配属されることがほとんどでしょう。「ものづくりに関わるITエンジニア」を指すのと同義だと思っていいと思います。
ご想像のとおり、
- ハードウェア(電気部品)に関わる深い知識
- コンピュータシステムへの理解
などが大きく求められます。
コンピュータシステムというのはハードウェア(下側)に近づくほどより人間の感覚から離れた世界になっていくので、より専門的な知識が求められてくるんですね。
組み込みソフトウェア開発はこの「下回り」と呼ばれるポジションが特に重要な役目を果たします。
プログラミング言語は昔から
- C
が多いですね。ときにはC++も入ったり。
メーカーで色んな研鑽を積みながらITエンジニアとしてもスキルアップしていき、その後自分にあったIT系の仕事へ転職!という流れは王道です。僕も今まで何人も見てたので素直におすすめしたい!
8.社内SE、もしくは情報システム部(情シス)
ちょっと特殊なもの。
社内SEもしくは情シスとは、会社の中でコンピュータやネットワークなどで困ったことがあるときに助けてあげるエンジニアのことで、いわば「ヘルプデスク」にも近いです。
役回り的に「スキルもつかないし能力が低いやつがやる雑用係」みたいに思われがちだけど…。
ところがどっこい!
優秀なエンジニアは得てしてその近辺で「なんでもお助け屋」みたいになっていることが多く、知らないうちに勝手に社内SEみたいになっている(笑)ということがめちゃめちゃよくあります。
今回わざわざ紹介したワケはここにあります。
狙ってなるものではないですが、分野を問わず多くの人から頼りにされるエンジニアほど価値があるものはないということをぜひ伝えたかったんです。
というわけで求められるスキルはありとあらゆるものがありますが、結局は
- パソコンの設定
- Excelのちょいテク
みたいなのが一番重要だったりするんだよな。笑
ちなみに「情シス」は立派な いちエンジニア として地位を獲得しているものだと僕は思っています。
- プロキシ
- 社内LAN
- よく分からん会社専用システム
- その他なんでも
などなど、IT系エンジニアでもなんだかよく理解できないもの(ジャンル)についてエキスパートである情シスの知識には僕もいつも驚かされます。「そんなことやってたんだ!?」みたいな。
情シスを狙って転職をするのは僕はめっちゃアリだと思っていて、実は社内異動で次に密かに狙っている場所でもありますw
みなさんもぜひ「パソコンの大先生」を目指してみてください。
9.ゲームプログラマー
これですよこれ、忘れちゃいけないエンジニアがここにもいます。
ゲームはプログラミング学習で最もはじめに取り入れられたものでもありますよね。「プログラムを使ってアソビを考える」という思想、なんて素敵なんでしょう。
しかしジャンル的には
- アプリケーションエンジニア
- 組み込みソフトウェアエンジニア(特にゲーム機本体)
あたりに入れるのも正解だったかもしれません。
ただし「ゲーム」というプロダクトはその他のITエンジニアの職種がつくるものと大幅に趣旨が異なるので、今回は別枠で紹介してみました。
ITエンジニアとして使う「センス」みたいなものも随分差があるでしょう。また、処理スピード命なところがあるのでコーディングの効率も最大限高める必要があります。見た目のわりには(?)高いスキルが隠れていますね…!
プログラミング言語的には
- C++
- C#
- Java
という有名な3つにほぼ収まっている気がしますが、それ以外にも
- Unity
- Unreal Engine 4
など各種「ゲームエンジン」の知識も現代では必須なはず。
僕もゲームを作ったことはないので、羨ましく感じる…。夢がありますね!
ただし知り合いが言うには「ただ言われたコードだけを書く仕事に成り下がっている人は多い」とのこと。これでは単なる「コーダー」で終わってしまいますね。
勝手な予想ですがスマホゲーム業界はこのケースが死ぬほど多いんじゃないかと思ってます…。
ゲーム業界はプログラミングの勉強としては夢があるので、目標にするのはとても良いと思います!
10.データサイエンティスト/データアナリスト
最後は少し系統を変えてみました。
最近「ビッグデータ」なんて言葉をよく聞くと思いますが、その莫大な量のデータを適切に整理し、そこから考察を見い出して分析をするのがデータサイエンティストです。
- データマイニング
- データアナリシス
なども近しいですね。
データベースのところでも話しましたが、現代ではとにかく集まる情報の量が膨大です。集めただけでは何も価値をなさないので、これをどうにかして「役に立つもの」に変える必要があるんですよね。
これを専門で行うのが彼らなわけです。
求められるスキルはというと、めっちゃ多いです。
一例しか挙げませんが、
- 統計学
- 数学 ←これ重要!!笑
- 機械学習
- RやPythonなどデータ分析のためのプログラミング言語
などなど、これまでとは全然性質の違う技術が求められます。特に根本として数学が分かっていないと話にならないですね。
「数学という学問は物理学や統計学のためにあるもの(生まれたもの)」という考え方もあるくらいなので当然といえば当然ですけど…。
個人的にはデータサイエンティストまでいかなくとも、日々色んな実験で測定したデータをこねくりまわして考察する作業は超好きなので気になっている職種ではあります。
たったExcel1つを使いこなせるようになるだけでも楽しいですよ。Microsoft製のアプリケーションは嫌いだけどな!!
「プログラミングをするだけがITエンジニアだけではない」という良い例だったかと思います(彼らもRとかPythonはガンガン使ってはいますけど笑)。
これからの時代、需要はありまくる領域なので専門的に目指してみるのもおすすめです…!
おわりに:ITエンジニアほど未経験でも手に職が付けられる仕事はない
以上10個のお仕事を紹介してみました。楽しかったですか?笑
これらの文章を読むのが面白かった方は間違いなくこの分野に適正があるでしょう。というかそんな方は今さら僕のブログなんか読んでないとは思いますが…。
何度も書いていますが、エンジニアという職種は自分についたスキルをそのまま持ってどこへでも行けるので仕事に困ることがありません。
ある程度仕事を取る能力は必要にしても、需要がある領域で活動をしていればフリーランスになっても食いっぱぐれるということは基本的にないでしょう。「フリーランスエンジニア」が流行っているのもそれを裏付けていますね。
では今回は以上!
ありがとうございました~
分かりやすい解説ありがとうございます!
ちなみに何ですがサイトの最後のところに以下の文があるのですが誤植でしょうか?
<広告ブロック非表示>
あ
<ここまで>
ご覧いただきありがとうございます~
最後のはすみません!手違いでした。直しておきました~
就活中の情報系修士1年の者です。
itは曖昧な用語が多く仕事研究で混乱していたところに、この記事を見つけました。
職種が体系的にまとまっており、実務経験者ならではの観点もあり、非常に分かりやすかったです!
自分としてはプログラミングを仕事にしたいので、先輩方がよく行くSIerは違うかなと思っていて(研究職もあるが技術書だすレベルの凄い人が多いイメージ)、かといってweb系はネットワークにイマイチ興味が持てないという困った状況でした。
しかしこの記事を見て、自分にはアプリケーションエンジニアが向いているのではないかという考えを持つことができました。
ひとつお聞きしたいのですが、アプリケーションエンジニアというのはIT業界ではなく自動車メーカーや家電メーカーなどのソフトウェア部門にいらっしゃるのでしょうか?
こんにちは。昔の記事ですがお役に立てたようで僕も嬉しいです!
随分前に書いた記事ということもあり、いま見返すと経験不足が垣間見える点もあったりして少し恥ずかしいですね。
というわけで質問にお答えする前にひとつ補足したいのですが、現代で「Web 系」といった場合はだいたい 2 ~ 4(+インフラ)までくらいはすべて含まれるイメージに近いです(ちなみに僕もずっとこの分野にいます)。
さらに、ウェブ系→ネットワークというふうに考えておられると思うのですが、たぶんここも認識のズレがあると思います。いわゆるネットワーク機器などをさわってサーバールームに入り浸るようなプロのネットワーク技術者というのを 5 番の想定で書いており、たしかに普段からプログラミングをしてコードを書く仕事ではないです。しかし「ウェブ系」といったときに含まれるネットワークはこんなものは全くと言っていいほど含まれていません。せいぜい TCP/IP より上のレイヤーです。なので一般的に見て「プログラミングを仕事にしたい!」という場合、おそらく第一候補はここになると思います。
ご質問のお答えにも繋がるのですが、それ以外の場所(組み込みや OS のネイティブアプリ系)などは専門にして就職するのは少しイレギュラーです(モバイルアプリはその限りではありません)。ですので、アプリケーションエンジニアというふわっとした書き方をしてしまいましたが、「自分が書くプログラムがどこで動くもの」を作りたいか、と考えるといいと思います!ブラウザなのか、OS なのか、サーバーなのか、車なのか、家電なのか、といった具合です。
最後にご質問ですが、アプリケーションエンジニアという言葉が本記事上で定義があやふやである以上、「どこにでもいる」という感じになってしまいます。IT 業界にももちろんたくさんいますよ。普段お使いのアプリや PC ソフトの会社を思い浮かべてみてください。