プログラマーと一口に言っても、その業務内容や専門分野によってたくさんの種類に分けられます。みなさんのお仕事はどんな種類に含まれるかご存じですか?
この記事ではプログラマーについてもっと知りたい方に向けて、プログラマーを種類別に解説します。webプログラマー、ゲームプログラマー、エンベデッド系プログラマーなど5種類紹介しますのでぜひご覧下さい。
参照:プログラマー必見!給料を上げるために学んでおきたい言語について解説した記事はこちら
プログラマーの種類別解説
ではさっそく、プログラマーの種類を解説しましょう。分類はプログラミングの対象となる領域で分類しており、業務内容や主な使用言語も記載しています。プログラマーのことがまるわかりです!
webプログラマー
webプログラマーはECサイトなどのいわゆるwebサービスの実装を担当するプログラマーです。扱う領域がwebのためブラウザを利用したユーザーインターフェイスなど、webデザインの知識も求められます。
代表的なwebプログラマー〜LAMPエンジニア
LAMPエンジニアとは「Linux」「Apache」「MySQL」「PHP」の頭文字をとった言葉で、webを利用したシステム作りには欠かせないOS、DB、プログラミング言語です。これら4つを得意とするエンジニアをこのように呼ぶことがあり、案件によっては「LAMPエンジニア募集」と表記されることもあります。
JavaやRuby、Scalaなども押さえておきたい
システムの表はブラウザであるものの、背後にはDBや帳票出力機能などが連動しています。そのためHTMLやCSSが必須であることは言うまでもなく、JavaやRubyなどの言語も必要です。最近はScalaを採用する案件も出てきました。
アプリケーションプログラマー
一般的にプログラマーというと、このアプリケーションプログラマーのことをイメージされることが多いようです。業務はパソコンやスマートフォンで動くアプリケーションを開発する仕事です。
ただし、webシステムをアプリケーションとしてとらえることもあるため、スタンドアロンのアプリ実装だけを担当するわけではありません。
主な使用言語は多種多様〜アプリケーションの目的に合わせて選ばれる
アプリケーションのプログラミングでは、アプリの目的や開発手法に合わせて言語が選択されるため、主な使用言語は多種多様です。オブジェクト指向開発であればJavaやC#が選ばれることが多いですし、統計解析の分野ではPythonが向いているとされます。
スマートフォンアプリ開発ならこの3つの言語
スマートフォンアプリ開発ではAndroidアプリ開発に使われるJavaやiOSアプリのためのObjective-CやSwiftを押さえておくのは必須です。
ゲームプログラマー
ゲームプログラマーはその名の通り、ゲームを作るプログラマーのことです。ゲームはキャラクター、オブジェクトの動きの制御やグラフィクス描画など一般のシステムやアプリケーションとはまったく違う設計・実装が求められるため、エンジニアやプログラマーの専門性はとても高くなります。
ゲーム開発独自の開発プラットフォーム:Cocos2d-xやUnity
上に書いたとおり、描画や処理にはゲーム独特のアルゴリズムなどを用います。このためゲーム開発に特化した開発プラットフォームが用意されており、これを使えるのはゲームプログラマーになる条件のひとつと言えます。
主なプラットフォームにはCocos2d-xやUnityと呼ばれるものがあり、いずれもフリーエンジニアの募集案件でよく見かけるものです。プログラミング言語としてはCやC#が用いられるケースが多いです。
スマホゲーム・ソーシャルゲーム開発の勢いがすごい
みなさんご存じの通り、スマートフォンのゲームアプリやソーシャルゲームの流行の勢いは止まることを知りません。ゲーム好きの方なら一度は自分でゲームを作ってみたいと思うものですが、ゲームプログラマーから業界に足を踏み入れ、ディレクターを目指す手段もあります。
エンベデッド系プログラマー
エンベデッドとは組み込みのことを指し、エンベデッド系プログラマーは電化製品などのマイクロプロセッサーに組み込まれるプログラム、ソフトウェアの実装を担当します。
私たちの周りはエンベデッドシステムだらけ!
あらゆる家電製品、身近なところでは携帯電話・スマートフォン、デジカメなどにも組み込みシステムが使われているため、エンベデッドシステムはとても身近です。
組み込み系のあらゆる知識が必要
パソコンのアプリケーションや業務システムの場合、製造を担当するプログラマーは専門職として成立するものの、エンベデッドシステムの場合はハードウェアにあらゆる仕様が依存するため、組み込み系のプログラミングスキルだけでは仕事はつとまりません。
ハードウェア技術者のひとつのスキルとしてエンベデッドプログラミングがあるというとらえ方をして下さい。
汎用系システムプログラマー
汎用系システムとはいわゆるメインフレームを利用した基幹系システムのことを指します。金融機関や大企業、官公庁などの基幹システム似利用されるケースが多く、クリティカルな業務を扱います。
業務の性質上、完全にカスタマイズされたシステムのため互換性はなく、機能改修を繰り返した息の長いシステムです。その意味でレガシーシステムと呼ばれることもあります。また互換性がない点から「閉じたシステム」と言われ、逆にWindowsなどを利用した業務システムのことはオープン系と呼ばれます。
レガシーシステムのマイグレーション需要
マイグレーションとは移行を意味する言葉で、古いバージョンのシステムを新しいバージョンに移行する時に使われます。汎用系システムにおいてはメインフレームを利用したシステムをWindows機などで動作するシステムに作り替える動きがあり、このような仕事が年々増えています。
汎用系システムのマイグレーションは基幹業務の分析から始まるため、設計書や利用者のナレッジ、ソースコードの確認といった作業が発生します。そのため汎用系プログラマーのスキルはマイグレーションで大変活躍します。
主な使用言語はCOBOL
COBOLは事務処理のシステム化を得意とする言語で汎用系と言えばCOBOLといっても過言ではないくらい使われました。現在では新規開発でCOBOLが使われる案件を見かけることはほとんどありませんが、汎用系システムに関わる場合は必須の言語です。
理想は広く深く?プログラマーはあらゆるスキルが求められる
この記事ではプログラマーという仕事を扱う業務領域で分類しました。これからプログラマーになる方は、ご自身の目指す方向がどんなプログラマーに当てはまるのかお分かり頂けたと思います。
方向性や専門性はプログラマーにとって大切なものですが、ひとつの分野だけを極めるのは得策とは言えません。
webの仕組みを利用した業務システム、スマートフォン連携するシステムなどあらゆる仕組みやインフラが利用されるため、幅広いスキルを身につけることが大切です。
みなさんは次にどんなスキルを身につけたいと思いますか?広く深いスキルを身につけるのは大変なことですが、少しでも理想に近づくように頑張りましょう!
参照:プログラマー必見!給料を上げるために学んでおきたい言語について解説した記事はこちら
フリーランスになるために必要な知識やスキルアップの方法等、様々なお役立ち情報を発信していきます。
(リモートワーク案件に強いフリーランスエージェント「クラウドワークス テック」を運営)