副業やフリーランスが増えてきた昨今、プログラマーという働き方に興味を持つ人は増えています。
しかし「プログラマーって何をする人なの?」「プログラマーって稼げるの?」と疑問を持つ人は多いのではないでしょうか。
当記事では、「プログラマーとは何か」の疑問にお答えするため、具体的な仕事内容や制作物、プログラマーの働き方について解説します。
必要なスキルや年収についても触れますので、この記事でプログラマー全般のことを知ることができます。ぜひ参考にしてください。
目次
プログラマーとは、IT職の登竜門だ。
IT業界ではしばしば「プログラマーはITの登竜門だ」といわれます。なぜならプログラマーの仕事は経験の浅いでも携わりやすい下流の業務だからです。
下記にシステム開発の流れを示します。1~3が上流で、システムエンジニア(SE)の業務。一方4~6は下流で、プログラマー(PG)の業務になります。
- 要件定義(SE)
- 外部設計(SE)
- 内部設計(SE)
- プログラミング(PG)
- 各種テスト(PG)
- 修正・保守(PG)
ご覧の通り、プログラマーの作業はシステム開発の一部の作業です。まずは、プログラマーが担当する3つ業務について解説します。
【プログラミング】言語を書く
多くの人が想像しているとおり、プログラマーの仕事のメインはプログラミングです。プログラミングとは、仕様書にそって「コンピューターにどう処理してほしいか」をプログラム言語で指示することです。
Webシステムなら「ボタンをクリックしたら文字が出る」や、家電品なら「扉を開けたら電気がつく」などの動作は、プログラマーが記述した指示どおりの動きです。
以下では混乱を避ける意味でも、プログラミング関連でよく出てくる用語の定義を一部ご紹介します。
プログラム言語
コンピューターに適切な指示を送るための機械言語。アメリカ人と意思疎通したいなら「英語で話す」と同じこと。コンピューターはプログラミング言語で会話ができます。
開発するシステムによって、使われる言語の種類は変わります。
昨今の業務で言うと、PHP・Java・Ruby・C言語・PythonやGoなどをよく耳にします。
ちなみに、Webサイトのデザイン表現(文字の装飾など)に関わるHTML・CSSは、マークアップ言語といいプログラマーよりも「コーダー」という職業が扱う言語になります。
ソースコード
プログラム言語で記述したテキストを「ソースコード」といいます。システムは基本的に、ソースコードの上から順番に実行されていくもので、別の担当者が見てもわかりやすいように日本語のコメントも添えたりします。
1234567891011121314151617181920 <!--?phperror_reporting(E_ALL); //全てのエラーを報告するini_set('display_errors', 'On'); //画面にエラーを表示させるか// 1.ファイルが送信されていた場合if (!empty($_FILES)) {// A.フォームから送られたファイルを受信$file = $_FILES['image'];// B.メッセージ表示用と画像表示用の変数を用意$msg = ''; $img_path = '';// C.画像アップロードプログラム(外部のphpファイル)を読み込むinclude('upload.php');}?-->
フレームワーク
たとえばプログラム言語の一つであるRuby(ルビー)にはRuby on Railsというフレームワークが存在します。他の開発でよく使われる機能の組み方を、ある程度ルール化してまとめているものです。
ライブラリ
よく利用されるプログラムをひとまとめにしたもの。フレームワークと似ているが、フレームワークは工場の生産ラインで、ライブラリは生産ラインに設置されている機械のようなイメージです。どちらも効率よくシステム開発をするためのものです。
システムとプログラム
システムは「目的を果たすために作られる仕組みや装置そのもの」を意味する。プログラムは「仕組みや装置を目的通りに動かすための命令群」のこと。
フロントエンド・バックエンド
ユーザーが見たり操作したりする視覚的な開発をフロントエンド、データの保存や処理、出力など見えないサーバー側の開発をバックエンドと呼びます。
【各種テスト】修正箇所やバグを発見する
プログラミングを行ったあと、プログラムが正常に動くかどうかテストを行うのも、プログラマーの業務の一つです。
公開されたゲームソフトやOSなどで、後から不具合が見つかるケースありますよね。
じつは一発で正確なプログラムを組み上げるのは非常に難しいのです。だからこそテストが必要。常にトライ&エラーを繰り返して、少しずつ正常なプログラムに仕上げていきます。
代表的なテストは次のとおりです。
- 単体テスト:モジュール(1つのプログラム)が正常に動くかのテスト
- 結合テスト:モジュール同士を組み合わせて正常に動くかのテスト
- 総合テスト(システムテスト):すべてのモジュールとハードウェアを合わせた全体のテスト
- 運用テスト:ユーザーがシステム導入後の正常に動くかのテスト
プログラムのバグを見つける作業は「デバッグ」と呼びます。
ちなみに、未経験からプログラマー職になると、このテスト工程での採用となるケースが多いようです。求人では、プログラマーではなく「テスター」という職種で表記されています。
【修正保守】コードを修正する
たとえば「クリックしたら文字を表示する」という2つのプログラムがあったとしても、同じソースコードとは限りません。出力にいたるまでの記述内容が違う可能性があります。
もしプログラミング方法が煩雑になっていると、いざ修正や拡張作業が発生した時に対応が困難になります。そこでリファクタリングをします(リファクタリングとは動作結果を変えずに中身のソースコードだけを整理・改善すること)。
リファクタリングのメリットは次のとおりです。
- システムのメンテナンスしやすくなる
- 機能の追加・拡張しやすくなる
外からは改善内容がわからないと思いますが、リファクタリングは重要な作業です。
プログラマーが作る代表的なモノ7種あげてみた。
「プログラマーといえばプログラミング作業」とは聞くものの、「具体的にプログラマーって何を作っているの?」と疑問を持つ人もいるのではないでしょうか。
プログラマーは、企業のシステム・家電・スマホアプリなど、あらゆる製品に関わっています。実際にプログラマーが作っているものについて、順番にご紹介します。
①アプリケーション各種(Webアプリ・スマホアプリなど)
こうしたアプリケーションの開発に携わるプログラマーは、アプリケーションプログラマーと呼ばれます。使用言語はアプリの対応デバイスによっても異なりますが、Java・C#・Kotlin・Python・Swiftなどです。
Webサイト上で動くアプリや、パソコン・スマートフォン(iPhone・Android)にダウンロードして操作するアプリも、すべてプログラミングを経て作成しています。
身近で大きなアプリといえば、KindleやTwitter、Facebookなどです。Web上で起動するクラウド型の会計ソフトやタイピングソフトも入ります。
②AI・ロボット開発
AIを扱うプログラマーになるには、機械学習やディープラーニング、数学分野の知識など高い専門性が必要です。逆にいえば希少性高いプログラマーになるチャンスともいえます。使用言語はPython・Juliaなどです。
実際にIT調査会社IDC Japan株式会社の調査によると、国内AIシステム市場は、2020年に前年比43.2%増の1,172億1,200万円、2024年には295.1%増の3,458億8,600万円になると予想されています(2020年3月末時点での新型コロナウイルスの影響も考慮)。
人工知能や学習型ロボットに注目が集まっている中、AIやロボットに関するプログラミングの需要も上がりつつあります。
③Webサイト
Webサイトに関わる人はWeb系プログラマーと呼ばれます。フロントエンド側の使用言語はHTMLやCSSなどのマークアップ言語を含む、PHP・Ruby・JavaScript、バックエンド側はJava・C++・Pythonなどです。
ECサイト(自社の商品やサービスなどを販売するオリジナルのサイト)やSNSなどのWebサイトに関わるものも、プログラミングによって制作されています。Amazonや楽天市場のWebシステム、Web上で動くアニメーション、サーバーなどです。
④IoT家電
IoTとはinternet・of・Thingsの略で、「モノのインターネット」を意味します。さまざまなモノとインターネットを接続して情報収集、収集したデータをもとに、私たちにとって最適なフィードバックを返してくれる、というシステムです。
家電の制御装置などは組み込み系プログラマーの担当です。使用言語は、主にPython・C言語・Javaなどです。
身近なものであれば、家電を遠隔操作したり、スマートフォンをリモコンの代わりにしたりするための技術で使われました。この分野のプログラミングも今後伸びると予想されます。またそれに伴い、家電自体の制御装置やセンサーの需要も高くなるとの推測もできます。
⑤ゲーム開発
ゲーム開発を主にするプログラマーはゲーム系プログラマーです。使用言語はC++・C#・Java・PHPなどです。
多くの人たちに愛されるテレビやスマートフォンのゲームも、プログラミングによって作られています。アプリケーションとは異なり、ゲームのプログラミングはキャラクターの動きだったり場面転換だったりなど、ゲーム内のシステムの制作に携わります。
⑥通信機器(Wi-Fiやテレビ会議システム)
ネットワーク周りのWi-Fi関係や、テレビ会議システムなども、プログラミングを経て制作されています。コンピューター同士のデータの送受信に関係するシステムであるため、さまざまな分野で技術の応用ができます。
携帯デバイスの進化や5Gの通信環境など、まだまだ需要が伸びていく分野です。
通信系の開発を行うのは通信系プログラマーと呼ばれます。使用言語はC言語・C++・Javaなどです。
⑦汎用機・ホストコンピューター
汎用機・ホストコンピューターとは、あらゆる処理を一括で処理できる高性能なシステムです。メインフレームとも呼ばれます。こうしたシステムの開発にもプログラミングが関わっています。
保険や金融、さらには政府データなどの重大かつ大量のデータの保管・処理を行うための機械で、建物のワンフロアを占めるほどの巨大な本体になることも。
こうしたシステム開発は汎用系プログラマーの仕事です。使用言語はCOBOL・C++・Javaなどです。
エンジニアはプログラマーより難易度が高い
よく混同されがちなエンジニアとプログラマーという仕事ですが、厳密には違います。元々エンジニアの意味は「機械・電気・土木・建築などの技術者。技師」です。大筋の意味は、開発するシステムの全体を設計・総括する仕事といえます。
冒頭でも述べたように、プログラマーの仕事はあくまで「エンジニアの業務の一部」と考えるとわかりやすいと思います。
ここではとくにプログラマーと混同されがちかつ、直接的な上流工程である「システムエンジニア」について詳しく解説します。
システムエンジニアの主な仕事内容
システムエンジニアの主な仕事は「システムの設計図や骨組みを作ること」です。
- クライアントが求める要望は何か
- 要望を叶えるために、どんなシステムが必要か
- システム構築に必要な具体的なプログラムは何か
クライアントとのやり取りを通じて、システム開発の設計図を作成します。具体的には「要件定義」「基本設計」「詳細設計」と呼ばれる工程を担当します。
要件定義
クライアントの要望を聞き、解決のために必要な機能を提案して決めます。相手の要望はもちろん予算・納期なども考慮しながら話し合う必要がある。内容は要件定義書としてまとめます。
基本設計
「どんな機能を持つシステムにするのか」など、要件定義した内容をもとに全体のシステム設計すること。業務フローなどもクライアントと確認し合いながら決めます。
詳細設計
基本設計をもとにして「具体的にはどんなプログラムが必要なのか」「プログラマーにどんなソースコードを記述してもらうか」など、社内やプロジェクト関係者向けに詳細を決めること。
このようにシステムエンジニアは、クライアントへの納品物の方向性が決まる重要な業務を担います。
システムエンジニアに必要なスキル
システムエンジニアには上流工程に必要なスキルが求められます。主に以下のとおりです。
- クライアントとやり取りできる「コミュニケーション能力」
- プロジェクト全体をまとめられる「マネジメント能力」
- 納期や進捗をコントロールできる「時間管理能力」
- クライアントに最適な提案ができる「創造力」
もちろん、プロジェクトメンバーや進捗次第では自らもコーディングやテストにも参加するため、基礎的なプログラミングスキルは必須です。
プログラマーの働き方とは?
一言にプログラマーといっても、雇用形態や契約内容によってさまざまな働き方が存在します。プロジェクト次第ではPC1台あれば作業できるため、テレワークやノマドワークが比較的 やりやすいのもプログラマーの特徴の一つです。
ここではプログラマーとしての次の2つの働きについて解説します。
- 正社員
- 派遣
- フリーランス(業務委託、副業)
安定を求めるなら正社員プログラマー
正社員プログラマーは企業に所属します。
- 給与や福利厚生の面で安定感がある
- 大きな案件の業務実績が作れる
- 仲間との親睦を深めやすい
というメリットがありますが、逆に次のようなデメリットがあります。
- 平日は8時間以上、拘束される
- 上司や同僚との人間関係が固定化する
とくにフリーランスと比べた場合は、どうしても時間や場所の制約が気になるところです。
また正社員になる難易度は、年齢やスキルのレベルも関係してきます。IT業界未経験のときは、事前にプログラミングスクールに通ったり、社会人として優れた実績や能力を作ったりするなどの対策が必要です。
[関連記事]未経験からプログラマーに転職する方法
未経験でもなりやすい派遣プログラマー
派遣会社に登録し、非正規の派遣社員として現場入りするプログラマーも少なくありません。
未経験で採用されやすいため、「とにかく現場を経験してみたい」「実務経験を積みたい」という人にとっては選択肢の一つになります。また契約満了を利用し、数年のサイクルでさまざまな現場で働くことも可能です。
ただし、正社員と比べると給料や福利厚生面は劣ります。また責任ある上流の仕事は正社員が担うため、基礎的な部分のスキルアップしか望めないかもしれません。突然仕事がなくなったり、別の現場に移動したりなどのリスクもあります。
自信があるならフリーランスプログラマー
最近注目されつつあるのが、フリーランスプログラマーとしての働き方です。自分の腕一本で生活する姿に憧れを抱いた人も多いのではないでしょうか。
フリーランスプログラマーは営業力やプログラミングスキル次第で、自由な時間と制限なしの収入が得られます。ただし逆にまったく仕事がない状況に陥るリスクもあります。
フリーランスの働き方の特徴は次のとおりです。
- 自分で仕事や一緒に働く人を選べる
- ただし営業・経理・交渉はすべて自分で行う必要がある
- 働く時間もある程度自由に決められる
- ただし突然案件が終了するリスクも多い
- 報酬はすべて自分のものなので会社員より稼げる可能性がある
- ただし市場価格から著しく離れた低単価で働かされる可能性がある
夢のある一面もあれば、すべてが自分の責任になる一面もあるなど両極端です。たとえばリクルートワークス研究所の「データで見るフリーランス(2020年)」によると、「ソフトウェア・インターネット関連技術職」の特徴として、以下2つの結果が出ています。
- 平均年収は393万円で前職の平均より56万円下がっている
- 現在の年収500万~700万円未満の割合が25%と他のフリーランスの10%より高い
フリーランスプログラマーを目指すのであれば、まずは副業プログラマーとしてスタートすることをおすすめします。本業のスキマ時間に仕事実績や経理・営業の経験を積んだ方が、安定かつスムーズに独立できるはずです。
[関連記事]プログラミングを覚えて副業をしたい!
プログラマーに必要なスキルとは
プログラミングスキルは当然として、プログラマーとして活躍するにはさまざまなスキルが必要です。ここからは会社員・フリーランスに共通するプログラマーが持つべきスキルを解説します。
「1人で粘り強く集中する力」と「コミュニケーション能力」の両立
クライアントからの納期指定があるこの仕事は、いかに集中して早く、正確に、バグなくこなせるかが大切です。そのため、一日中パソコン前でプログラミング、デバック作業をこなすための「1人で粘り強く集中する力」が必要です。
また、システム開発は「他の工程を担当するプログラマー」「クライアント」「システムエンジニア」との共同作業。円滑な業務遂行のために他メンバーとの情報共有など「コミュニケーション能力」が必要です。
論理的思考
コンピューターは与えられた指示通りにしか動きません。そのため、プログラマーにはロジカルに考え、ロジカルに指示を書く「論理的思考力」が求められています。
論理的思考は、作業の効率化やトラブルに対する冷静な分析、対処法の立案などでも役に立ちます。
新しい情報を集める力
IT業界はつねに最新技術や画期的なアイデアが誕生する業界です。プログラム言語のバージョンアップやAI分野の急速な伸びなど、これまでにも大きな変化がありました。
つまり、プログラマーは時代に対応するために、学び続けなければなりません。
新しい情報の仕入先となる情報誌や人脈、なにより学習を続けるための気力と熱意が必要になります。
プログラマーへのよくある質問
ここではプログラマーに関するよくある疑問点について、Q&A形式でお答えしています。プログラマーを目指す上でぜひ参考にしてください。
プログラマーの平均年収は?
プログラマーの平均年収は約400万円前後です。日本のサラリーマンの平均436万円に近い値を示しています。
またプログラマーは得意とするプログラミング言語によっても、年収が左右されます。
[関連記事]プログラマーの給料の実態は?
プログラマーに関係する資格は?
プログラマーに関係する資格は以下のとおりです。
- 基本情報技術者試験
- 応用情報技術者試験
- JavaやPHPなどプログラミング言語に関する検定 など
理論から学べるので、より具体的かつ論理的なアウトプットを行うのに役に立ちます。
余裕があるときは、取得を目指してみることもおすすめします。
[関連記事]プログラミング学習で資格の取得は必要?
文系はプログラマーになれるの?
文系でもプログラマーになれます。現場で必要なのはプログラミングスキルであって、数学の知識はまた別物です。有利な材料ではありますが、活躍を決定づける要素とはいえません。
文系出身のプログラマー人口増加している傾向もあります。
[関連記事]文系でもプログラマー就職できる?
IT未経験でもプログラマーになれるの?
簡単ではありませんが、未経験でもプログラマーになれます。派遣会社への登録や、フリーランスとして開業するなら、未経験でも可能だからです(活躍できるかは別の話ですが)。
プログラミングスクールに通ったり、自分でプログラムを作ってみたりなど、積極的なインプット・アウトプットでの学習が大切です。その熱意は面接官やクライアントへのアピール材料になります。
[関連記事]未経験からプログラマーに転職する方法!
本気でプログラマーになりたいなら、ウェブカツで学べ
もし本気でプログラマーになりたいなら、プログラミングスクール「ウェブカツ」の利用を検討してはいかがでしょうか。
ウェブカツでは現場で実際に使えるスキルや知識、さらに実績になるポートフォリオの作成までを指導しています。極力無駄を省いた質の高い動画講座によって、リーズナブルかつ本格的なプログラミング学習が可能です。
仮入部という形で無料体験もできるので、ぜひ一度気軽にお問い合わせください。