プログラマー(PG)とはどんな仕事?5大PG職の必要スキル・言語、キャリアについて徹底解説!

プログラマーはエンジニア関連職種のスタートに位置付けられる職種です。このページの読者の多くは若手エンジニアかもしれません。これからエンジニアにチャレンジするという人も多いでしょう。

そこでこのページでは、「プログラマー」という仕事の役割や種類、求められるスキルのほか、キャリアアップの指針についても解説しています。エンジニアとしてステップアップするための一助として、ぜひ参考にしてください。

プログラマーとはどんな仕事?エンジニア、SE(システムエンジニア)との違いは?

プログラマーとは、さまざまなプログラミング言語を用いてシステムやアプリケーションの開発、つまりプログラミングをする仕事です。あらゆるビジネス、サービスのデジタル化が進展する昨今、非常に需要が高まっている職種であり、世の中に欠かすことができない仕事の1つといえます。

しかし、いざ就職活動、転職活動の際にプログラマーの仕事を探そうとすると求人数は多くありません。実は近年、「プログラマー」という言葉が「エンジニア」という言葉に置き換わってきているからです。とはいえ、必ずしも「プログラマー=エンジニア」というわけではありません。そこでまずはプログラマーがエンジニアという職種の中でどのように位置づけられているのか、その仕事内容について詳しく見ていきましょう。

エンジニア職種の中でのプログラマーの位置づけ

社会生活自体がデジタル化を遂げる中で、そこで必要となるシステムやアプリケーションの開発・運用に携わる仕事は急速に拡大していきました。現在、このような仕事に携わる人を「ITエンジニア」、または単に「エンジニア」と呼ぶのが一般的です。

そして、エンジニアの人口や関与する領域が拡大すると共に、エンジニアの呼び方も細分化されていきます。「フロントエンドエンジニア」「サーバーサイドエンジニア」「アプリケーションエンジニア」などといった名前を目にしたことがある人も多いのではないでしょうか。これらはエンジニアを、「何の」開発・運用に携わるかという軸で分類した際の呼び名です。

一方、システム・アプリケーション開発の規模拡大、複雑化を背景に、エンジニアとして「どのように」開発・運用に携わるかという軸での分類も生まれました。それが「PM(プロジェクトマネージャー)」「SE(システムエンジニア)」、そして「プログラマー」といった分け方。このような業務領域によるエンジニアの分類は下の図のように表されるのが一般的です。

図を見るとわかる通り、プログラマーはシステム・アプリケーションのプログラミングそのものを主な役割としています。多様なシステム・アプリケーションの開発を最前線で支えるエンジニアがプログラマーであるといえるでしょう。

業務領域によるエンジニアの分類

プログラマーとSEはどう違う?

ここでさらにプログラマーが携わる仕事について詳しく見ていきましょう。上の図の分類のうちPMとPL(プロジェクトリーダー)は、管理者としての色合いが強い仕事。一方で、システム・アプリケーション開発の主役はSEとプログラマーであるといえます。そこで、開発実務におけるSEとプログラマーの仕事内容を図にまとめました。

プログラマーとSEの仕事内容の違い

1要件定義/要求分析 システム開発の依頼者がどのような機能を求めているかをヒアリングし、必要なシステムを検討する。
2設計 システムをどのように実装するかを検討する。システム全体やUIを設計する「外部設計」、システム内の実装方法を設計する「内部設計」「プログラム設計」に大別される。
3プログラミング 設計に基づいてプログラミング言語を用い、プログラミングを行う。
4テスト 設計通りにプログラムが動作するかを検証する。テストの粒度・フェーズに応じて、「単体テスト」「結合テスト」「システムテスト」「運用テスト」といった形に分類される。
5リリース/納品 テストが完了したシステムをユーザーに対して公開、もしくは発注元に対して納品する。
6保守/運用 リリース/納品したシステムについて、正常な稼働の維持、必要に応じた改修を継続的にサポートする。

システム・アプリケーションの開発は、「1要件定義/要求分析」「2設計」「3プログラミング」「4テスト」「5リリース/納品」「6保守/運用」の6工程で表されるのが一般的。水が流れるように順番に工程を進める(ウォーターフォール型)ケースが多いため、開発当初に必要となる要件定義や設計を上流工程、プログラミングやテスト、保守/運用などを下流工程と呼ぶのが通常です。

このうちプログラマーが主に担当するのは、「3プログラミング」と「4テスト」の工程です。設計通りにプログラムを書き、その動作に責任を持つのがプログラマーと捉えるのがいいでしょう。

なお、システム・アプリケーションは複数のプログラムの組み合わせによって構築されているため、テストには粒度やフェーズに応じていくつかの種類があります。プログラム単体(モジュール)の動作検証をするテストを「単体テスト」、関係性の深いいくつかのプログラムを組み合わせて動作検証するテストを「結合テスト」、システム全体のテストを「システムテスト」、実際にユーザーが使用する環境でのテストを「運用テスト」と呼び、これらのテストを高い精度で実施することもプログラマーの重要な仕事の1つです。

SEはプログラマーが作業に入る前の上流工程である、システム・アプリケーションの「1要件定義/要求分析」、「2設計」を主に担当します。また、自身が上流工程に携わったシステム・アプリケーションの「5リリース/納品」や「6保守/運用」も業務領域としていることが多いようです。企業やプロジェクトによって異なりますが、プログラミングやテストをSEが実施することもあります。

プログラマーの種類と求められるスキル・知見

ここまでの解説で「プログラマーとはどんな仕事なのか」については把握できたことでしょう。しかし、それだけではプログラマーという仕事を深く理解できたとはいえません。ひとくちにプログラマーといっても、所属する企業、携わるサービスによって開発するシステム・アプリケーションは異なり、仕事内容や必要となるスキル・知見にも大きな差があるからです。

以降では、「どんなシステム・アプリケーションに携わるのか」という観点でプログラマーをさらに細かく分類し、詳しく解説していきます。なお、本ページでの分類はあくまで一般的な定義であり、企業によって言葉の使い方が異なることがあります。

Web系プログラマー

Web系プログラマーは、文字通りWeb上で動作するシステムやアプリケーション(Webアプリケーション)の開発・運用に携わるプログラマーです。一般向けのものであれば、オンライン決済、eメールの送受信、動画配信、オンラインストレージ、SNSなどといったシステム・アプリケーションの開発がその代表例。企業向けのものであれば、SaaSと呼ばれる企業が提供するような、人材管理ツール、マーケティングツール、会計管理ツールの開発・運用などが当てはまります。

また、ユーザーが直接触れるシステム・アプリケーションを動作させるために必要な、サーバー、インフラ環境、データベースの開発・運用を担当するプログラマーもWeb系プログラマーの一種です。Webアプリケーションに係るプログラマーはすべてWeb系プログラマーに分類されると考えていいでしょう。

Web系プログラマーの特色の1つとして挙げられるのが、求められるスキル・知見の幅広さです。Webアプリケーションそのものの開発を専門領域としているプログラマーでも、そのアプリケーションがアップロードされているサーバーについて一定の理解がなければ、適切なプログラミングが行えません。また、そのツールや機能がWebサイト上で提供されるものであれば、Webサイト構築に関する技術やデザインについての理解も必要になります。

さらに現在は、開発業務の効率化のために「React」「Vue.js」「Ruby on Rails」といった、開発環境・フレームワークに対するスキルが強く求められています。そのほか、「Web上で動作する=インターネットの通信に依存する」ということでもあるので、通信環境やネットワークにかかわる知見を求められることもあるでしょう。

なお、Webサイトそのものの構築に携わるエンジニアである「フロントエンドエンジニア」「マークアップエンジニア」「コーダー」といった職種もありますが、これらの仕事はプログラマーという言葉で表現されるケースは少ないようです。

Web系プログラマーが使用する主な言語

Webアプリケーション系 JavaScript/TypeScript/PHP/Python/Ruby/Go
サーバー、インフラ系 PHP/Ruby/Perl/Python/Go/Java/JavaScript

アプリケーション系プログラマー

アプリケーション系プログラマーは、PCやスマートフォン、タブレットなどのモバイル端末にインストールして使用するシステム・アプリケーション(ネイティブアプリ)の開発・運用に携わるプログラマーです。PC向けならオフィスアプリ、画像・動画編集アプリ、業務システム、モバイル向けならSNSアプリ、ショッピングアプリなどを思い浮かべると、開発領域のイメージがしやすいでしょう。

なお、前述したWeb系プログラマーや後述するゲーム系プログラマーなども広い意味ではアプリケーションプログラマーに当てはまるのですが、使用する言語や必要とするスキルが異なるため、ここではネイティブアプリにかかわるプログラマーをアプリケーションプログラマーとして区別しています。

プログラミング技術に加えて、アプリケーション系プログラマーに強く求められるのは、アプリケーションの動作環境となるOSに対する知見です。PC用のOSであれば、Windows、Mac OS、UNIXなどがその代表例。モバイル用はiOSとAndroidが主要なOSです。OSによって使用できる言語が異なるほか、それぞれに個別の技術仕様があるため、OSに合わせたプログラミングが必要になるのです。

また、Webアプリケーションの開発と同様に、ネイティブアプリにおいても開発業務の効率化が至上命題となっており、特にモバイル用アプリケーションではフレームワークの採用が急速に進んでいます。「React Native」「Flutter」のようなメジャーなフレームワークを使いこなせることが、就職、転職時に有利に働くケースが少なくありません。

アプリケーション系プログラマーが使用する主な言語

PC C/C++/C#/Java/VB.NET/Python/Ruby
iOS Swift/Objective-C
Android Kotlin/Java

ゲーム系プログラマー

ひと昔前まで、ゲームといえばゲーム専用機(コンシューマーゲーム)で楽しむのが通常でした。しかし、近年はゲーム専用機だけでなく、PCやモバイル端末でゲームをプレイする機会が増えています。これらさまざまな動作環境に対応するゲームを開発するのが、「ゲーム系プログラマー」です。特にスマートフォン向けゲームのプレイヤーが爆発的に増大しており、ゲーム系プログラマーの需要は高まり続けています。

ゲーム系プログラマーについて理解する際のポイントとなるのが、そのゲームの動作環境に合わせた言語やスキルが必要になるという点です。たとえばコンシューマー向けであれば、「C#」や「C++」が主流。モバイル向けゲームを開発するなら、「Swift」「Java」といった言語を使いこなす必要があります。

また、近年のゲーム開発において欠かせない存在になっているのが「ゲームエンジン」と呼ばれる開発環境です。特に「Unity」「UnrealEngine」は、多くのゲーム開発に採用されており、ゲーム系プログラマーとして働いていくためには確実に身に付けておくべきスキルの1つとなっています。

ゲーム系プログラマーが使用する主な言語

コンシューマーゲーム・PCゲーム C++/C#/JavaScript
モバイルゲーム Swift/Objective-C/Kotlin/Java

制御・組み込み系プログラマー

現在、テレビや冷蔵庫といった家電から、自動車にオートバイ、工場で使用される産業用ロボットまで、あらゆる機械にコンピューターが搭載され、電子的にコントロールされています。これらの機械に搭載されているコンピューター上で稼働し、機械の動きを制御するためのシステムやプログラムを開発するのが「制御・組み込み系プログラマー」という仕事です。

ここまで紹介してきたプログラマーの仕事と制御・組み込み系プログラマーの仕事が大きく異なるのは、機械(ハードウェア)というリアルな物体を動かすためのシステム・プログラム開発であるということ。そのため、あらゆる開発要件が機械そのものの設計に大きく左右されることになります。機械設計についての一定の知見が必要になるということです。

また、エラーや誤動作を起こさないプログラミングが非常に重要視されるのも特徴です。これは、エラーや誤動作が大きな事故に直結する可能性が高いからです。「自動車のブレーキ制御が何らかのエラーで機能しなくなってしまったら……」と考えると、どれだけ高いプログラミングの精度が求められるかが理解できるでしょう。

制御・組み込み系プログラマーが使用する主な言語

主に使用する言語 C/C++/Java/アセンブリ言語

汎用系プログラマー

汎用機(メインフレーム)と呼ばれる大型・高性能コンピューターに搭載されるシステム・アプリケーションの開発・運用を担当するのが「汎用系プログラマー」という仕事です。汎用機は大規模かつ高速性や堅牢性、そして専門性が求められるシステムを搭載する際に使用されるケースが多く、たとえば金融機関の基幹システムの開発、大手メーカーの生産管理システムの開発などが、汎用系プログラマーが活躍する場となります。

開発するシステムが専門的であるほか、システムが搭載される汎用機自体が個別に独自設計されることが多いため、環境構築からシステム設計、プログラミング、運用まで一貫して行う必要があるのがこの仕事の特徴です。ほかのプログラマーに比べて、長期間のプロジェクトに携わる機会が多いでしょう。

汎用系アプリケーションエンジニアが使用する言語と必要なスキル・知見

主に使用する言語 COBOL/FORTRAN/Java/C

プログラマーのキャリアパスの選択肢

このページのはじめに解説した通り、プログラマーは開発現場の最前線で働く仕事であり、エンジニア職種のスタートという位置づけをされています。そこでここからは、プログラマーがいかにキャリアップを実現していくのかについて、一般的なキャリアパスに対する考え方を交えながら紹介していきます。

一般的なプログラマーのキャリアパスと求められるスキル

現状、プログラマーの一般的なキャリアパスは、比較的、シンプルに描くことができます。「業務領域によるエンジニアの分類」で示した図の、現場から管理側へという形のステップアップを用意している企業が多いからです。プログラマーからSEへ、SEからPL/PMへと、順番にキャリアを形成していくイメージを持つのがいいでしょう。さらに上の段階に進むとCTOやVPoEといった一般的なエンジニア職とは一線を画す、経営に踏み込んだ役職も用意されています。

もし、企業に属しながらエンジニアとしてのキャリアを形成したいのなら、より上位の職種の役割や必要とされるスキルを意識しながら業務に向き合うのがおすすめです。プログラマー、SE、PL/PM、CTO、VPoEの役割や求められるスキルを下記の図にまとめたので、チェックしてみてください。

一般的なプログラマーのキャリアパス

スペシャリスト志向なら一生現場に携わる道も

プログラマーの中には、開発実務が好きで管理・マネジメント業務ではなく、一生現場でプログラミングを続けたいと考える人も少なくありません。そこで近年、多くの企業が取り入れているのが、いわゆる「スペシャリストコース」でのキャリア形成です。技術力の高さが給与に反映される仕組みになっているのが通常で、プログラミングの腕を存分に振るいながら、働き続けることができます。

また、現場に携わるという意味では、フリーランスという選択肢もあります。1つの企業に属するよりも、多様なシステム開発に携われる可能性があり、開発時の裁量が大きくなるかもしれません。プロジェクトへの関わり方、仕事量によっては報酬も大きくなるので、技術力に自信があるのであれば、非常に魅力的なキャリアの1つといえます。

ただし注意が必要なのは、スペシャリストとして現場で働き続けるには、他者よりも高い技術力・スキルを維持し続けなければならないという点です。自身で勉強することはもちろん、エンジニアコミュニティに参加して情報収集をしたり、ゼロベースでのシステム開発にチャレンジしたりするなど、自己研鑽を続ける姿勢が欠かせません。

ゲーム系プログラマーは企画職への転身も多い

ゲーム系プログラマーにおいては、一般的なエンジニア職のキャリアアップに加えて、企画職へのキャリアチェンジを実現する人も珍しくありません。「ゲームディレクター」「ゲームプランナー」「ゲームプロデューサー」といった職種への転身です。

企画職に求められるのは、「面白い」を発想できる思考力に加えて、ユーザーや世の中が「何を求めているか」を的確につかみ取るマーケティングスキルです。他社のゲームやテクノロジーの進歩、世の中の流行にも目を向ける努力を惜しまないことが、ゲーム業界での活躍の幅を広げるきっかけとなるでしょう。

売り手市場だからこそ注意が必要なプログラマーの転職

エンジニア職へのニーズが高まり続けている昨今、そのスタート職種であるプログラマーに対する求人は世の中にあふれています(前述した通り、プログラマーという名称ではなく、エンジニアという名称での求人が多い)。プログラミングの経験さえあれば転職先に困ることはないでしょう。未経験からのチャレンジだったとしても、プログラミング言語など、業務に必要なスキルを身につけられていれば、ハードルはさほど高くありません。しかし、だからこそ注意すべき点もいくつかあります。

高すぎる年収に飛びつかないこと

世の中全体のエンジニア不足を背景として、多くの企業が高額な年収で人材募集をしています。自身の現在の収入と比べて、驚くほど高い年収提示をしている求人を見かけるケースも少なくないのではないでしょうか。もちろんそういった企業に入社し、大きな収入を得て働くことが悪いわけではありません。

しかし忘れてはならないのが、提示されている年収は人材に対する企業の期待値であるということです。入社後にはその年収に見合うだけの成果を求められます。自身のスキルと企業の期待値に乖離があると、ハードワークや大きなプレッシャーの中での仕事を強いられる可能性も否定できません。現状のスキルや希望する働き方を見極めたうえで、企業選びをすることが大切です

求人票の情報だけをうのみにしないこと

求人票の記載事項に嘘があるわけではないのですが、実態と比較したときに必ずしも正確とは言い切れないケースは珍しくありません。求人票は、人材募集をしている企業の魅力を伝えるものでもあるからです。

たとえば、社内での勉強会開催など、日頃からスキルアップできる環境に魅力を感じ入社したものの、実際には通常業務が忙しく、そういった勉強会の開催頻度は多くないといったことがあるかもしれません。また、「自由な社風」とはいえ、勤務中の服装に制限があるなどイメージしていたものとは異なるケースもあるでしょう。

このような入社前後のギャップを回避するためには、面接や内定後面談でのコミュニケーションが重要です特に内定後面談では、自分が企業を選ぶのだという視点を持ち、気になることや不安点を一つひとつ確認するようにしましょう

安易な転職を繰り返さないこと

もしかしたら「エンジニアは転職を繰り返すのが当たり前。転職回数が多くても選考に影響はない」と考えている人も多いかもしれませんが、これは正確ではありません。確かに技術職の場合、転職回数の多さがネガティブに働く度合いが少ないのは事実です。しかし、あまりにも短期間で転職を繰り返している人に対しては、一定のマイナス評価が下される可能性はあります。

1人の人間を採用するだけでも、企業は多大なコストを支払っています。長く勤めてくれる人でなければそのコストを回収できないのです。特に人事部門でのチェックが厳しくなることが多いので、安易に転職回数を増やさないように注意しましょう

転職活動の成功にはプロの手を借りるのもおすすめ

プログラマーの転職における代表的な注意点を3つ紹介しました。実は紹介した注意点には共通点があります。それは、「1人きりで転職活動をすると失敗のリスクが高まる」ということです。

自分の市場価値を知らなければ、年収とスキルのミスマッチが起きてしまうかもしれません。「面接・面談を通して職場の実態を確かめるべき」といわれても、相手に悪い印象を与えてしまうかもしれないという不安から遠慮がちになってしまうのが実際のところでしょう。

そこで活用したいのが、転職エージェントによる転職支援サービスです。マイナビクリエイターでは、プログラマーをはじめとしたエンジニア職、WebデザイナーWebディレクターといったクリエイター職に特化した転職支援サービスを行っています。経験豊富なキャリアドバイザーが在籍しているので、適切なアドバイスを受けながら転職活動を進めることができるでしょう。企業に直接、質問しづらいことについては、キャリアドバイザー経由で確認をすることも可能です。

完全無料のサービスで、サービス登録後に必ず転職をしなければならないというわけでもありません。少しでも「どこかいい会社がないかな」と思ったときには気軽に利用してみるといいでしょう。プログラマー、エンジニアとしての新たな可能性がきっと見つかるはずです。

サービスに関するお問い合わせ

マイナビクリエイター事務局
受付時間 9:15〜17:45

サービスに関してご不明な点がありましたら、マイナビクリエイター事務局までご連絡ください。