「プログラマーになりたいけど、どんな仕事をしているんだろう?」
「プログラマーはプログラミングするだけが仕事なの?」
「プログラマーの種類とそれぞれの仕事内容も知りたい」
この記事を訪れたあなたはこうお考えではないでしょうか?
プログラマーと聞いて思い浮かべるのは、パソコンに向かってひたすらコードを書いている人を思い浮かべるでしょう。しかし、本当にコードを書いているだけの仕事をしているのかは、疑問に思いますよね。
実は、みなさんが思っている以上にプログラマーの仕事はたくさんあります。
会社にもよりますが、プログラマーはプログラミング以外の仕事もこなしているのです。
またプログラマーといってもWebプログラマーなどたくさんの種類があり、仕事内容も少しずつ違ってきます。
今回はプログラマーの仕事内容を種類ごとに、使用言語、必要なスキルを紹介します。またプログラマーになろうと考えている人たちが気になっているであろうプログラマーの将来性やよくある質問も紹介していきます。
プログラマーの仕事内容は?
早速まずはプログラミングの仕事内容を見ていきましょう。プログラマーにはたくさんの種類があると言いましたが、実際はほとんどが以下の内容のように仕事が進んでいきます。
- まずは企画を立て要件定義をする
- システム設計書やテスト仕様書を作成する
- システム設計書を元にプログラミングをする
- プログラミングをしたらデバッグ作業で品質の向上
- システム実装後、異常はないか監視する
それぞれの仕事内容を詳しく見ていきましょう。
まずは企画を立て要件定義をする
そもそもプログラミングをするのは、システムを開発するために行うものです。なのでまずは、企画を立てるところから始まりますね。企画は自社で新たなプロジェクトの開発、顧客や企業からのシステム要求などによって立てられます。
企画を立てる際に行うのが要件定義です。どのようなシステムにするか顧客たちと話し合い、どこまでの要望に応えられるかを伝えることでお互いの意見を一致させ、思っていたのと違うのを防ぎます。
この仕事内容は基本システムエンジニア(SE)がやりますが、企業によってはプログラマーがやることもあるそうです。
システム設計書やテスト仕様書を作成する
要件定義を終えたら、システム設計書を作成し、どんなプログラムを組むかを決めていきます。
システム設計書の内容には、システムに組み込む機能の内容、システム設計の流れ、顧客からの要求などを載せるのが一般的です。内容を書くだけでなく、プログラマーがユーザーの期待に応えられるシステムを設計できるよう、わかりやすくします。
設計書は必ずどこをどうするかを網羅して、完璧に書かれているわけではありません。プログラマーはわからない部分や怪しい部分があったらSEと話し合いをして、曖昧な部分を無くしていきます。
また顧客の要件を満たすだけでなく快適に使えるように、バグを減らすことも必要です。バグはテストを行い、問題個所を見つけて対処していくことで減らせます。
このテストを実行させる方法を記述したのがテスト仕様書です。テストをどう行うか、結果はどうなればいいか、実行環境はどうするかなどを記載し、プログラマーはこの仕様書を満たすようにコードを書いていきます。
こちらもSEの仕事分野ですが、プログラマーがやることもありますよ。
システム設計書をもとにプログラミングをする
要件を定義し設計書が書けたら、ようやくプログラミングをしていきます。ほとんどのプログラマーは仕事の大部分がプログラミングとなってくるのですね。ここでプログラマーは、長時間パソコンに向かってコードを書いていきます。
システムの規模によりますが、コードを書く量が非常に多く一人では書けません。何十人ものプログラマーが分担して、プログラムを組むことになるでしょう。
帰宅時には、リーダーのプログラマーに現状の進み具合を報告して帰ります。なかなか終わらない場合だと、残業をしたり家に持ち帰ったりしますね。
出社時にはミーティングを開き、全体の作業報告が行われます。ここで作業が遅れている場合は、遅れを回復できるようリーダーのプログラマーとの打ち合わせが必要です。
プログラミングをしたらデバッグ作業で品質の向上
自分の担当するコードが書けたら、テスト仕様書に基づいてデバッグをしていきます。
デバッグ作業の流れは次の通りです。
- まずは担当したコードだけでデバッグする単体テストを行う
- 次にすべての機能をくっつけて結合テストを行う
ここでバグが出た際にもプログラマーが修正を行っていきますが、結合テストは結合したことによっておこる不測のバグが出てくることもあり、困難を強いられますね。
デバッグ作業は、プログラマーとSEが一緒になって仕事をすることが多いです。基本的に単体テストはすべてのプログラマーが行い、結合テストは熟練したプログラマーが行いますね。
システム実装後、異常はないか監視する
テストを終了したらシステム完成です。ここでプログラマーの仕事は終わりと思われがちですが、システム実装後にもシステムのアップデートという仕事があります。
システム実装後は動作に異常がないかを隅々までチェックし、何か異常があれば速やかに修正を行う必要が出てくるのですね。
ユーザーからも不具合の報告や追加の機能を求められこともありますし、セキュリティ面ではセキュリティホールの対処をすることもあります。これらのプログラムを変更、追加するのもプログラマーの仕事になるのですね。
システムが完成した後もプログラマーが仕事に携わることは多々あると思っていいでしょう。
どんな種類のプログラマーがあるの?
プログラマーの仕事内容がわかったところで、どんなプログラマーがあるのか見ていきましょう。この記事では次の8種類を紹介します。
- アプリ系プログラマー
- Webプログラマー
- ゲームプログラマー
- システムプログラマー
- 通信系プログラマー
- 金融系プログラマー
- AIプログラマー
- オープンプログラマー
それぞれの仕事内容とプログラミング言語、必要なスキルを見ていきますね。
アプリ系プログラマー
AndroidやiOSのスマートフォンやパソコンのアプリを開発するプログラマーです。「App Store」などでインストールできるアプリはアプリ開発を担当するプログラマーによって作られています。アプリにも様々な種類があり、が挙げられます。それぞれの内容についてみていきましょう。
Webアプリはブラウザ上で動くアプリで、インターネットに接続すればだれでもすぐに利用ができるお手軽さがあります。使用する言語は主にPHPやJavaScriptなどを使用します。
iOSアプリやAndroidアプリはスマートフォンにインストールして使うアプリで、手間はかかりますが、オフラインでも使えるメリットがあります。iOSではSwift、AndroidはKotlin、Javaが良く使われます。
ハイブリッドアプリは上記の3つを合わせたようなアプリケーションで、それぞれのメリットを生かして作ることができます。ハイブリッドアプリはHTML5、CSS3、JavaScript、Rubyが良く使われますね。
アプリプログラマーに求められるスキルはプログラミング、コミュニケーションスキルの他にネットワークやデータベースなども必要になってくるでしょう。
Webプログラマー
Webサイトやサーバの構築をするプログラマーです。ネットショッピングや公式のホームページなどはWebプログラマーによって作られているのですね。
サイトを作るときにはクライアント側とサーバ側でプログラムを作ります。
クライアント側ではブラウザ上で動作しユーザーが閲覧できるように、サーバ側ではユーザーがチャットを書き込んだり検索をしたりするときに、それに沿った実行がされるようにプログラムを組んでいきます。
この二つがあってWebサイトは成り立っているのですね。
使用言語は、HTML、CSSを必ず使います。またPHP、JavaScript、Javaも使われますね。Webサイトは見やすいこと、便利であることが要求されますので、プログラミングだけでなく、デザインやSEOのスキルも求められます。
より良いサイトを作れるようになるために、MySQL、oracleなどのデータベース、情報セキュリティの知識も身に着けておくとよいでしょう。
ゲームプログラマー
普段私たちが遊んでいるコンシューマーゲーム、オンラインゲームなどを作るプログラマーの事です。ゲームには、システムの動作、キャラクターの動き、キャラクターのセリフ、条件を満たすと出るイベント、背景や音楽の設定などあらゆる要素はすべてゲームプログラマーによってつくられています。
主な使用言語はC#、C++がほとんどですが、Javaが使われることもあります。スマホゲームになると、iOSはSwift、AndroidはKotlin、Javaが多くなるでしょう。
ゲームを作るには様々なスキルが求められます。クオリティの高いゲームを目指すためにチームとアイデアを練るのでコミュニケーションスキルは重要になるでしょう。
また数学や物理の知識も必要になります。これは当たり判定やキャラクターの動きなどに用いられ、キャラクターと障害物の当たり判定を調べるときなどに数学と物理は必要になってきます。
システムプログラマー
システムプログラマーとは家電製品やテレビ、携帯電話など普段私たちが使っているものを作っているプログラマーです。「組み込み系プログラマー」とも呼ばれます。
スイッチ一つで風呂のお湯を沸かす、ナースコールで看護師を呼ぶ、エレベーターのボタンなどはすべてシステムプログラマーによってつくられるんですね。
使用言語はC、C#、Java、アセンブラ言語などが使われます。難しい言語が多いのでモノを作るのが好きな方でないとつらい部分があるかもしれません。
またハードウェアとソフトウェアの知識も必要になります。ETECやOCRESなどのシステムプログラマー向けの資格を取得するのもいいでしょう。
通信系プログラマー
通信系プログラマーは、Wi-Fiルータなどのネットワーク機器を開発するプログラマーです。「Zoom」などのリモート中継のデータ送受信は、通信系のプログラマーによってつくられています。
良く使われる言語はC、C++、Javaなどがあります。ネットワークに特化したプログラマーなのでネットワークや情報セキュリティに関する知識は必要になってきますね。
金融系プログラマー
金融機関、銀行のシステムを開発するプログラマーです。ATMやネットバンクなど人のお金が行き来するシステムなので、不具合を起こさないように慎重なシステム開発、厳密なセキュリティ管理がなされます。
もし不具合が起きてしまった場合には、時間を問わず早急に修理するので、非常に激務だとよく言われます。
しかしその分給料は高く、IT職業の中でもトップクラスに高いです。年収は800万を超えることができるのも魅力的ですね。
良く使われる言語はCOBOL、C、Java、Pythonなどが使われます。またIT知識はもちろん、情報セキュリティ、高い技術力、強い責任感も求められます。
AIプログラマー
人工知能(AI)を使って機械学習や深層学習をし、データの解析やシステムの開発を行うプログラマーです。最先端の人工知能の研究、開発をするのも、AIプログラマーの仕事です。
AIは人間に代わって作業することも可能で、車の自動運転や、飲食店での接客作った料理を運ぶロボットなどさまざまなものが自動化されてきています。
使用言語は、Python、Julia、R、JavaScript、C++などが使われます。AIを専門して研究、開発していくので機械学習のスキルやデータサイエンス、統計学は必須になってきます。また常に最新のAI技術を学んでいくので、AIの論文などを閲覧するために英語力も必要になってきます。
オープンプログラマー
UNIXやLinuxなどの複数のコンピュータで構築するシステムを開発するプログラマーです。オープンプログラマーは汎用プログラマーと似ていて、様々なシステムを作るプログラムの共通した部分をコンピュータで開発します。
どのシステムにも対応できるプログラムを組むことでシステム開発の効率を高めることができるのですね。
使用する言語はJava、Ruby、PHP、Pythonなどがあります。プログラミングスキルだけでなくデータベースを利用し顧客情報の管理なども行います。
プログラマーに将来性はある?
ここまでプログラマーの仕事内容を詳しく見てきました。これでプログラマーの大体の仕事の流れはわかったかと思われます。
しかしプログラマーの将来性が気になる方もいるのではないでしょうか。AIの発展によって仕事が奪われると言われている今、プログラマーもAIに奪われるのでは?と不安になる方は少なくないでしょう。
実際にAIは与えられた仕事を正確に早くこなすことができ、バグの少なさが求められるプログラミングはAIにやらせた方が正確なプログラムが作れそうですよね。
実際に単純なプログラミング作業はAIに奪われるともいわれています。
しかし、プログラミング以外の仕事はどうでしょうか?例えば企画を立てる、要件定義をする仕事を考えてみましょう。企画はこんなシステムを作りたいといったところから始まりますよね。この部分はAIにとって難しいのです。
AIは単純作業を正確に早くこなすことは得意ですが、その作業を作るのは苦手なんですね。自分から何か新しいものを作るのはAIにはできないので、企画を立てるのは将来的に見ても人間が担当することになるでしょう。
また要件定義では顧客からの要望に応えられるようにするのが目的です。顧客は当然人間ですから、曖昧な表現の要件が来ることもあるでしょう。
プログラマーやSEはコミュニケーションをとって曖昧な部分を話し合ってどうするか確立させますが、AIはこの曖昧な部分を確立させるのが難しいのです。
以上の事から、
- 自分から新しいものを作る創造性
- 高いコミュニケーションスキル
上記の内容を備えたプログラマーは今後も生き残れると考えられます。
プログラマーに関するよくある質問
プログラマーの仕事内容はわかっても、具体的な勤務時間はどのくらいなのか、資格は必要なのかまでは分からないですよね。ここではプログラマーになりたいと考えている方が、疑問に思っている質問を5つほどピックして紹介します。
プログラマーとシステムエンジニアって何が違うんですか?
基本的にはシステムエンジニアはプログラムを組むための設計書をつくりプログラマーはその設計書を元にプログラムを組むのがプログラマーです。
またシステムエンジニアは設計書だけでなく、企画を立てたり顧客とコミュニケーションをとって要件を出す役割もします。
しかし実際はプログラマーとシステムエンジニアの違いははっきりとしておらず、プログラマーがシステムエンジニアの仕事をこなすことも多いです。
プログラマーには未経験からでもなれるんですか?
未経験からプログラマーになることは十分可能です。もちろん楽になれる仕事でもないのでプログラマーに求められる人材を軽く紹介します。
プログラマーに求められる人材はプログラミングスキル、コミュニケーションスキルです。これらが備わっていると高い技術力を持っているだけでなくSEとより良いシステムを作るために話し合いができるので優秀なプログラマーになれますよ。
また常に新しいことに学ぶ力も重要になってきます。わからないことは聞いたり調べたりして自分の知識として蓄えていきましょう。
プログラマーに資格は必要ですか?
プログラマーになるのに資格は必須ということはありません。ただし持っておくと面接時には有利になります。「基本情報技術者」はネットワーク、コンピュータの仕組み、情報セキュリティ、ビジネスなどITに関する基本的な知識を持っていることの証明になります。
プログラマーなら知っておきたい知識ですので、取得しておくと採用されやすいですし、仕事の効率も挙げることができますよ。
またPHPやJavaのプログラミング試験もありますので、自分のなりたいプログラマーにあった言語の資格を取得しておくことでも有利になります。
プログラマーの年収はいくらですか?
プログラマーの種類によりますが、年収はおよそ400万円~が多いです。より多くの年収を獲得したい方はより優秀なプログラマーになるといいでしょう。
優秀なプログラマーは高い技術力とコミュニケーションスキルを持っているので、プログラミング、テスト、設計書の作成、企画などさまざまな仕事をこなすようになります。
当然仕事が増えるので、給料も上がり結果として年収が増えるわけなのですね。
さらにこのレベルまでになると、将来長く働けるようになるので安定した収入が得られます。AIにプログラマーの仕事を奪われたとしても、AIが苦手とする仕事もこなせるので仕事がなくなることはほとんどないといっていいでしょう。
仕事時間はどのくらいあるのですか?
勤務時間は基本8時間が多いですが、企画によっては時間内に終わることが難しく終電まで残業をしたり、家に持ち帰ることも多々あります。
休日は土日祝日や年末年始などがあります。しかし、忙しいと休日も仕事をすることがあります。また優秀なプログラマーはプログラミングや知識を学習するため休日の自由時間は多い職業とは言えないでしょう。
まとめ
今回はプログラマーについて仕事内容を中心に紹介しました。プログラマーの仕事内容
はただプログラミングをするだけではない、ということがわかったかと思います。
プログラマーに種類があっても仕事内容はほとんど同じなので、一度仕事の流れがつかめてしまえば、どのプログラマーに入ってもスムーズに仕事が進められますよ。ただし必要なスキルやプログラミング言語は違ってくるので、自分がなりたいプログラマーを見つけてそれに沿ったスキルや言語を習得してくださいね。
ここで紹介した仕事内容は、すべての企業でプログラマーが企画を立てるところから実装後のメンテナンスをするわけではありません。ただプログラミングをしてテストをしたら仕事が完了するプログラマーもいますし、一連の流れを担当するプログラマーもいます。
しかし一連の仕事をできるようになった方が優秀なプログラマーになれます。ぜひ新しいことに挑戦する意欲をもって、さまざまな仕事に携わってみてくださいね。
こちらの記事もおすすめ
プログラマーになるには?5つの方法と目指すうえでやるべきこと
フリーランスプログラマーになるには?目指し方や必要なスキルも紹介