プログラマーの仕事内容とやりがい、年収相場、必要スキル

コンピュータを駆使し、様々なサービスを構築、提供するITエンジニア(プログラマー)。

本記事では、SI業界とWeb・ゲームアプリ業界のプログラマーについて、仕事内容や年収相場、必要なスキル、やりがいと大変なところを紹介します。

業界ごとのプログラマーの業務

プログラマーは業界ごとに業務内容が異なります。

簡単に業界ごとのプログラマーの仕事内容をまとめると下記のようになります。

  • Webプログラマー
    Webサービス(ECやSNS等)のフロントエンド開発やサーバー構築
  • ゲームプログラマー
    ブラウザやスマートフォンのオンラインゲームなど。アプリ開発やサーバー構築
  • オープン、オンライン系
    ネットワーク上でWeb関連のシステムを開発する。サーバー構築など。
  • 組み込み系、制御系プログラマー
    家電製品やテレビ、スマートフォンなど機械を制御するプログラム開発
  • パッケージアプリケーション系
    PCで使用するアプリケーションなどの開発
  • 社内SE系
    社内インフラ等のシステム開発。自社システム開発を行う。自社内でプログラミングをする場合もあれば、外注企業への発注ディレクションを行う場合も。
  • SI業界のプログラマー
    顧客企業への社内インフラなどのシステム開発。SEのディレクションの元、プログラミングを行う。
  • 設備制御系プログラマー
    交通機関、工場、研究室といった、設備に関する制御など
  • 汎用系プログラマー
    クレジットカード、金融機関のシステムで使われるメインフレームの開発など
  • 通信系プログラマー
    ルーターやモデムといったネットワーク機器など通信機器関連の開発

ここでは例として、SI業界プログラマーとゲーム系プログラマーの仕事内容について詳しく解説します。

SI業界のITプログラマーの仕事内容

SIとは、System Integrator の略で、顧客の要望に合わせ、ハードウェアからソフトウェアまで、様々なシステムを組み合わせて一つの業務システムを作り上げる仕事のことです。

例えば、今は生活になくてはならない存在となった、携帯電話。携帯電話は、当然携帯電話だけがあれば繋がるわけではなく、携帯電話同士をつなげるシステムが必要になります。

携帯電話の電波を送受信する基地局、複数の基地局を統合して、他の基地局につなげる交換局、交換局同士をつなげるネットワーク、各所にある基地局、交換局を管理、メンテナンスするためのシステムなど・・・。

普段何気なく使っている携帯電話ですが、全国、全世界に設置されたコンピュータと通信網によって、実現されている訳ですね。

電話通信システムを提供する業務自体、SI業と言って良い訳ですが、関わって働く人たちの仕事内容は実に様々です。

会社やプロジェクトによって異なる場合もありますが、一般的にSI業のプロジェクトに関わる職種と業務内容を見てみます。

  • ネットワークエンジニア
    • 基地局や交換局にあるサーバーや周辺ネットワーク機器、管理用端末の設置をする仕事
    • 電源やネットワークケーブルを接続し、施工する仕事
    • 設置されたネットワーク機器や、サーバーマシンなどの設定をし、実際に稼働させる仕事
  • プログラマー
    • 設置した機器がシステム上でどのように動くのかを決めるプログラムをコーディングしていく
  • テストエンジニア
    • 実際に運用開始させる前に、試験を行う
  • SE(システムエンジニア)
    • 上記のような業務を取りまとめてスケジュール管理や顧客対応を行う

ハードウェアからソフトウェアまで、多くの開発段階を経て、システムは運用開始に至ります。

ITプログラマーはその中でも、作りたいシステムの設計と仕様書を元に、実際にシステムが動くプログラムをコーディングしていく仕事になります。

SI業といっても、構築するシステム自体、多種多様です。例に挙げた電話通信システムもそうですし、WEBサービス、企業内で使う業務システムなど、どのようなサービスに興味があって作りたいのか、これも企業選択の大きな選択のポイントとなると思います。

もし、ソフトウェアやハードウェア自体を作りたいのでしたら、SI業ではなく、ソフトウェアやハードウェアの開発、製造の会社でITプログラマーとして働く道を選ぶべきでしょう。

ゲーム業界のプログラマーの仕事内容

ゲームプログラマーの仕事は、プログラマーの中でも、あこがれの1つではないでしょうか。

ゲームプログラマーは、一昔前までは、NintendoやSonyなどから発売されているゲーム機で動くゲームを作る仕事のことを主に指しました。

ですが、2010年頃からは、スマホやネットで動くゲームを作る仕事のことも指すようになってきました。

パズドラやモンスターストライクなどが特に有名な例で、GreeやDeNAなどを始めとしたソーシャルゲームを作る会社が大きな利益を上げてきました。

誰もが持っているスマホやパソコンのブラウザで無料プレイすることが出来るゲームのため、多くの人がプレイし、さらにゲーム内で課金が出来ることから、ヒット作が出ると非常に利益率の高いビジネスモデルとなっています。

その流れの中で、他業界からゲーム業界に入ってくる人も多く、高い技術力を持ったエンジニアが、常に求められています。

ゲームプログラマーの仕事は、以下のようなものがあります。

企画、仕様検討

ゲームを作るにあたって、はじめに企画・仕様を決めることになります。

会社にもよりますが、企画の段階から、エンジニアも関わる事が多いです。

プランナーの人が考えた仕様に対して、エンジニアの観点から、実現可能性や、かかる工数、必要な技術などの検討を行います。

ときには、企画そのものに対する提案も行うこともあります。

ゲーム自体のプログラミング

企画・仕様が固まったら、実際にゲーム自体を作ります。

といっても、最初はプロトタイプを作り、面白そうかどうかの判断を行いながら、修正を繰り返し、製品に近づけていくのが普通です。

最近のスマホゲームやWebブラウザゲームは、サーバーと通信をしながら動くものがほとんどです。

そういったゲームのプログラミングには大きく分けて、

  • クライアント
  • Webサーバー
  • リアルタイムサーバー

があり、それぞれ、次のような機能を持ちます。

クライアント:

スマートフォンアプリやPCやブラウザ上で動くプログラムで、主にゲーム画面の描画やユーザーの操作の受け付けを行うプログラムです。

使う言語としては、UnityやUnreal Engine、Cocosなどの、ゲームエンジン言語を使うことが多いでしょう。

Webサーバー:

ゲームの仕組みの中でも、リアルタイム性が求められない部分のプログラムです。(ガチャを引く、武器を装備する、ログイン管理をする、ゲームの進捗を保存するなど)

使うプログラミング言語としては、PHPやRuby、Javaが挙げられます。

リアルタイムサーバー:

多数のクライアントと通信し、ゲームの仕組み自体を動かすプログラムです。

プレイヤー同士をオンラインでつなぎ、リアルタイムに情報のやり取りをし、ゲームの進行を司ります。

使う技術としては、Linux上でC/C++言語で開発する事が多いでしょう。

ツールの作成

ゲームを動かすための様々なデータを、社内の人が作るためのツールを作成するのも、エンジニアの仕事です。

データを作成するのは、プランナーやゲームデザイナーです。

基本的にプログラミングの知識がない(ある人も多いですが)人たち向けに、ゲームをつくるための使いやすいツールを作成します。

使う技術としては、プランナー向けツールであれば、ExcelVBAが多いかもしれません。

他には、シェルスクリプトなどが挙げられます。

ブラウザ上で操作できるツールである要件がある場合には、PHPを使うこともあります。

デザイナー向けツールは、クライアント開発で使っている環境を使う場合が多い様です。

デバッグ

プログラムにはバグ(不具合)が付き物です。

リリース前にデバッグチームが発見したバグを解析し、バグの原因となっているコードを改修して取り除く仕事です。

ちなみにデバッグチームは、テストエンジニアが取りまとめるQA(Quality Assurance)チームとしてデバッグを含んだ品質管理を取りまとめている企業もあります。

インフラ構築

前述の通り、最近のスマホやWebのゲームの多くは、サーバーと通信をしながら動きます。

そのサーバーサイドのプログラムが動く環境を構築する仕事です。

サーバーマシンを用意し、セットアップし、デプロイ環境(作ったプログラムをたくさんのマシンに配信する機能)を作ります。

また、サーバーに何か問題が起こった場合に警告する、様々な監視ツールを立ち上げるのも、インフラ担当の仕事です。

Linuxサーバーを用いる事が多いので、Linuxの知識やネットワークの知識は必須と言えます。

また最近では、AWS(Amazon Web Service)のサーバーを使うプロジェクトも多く、それらの知識が必要(入社後に学ぶことも)となることもあります。

Webサイトの構築

多くの場合、ゲーム本体とは別に、ゲームのWebサイトも作成します。

Webサイトでは、ゲームの紹介、運営からのお知らせや、ゲームアプリへのリンク(スマートフォンの場合)、ゲーム起動ボタン(PCの場合)、ユーザーのコミュニケーションの場所(チャットや掲示板)などを設置します。

使う技術としては、バックエンドならRubyやPHP、Java。

フロントエンドなら、HTML/CSS/JavaScriptになるでしょう。

※バックエンド、フロントエンドについては後述

プログラマーの年収相場

以下の表は、大手転職支援サイトが作成した、職種別の年収ランキングの一部です。

各業種ごとのプログラマーを抜き出しました。

[業種別平均年収ランキング(全316職種)]

順位職種平均年収
1システムアナリスト1,100万円
2システムエンジニア964万円
3コンサルタント(経営戦略)915万円
4不動産営業870万円
5コンサルタント(経営戦略)836万円
48
プログラマー
(ゲーム・アミューズメント系)
591万円
96プログラマー
(制御系)
543万円
131プログラマー
(WEBサイト・インターネットサービス系)
519万円
151プログラマー
(WEB・オープン・モバイル系)
511万円
176プログラマー
(パッケージソフト・ミドルウェア)
492万円
273プログラマー
(汎用機系)
425万円
315パタンナー・縫製300万円
315その他保育関連職300万円

調査対象:2016年4月1日〜2017年3月31日の期間中にマイナビ転職に掲載された求人の「モデル年収例」から平均値を算出
出典:「2017年版 職種別 モデル年収平均ランキング」(マイナビ)

400万円〜500万円台が全ランキングの約80%を占める結果となっていますので、プログラマーの年収相場は平均から少し高いくらいと考えられます。

ただ、汎用機系やパッケージソフト、Web系など業種業界と扱うシステムによって、仕事の難易度や平均年収に大きく差がある職種でもあります。

ゲームプログラマーはプログラマーの中でも年収相場がかなり高いです。

これには、近年スマホゲームやネットゲームの市場が盛んで、求人市場が加熱していることが一因として考えられます。

汎用機系プログラマーは、利用するコンピュータが大型汎用機で、代表的なものは金融機関の勘定・財務システムがそれに当たります。非常に大きなプロジェクトを大人数で行うケースで、プログラマー1人あたりの責任範囲が大きくないことが多いため、年収相場が比較的低くなっているようです。

制御系プログラマーは、駅の自動改札機や切符の自動販売機などで、SI業界のプログラマーが多いでしょう。

バックエンドエンジニアとフロントエンドエンジニアの違い

主にWeb業界での用語で、バックエンド、フロントエンドという言葉があります。

バックエンドとは、サーバー、データベース、ネットワークシステムなど、目に見えない裏側で動くシステムの事です。

フロントエンドとは、Webページやスマホアプリなどの、ユーザーの操作を直接受け付けて、反応を描画するような目に見える部分のシステムの事です。

プログラマーの仕事の楽しいところ、やりがいとは?

SEなら、そのシステムを提供することで、顧客に喜んでもらえる事が楽しみの一つと言えるでしょう。

ITプログラマーの一番のやりがいは、苦労して作ったプログラムが実際に動くことに、大きな達成感が得られます。

実際に自分の仕事が、完成するゲームなりシステムの一部の機能として動くので、モノづくりをしている実感が得られます。

さらにそのプログラムが、顧客に喜んでもらえることにとてもやりがいを感じられるでしょう。

特にゲーム業界であれば、ユーザーの声を直接、ネットの掲示板などで見ることができます。

ユーザーが楽しんでくれているコメントを見れば、仕事の励みになるでしょう。(逆に非難されてしまう事もありますが・・・)

プログラマーの大変なところ

一方で、プログラマーの仕事で大変なところは何があるでしょうか。

プログラムの問題が中々解決できない時

開発の途中やデバッグの段階などで、プログラムが意図したように動かないケースは毎日のようにあります。

そういった問題にぶつかった時に、経験を積むほどすぐに解決出来るようになるのですが、経験が浅いプログラマーだったり、慣れない言語や開発環境だとハマって解決出来ず、時間だけが過ぎていくこともしばしばあります。

そういった時は、なかなか苦しいもので、特に締切がせまっていたり時間に余裕が無いと焦ってしまい、ストレスになります。

メンテナンスは夜間

現在のITサービスのほとんどは、24時間稼働しています。

よって、サービスを止めないといけない様な作業がある場合は、サービスを利用する人が少ない、夜間に作業を行うケースが多いです。

ブラック企業でなければ代休をとることも可能ですが、徹夜が苦手な人には向いていないかもしれません。

ちょっとしたミスが大きな問題に!?

ITシステムは、非常に効率よく動く様にできている分、ちょっと間違うと、大きな問題となる場合もあります。

プログラムやシステム操作のちょっとしたケアレスミスが、サービス全体を停止させてしまい、復旧に大きな時間がかかることもあります。

例えば2017年11月にバンダイナムコがアカツキと共同で運営するスマートフォン向けソーシャルゲーム「ドラゴンボール ドッカンバトル」では、ゲームのソースコード上での不具合で、ガチャが運営の意図していない確率となっていたことで、問題になりました。

 スマートフォン向けソーシャルゲーム「ドラゴンボール ドッカンバトル」の「ガシャ」(ガチャ)で、出現するキャラクターの表示がユーザーごとに異なっていたことが判明し、「運営側がガチャの確率をユーザーごとに操作していたのでは」との疑惑が上がっていた。

運営元は11月16日、「実際のガチャ提供割合は、全ユーザー共通だったが、表示上の不具合が起きていた」と説明し、疑惑を否定。さらに、不具合があったプログラムのソースコードを開示し、どのようなミスだったかを説明した。

ソシャゲ不具合の原因、ソースコード開示して説明 「詫びソースコードとは斬新」と話題に

このように、ちょっとしたソースコード上のミスで、ユーザーからの信頼を大きく失ってしまったり、ゲームの売上に大きな損失を与えてしまうことも有りえます。

よって、細心の注意を払ってあらゆるケースを想定しながら、プログラムを作成することが大事になってきます。

ITエンジニア、プログラマーに向いているのはこんな人

ITエンジニアに向いている人とは、どんな人でしょうか。

まず、当然ですが、コンピュータやインターネットの世界が好きであることが大事です。

日々、凄いスピードで進化していくIT業界に、常に利用者として、プロとして触れて学んでいくことが求められます。

常に勉強する意欲を持ち、新しいことにチャレンジしたいという気持ちのある人には、向いているといえるでしょう。

そして、コミュニケーション能力が高い事が求められます。

なぜなら、仕事はエンジニアが画面に向かってプログラミングをするだけでは完結しないので、エンジニアでない人とも話す必要があります。

エンジニアが、非エンジニアの人に何かを伝える場合、コンピュータの世界の話を人間の言葉で説明しないといけないのです。

逆に、非エンジニアの人の言っていることを、プログラムの世界でどう実現するかを考えるためには、相手の言っている意図を上手に読み取る力が必要になります。

最後に

本稿では、SI業界、ゲーム業界のエンジニアの仕事内容について紹介しました。

エンジニアの仕事は大変ですが、力をつければつけるほど、新しい価値を創造できる、やりがいのある仕事です。

ここで紹介した内容が、少しでもITエンジニアに興味のある方の助けになれば、幸いです。