プログラミング言語の種類はたくさんある
さぁ、プログラミングを学ぼう!と思ったけど、どのプログラミング言語を選んだらいいのかな?と迷っている方はたくさんいるでしょう。
今日は、そんな皆さんに現役エンジニアであり、プログラミングスクールを運営している筆者がそれぞれの言語について解説しました。
あなたがプログラミング言語を習得してしたいことにピッタリなものを探してください。
まずは何をしたいのか決めましょう
あなたがプログラミングを習得したい理由はなんでしょうか?
プログラミング言語にはそれぞれ、得意な分野、特徴があります。それを踏まえながら、どの言語を選択するのかを決めましょう
- ウェブページを作りたい⇒HTML、CSS
- Webアプリケーションを作りたい⇒Ruby、PHP、Java、C#、JavaScript
- モバイルアプリを作りたい⇒Kotlin、Swift、Flutter
- AIを使ったアプリを作りたい⇒Python
- ゲームを作りたい⇒C#、Unity
- IoTのシステムを作りたい⇒C言語、C++
なんとなくイメージができたら、それぞれの言語についてみていきましょう
プログラミング言語の詳細
ここからは、それぞれのプログラミング言語の得意分野と習得の難易度、現在の案件数の多さ、単価の高低を★で表します。
それぞれの星の意味を記載しておきます。
難易度 ★★★★★ とても難しい。習得するのに時間がかかる
案件数 ★★★★★ とても多い。案件の獲得や、就職・転職に有利
単価 ★★★★★ とても高い。時間または件数当たりの報酬がとても高い
一般的には、難易度が高く、技術者がいない案件は、すべて★5つになりやすい傾向にあります。
言語とフレームワーク、パッケージについて
それぞれの言語の詳細を語るときに、「フレームワーク」や、「パッケージ」または「プラグイン」などの記載が出てきます。
「フレームワーク」や、「パッケージ」または「プラグイン」とは、ざっくりまとめると
その言語で、必要な機能をあらかじめ用意された枠組み。です。
呼び名が違うのは、枠組みの仕組みが違うということです。
最近では、言語とフレームワーク、パッケージをすべて「プログラミング言語」として紹介しているサイトも目立ちますが、これを知らないと学習の大きな妨げになります。
この動作が言語のものなのか、フレームワークのものなのかの切り分けを考えながらトラブルの回避方を探すと良いでしょう。
それぞれの言語の項目に、流行のフレームワークやパッケージも載せていますので参考にしてください。
HTML&CSS
ウェブページ(HP)を作成することが得意な言語です。
難易度:★
案件数:★★★
単価:★
HTMLはプログラミング言語とは違い、マークアップ言語という文書を作成する言語です。
CSSはHTMLを装飾するための指示の集まりとなります。
難易度はプログラミング言語に比べると格段に低いです。プログラミング言語に入る前の雰囲気を味わうにはちょうど良いかもしれません。
ただし、単価はとても低く、現在も下がり続けています。また、プログラミングとは違ったものになりますので、習得しても他の言語に応用が利きません。
ただ、Webを扱うプログラミングには必須となる技術ですので、早めに習得する方が良いでしょう。
PHP、Laravel
動的なWebページを作成することが得意な言語です。
PHP(ピーエッチピー)と読みます
難易度:★★★
案件数:★★★★★
単価:★★★
WordPressをはじめ、ECサイトでも採用されていることが多く、あらゆるジャンルでのウェブページに対応していて、市場での案件数もかなり目にします。
案件の数も多いので、技術者は常に不足していて、単価の減少もあまり見られません。
HTMLを理解していることが前提になりますので、PHPを学ぶ前にHTMLを習得することをおすすめします。
Laravel(ララベル)はPHPのフレームワークです。Laravelは習得が容易だと言われているフレームワークですので、Webアプリケーションの最初の一歩には良いかもしれません。
現在では、Laravelでの開発案件数は多く見受けられますが、Googleトレンドを見る限り2020年から検索数が下がり始めており、もしかするとあと数年すると別のフレームワークまたは言語に流行が移行するかもしれません。
ただし、絶対的な数が多いので、廃れてしまうことはないでしょう。
ちなみに、PHPを扱う技術者のことをPHPer(ペチパ)と呼んだりします
Ruby、Ruby on Rails
Ruby(ルビー)はWebアプリケーションが得意な言語です。
難易度:★★★
案件数:★★★★★
単価:★★★
RubyはたくさんのWebアプリケーション、Webサービスに採用されています。
公表されているところだと
クックパッド、Airbnb、過去にはTwitterもRubyで作られていました。
※Twitterは現在JavaやScalaに変更になっています。
言語の習得については、PHPとさほど差はないと思いますが、Rubyは、学習を始めるまでに開発環境の構築が必要です。
環境構築画面は、GUI(マウスでの操作ができる画面)ではなく、CUI(黒い画面)でのコマンド操作が一般的です。ここで挫折してしまう方も多いでしょう。
インストールが無事にできてもエラーが発生して動かないなどのトラブルもつきものです。そのトラブルが解決できずにプログラミングにすら辿り着けない方が大半だと思います。
そういう意味では、最初の言語として選ぶとき、学習コストは決して良いものではないと私は思います。
Ruby on Rails(ルビーオンレイルズ)はルビーのフレームワークです。Rubyのフレームワークとしては、現在はこの一択でしょう。フレームワークは便利機能ですので、一緒にインストールをして学んでいくとよいでしょう。
Python
Python(パイソン)は機械学習やAIの開発によく使われている言語です。
難易度:★★★
案件数:★★★★
単価:★★★★
Pythonは機械学習やAIに最も良く使われる言語ですが、もちろんWebアプリケーションにも用いられます。
代表的なサービスとしては、DropBoxやInstagramです。
プログラミング言語としては、少し独特な書き方をするので、Pythonから始めると、他の言語の習得時に少し戸惑うことがあるかもしれません。
ただしそれほど大きな差ではないので、心配はいりません。
フレームワークとしてはDjango(ジャンゴ)が有名です。Pythonから始める方は、Djangoから学んでいくと良いでしょう。
Kotlin、Swift、Flutter(Dart)
Kotlin(コトリン)、Swift(スウィフト)、Flutter(フラッター)はモバイルアプリの開発に向いています。
FlutterはDart(ダート)のフレームワークです。
どの言語(フレームワーク)もクロスプラットフォームと言って、Windows、MacOS、Linux、iOS、Android どのOS、どのデバイスでも動作することになっていますが、それぞれの言語によって得意不得意があります。
Kotlin・・・Androidアプリ開発で使用されます
難易度:★★★★
案件数:★★★★
単価:★★★
Swift・・・iOSアプリ開発で使用されます
難易度:★★★★
案件数:★★★★
単価:★★★
Kotlin、Swiftは併せて募集されることが多く、両方を学ぶと良いでしょう。
Flutter・・・iOS、Androidアプリ開発で使用されます
難易度:★★★★
案件数:★★★
単価:★★★★
Flutterは2018年にGoogleが発表したDartのフレームワークです。
2021年3月に、Webアプリケーション開発にも正式対応し、ますます過熱していく言語、フレームワークだと思っています。
現在では、Flutterの技術者が日本には少なく、またドキュメントや解説も少ないため、初心者が最初の一歩にするには少しレベルが高いかもしれません。
しかし、Flutterはアメリカでも案件が増えつづけており、日本でも2021年からちらほら見かけるようになりました。
筆者が大好きな言語でもあります。
ある程度の技術を身につけたら、ぜひ学んでいただきたい言語の1つです。
JavaScript、React、Node.js
JavaScript(ジャバスクリプト)は1990年代、DOMを用いたブラウザ用のプログラミング言語でした。今では様々な実行環境やライブラリが発表され、その可能性をWebから大幅に広げた言語に成長しました。
React(リアクト)はJavaScriptの便利機能をまとめたライブラリです。
JavaScriptを学ぶ際には、Reactと一緒に学ぶ方が良いでしょう。
難易度:★★★
案件数:★★★★
単価:★★★
フロントエンド(Webアプリケーションの画面側)の技術として、現在でも需要は伸び続けています。
Reactを検索するとReactNativeが出てくることがあります。ReactNativeは用途が若干異なります。ReactNativeも同じライブラリですが、モバイルアプリの開発に用いられることが多いです。
Node.js・・・サーバー上で動く実行環境です。
難易度:★★★
案件数:★★
単価:★★★
2015年~2018年頃には一世を風靡したNode.jsでしたが、今では、新規開発で聞くことが少なくなりました。
サーバーサイドであれば、PythonやRubyを採用する企業が増えている印象です。
Java、C#
Java(ジャバ)やC#(シーシャープ)はWebアプリケーションやローカルシステムに採用されています。
今でも多くの企業の基幹システムや金融機関のシステムに採用されており、その技術は安定的なものであり、数年で廃れるということはないでしょう。
Java
難易度:★★★★
案件数:★★
単価:★★★★
環境構築やIDE(統合開発環境)のインストール~設定に時間がかかる。動作させるためにサーバーが必要となるため、開発までのハードルがかなり高いといえるでしょう。
C#
難易度:★★
案件数:★
単価:★★★★
開発環境はGUIでインストールするだけ、サーバーも内蔵されているため、開発できるまでのコストがかなり低いです。
また、言語もプログラミングの基礎であるC言語に近いものが多く、基本に忠実です。
パソコン単体で動かせるアプリから学べるので、HTMLやWebの知識が無くても基本を学べる良い言語だと思います。
JavaやC#は大企業や金融機関など、大手企業で採用されていたり、基幹のシステムに採用されることが多いため、新人で携われる機会はなかなかないでしょう。
ただし、ベテランになると単価はかなり高い傾向が見られます。
また、C言語に近い構文を持つためプログラミングの基本を学ぶにはとても良い言語だと言えます。
JavaかC#のどちらかである程度の基礎を学び、他の言語を学んでも良いでしょう。
Unity
Unity(ユニティ)は主にC#を用いて開発するゲームエンジンです。
難易度:★★★★
案件数:★
単価:??
ゲーム制作に特化しています。最初に学ぶにはかなりハードルが高いです。
案件は、あまり見かけません。
C言語、C++
C言語(シーげんご)は数あるプログラミング言語の基になっている言語です。
最も近い言語としてC++(シープラスプラス、シープラプラ)があります。
主に、組み込み系などのハードウエア、IoTで使用されています。
難易度:★★★★★
案件数:★
単価:★★★★★
プログラミングの基礎のすべてであり、機械を扱うのに長けている言語で、処理速度が最も速いことで有名です。
この言語を扱うにはかなりの技術が必要となり、情報学やコンピューターサイエンスの知識がないと理解できないことが多いでしょう。
ただし、普遍的な言語であり廃れることはありません。すべての言語の源流でもあるので、上級者を目指す前に学習することをおすすめします。
まとめ
いかがだったでしょうか。
プログラミング言語は他にもまだまだたくさんあります。
初めて学ぼうとするときの参考になれば幸いです。
今回は独学で学習することを目的とした記事でしたが、スクールを利用しながら着実に技術を身に着けることも一つの手だと思います。
DMM WEBCAMPはメンター制度があり、トラブルもスピード解決してくれます。
独学する際に学習するステップを知りたいという方は、こちらの記事も参考にしてみてください