ご存知の通り、プログラマーとは、プログラミング言語でシステムを作る職種のことだ。
このページでは具体的に何をやっているか? どういう種類のプログラマーがいるのかをまとめてご紹介した。参考にしていただければと思う。
目次
プログラマーとは?
システムやアプリケーションの開発においては様々な役割の人が協力しつつ開発に携わっているが、プログラマーはその中でも欠かせない役割のひとつだ。
プログラマーとはプログラミング言語を用いてプログラムを作成し、様々なアプリケーションを作成するエンジニアの事を指している。
プログラムはコンピューターに対してどのような動きや表示を行うかなどを記述したコンピューターに対する指令書であるが、その指令書をプログラミング言語で記述してゆくのが主な仕事内容になる。
プログラマーの種類
プログラマーの種類は得意とするシステムや言語によって分類することができる。そのうちのいくつかをご紹介しよう。
正確には分類というものがあるわけではなくて、雰囲気のイメージだ。なんとなくこんな仕事があるというイメージを持っていただければ十分だろう。
Webプログラマー
WebアプリやWebサービスのプログラミングを得意とするプログラマーのことで、代表的なプログラミング言語としてはJavaやPHP、Ruby、JavaScriptなどが挙げられる。
スマホアプリプログラマー
AndroidやiOSなどのスマートフォンアプリケーションの開発を得意とするプログラマーのことで、代表的なプログラミング言語としてはJava、Objective-C、Swiftなどが挙げられる。
業務系プログラマー
経理や法務、営業支援など、企業業務で使用するシステム開発を得意とするプログラマーである。Web系からパッケージソフトなどシステムの形態は様々であり、言語もそれによって異なる。
イメージとしてはJava系が多いだろうか。
組み込み系プログラマー
家電製品やカーナビなどに組み込まれるプログラム開発を得意とするプログラマーで、代表的なプログラミング言語としてはC++やJavaなどが挙げられる。
モノのインターネットと言われる"IoT(Internet of Things)"の普及とともにニーズは高まっている。
汎用機系プログラマー
企業向けに構築されたメインフレームと呼ばれる大型コンピュータシステム向けのプログラマーで、代表的なプログラミング言語としてはCOBOLやPL/Iなどが挙げられる。
最近では汎用機の減少とともにプログラマーの数も減少傾向にある。
プログラマーに必要なスキル
プログラマーに求められるスキルはどのようなものだろうか。一般的にプログラマーに必要とされるスキルについてまとめてみよう。
プログラミング
プログラミング言語は数多くの種類が存在するが、一般的なプログラマーはそれらのうちの1~3種類の言語に精通しており、さらに他の言語に対しては精通するとまでは行かないまでも、基本的な読み書きができる程度のスキルを持っている。
近頃のシステム開発は単一のプログラミング言語だけで作成されることは少なくなっているので、プログラマーを続けていると自然と複数の言語に対するスキルは身についてくるだろう。
言語特性の理解
プログラミング言語には様々な命令文が存在するが、その命令を実行するにあたってコンピューターに負荷がかかってしまい、処理速度が遅くなることもある。
そのため、プログラマーは指示された内容をプログラムに記述するだけではなく、コンピューターがプログラムを処理する際に負荷がかからないようなプログラム作成を心がける必要がある。
アルゴリズムの理解
プログラミング言語の文法や構文だけでなく、プログラミング言語を使って効率的な問題解決を行うための手法である「アルゴリズム」について理解する必要がある。
例えば複数のデータの中から指定された値を見つけるアルゴリズムや、複数の値を並び替えるアルゴリズムなど、一般的なシステム開発で多用されるアルゴリズムについては理解が必要だ。
デバッグ
作成したプログラムに不具合が発生した場合、その原因調査とプログラム修正を行うことをデバッグと呼ぶ。
簡単な不具合だと少しプログラムを修正すれば解決するが、中には不具合の原因解明が困難なものもあるので、プログラムで起きている不具合の現象を細かく整理し、何に問題があるかを調査するスキルが必要となる。
コミュニケーション
プログラマーはただ黙々とプログラムを書いているイメージを持っている人も多いが、実際にはシステムエンジニアとコミュニケーションを取りながらプログラミングをすることが多い。
そのため、報告や相談、確認、ディスカッションなどの最低限のコミュニケーション能力は必要とされる。
システムエンジニアとプログラマーの違い
システム開発における役割のひとつに「システムエンジニア」がある。こちらも馴染みの深い名前である思われるが、プログラマーとの役割の違いは何だろうか。簡単にまとめてみよう。
段々境界はファジーになってきているし、プログラマーの地位というか立場も急激に上がりむしろ重宝されるようになっている。少々昔のわかりやすい分け方だと思っていただければと思う。
システムエンジニアの仕事内容
要件定義
システム開発の依頼をユーザーから受ける際、どのようなシステムを作りたいのかをユーザーに対してヒアリングを行い、システムで実現したいことを取りまとめてゆく。
ここで作成される設計書は要件定義書などと呼ばれ、システム開発の観点からユーザーの要望事項を取りまとめたものであるが、システムエンジニアはユーザーとの折衝をおこないつつ要件定義書の作成を行う。
基本設計
どのような技術を用いたシステムを構築するか、どのようなシステム構成とするかを検討して決定する。具体的にはプログラム構成やデータベース、フレームワークなどを検討してゆくことが多い。
ここで作成される設計書は基本設計書と呼ばれ、要件定義書よりさらに具体的な内容が記載されるが、システムエンジニアはユーザーとの折衝および開発チームのエンジニアと検討しつつ、基本設計書を作成する。
詳細設計
基本設計で定められたシステム構成やプログラム構成に基づき、各プログラムの具体的な表示や動作について細かく定義してゆく。
ここで作成される設計書は詳細設計書と呼ばれ、システムエンジニアは開発チームのエンジニアと検討しつつ、詳細設計書を作成する。
テスト仕様書の作成
プログラム単体のテストや、プログラムを複数組み合わせた連携テスト、システム全体のテストケースを記載したテスト仕様書を作成する。
作成したテスト仕様書をもとに、プログラムやシステムが意図した通りの動作をするか検証する。
プログラマーの仕事内容
プログラミング
詳細設計書で指示された内容を、指定されたプログラミング言語でプログラムを記述してゆくのがプログラマーの仕事だ。システムの規模や処理内容にもよるが、作成するプログラムは数行から数千行、プログラムファイル数も数本から数百本にまでおよぶものまである。
動作確認・テスト
作成したプログラムが詳細設計書通りの表示や動作を行うかどうかチェックする。いわゆるプログラム単体テストと呼ばれるもので、単体テスト仕様書のテスト仕様に沿って実施される。プログラムの動作確認で不具合が発覚した場合、プログラマーがデバッグを行う。
プログラマーの役割は曖昧
上記で紹介した通り、システムエンジニアとプログラマーにはそれぞれ役割の違いはあるが、実際にはその役割は非常に曖昧になっている。
たとえば、詳細設計やプログラム単体のテスト仕様書の作成は厳密に言えばシステムエンジニアの役割だが、実際にはプログラマーが作成するケースが非常に多い。また、プログラマーとしてのスキルを高めると、基本的なシステム設計から開発に携わるケースもよく見られる。役割を分類するとプログラマーの方がシステムエンジニアよりも役割分担が少ないようにも見えるが、実際にはそうはならないのだ。
スキルとしてプログラミングに特化してゆくのは良いことであるが、プログラマーとしての役割にこだわりすぎることなく、どのようなエンジニアでありたいかを意識してプログラミングに携わるといいだろう。
まとめ
このページではプログラマーとは、について簡単にまとめてお伝えしてきた。
基礎知識として知っておきたいところだ。