未経験や文系からエンジニアになることを考えたとき、「何から勉強したらいいのか分からない」「知識がなさ過ぎて不安」といった悩みを抱える方は少なくないでしょう。エンジニアになるにあたって、知っておくべきことはたくさんありますが、その中でも「プログラミング言語」について押さえておくことは非常に重要です。これを知っておくと、何を学べばよいのか、どの言語を選ぶかが見えてきます。今回は、エンジニアになるために知っておきたい、プログラミング言語の種類や選び方について、ポイントを絞って紹介します。
プログラミング言語とは
そもそも、プログラミングとは何なのでしょうか。
簡単にざっくりと表現すると、コンピューターにしてほしいことを文書に書き起こす作業のことです。その文書には作業の内容や順番、制約などを書き起こしていきます。
そしてプログラミング言語はそれを書くための言語で、コンピューターが理解できる形になっています。「言語」というだけあって、日本語、英語、中国語…のように、それぞれのフィールドで使われているものが異なり、文法や表現方法も異なります。
当たり前のことですが、日本で日本人として生活するためには日本語を理解することが欠かせませんよね。それと同じように、ITの中でも分野によって即した言語がそれぞれあります。その分野に必要なものを知らないままに言語を選択することは、「英語圏に留学するのにフランス語を勉強する」ようなものです。
そのため、どんな言語があって、何に使われているのかを知ることは、実際にエンジニアに就いた場合にイメージと齟齬が生じないためにも重要です。
プログラミング言語の種類
プログラミング言語は、マイナーなものも含めると200種類以上もあると言われています。その中でも特に人気な言語TOP10を取り上げて紹介します(*1)。どんな分野でつかわれていて、どんな特徴があるかに注目してみてください。一つ一つ覚える必要はなく、それぞれに特徴があって全く違うものであることが、ここで押さえてほしいポイントです。
1位:Python(パイソン)
科学計算分野が得意で、AIやWebアプリケーション開発向きの言語です。
先端技術の開発に不可欠な言語のため、世界でも高い人気を誇ります。また、コードがシンプルで読み書きしやすいのも特徴です。
2位:C言語
ロボットや組み込み系、ソフトウェアの開発向きの言語です。
難易度が高く、習得に時間がかかるものの、幅広い分野で使えるため高い需要があります。
比較的古い言語でほかの言語のベースになっている場合もあるため、ほかの言語習得にも役立ちます。
3位:C++
スマホアプリやゲーム、ロボットの開発向きの言語です。
C言語を拡張した言語で、汎用性が高く、C言語とは別物ですが互換性があります。
高速な処理が可能で、高速演算が必要な分野で需要の高い言語です。
4位: Java
非常に汎用性が高く、Webアプリ、Webサービス、スマホアプリ、組み込み系、基幹システム、ゲームなどあらゆる分野で活用されている言語です。世界で最も広く利用されている言語と言われています。難易度が少し高いものの、ほかの言語へ応用しやすいことも人気の理由です。
5位:C#
Webアプリやゲームの開発向きの言語です。
ゲーム開発で需要が高く、その開発に携わりたい場合は習得しておくべき言語です。少し難易度の高い言語ですが、C++とJavaの良いところを組み合わせて作られており、それらの習得者は比較的勉強しやすいです。
6位:VB(ビジュアルベーシック)
Webアプリ、スマホアプリ、ゲーム、Office製品の拡張機能開発向きの言語です。
初心者でも覚えやすく書きやすい一方、他に比べて汎用性の低い言語でもあります。
7位:Javascript
weアプリ、Webサービス開発向きの言語です。
Javaと名前が似ていますが全く違う言語で、Webサイトの表示やボタンの動き、スライドショー、並べ替えといった見た目の制御をする言語で、Webサイト上での動作の大部分を担います。フロントエンド(ブラウザ上で動作する)プログラムの開発に必須の言語です。
8位:PHP
Web開発に特化した、Webアプリ、Webサービス開発向きの言語です。
wordpressで用いられているため、その点でも広く利用されています。Webページに動きをつける役割を持っていますが、Javascriptは利用者のデバイス(クライアント)側、PHPはシステムを動かしている大もと(サーバー)側で制御する点で異なります。
9位:SQL
データベース言語といわれる、サーバーに格納されたデータを操る言語です。
イメージとしては、データが入っている収納ボックスから、中身を取り出したり、入れたり、容器を増やしたり、といった操作を命令する言語です。Webサービス等の開発を行う場合など、データ管理が必要な開発では必須になります。
10位:Assembly language(アセンブリ言語)
9位までのほかの言語とは少し異なり、機械の言葉により近い言語です。紹介してきた言語は人間が扱いやすいように英単語などで書かれていますが、その場合に機械は書かれた内容を機械用の言葉(「0」「1」)に翻訳して理解する必要があります。
アセンブリ言語は、その機械の言葉に近づけて書くもので、暗号のようですがその分翻訳の手間が少なくなり実行の速度が非常に速いという特徴があります。そのため、処理速度の速さが求められるカーナビなどの電気製品向きの言語です。
習得が難しいですが、ハードウェアに興味がある人にはおすすめです。
習得するプログラミング言語の選び方
プログラミング言語はたくさんある上に、それぞれ異なるため、どれを選んだらよいのか迷ってしまいますよね。習得する言語によって、携わる開発の内容や業界が変わってくるので、適当に選んでしまうことはおすすめできません。そこで、おすすめの選び方を3つ紹介します。
1. 携わりたい分野や開発に合ったもの
2. 人気または需要の高いもの
3. 習得が簡単または汎用性の高いもの
1. 携わりたい分野や開発に合ったもの
前述したとおり、プログラミング言語にはそれぞれ向いている分野があります。それと自分のしたいこととを照らし合わせて、選ぶ方法です。その場合、例えば「ロボットの開発をしてみたい」ならすぐに分かりますが、そこまでやりたいことがはっきりしていない場合もありますよね。そんな時は、フロントエンド(ユーザーが触れられる表の部分)とバックエンド(ユーザーが触れることのない、サーバー側の処理)のどちらに興味があるかで選んでみても良いでしょう。ここでは、フロントエンドとバックエンドに分けて具体的な言語をいくつか紹介します。
フロントエンド向き言語
Webサイトのデザインや開発に興味がある人:HTML、CSS、Javascript、PHPなど
バックエンド向き言語
ロボット:C、C++、Python、Java
人工知能:Python、C++
ゲーム:C++、C#、Javascript
組み込み系システム(スマホ、家電、自動車などに組み込まれているシステム): Java、C、C++
Webサービス(機能を使うもの、TwitterやYoutbe、メルカリなど):PHP、Ruby、Python
スマホアプリ:Java、Kotlin、Swift、Go
金融系:COBOL、Java、C#
2. 人気または需要の高いもの
「フリーランスも視野にエンジニアになりたい」「エンジニア一本でこの先食べていきたい」「特にやりたいことはない」という方は、人気か需要の高い言語を一度勉強してみるのがおすすめです。需要の高い言語はその分案件も多いため、しっかり習得できれば仕事が全くなくなるということはないでしょう。また、一つ言語を習得すればプログラミングがどういうものかも分かってくるので、その後別の言語を学ぶハードルも下がります。ここでは、求人数に応じた需要の高いプログラミング言語のランキングを紹介します。
1位:Java
2位:PHP
3位:Python
4位:Ruby(Webアプリケーション向き言語)
5位:C/C++
6位:C#
7位:Javascript
8位:Swift(Apple製品のアプリ開発向き言語)
9位:Go(Webサーバ、スマホアプリ向き言語)
10位:Objective-C(Apple製品のアプリ開発向き言語)
3.習得が簡単または汎用性の高いもの
「やりたいことが決まっていないけど、とりあえずできることを増やしたい」「幅広い分野で活躍するエンジニアになりたい」といった場合には、習得の難易度や汎用性から選択するのも一つの手です。ここでは難易度と汎用性、それぞれの観点で具体的な言語を紹介します。
習得しやすい言語
・PHP
シンプルで読み書きしやすい言語です。というのも、ほかの言語に比べて文法が簡単なのです。それでいてWordpressで活用できるため、習得すればWebサイト制作は怖いものなしです。
・Ruby
日本由来の言語で読み書きしやすく、日本語で説明されている資料も多い言語です。プログラミング言語は英語で解説書が書かれていることがほとんどなため、日本語の資料が多いと、困ったときに対処しやすいという利点があります。
汎用性の高い言語
・HTML
HTMLは厳密に言うと「マークアップ言語」と呼ばれるもので少し性質が異なりますが、Webページの構成に使われる基礎的な言語です。インターネット上のほとんどのWebサイトに使われています。フロントエンドはもちろん、バックエンドの開発でも用いるため、必修言語といっても過言ではありません。
・CSS
こちらも「スタイルシート言語」と呼ばれる少し性質の違う言語です。これはHTMLとセットで使うWebサイトのデザイン設定をする言語で、文字の大きさや色、背景色、枠の大きさや範囲など、見た目のデザインをするのに使います。こちらもほとんどのWebサイトで使われている、必修言語ともいえるものです。
・Javascript
HTML、CSSと同じようにほとんどのWebサイトで使われており、またゲーム開発などにも使われる、非常に汎用性の高い言語です。HTML、CSS、Javascriptを使いこなせれば、普段よく見るようなWebサイトの制作ができます。
・Java
前述したように、あらゆる分野で利用されている言語です。また需要も高いため、これさえ習得しておけばエンジニアとして職に困ることはそうないでしょう。
・C
こちらも汎用性と需要の高い言語です。Javaとの違いとして、メモリの制御までプログラミングで制御する必要がある点が挙げられます。コンピュータの仕組みを理解する必要がありますが、その分ハードウェアも意識した効率的なプログラムを作れるようになります。
言語習得の心得
プログラミング言語を習得するにあたって知っておいた方が良いことが2つあります。
まず、プログラミング言語は文字通り「言語」です。英語をベースに作られているものが多いですが、新しい外国語に触れるようなもので、一からその単語の使い方や文法を学ぶことになります。そのため、習得には学習して、実践することが必要です。途中で嫌になることがあるかもしれませんが、新しい言語を話せるようになると、その分関われる人や伝えられることも広がりますよね。それと同じで、プログラミング言語を学んでスキルを磨くにつれて、作れるもの、できることがどんどん増えていきます。
そして2つ目に、言語によってその人に合う、合わないがあります。プログラミング言語がそれぞれ性質が異なるのと同時に、人にもそれぞれ性質があります。それが合うと非常に楽しくプログラミングができますが、逆の場合もあります。ですから、一つのプログラミング言語をやってみて「全くダメだった」という場合でも、次にやってみると案外できる場合もあるのです。
上記2つのことに共通して言える結論が、諦めずにいろいろ触れてみてほしい、ということです。つまずいても「未経験だからできないんだ」「文系だから向いてないんだ」と思う必要はありません。
まとめ
今回はプログラミング言語についてご紹介しました。言語選びは重要ですが、200以上もの言語が存在しますから、1つめで上手くいかなくてもまだまだ次があるので、あまり気張らなくて大丈夫です。自分の興味ややってみたいという気持ちを大切に、挑戦してみてください。
[参考]
TECH MANIA 「プログラミング言語おすすめTOP10!徹底解説2023」(2023年6月2日)
ttps://techmania.jp/blog/programming0001/