「プログラミングをこれから本腰を入れて勉強したいと考えているけれど、どの言語を学ぶべきかわからない。何を基準に選んだらよいのかわからない。」そのような人は多いではないでしょうか。
そんな疑問にお答えします。
求人数や年収の多さで選ぶのではなく「何を作りたいか」で選ぶべき
よく、学ぶプログラミング言語を選ぶ際、求人数の多さや年収の高さによって選ぼうとする人をよく見かけますが、そのような選び方はあまりお勧めしません。
そうではなくて「何を作りたいか」で言語を選ぶべきです。
何を作りたいかをまず第一に定めましょう。
何を作りたいかを定める → 言語を絞る の順です。
なぜこの順が良いのか?それは以下の理由があります。
理由1 自分のやりたいことと仕事のミスマッチが減る
作りたいものを先に定めてから習得言語を絞っていけば、この先仕事に就いたときに仕事と自分のやりたいこととのミスマッチが起きにくくなります。
作りたいものを定めずに言語から先に決めてしまうと、その言語の求人のある仕事にしか就けず、その結果あまり興味のない業界のプログラム開発業務に就くなんてことが起きかねません。
当初、面白いゲームを作ってみたいと思ってプログラミングに興味をもったはずだったのに、気づいたら、全然違う金融システム開発の仕事についていた。なんてことはありがちなケースです。
そしてそうなると意外と抜け出しにくいものです。その業界で仕事をすることになるので、その業界に特化した知識やスキルしか身に付きません。そうなるとそのまた同じ業界内でしか転職ができず結局ずっと同じ業界に身を置くことになります。
ミスマッチをなくすためには作りたいものから絞っていくことが大事です。
理由2 習得すべきこと(=目標)が定まりやすい
作りたい対象が定まる=業界が定まる と言えます。
プログラマーという職種は、携わる業界によって必要な関連知識や要求されるスキル、考え方がまったく異なります。
先に作りたい対象を定めておくと、業界が定まります。業界が定まるとその業界で標準的な言語が決まってきますし、言語以外にも学ぶべき知識や獲得すべきスキルが定まるのでその先のやるべきことが決まりやすいです。
力を入れるべきことや、学ぶべきことの目標が明確になります。
理由3 成長しやすい
作りたいものというのは自分が好きで興味があるものだと思います。それはきっとあなたの中で他よりも情熱を持てるものなんだと思います。
この情熱を注げられるかどうかというのは非常に重要です。
仕事というのはとても大変です。常に困難が付きまといます。プログラマーは専門職であるため高度な専門知識を絶えず習得していかなければいけません。
情熱を注いで取り組めるからこそ、大変な時でも頑張れるし、継続して修練して自分を高め続けられます。
そうなるとスキルも上がりやすく、会社でも評価されます。仮に最初の収入が低くても、やがてすぐに市場価値が高まり給料も上がっていきます。
一番情熱を注ぐことができるものを選ぶほうが、結果として本人が一番幸せになれると思っています。
作りたいもの別 ジャンル紹介
以下どのようなものがあるか、ジャンル別に紹介します。
【組み込み系】家電やガジェットなど
家電、ガジェットなどのデジタル機器(=モノ)を開発する業種です。
組み込み系と呼ばれているジャンルです。
例えば、テレビ、ブルーレイプレーヤー、ロボット掃除機などの家電。BTスピーカー、ワイヤレスイヤホン、音楽プレーヤー、マウスなどのガジェット。その他、ゲーム機本体やスマホ本体などもこのジャンルに当たります。
これらデジタル機器にはCPUやROMやRAMが載っていて、その上でプログラムが動いています。そのプログラムがボタンを検出したりセンサーやモーターなどを動かすことで電子機器全体を制御しています。モノの上で動いているプログラムを開発するのが組み込み系です。
組み込み機器プログラムの最もメジャーな言語はCやC++です。
主な言語
- C、C++
家電やガジェットなど自分の記述したプログラムで思いのまま動かせることができます。モノが好きという人におススメです。
ハードウェアを制御する必要があることからハードウェアにも詳しくないといけません。また汎用コンピュータと違ってHWリソースが限られているので効率のよいプログラミングをする技術が求められます。
【Web系】インターネット上のWebサイトやWebサービス
WebサイトやWebサービスを開発する業種です。
例えば、Yahooのようなニュース情報サイト、Googleのような検索サイト、メルカリのような売買仲介サービス、Youtubeのような動画配信サービス、Skypeのようなチャットサービス、Uber Eatsのような配達サービスなどがこれに当たります。
Web系のプログラム開発ではサーバー上で動くプログラムを開発します。ブラウザからの指示やアクションによりサーバー側が応答して顧客情報などを格納したデーターベースにアクセスして返答する一連の処理をプログラミングします。
主に、デザインや見た目の部分を制作するフロントエンドエンジニアと、Webサイトの機能部分やデーターベースを管理するサーバーサイドエンジニアに大別されます。
主な言語
- フロントエンド:HTML、CSS、Javascript
- サーバーサイド:PHPまたはJAVAまたはPythonなど。MySQLなどのデータベース言語
Webシステムはビジネスに直結しますので、何よりスピード感が求められます。
WebサイトやWebサービスを開発して、リアル世界のビジネスに絡んでみたい人はおすすめです。
Webはいまやビジネスやサービスに欠かせない社会の基盤です。アイディア次第では多くの富を得る可能性のある、なんとも夢のある業界です。名だたるIT企業の起業家はこのWeb系の技術を学び、それをビジネスに応用して成功を収めています。
【ゲーム系】家庭用ゲーム機やスマホ上で動くゲーム
ゲーム開発をする業種です。
家庭用ゲーム機(PlaystationやNintendo Switch)で動くコンシューマゲーム開発、
スマートフォン上で動くゲームソフト開発などがあります。
斬新なアイディア、ユニークなキャラデザイン、はまるゲーム性など、総合的な作品としてうまく制作できれば、大ヒットの可能性もあります。
近年はスマートフォンにも十分な性能をもったハードグラフィックエンジンが積まれているため、スマートフォン上でのゲームアプリも数多くリリースされています。ゲームプログラミングはプラットフォーム毎に決まった言語になっていることが多いです。
主な言語
- コンシューマゲーム:C++
- Androidゲーム:JavaまたはKotlin
- iOSゲーム:Objectiv-CまたはSwift
ゲームプログラミングにおいては、応答速度がゲーム性に影響しますので、性能を引き出せる高効率なプログラミング技術が求められます。そのためハード特性などを理解しハードを生かせるプログラミング技術が求められます。
また、近年ではオンラインでネット技術と連携したゲームがほとんどで、Webの技術との併用で作られています。
【アプリ系】PCやスマホの上で動くアプリ
PCやスマートフォンなど汎用OS上で動くアプリケーションを開発する業種です。
例えばカメラで撮った写真を画像編集するアプリや、音楽制作アプリ、表計算アプリなどがあります。
ユーザの暮らしに役立つ、仕事に役立つ、便利なアプリケーションソフトを開発して社会に貢献できるジャンルです。
これも近年はスマートフォンの普及率が高まってきたことと、スマートフォンの性能が上がりPCと遜色なくなってきたことから、スマートフォンのアプリのほうがやや需要が高くなっている印象があります。ただもちろん業務用途ではPCアプリはまだまだ健在です。
主な言語
- Androidアプリ:JavaまたはKotlin
- iOSアプリ:Objective-CまたはSwift
- Windowsアプリ:C#
- Macアプリ:Objective-CまたはSwift
「何を作りたいか」から決めよう
以上、プログラミング言語を選ぶ際に大切な考え方と、業種ジャンルを紹介しました。
あなたの作りたいものは何ですか?
素敵なガジェットや家電をつくりたいですか?便利なWebサービスを作って、ビジネスの世界で成功したいですか?世界中の人々が熱中できるような面白いゲームを作りたいですか?暮らしや仕事に役立つ便利なアプリを作りたいですか?
もし明確に決まってなかったとしても少しでも興味があるもので選んでも全然良いと思います。
これからプログラミング言語を本格的に学ぼうとして、言語選びに迷ってい方は、ぜひ「何を作りたいか」から定めてみてください。