みなさんは、プログラミング言語をいくつご存知でしょうか?
現代では様々な言語が開発され、オープンソースとして世のなかに出されています。
そんな大量にあるプログラミング言語の中で一体どの言語を勉強したらいいのか、そんな悩みを抱えたことはありませんか?
そこで、今回はプログラミング入門者に向けて、今話題になっている有名な言語を紹介していきます。
これをみて、自分がどの言語をやりたいのか、決める参考にしていただければ幸いです。
プログラミング言語の選び方
最初に、プログラミング言語をどうやって選ぶのか解説していきます。
勉強する言語を選ぶときは、以下のことを意識してみてください。
- 自分の目的(作ってみたいもの)から逆算して選ぶ
- 需要の高いもの、重要度の高いものから選ぶ
- 比較的簡単なものから選ぶ
プログラミング言語を選ぶときはこの3つを特に意識するといいでしょう。
やはり、プログラミング言語はあくまで、手段であり、目的ではありません。
独学で挫折してしまうのは、たいてい、プログラミングをなんのためにやっているのかわからなくなる、つまり手段と目的が混合してしまうのです。
なので、自分がプログラミングを使って、どのような問題を解決したいのか、どのようなものを作ってみたいのかを最初に考えてみてください。
それを考えてから、2つめ、3つめの注意事項を考えながら、言語を選んでみてください。
現在の人気のプログラミング言語
ではさっそく、世界中で人気があり、需要の大きいプログラミング言語を紹介していきます。
なお、今回はプログラミング言語のみに特化し、マークアップ言語などは特別解説はいたしません。
JavaScript(ECMAscript)
まずはじめに紹介するのは、JavaScriptです。
Javascriptというのは、フロントエンドと呼ばれている、主にウェブサイトのアニメーションや、動的なエフェクト、ユーザビリティなどを作る言語となります。
ウェブサイトなど利用した開発をする場合、100%必須となる超重要な言語の一つです。
JavaScriptは世界中のエンジニアたちが使用しているものでもあり、言ってみれば、エンジニアに成るならば、ほぼ避けては通れないプログラミング言語です。
また、JavaScriptは非常に多くのライブラリが存在し、こういった表現がしたい!という考えをほぼ実現できるほどできることが多いです。
情報量もネット上には多く、先人たちがかなり多くの文献を残してくれています。
勉強には、全く困らないでしょう!
有名なライブラリには以下のようなものがあります。
また、最近ではフレームワークと呼ばれる仕組みが重要になってきました。
JavaScriptにも、フレームワークが多数公開されています。
少々難易度は高いですが、これも今や必須技術になってきています。がんばって、習得してみましょう!
初心者にありがちですが、Javaと名前が似ていますが、全く別の言語で、文法や志向も違うので勘違いしないようにしてください。
IT界隈でそのような勘違いをしていると恥ずかしいことになります。
JavaScriptまとめ
難易度 | やさしい |
情報量 | とても多い |
できること | アニメーション ウェブサイトの動的な処理 ユーザビリティの構築 |
重要度 | 非常に高い |
需要 | 非常に高い |
実用例 | ウェブサイトのアニメーション、エフェクト全般 ウェブサイトのレイアウト Twitter/Facebook/amazonなど他多数 canvas,APIなど Google Gravity |
公式サイト | https://developer.mozilla.org/ja/docs/Web/JavaScript |
TypeScript
続いて紹介するのはTypeScriptになります。
これは、厳密にはJavascriptの拡張版の言語になります。
JSは文字列や数字といった型に決まりがありません。なので、基本的に型が決まるのは、変数に格納されたときに決定されます。
TypeSciptでは、最初から型を定義するJavascriptになります。
基本的にはJavascriptと文法は一緒なので、Javascriptが出来る方にとっては簡単なはずです。
とはいえ、今はこのTypeScriptが流行りに流行っており、急速に普及しています。
今はJavascriptよりも、最初からTypeScriptを優先して勉強してもいいでしょう。
Ruby
続いて紹介するのは、Rubyと呼ばれている言語です。
これは、唯一日本人が作った、日本製プログラミング言語です。
これは主にウェブ系と呼ばれているプログラミング言語でバックエンドの言語となります。
今現在、日本で使われているバックエンドの言語のなかで最も使われている言語になります。
ウェブ系に進むのであれば、最もおすすめな言語がRubyとなります。
ただ、Ruby単体で使われることがほとんどなく、フレームワークである、Ruby on Railsというものが用途の殆どを占めています。
なので、Rubyを勉強する場合はRailsもやる前提で取り組んだほうが良いでしょう。
Rubyは日本人が作った言語なだけに、日本語の情報量がトップクラスで多いです。
また、日本人に分かりやすい文法であり、かなり簡単な文法になっています。
しかし、Ruby単体では簡単ですが、フレームワーク特有の考え方が人によっては難しく感じるでしょう。
なので、Rubyについての勉強はすぐに終わらせて、Railsに時間を割いたほうが効率的です。
Rubyまとめ
難易度 | やさしい |
情報量 | 多い |
できること | ウェブアプリ バックエンド スクレイピング |
重要度 | 高い |
需要 | 高い |
実用例 | Git hub クックパッド |
公式サイト | https://www.ruby-lang.org/ja/ |
Python3
続いては、世界で大人気のプログラミング言語、Pythonです。
プログラミングを始める切っ掛けになった方も多いかと思われます、このpythonは古くからある言語ではありますが、最近に人気が急上昇し、もっとも使われている言語になっています。
Python3はもともと、計算用という変わった目的で作られた言語であります。
それゆえに、機械学習やAI、DeepLearningといった用途にも積極的に使われています。
それ以外にも、科学計算やビックデータ解析、Rubyのようにウェブアプリケーションといった多種多様な用途に使われている汎用プログラミング言語です。
この幅広い用途からも、人気になっている理由のひとつなのです。
また、この言語は非常に豊富なライブラリが用意されており、ライブラリを読み込むだけでさらに多彩なことができるようになります。
機械学習やDeepLearningを簡単に実装することができるのです。
さらに、ウェブアプリケーションとしても幅広く使われています。
海外では、RailsよりもPythonのフレームワークである、Djangoと呼ばれるものが使われています。
Youtubeもこの、Djangoが使われています。
また、pythonが非常に得意としている分野がビックデータ解析分野です。
youtubeのおすすめ機能、Amazonの商品紹介機能はまさに、このpythonによるデータ分析によるものです。とくにGAFAはすでにどの企業も真似できない巨大なデータを持っています。それらを分析することで、さらに物を効率的に売っています。
文法も、Rubyと同様に簡単な部類に入りますので、バックエンドの言語を学ぶ選択肢の一つに十分入ります。しかし、Rubyと比べて商業的な需要などはやや下がる場合が多く、求人サイトにも、Rubyのほうが求人が多いことがあります。
さらに、ここ最近話題沸騰中である暗号資産の技術であるブロックチェーン技術にも利用されているpythonですが、こういったセキュリティ関係にも使われています。
Python3まとめ
難易度 | やさしい |
情報量 | 非常に多い |
できること | ウェブアプリ バックエンド 機械学習、DeepLearning、AI ウェブスクレイピング 機械計算 モバイルアプリケーション デスクトップアプリケーション データ解析 ブロックチェーン |
重要度 | やや高い |
需要 | 普通 |
実用例 | ウェブアプリケーション Youtube,Facebook,Twitter,Amazon 自動運転、AmazonGo Webスクレイピング 機関投資 Bitcoin(BTC) 画像認識 |
公式サイト | https://www.python.org/ |
PHP
つづいて紹介するのは、PHPです。
PHPは、RubyやPythonよりも昔から使われているウェブ系の言語となります。
できることは、ウェブ系に特化しており、RubyやPythonと同じように、ウェブアプリケーションを作ることができます。
PHPは基本的にRubyと同じく、ウェブ系のバックエンドの言語ではありますが、少々技術的には古いということになっています。
昔から存在したウェブアプリケーションに使われていることが多いです。
文法に関しては、同系統の言語であるRubyやPythonと少々志向が異なる部分が多く、先にRubyやPythonをやるか、PHPをやるかで体感難易度が変わってくる場合があります。
逆にRubyとPythonは似ている部分が多く、どちらを先にやっても習得しやすいです。
PHPは文法が少し特殊ではありますが、昔から使われている言語だけあって日本国内ではまだまだ人気の根強い言語であります。
求人サイトでの需要はRubyと同じくらい高く、クラウドソーシングなどでも圧倒的にPHPの需要は高いので、小遣い稼ぎにも利用できる言語でもあります。
また、PHPは世界で最も普及率が高いCMS、WordPressでも使われている言語であるため、PHPを習得するだけであっという間に稼げるようになってしまうコスパが非常に高い言語です。
これはウェブ制作と呼ばれるまた異なった分野にはなりますが、Wordpressは今後も使われていく分野でありますので、こちらに行きたいという方には是非おすすめの言語です。
もちろん、WordPressだけではなく、フレームワークを使ったウェブアプリケーションも作成できます。
PHPはRubyやPythonと違って様々なフレームワークがあります。
そのなかでも、最も有名で使われているフレームワークは2つあります。
この2つはPHPのフレームワークの2大巨頭となります。
PHPでウェブアプリケーションも作りたい、というひとはこのどちらかを使うと良いでしょう。
PHPまとめ
難易度 | やや優しい |
情報量 | 多い |
できること | ウェブアプリ CMS制作 |
重要度 | 高い |
需要 | 非常に高い |
実用例 | Pixiv WordPress EC ココナラ |
公式サイト | https://www.php.net/manual/ja/index.php |
GoLang
続いて紹介するのは、Golangです。
この言語は、最近登場した新しい言語となります。
ウェブ系に分類されるこのGoは、珍しくコンパイル言語になります。
先ほど紹介した、Ruby・Python・PHPといった言語は書かれたコード一行一行その都度コンピュータが理解し、実行されていきます。
しかし、このGoは一度、コンパイルという書かれたコードを機械語に翻訳する工程を挟んでいます。これによって、RubyやPythonとは比較にならないほどの処理スピードを誇る言語となっています。
こういったウェブ系で処理の早い革新的な言語であるGoは急速に発展し、使われ始めています。
日本で最もGoに力を入れているのがあのメガベンチャーであるメルカリです。
メルカリはいち早くGoに目をつけ、実際にアプリの決済部分にGoが使われています。
そしてなによりこのGoはあのGoogleが開発した言語です。
GAFAの一角が作った言語でありますから、IT業界への影響も大きく、この言語を無視できない理由も納得がいくと思います。
また、コンパイル言語特有の速さから、Raspberryパイを使った組み込みソフトウェアとしても使うことができます。ハードウェアをも動かせるGoはまさに次世代の言語と言えるでしょう。
このGoはあの有名なC言語の影響を大きく受けている言語設計となっています。
セミコロンなどコンパイル言語には欠かせないものがなく、pythonのような手軽さも兼ね備えている少々特殊な言語です。
しかし、最近生まれた言語である故、まだまだ情報量が少ないのが現状です。
よって、この言語は初学者にはおすすめができない言語です。
Goをやる前に、RubyやPython、JavaScriptといった言語をやってから、取り組むほうが無難です。
とはいえ、この言語はまだ浸透途中の段階であり、需要はまだまだ発展途上といったところ。
これからの広がりに期待されています。
GoLangまとめ
難易度 | 普通 |
情報量 | 少ない |
できること | ウェブアプリケーション 組み込み ハードウェア |
重要度 | 普通 |
需要 | 低い |
実用例 | メルペイ Docker |
公式サイト | https://golang.org/ |
Rust
つづいて紹介するのは、Rustです。
この言語も、最近登場してきた言語で、Googleが開発したGolangとほぼ同世代の言語となります。
Rustはブラウザアプリであるfirefoxの開発元で有名なMozillaが開発したプログラミング言語です。
この言語もGoと同様にコンパイル型の言語であり、非常に優れた処理速度を誇る言語です。
コンパイルを通さないRubyやPythonは一行ずつ、その都度コンピュータがコードを読み込み、理解し、実行しているので、それらと比較すると非常に優れたものになっています。
RubyやPythonのようにWeb系として使える言語で、コンパイル型言語が開発された経緯はやは処理速度であるといえるでしょう。処理速度はGoに追随する速さです。
RustはC言語や、C++の影響を受けている言語であります。
それゆえ、文法難易度は比較的難しい部類に入ってくる言語です。
現役のエンジニアが実際に触れてみて難しいという位ですから、初心者が手を出せばどうなるかはいうまでもありません。
とくに変わっているのが、他の言語では聞きなれない所有権という概念が組み込まれています。
これはコンパイル型言語の問題点を解決するために導入された機能です。所有権が導入された理由をここでは解説しませんが、いずれにせよ、いままでには無い機能であるので、一度で理解することは難しいでしょう。
こちらも、Go同様、先に他の言語を習得してから学ぶとよいでしょう。
Rustまとめ
難易度 | 高い |
情報量 | 少ない |
できること | コンソールアプリ webアプリ 組み込み ネットワーク構築 |
重要度 | 普通 |
需要 | 低い |
実用例 | Mozilla firefox Dropbox yelp |
公式サイト | https://www.rust-lang.org/ja/ |
Java
つづいて紹介するのはみなさんも知っているかもしれない言語、Javaです。
この言語は言うまでもなくロングヒットな言語です。
いま、IT業界でもっとも使われている言語といえば、このJavaです。
この言語は一言で言い表すと、超万能言語です。
法人が利用するような、社内システムから、webアプリケーション、PCのデスクトップアプリケーション、スマホアプリ、銀行の金融システムまで、ありとあらゆるものをこのJava一つのみで作ることが出来るなんでも屋さんです。
とりあえず、このJavaさえやっとけばあと数十年は食っていけると言われているほどの万能言語です。Javaが開発されたのはかなり昔のお話ですが、それでもいまだに高い需要を誇っている言語です。
Javaはオブジェクト指向といわれている、今の一般的なプログラミング言語の先駆けとなった言語で、C++から発展してきました。
それによって、C++と似通っている部分もあります。
JavaはPythonやRubyと比べて、コードの分量がかなり多い言語です。
制約が多く、それゆえにコストもかかりますが、その決まりの多さが今日のシステムを支えている理由でもあります。
Javaは文法に関してはかなりの決まりごとがありますが、初心者が手も足も出ないというほどではありません。
需要が高いゆえに、情報量は随一で多く、勉強するには全く困らないです。
もし、とくにやりたい言語がないという方は、Javaをお勧めします。
Javaまとめ
難易度 | 普通 |
情報量 | とても多い |
できること | システムづくり webアプリ デスクトップアプリ 組み込み スマホアプリ |
重要度 | とても高い |
需要 | 非常に多い |
実用例 | 銀行のシステム 金融システム Ecllipse 多数のアンドロイドアプリ |
公式サイト | https://www.java.com/ja/ |
C/C++
つづいて紹介するのは、C言語/C++です。
C言語とC++を一気に紹介します。
C言語は言わずもがな、プログラミングと呼ばれているものの始まりの言語です。
厳密に言えば、アセンブラやB言語というのが存在しますが、その話はまた省きます。
C言語は他のプログラミング言語を構築したり、別のシステムを作ったりするなど、ほとんどがソフトウェアの開発が主な利用用途です。
そして、そのC言語の拡張版であるのが、C++です。
C言語はクラス、という文法がなく、オブジェクト指向言語ではありません。その弱点を補うために開発されたのがC++となります。
C++は工学分野で活躍されており、いわゆる組み込みと呼ばれる分野に使われています。
回路など、ハードウェアを動かすための言語であります。
また、それだけではなく、ゲームにも利用されています。
C言語やC++はコンパイル言語であり、その処理速度はプログラミング言語の中でもトップクラスです。軽さや操作性の問題から、ゲームによく利用されているのは納得がいくでしょう。
情報量も多いので、検索すれば膨大な記事が見つかるはずです。
しかし、C、C++はもっとも学習コストが高い言語であり、難易度はとてつもなく高いです。
その理由は、メモリというものを考慮しながらコードを画く必要があり、ポインタという他にはない概念があるからです。
Cを学習する中で、もっとも挫折するのがこのポインタという概念になります。
これらが、C言語、C++を難しくさせている理由です。
とはいえ、プログラミング言語の原点であり、この二つのどちらかをやっておくとプログラミングを理解することが出来ます。
勉強のためにやるという選択肢も大いにありです。
C/C++まとめ
難易度 | 非常に高い |
情報量 | 多い |
出来ること | 組み込み ゲーム システム開発 言語開発 |
重要度 | やや高い |
需要 | 普通 |
実用例 | UE(アンリアルエンジン) Numpy,Scipy(pythonのライブラリ) 組み込み、ハードウェア |
公式サイト | https://isocpp.org/ |
C#
続いて紹介するのは、C#です。
C#はJavaと同世代のプログラミング言語で、C++から発展したものです。
C#は利用用途がかなり限られており、主に、Windows開発とゲーム用途が中心です。
もちろん、開発元はあの天下のMicrosoft社です。
また、ゲームエンジンでUnityという素晴らしい統合開発環境がリリースされており、個人利用目的であればだれでも無料で利用できます。
このようなUnityという素晴らしいものがあり、ほぼ、Unityと一緒に使うゲーム用プログラミング言語といってもよいでしょう。
文法はJavaと比較的似ている部分があり、オブジェクト指向言語の特徴が色濃く出ています。
一昔前まで、ゲーム制作というのはかなり難しく、3Dゲームともなるとかなり技術が必要でした。しかし、Unityの登場でゲーム制作がとても簡単になりました。
いまでも、ゲーム業界では、C言語、C++、C#のこの三つ、C系列が主要な言語であります。CやC++では、WindowsのdirectXと組み合わせて・・・・・などという難しいことをやっていたのですが、Unityの登場によってとても容易に高クオリティなゲームを作れるようになりました。
ゲーム制作では非常にコストパフォーマンスの良い言語です。
C#まとめ
難易度 | 普通 |
情報量 | やや多い |
できること | Windows開発 ゲーム |
重要度 | 普通 |
需要 | 普通 |
実用例 | Unity Windows |
公式サイト | https://docs.microsoft.com/en-us/dotnet/csharp/ |
Unity公式 | https://unity.com/ja |
Swift
つづいてはSwiftです。
SwiftはIOS、MacOSのためのプログラミング言語です。
Appleが開発した言語で、iOSアプリを作るなら、必須です。
世の中のスマホ事情では、AndroidとIOSの二つが世界を牛耳っていますが、どちらも使用されている言語も違い、アプリを開発するときにはそれぞれ専用の統合開発環境とプログラミング言語が必要です。
Swiftはその一つであり、IOS開発をするなら避けられません。
Javaと同じく、いまやIOSは需要があり、スマホアプリ市場も伸びているため、無視できなくなってきています。
IOSのアプリが作りたいという方は勉強するべきでしょう。
情報量も今では十分なほどでありますので、独学にもさほど困らないはずです。
しかし、開発にはXcodeというMac専用のアプリケーションを扱う必要があります。
この専用のアプリケーションの仕様なども習得する必要があり、難易度もなかなか高いので、初心者にはお勧めできません。
Swiftまとめ
難易度 | 高い |
情報量 | やや多い |
できること | iOS,MacOS開発 |
重要度 | 普通 |
需要 | やや多い |
実用例 | iOSアプリ全般 MacOSアプリ |
公式サイト | https://www.apple.com/jp/swift/ |
その他
ここでは、冒頭でもお話したその他の言語、プログラミング以外のものを解説しています。
HTML&CSS
はい、最も聞いたことがあると思われます、HTMLとCSSです。
これらは、プログラミング言語というと、少し違います。
厳密には、マークアップ言語と呼ばれています。
難易度はこの記事で開設した他の言語と比べて簡単であり、プログラミング言語とは少々構造や仕様も違います。開発を進めるうえで、HTMLとCSSの知識は重要ですが、理解した程度に学習をとどめておきましょう。
よく、HTMLとCSSに時間をかけている方がいらっしゃいますが、それでは時間を無駄にしてしまいます。なので、これらはHTMLとCSSの解説サイトを網羅的に理解する程度にして、すぐに他の言語の学習に取り掛かりましょう。
HTMLとCSSを学ぶにはこのサイトがおすすめです。
まとめ
今回は、プログラミング言語のそれぞれの特徴と選び方を解説していきました。
私が思うに、プログラミングを始める時、飛び越えるべきハードルの一つ目がどの言語をやるか問題だと思います。
繰り返し言いますが、かならず、自分の目的にあった言語を選んでください。
プログラミングはあくまで、手段の一つにすぎません。
手段と目的を混ぜないように気を付ければ、あなたは第一関門突破です。
今回はここまでとなります。お疲れさまでした。